{"version":3,"file":"main.712d6f30396f42406a3d.js","mappings":"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EAAAK,EAAAb,OAAAqlB,yBAAAzkB,EAAAC,GAAA,WAAAL,CAAA,UAAA+kB,GAAAhS,EAAA1S,EAAA2D,GAAA,OAAA3D,EAAA,SAAAuU,GAAA,IAAAvU,EAAA,SAAA6kB,EAAAC,GAAA,cAAApP,GAAAmP,IAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAE,EAAAF,EAAAhS,OAAAmS,aAAA,QAAA1c,IAAAyc,EAAA,KAAAE,EAAAF,EAAA5kB,KAAA0kB,EAAAC,UAAA,cAAApP,GAAAuP,GAAA,OAAAA,EAAA,UAAAtO,UAAA,uDAAAuO,OAAAL,EAAA,CAAAM,CAAA5Q,GAAA,iBAAAmB,GAAA1V,GAAAA,EAAAklB,OAAAllB,EAAA,CAAAolB,CAAAplB,MAAA0S,EAAAvT,OAAAsT,eAAAC,EAAA1S,EAAA,CAAA2D,MAAAA,EAAA0P,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAb,EAAA1S,GAAA2D,EAAA+O,CAAA,CAkBA,IAAM8Z,GAAY,CAChBw9J,uBAAwB,SAACxvK,GAA4B,MAAK,CACxD,eACAA,EACA,aACA,eACD,EACDwnK,YAAa,SACXxnK,EACA28C,EACArzD,GAAY,MACT,CACH,eACA0W,EACA,aACA,eACA28C,EACArzD,EACD,EACDmmL,qBAAsB,SACpBzvK,EACA28C,EACArzD,EACA6iL,GAAsB,MACnB,CACH,eACAnsK,EACA,aACA,eACA28C,EACArzD,EACA,YACA6iL,EACD,EACDuD,oBAAqB,SACnB1vK,EACA28C,EACArzD,GAAY,MACT,CACH,eACA0W,EACA,aACA,eACA28C,EACArzD,EACA,WACD,EACDqmL,wBAAyB,SACvB3vK,EACA28C,EACArzD,GAAY,MACT,CACH,eACA0W,EACA,aACA,eACA28C,EACArzD,EACA,YACD,EACDsmL,oCAAqC,SACnC5vK,EACA28C,EACArzD,GAAY,MACT,CACH,eACA0W,EACA,aACA,eACA28C,EACArzD,EACA,2BACD,EACDumL,gBAAiB,SACf7vK,EACA28C,EACArzD,GAAY,MACT,CACH,eACA0W,EACA,aACA,eACA28C,EACArzD,EACA,OA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","sources":["webpack://portainer/./app/ sync ^(.*\\.(js$))[^.]*$/i","webpack://portainer/./app/assets/ico/git.svg","webpack://portainer/./app/assets/ico/kube.svg","webpack://portainer/./app/assets/ico/ldap.svg","webpack://portainer/./app/assets/ico/linux.svg","webpack://portainer/./app/assets/ico/memory.svg","webpack://portainer/./app/assets/ico/route.svg","webpack://portainer/./app/assets/ico/subscription.svg","webpack://portainer/./app/assets/ico/vendor/azure.svg","webpack://portainer/./app/assets/ico/vendor/docker-compose.svg","webpack://portainer/./app/assets/ico/vendor/docker-icon.svg","webpack://portainer/./app/assets/ico/vendor/docker.svg","webpack://portainer/./app/assets/ico/vendor/ecr.svg","webpack://portainer/./app/assets/ico/vendor/github.svg","webpack://portainer/./app/assets/ico/vendor/gitlab.svg","webpack://portainer/./app/assets/ico/vendor/google.svg","webpack://portainer/./app/assets/ico/vendor/helm.svg","webpack://portainer/./app/assets/ico/vendor/kubernetes.svg","webpack://portainer/./app/assets/ico/vendor/microsoft-icon.svg","webpack://portainer/./app/assets/ico/vendor/microsoft.svg","webpack://portainer/./app/assets/ico/vendor/nomad-icon.svg","webpack://portainer/./app/assets/ico/vendor/nomad.svg","webpack://portainer/./app/assets/ico/vendor/openldap.svg","webpack://portainer/./app/assets/ico/vendor/proget.svg","webpack://portainer/./app/assets/ico/vendor/quay.svg","webpack://portainer/./app/angulartics.matomo/analytics-services.ts","webpack://portainer/./app/constants.ts","webpack://portainer/./app/docker/filters/utils.ts","webpack://portainer/./app/docker/helpers/logHelper/colors/colors.ts","webpack://portainer/./app/docker/helpers/logHelper/types.ts","webpack://portainer/./app/docker/helpers/logHelper/formatters.ts","webpack://portainer/./app/docker/helpers/logHelper/formatZerologLogs.ts","webpack://portainer/./app/docker/helpers/logHelper/formatLogs.ts","webpack://portainer/./app/docker/helpers/logHelper/formatJSONLogs.ts","webpack://portainer/./app/docker/helpers/logHelper/constants.ts","webpack://portainer/./app/docker/helpers/logHelper/concatLogsToString.ts","webpack://portainer/./app/docker/services/ping.ts","webpack://portainer/./app/docker/services/system.service.ts","webpack://portainer/./app/portainer/components/BoxSelector/BoxSelectorAngular.ts","webpack://portainer/./app/portainer/components/BoxSelector/utils.ts","webpack://portainer/./app/portainer/components/BoxSelector/index.ts","webpack://portainer/./app/portainer/error.ts","webpack://portainer/./app/portainer/helpers/array.ts","webpack://portainer/./app/portainer/helpers/promise-utils.ts","webpack://portainer/./app/portainer/helpers/strings.ts","webpack://portainer/./app/portainer/helpers/webhookHelper.ts","webpack://portainer/./app/portainer/hostmanagement/fdo/fdo.service.ts","webpack://portainer/./app/portainer/hostmanagement/open-amt/open-amt.service.ts","webpack://portainer/./app/portainer/services/axios.ts","webpack://portainer/./app/portainer/services/http-request.helper.ts","webpack://portainer/./app/portainer/services/notifications.ts","webpack://portainer/./app/portainer/tags/tags.service.ts","webpack://portainer/./app/portainer/tags/queries.ts","webpack://portainer/./app/portainer/users/queries.ts","webpack://portainer/./app/portainer/users/queries/queryKeys.ts","webpack://portainer/./app/portainer/users/queries/useUser.ts","webpack://portainer/./app/portainer/users/types.ts","webpack://portainer/./app/portainer/users/user.helpers.ts","webpack://portainer/./app/portainer/users/user.service.ts","webpack://portainer/./app/react-tools/react-query.ts","webpack://portainer/./app/react-tools/react2angular.tsx","webpack://portainer/./app/react-tools/withControlledInput.tsx","webpack://portainer/./app/react-tools/withCurrentUser.tsx","webpack://portainer/./app/react-tools/withFormValidation.ts","webpack://portainer/./app/react-tools/withReactQuery.tsx","webpack://portainer/./app/react-tools/withUIRouter.tsx","webpack://portainer/./app/react/common/semver-utils.ts","webpack://portainer/./app/react/common/stacks/common/confirm-stack-update.ts","webpack://portainer/./app/react/components/Alert/Alert.tsx","webpack://portainer/./app/react/components/BEFeatureIndicator/BEFeatureIndicator.tsx","webpack://portainer/./app/react/components/BEFeatureIndicator/utils.ts","webpack://portainer/./app/react/components/BETeaserButton.tsx","webpack://portainer/./app/react/components/Badge/Badge.tsx","webpack://portainer/./app/react/components/BadgeIcon/BadgeIcon.tsx","webpack://portainer/./app/react/components/BoxSelector/common-options/build-methods.tsx","webpack://portainer/./app/react/components/BoxSelector/common-options/deployment-methods.tsx","webpack://portainer/./app/react/components/BoxSelector/BoxSelector.module.css?5efb","webpack://portainer/./app/react/components/BoxSelector/BoxSelectorItem.module.css?460b","webpack://portainer/./app/react/components/BoxSelector/LimitedToBeBoxSelectorIndicator.tsx","webpack://portainer/./app/react/components/BoxSelector/BoxOption.module.css?13c4","webpack://portainer/./app/react/components/BoxSelector/BoxOption.tsx","webpack://portainer/./app/react/components/BoxSelector/LogoIcon.tsx","webpack://portainer/./app/react/components/BoxSelector/BoxSelectorItem.tsx","webpack://portainer/./app/react/components/BoxSelector/BoxSelector.tsx","webpack://portainer/./app/react/components/Code/Code.module.css?c26c","webpack://portainer/./app/react/components/Code/Code.tsx","webpack://portainer/./app/react/components/CodeEditor.module.css?af7a","webpack://portainer/./app/react/components/CodeEditor.tsx","webpack://portainer/./app/react/components/DashboardItem/DashboardGrid.tsx","webpack://portainer/./app/react/components/DashboardItem/DashboardItem.tsx","webpack://portainer/./app/react/components/DetailsTable/index.tsx","webpack://portainer/./app/react/components/DetailsTable/DetailsTable.tsx","webpack://portainer/./app/react/components/DetailsTable/DetailsRow.tsx","webpack://portainer/./app/assets/ico/heartbeat-up.svg","webpack://portainer/./app/assets/ico/heartbeat-down.svg","webpack://portainer/./app/assets/ico/dataflow-1.svg","webpack://portainer/./app/assets/ico/laptop-code.svg","webpack://portainer/./app/assets/ico/restore-window.svg","webpack://portainer/./app/assets/ico/sort.svg","webpack://portainer/./app/assets/ico/placeholder.svg","webpack://portainer/./app/assets/ico/vendor/aws.svg","webpack://portainer/./app/assets/ico/vendor/civo.svg","webpack://portainer/./app/assets/ico/vendor/digitalocean.svg","webpack://portainer/./app/assets/ico/vendor/googlecloud.svg","webpack://portainer/./app/assets/ico/vendor/linode.svg","webpack://portainer/./app/react/components/Svg.tsx","webpack://portainer/./app/react/components/Icon.tsx","webpack://portainer/./app/react/components/InformationPanel.tsx","webpack://portainer/./app/react/components/InsightsBox/insights-store.ts","webpack://portainer/./app/react/components/InsightsBox/InsightsBox.tsx","webpack://portainer/./app/react/components/Link.tsx","webpack://portainer/./app/react/components/NavTabs/NavTabs.module.css?76f4","webpack://portainer/./app/react/components/NavTabs/NavTabs.tsx","webpack://portainer/./app/react/components/PageHeader/Breadcrumbs/Breadcrumbs.tsx","webpack://portainer/./app/react/components/PageHeader/HeaderContainer.module.css?63f1","webpack://portainer/./app/react/components/PageHeader/HeaderContainer.tsx","webpack://portainer/./app/react/components/PageHeader/HeaderTitle.module.css?dde6","webpack://portainer/./app/react/components/PageHeader/ContextHelp/ContextHelp.tsx","webpack://portainer/./app/react/components/PageHeader/NotificationsMenu.module.css?bd28","webpack://portainer/./app/react/components/PageHeader/NotificationsMenu.tsx","webpack://portainer/./app/react/components/PageHeader/UserMenu.tsx","webpack://portainer/./app/react/components/PageHeader/HeaderTitle.tsx","webpack://portainer/./app/react/components/PageHeader/PageHeader.tsx","webpack://portainer/./app/react/components/PaginationControls/ItemsPerPageSelector.tsx","webpack://portainer/./app/react/components/PaginationControls/calculatePageNumber.ts","webpack://portainer/./app/react/components/PaginationControls/PageButton.tsx","webpack://portainer/./app/react/components/PaginationControls/PageInput.tsx","webpack://portainer/./app/react/components/PaginationControls/PageSelector.tsx","webpack://portainer/./app/react/components/PaginationControls/generatePagesArray.ts","webpack://portainer/./app/react/components/PaginationControls/PaginationControls.tsx","webpack://portainer/./app/react/components/StatsItem.tsx","webpack://portainer/./app/react/components/TLSFieldset/TLSFieldset.tsx","webpack://portainer/./app/react/components/TagButton/TagButton.module.css?d24c","webpack://portainer/./app/react/components/TagButton/TagButton.tsx","webpack://portainer/./app/react/components/TagSelector/TagSelector.tsx","webpack://portainer/./app/react/components/TeamsSelector/TeamsSelector.tsx","webpack://portainer/./app/react/components/Tip/TextTip/TextTip.tsx","webpack://portainer/./app/react/components/Tip/Tooltip/Tooltip.tsx","webpack://portainer/./app/react/components/Tip/TooltipWithChildren/TooltipWithChildren.module.css?cdcd","webpack://portainer/./app/react/components/Tip/TooltipWithChildren/TooltipWithChildren.tsx","webpack://portainer/./app/react/components/UsersSelector/UsersSelector.tsx","webpack://portainer/./app/react/components/Widget/Loading.tsx","webpack://portainer/./app/react/components/Widget/Widget.tsx","webpack://portainer/./app/react/components/Widget/WidgetBody.tsx","webpack://portainer/./app/react/components/Widget/WidgetTitle.tsx","webpack://portainer/./app/react/components/Widget/index.ts","webpack://portainer/./app/react/components/Widget/WidgetFooter.tsx","webpack://portainer/./app/react/components/Widget/WidgetTaskbar.tsx","webpack://portainer/./app/react/components/buttons/Button.tsx","webpack://portainer/./app/react/components/buttons/ButtonGroup.tsx","webpack://portainer/./app/react/components/buttons/CopyButton/CopyButton.module.css?9c40","webpack://portainer/./app/react/components/buttons/CopyButton/CopyButton.tsx","webpack://portainer/./app/react/components/buttons/CopyButton/useCopy.ts","webpack://portainer/./app/react/components/buttons/LoadingButton.tsx","webpack://portainer/./app/react/components/datatables/ColumnVisibilityMenu.tsx","webpack://portainer/./app/react/components/datatables/DatatableHeader.tsx","webpack://portainer/./app/react/components/datatables/SelectedRowsCount.tsx","webpack://portainer/./app/react/components/datatables/DatatableFooter.tsx","webpack://portainer/./app/react/components/datatables/Datatable.tsx","webpack://portainer/./app/react/components/datatables/select-column.tsx","webpack://portainer/./app/react/components/datatables/useGoToHighlightedRow.ts","webpack://portainer/./app/react/components/datatables/DatatableContent.tsx","webpack://portainer/./app/react/components/datatables/Filter.tsx","webpack://portainer/./app/react/components/datatables/NameCell.tsx","webpack://portainer/./app/react/components/datatables/RowContext.tsx","webpack://portainer/./app/react/components/datatables/SearchBar.tsx","webpack://portainer/./app/react/components/datatables/Table.tsx","webpack://portainer/./app/react/components/datatables/TableActions.tsx","webpack://portainer/./app/react/components/datatables/TableContainer.tsx","webpack://portainer/./app/react/components/datatables/TableContent.tsx","webpack://portainer/./app/react/components/datatables/TableFooter.tsx","webpack://portainer/./app/react/components/datatables/TableHeaderCell.module.css?0e74","webpack://portainer/./app/react/components/datatables/TableHeaderCell.tsx","webpack://portainer/./app/react/components/datatables/TableHeaderRow.tsx","webpack://portainer/./app/react/components/datatables/sort-arrow-down.svg","webpack://portainer/./app/react/components/datatables/sort-arrow-up.svg","webpack://portainer/./app/react/components/datatables/TableHeaderSortIcons.module.css?aefe","webpack://portainer/./app/react/components/datatables/TableHeaderSortIcons.tsx","webpack://portainer/./app/react/components/datatables/TableRow.tsx","webpack://portainer/./app/react/components/datatables/TableSettingsMenu.tsx","webpack://portainer/./app/react/components/datatables/TableSettingsMenuAutoRefresh.module.css?1e3f","webpack://portainer/./app/react/components/datatables/TableSettingsMenuAutoRefresh.tsx","webpack://portainer/./app/react/components/datatables/TableTitle.tsx","webpack://portainer/./app/react/components/datatables/TableTitleActions.tsx","webpack://portainer/./app/react/components/datatables/defaultGetRowId.ts","webpack://portainer/./app/react/components/datatables/types.ts","webpack://portainer/./app/react/components/datatables/useRepeater.ts","webpack://portainer/./app/react/components/datatables/useTableState.ts","webpack://portainer/./app/react/components/form-components/ButtonSelector/ButtonSelector.module.css?de7d","webpack://portainer/./app/react/components/form-components/ButtonSelector/ButtonSelector.tsx","webpack://portainer/./app/react/components/form-components/Checkbox.tsx","webpack://portainer/./app/react/components/form-components/EnvironmentVariablesFieldset/AdvancedMode.tsx","webpack://portainer/./app/portainer/services/fileUploadReact.ts","webpack://portainer/./app/react/components/form-components/Input/InputLabeled.tsx","webpack://portainer/./app/react/components/form-components/EnvironmentVariablesFieldset/SimpleMode.tsx","webpack://portainer/./app/react/components/form-components/EnvironmentVariablesFieldset/EnvironmentVariablesFieldset.tsx","webpack://portainer/./app/react/components/form-components/EnvironmentVariablesFieldset/EnvironmentVariablesPanel.tsx","webpack://portainer/./app/react/components/form-components/EnvironmentVariablesFieldset/utils.ts","webpack://portainer/./app/react/components/form-components/FileUpload/FileUploadField.module.css?3d41","webpack://portainer/./app/react/components/form-components/FileUpload/FileUploadField.tsx","webpack://portainer/./app/react/components/form-components/FormControl/FormControl.tsx","webpack://portainer/./app/react/components/form-components/FormError.tsx","webpack://portainer/./app/react/components/form-components/FormSection/FormSection.tsx","webpack://portainer/./app/react/components/form-components/FormSectionTitle/FormSectionTitle.tsx","webpack://portainer/./app/react/components/form-components/Input/Input.tsx","webpack://portainer/./app/react/components/form-components/Input/Select.tsx","webpack://portainer/./app/react/components/form-components/InputGroup/InputGroup.tsx","webpack://portainer/./app/react/components/form-components/InputGroup/index.ts","webpack://portainer/./app/react/components/form-components/InputGroup/InputGroupAddon.tsx","webpack://portainer/./app/react/components/form-components/InputGroup/InputGroupButtonWrapper.tsx","webpack://portainer/./app/react/components/form-components/InputList/InputList.module.css?b1ab","webpack://portainer/./app/react/components/form-components/InputList/InputList.tsx","webpack://portainer/./app/react/components/form-components/InputList/utils.ts","webpack://portainer/./app/react/components/form-components/PortainerSelect.tsx","webpack://portainer/./app/react/components/form-components/ReactSelect.tsx","webpack://portainer/./app/react/components/form-components/SwitchField/Switch.module.css?3a17","webpack://portainer/./app/react/components/form-components/SwitchField/Switch.tsx","webpack://portainer/./app/react/components/form-components/SwitchField/SwitchField.module.css?fb34","webpack://portainer/./app/react/components/form-components/SwitchField/SwitchField.tsx","webpack://portainer/./app/react/components/form-components/useCachedTest.ts","webpack://portainer/./app/react/components/form-components/validate-form.ts","webpack://portainer/./app/react/components/form-components/yup-file-validation.ts","webpack://portainer/./app/react/components/modals/Dialog.tsx","webpack://portainer/./app/react/components/modals/Modal/CloseButton.module.css?9c19","webpack://portainer/./app/react/components/modals/Modal/CloseButton.tsx","webpack://portainer/./app/react/components/modals/Modal/Modal.module.css?18cf","webpack://portainer/./app/react/components/modals/Modal/Modal.tsx","webpack://portainer/./app/react/components/modals/Modal/ModalBody.module.css?1704","webpack://portainer/./app/react/components/modals/Modal/index.tsx","webpack://portainer/./app/react/components/modals/Modal/ModalHeader.tsx","webpack://portainer/./app/react/components/modals/Modal/ModalHeader.module.css?9399","webpack://portainer/./app/react/components/modals/Modal/ModalBody.tsx","webpack://portainer/./app/react/components/modals/Modal/ModalFooter.tsx","webpack://portainer/./app/react/components/modals/Modal/types.ts","webpack://portainer/./app/react/components/modals/SwitchPrompt.tsx","webpack://portainer/./app/react/components/modals/confirm.ts","webpack://portainer/./app/react/components/modals/types.ts","webpack://portainer/./app/react/components/modals/open-modal.tsx","webpack://portainer/./app/react/components/modals/utils.ts","webpack://portainer/./app/react/constants.ts","webpack://portainer/./app/react/docker/containers/common/confirm-container-delete-modal.ts","webpack://portainer/./app/react/docker/containers/containers.service.ts","webpack://portainer/./app/react/docker/images/common/ConfirmExportModal.tsx","webpack://portainer/./app/react/docker/images/utils.ts","webpack://portainer/./app/react/docker/services/common/update-service-modal.ts","webpack://portainer/./app/react/edge/components/EdgeAsyncIntervalsForm.tsx","webpack://portainer/./app/react/edge/components/EdgeCheckInIntervalField.tsx","webpack://portainer/./app/react/edge/components/EdgeScriptForm/OsSelector.tsx","webpack://portainer/./app/react/edge/components/EdgeScriptForm/ScriptTabs.tsx","webpack://portainer/./app/react/edge/components/EdgeScriptForm/NomadTokenField.tsx","webpack://portainer/./app/react/edge/components/EdgeScriptForm/EdgeScriptSettingsFieldset.tsx","webpack://portainer/./app/react/edge/components/EdgeScriptForm/EdgeScriptForm.tsx","webpack://portainer/./app/react/edge/components/EdgeScriptForm/EdgeScriptForm.validation.tsx","webpack://portainer/./app/react/edge/components/EdgeScriptForm/scripts.ts","webpack://portainer/./app/react/edge/components/useIntervalOptions.ts","webpack://portainer/./app/react/edge/edge-groups/queries/build-url.ts","webpack://portainer/./app/react/edge/edge-groups/queries/query-keys.ts","webpack://portainer/./app/react/edge/edge-groups/queries/useEdgeGroups.ts","webpack://portainer/./app/react/edge/edge-stacks/components/EdgeGroupsSelector.tsx","webpack://portainer/./app/react/edge/edge-stacks/types.ts","webpack://portainer/./app/react/hooks/useDebounce.ts","webpack://portainer/./app/react/hooks/useEnvironmentId.ts","webpack://portainer/./app/react/hooks/useLimitToBE.tsx","webpack://portainer/./app/react/hooks/useLocalStorage.ts","webpack://portainer/./app/react/hooks/useStateWrapper.ts","webpack://portainer/./app/react/hooks/useUser.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/utils.ts","webpack://portainer/./app/react/kubernetes/cluster/getIsRBACEnabled.ts","webpack://portainer/./app/react/kubernetes/cluster/ingressClass/utils/index.ts","webpack://portainer/./app/react/kubernetes/configs/CreateView/options.tsx","webpack://portainer/./app/react/kubernetes/ingresses/service.ts","webpack://portainer/./app/react/kubernetes/networks/services/service.ts","webpack://portainer/./app/react/kubernetes/services/service.ts","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/HomepageFilter.tsx","webpack://portainer/./app/react/portainer/access-control/AccessControlForm/AccessControlForm.validation.ts","webpack://portainer/./app/react/portainer/access-control/AccessControlForm/AccessControlForm.tsx","webpack://portainer/./app/react/portainer/access-control/AccessControlPanel/AccessControlPanelDetails.tsx","webpack://portainer/./app/react/portainer/access-control/AccessControlPanel/AccessControlPanelForm.module.css?dfbc","webpack://portainer/./app/react/portainer/access-control/AccessControlPanel/AccessControlPanelForm.tsx","webpack://portainer/./app/react/portainer/access-control/AccessControlPanel/AccessControlPanel.tsx","webpack://portainer/./app/react/portainer/access-control/EditDetails/useOptions.tsx","webpack://portainer/./app/react/portainer/access-control/EditDetails/AccessTypeSelector.tsx","webpack://portainer/./app/react/portainer/access-control/EditDetails/UsersField.tsx","webpack://portainer/./app/react/portainer/access-control/EditDetails/TeamsField.tsx","webpack://portainer/./app/react/portainer/access-control/EditDetails/EditDetails.tsx","webpack://portainer/./app/react/portainer/access-control/EditDetails/useLoadState.ts","webpack://portainer/./app/react/portainer/access-control/access-control.service.ts","webpack://portainer/./app/react/portainer/access-control/models/ResourceControlViewModel.ts","webpack://portainer/./app/react/portainer/access-control/types.ts","webpack://portainer/./app/react/portainer/access-control/utils.ts","webpack://portainer/./app/react/portainer/account/git-credentials/git-credentials.service.ts","webpack://portainer/./app/react/portainer/custom-templates/components/utils.ts","webpack://portainer/./app/react/portainer/environments/environment-groups/environment-groups.service.ts","webpack://portainer/./app/react/portainer/environments/environment-groups/queries.ts","webpack://portainer/./app/react/portainer/environments/environment-groups/queries/build-url.ts","webpack://portainer/./app/react/portainer/environments/environment-groups/queries/query-keys.ts","webpack://portainer/./app/react/portainer/environments/environment.service/index.ts","webpack://portainer/./app/react/portainer/environments/environment.service/utils.ts","webpack://portainer/./app/react/portainer/environments/queries/query-keys.ts","webpack://portainer/./app/react/portainer/environments/queries/useAgentDetails.ts","webpack://portainer/./app/react/portainer/environments/queries/useEnvironment.ts","webpack://portainer/./app/react/portainer/environments/queries/useEnvironmentList.ts","webpack://portainer/./app/react/portainer/environments/types.ts","webpack://portainer/./app/assets/ico/beta.svg","webpack://portainer/./app/react/portainer/environments/update-schedules/common/BetaAlert.tsx","webpack://portainer/./app/react/portainer/environments/utils/index.ts","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/MetadataFieldset/GroupsField.tsx","webpack://portainer/./app/react/portainer/feature-flags/enums.ts","webpack://portainer/./app/react/portainer/feature-flags/feature-flags.service.ts","webpack://portainer/./app/react/portainer/feature-flags/withEdition.tsx","webpack://portainer/./app/react/portainer/gitops/AuthFieldset/CredentialSelector.tsx","webpack://portainer/./app/react/portainer/gitops/AuthFieldset/NewCredentialForm.tsx","webpack://portainer/./app/react/portainer/gitops/AuthFieldset/AuthFieldset.tsx","webpack://portainer/./app/react/portainer/gitops/AutoUpdateFieldset/IntervalField.tsx","webpack://portainer/./app/react/components/form-components/useCaretPosition.ts","webpack://portainer/./app/react/portainer/gitops/AutoUpdateFieldset/WebhookSettings.tsx","webpack://portainer/./app/react/portainer/gitops/AutoUpdateFieldset/ForceDeploymentSwitch.tsx","webpack://portainer/./app/react/portainer/gitops/AutoUpdateFieldset/AutoUpdateSettings.tsx","webpack://portainer/./app/react/portainer/gitops/AutoUpdateFieldset/AutoUpdateFieldset.tsx","webpack://portainer/./app/react/portainer/gitops/AutoUpdateFieldset/utils.ts","webpack://portainer/./app/react/portainer/gitops/AutoUpdateFieldset/validation.ts","webpack://portainer/./app/react/portainer/gitops/queries/useSearch.ts","webpack://portainer/./app/react/portainer/gitops/ComposePathField/PathSelector.module.css?43f2","webpack://portainer/./app/react/portainer/gitops/ComposePathField/PathSelector.tsx","webpack://portainer/./app/react/portainer/gitops/ComposePathField/ComposePathField.tsx","webpack://portainer/./app/react/portainer/gitops/queries/useCheckRepo.ts","webpack://portainer/./app/react/portainer/gitops/GitFormUrlField.tsx","webpack://portainer/./app/react/portainer/gitops/AdditionalFilesField.tsx","webpack://portainer/./app/react/portainer/gitops/GitForm.tsx","webpack://portainer/./app/react/portainer/gitops/InfoPanel.tsx","webpack://portainer/./app/react/portainer/gitops/queries/useGitRefs.ts","webpack://portainer/./app/react/portainer/gitops/RefField/RefSelector.tsx","webpack://portainer/./app/react/portainer/gitops/RefField/RefField.tsx","webpack://portainer/./app/react/portainer/gitops/TimeWindowDisplay.tsx","webpack://portainer/./app/react/hooks/useCurrentEnvironment.ts","webpack://portainer/./app/react/portainer/gitops/gitops.service.ts","webpack://portainer/./app/react/portainer/gitops/utils.ts","webpack://portainer/./app/react/portainer/licenses/types.ts","webpack://portainer/./app/react/portainer/licenses/license.service.ts","webpack://portainer/./app/react/portainer/licenses/use-license.service.ts","webpack://portainer/./app/react/portainer/notifications/notifications-store.ts","webpack://portainer/./app/react/portainer/registries/types/registry.ts","webpack://portainer/./app/react/portainer/settings/queries/queryKeys.ts","webpack://portainer/./app/react/portainer/settings/settings.service.ts","webpack://portainer/./app/react/portainer/settings/queries/useSettings.ts","webpack://portainer/./app/react/portainer/settings/queries/usePublicSettings.ts","webpack://portainer/./app/react/portainer/settings/queries/useExperimentalSettings.ts","webpack://portainer/./app/react/portainer/settings/queries/useExperimentalSettingsMutation.ts","webpack://portainer/./app/react/portainer/system/build-url.ts","webpack://portainer/./app/react/portainer/system/query-keys.ts","webpack://portainer/./app/react/portainer/system/useNodesCount.ts","webpack://portainer/./app/react/portainer/system/useSystemStatus.ts","webpack://portainer/./app/react/portainer/users/teams/queries.ts","webpack://portainer/./app/react/portainer/users/teams/team-membership.service.ts","webpack://portainer/./app/react/portainer/users/teams/teams.service.ts","webpack://portainer/./app/react/portainer/users/teams/types.ts","webpack://portainer/./app/__mocks__/fileMock.js","webpack://portainer/./app/__mocks__/styleMock.js","webpack://portainer/./app/__mocks__/svg.js","webpack://portainer/./app/agent/components/host-browser/hostBrowserController.js","webpack://portainer/./app/agent/components/host-browser/index.js","webpack://portainer/./app/agent/components/node-selector/index.js","webpack://portainer/./app/agent/components/node-selector/nodeSelectorController.js","webpack://portainer/./app/agent/components/volume-browser/index.js","webpack://portainer/./app/agent/components/volume-browser/volumeBrowserController.js","webpack://portainer/./app/agent/index.js","webpack://portainer/./app/agent/models/agent.js","webpack://portainer/./app/agent/rest/agent.js","webpack://portainer/./app/agent/rest/browse.js","webpack://portainer/./app/agent/rest/dockerhub.js","webpack://portainer/./app/agent/rest/host.js","webpack://portainer/./app/agent/rest/ping.js","webpack://portainer/./app/agent/rest/response/browse.js","webpack://portainer/./app/agent/rest/v1/agent.js","webpack://portainer/./app/agent/rest/v1/browse.js","webpack://portainer/./app/agent/services/agentService.js","webpack://portainer/./app/agent/services/hostBrowserService.js","webpack://portainer/./app/agent/services/pingService.js","webpack://portainer/./app/agent/services/volumeBrowserService.js","webpack://portainer/./app/angulartics.matomo/index.js","webpack://portainer/./app/app.js","webpack://portainer/./app/assets/css/colors.ts","webpack://portainer/./app/config.js","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/datatable-store.ts","webpack://portainer/./app/react/docker/components/datatable-helpers/createOwnershipColumn.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/helper.ts","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/created.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/host.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/image.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/ip.tsx","webpack://portainer/./app/react/components/datatables/useTableSettings.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/name.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/RowContext.ts","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/ports.tsx","webpack://portainer/./app/react/docker/containers/types.ts","webpack://portainer/./app/react/docker/containers/components/ContainerQuickActions/ContainerQuickActions.module.css?9085","webpack://portainer/./app/react/docker/containers/components/ContainerQuickActions/ContainerQuickActions.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/quick-actions.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/stack.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/state.tsx","webpack://portainer/./app/react/components/datatables/filter-types.ts","webpack://portainer/./app/react/docker/queries/utils.ts","webpack://portainer/./app/react/docker/containers/queries/query-keys.ts","webpack://portainer/./app/react/docker/containers/queries/gpus.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/gpus.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/columns/index.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/ContainersDatatableActions.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/ContainersDatatableSettings.tsx","webpack://portainer/./app/react/docker/containers/utils.ts","webpack://portainer/./app/react/components/datatables/QuickActionsSettings.tsx","webpack://portainer/./app/react/docker/containers/queries/containers.ts","webpack://portainer/./app/react/common/stacks/ItemView/StackContainersDatatable.tsx","webpack://portainer/./app/react/docker/app-templates/TemplateListDropdown/TemplateListDropdown.tsx","webpack://portainer/./app/react/docker/app-templates/TemplateListDropdown/index.ts","webpack://portainer/./app/react/docker/app-templates/TemplateListSort/TemplateListSort.module.css?0a6e","webpack://portainer/./app/react/docker/app-templates/TemplateListSort/index.ts","webpack://portainer/./app/react/docker/app-templates/TemplateListSort/TemplateListSort.tsx","webpack://portainer/./app/react/docker/containers/CreateView/Gpu.tsx","webpack://portainer/./app/react/docker/containers/ItemView/HealthStatus.tsx","webpack://portainer/./app/react/docker/host/SetupView/GpusList.tsx","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/columns/helper.ts","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/columns/created.tsx","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/columns/id.tsx","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/columns/size.tsx","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/columns/index.ts","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/columns/tags.tsx","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/columns/host.tsx","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/RowContext.ts","webpack://portainer/./app/react/docker/images/ListView/ImagesDatatable/ImagesDatatable.tsx","webpack://portainer/./app/react/docker/events/EventsDatatables.tsx","webpack://portainer/./app/react/docker/configs/ListView/ConfigsDatatable/columns.tsx","webpack://portainer/./app/react/docker/configs/ListView/ConfigsDatatable/ConfigsDatatable.tsx","webpack://portainer/./app/react/docker/configs/ListView/ConfigsDatatable/store.ts","webpack://portainer/./app/react/docker/components/FilesTable/columns/helper.ts","webpack://portainer/./app/react/docker/components/FilesTable/types.ts","webpack://portainer/./app/react/docker/components/FilesTable/columns/NameCell.tsx","webpack://portainer/./app/react/docker/components/FilesTable/columns/index.ts","webpack://portainer/./app/react/docker/components/FilesTable/columns/ActionsCell.tsx","webpack://portainer/./app/react/docker/components/FilesTable/FilesTable.tsx","webpack://portainer/./app/react/docker/host/BrowseView/AgentHostBrowser.tsx","webpack://portainer/./app/react/docker/volumes/BrowseView/AgentVolumeBrowser.tsx","webpack://portainer/./app/docker/react/components/index.ts","webpack://portainer/./app/react/docker/images/ItemView/DockerfileDetails.tsx","webpack://portainer/./app/react/docker/host/SetupView/GpusInsights.tsx","webpack://portainer/./app/react/docker/networks/network.service.ts","webpack://portainer/./app/react/docker/networks/network.helper.ts","webpack://portainer/./app/react/docker/networks/ItemView/NetworkDetailsTable.tsx","webpack://portainer/./app/react/docker/networks/ItemView/NetworkOptionsTable.tsx","webpack://portainer/./app/react/docker/networks/ItemView/NetworkContainersTable.tsx","webpack://portainer/./app/react/docker/networks/queries.ts","webpack://portainer/./app/react/docker/networks/ItemView/ItemView.tsx","webpack://portainer/./app/react/docker/containers/ListView/ContainersDatatable/ContainersDatatable.tsx","webpack://portainer/./app/docker/react/views/containers.ts","webpack://portainer/./app/react/docker/containers/ListView/ListView.tsx","webpack://portainer/./app/docker/react/views/index.ts","webpack://portainer/./app/docker/react/index.ts","webpack://portainer/./app/docker/__module.js","webpack://portainer/./app/docker/components/container-capabilities/container-capabilities.controller.js","webpack://portainer/./app/docker/components/container-capabilities/container-capabilities.js","webpack://portainer/./app/docker/components/container-restart-policy/container-restart-policy-controller.js","webpack://portainer/./app/docker/components/container-restart-policy/container-restart-policy.js","webpack://portainer/./app/docker/components/dashboard-cluster-agent-info/dashboard-cluster-agent-info.js","webpack://portainer/./app/docker/components/dashboard-cluster-agent-info/dashboardClusterAgentInfoController.js","webpack://portainer/./app/docker/components/datatables/container-networks-datatable/containerNetworksDatatable.js","webpack://portainer/./app/docker/components/datatables/container-networks-datatable/containerNetworksDatatableController.js","webpack://portainer/./app/docker/components/datatables/container-processes-datatable/containerProcessesDatatable.js","webpack://portainer/./app/docker/components/datatables/macvlan-nodes-datatable/macvlanNodesDatatable.js","webpack://portainer/./app/docker/components/datatables/networks-datatable/network-row-content/networkRowContent.js","webpack://portainer/./app/docker/components/datatables/networks-datatable/networksDatatable.js","webpack://portainer/./app/docker/components/datatables/networks-datatable/networksDatatableController.js","webpack://portainer/./app/docker/components/datatables/node-tasks-datatable/nodeTasksDatatable.js","webpack://portainer/./app/docker/components/datatables/nodes-datatable/nodesDatatable.js","webpack://portainer/./app/docker/components/datatables/secrets-datatable/secretsDatatable.js","webpack://portainer/./app/docker/components/datatables/service-tasks-datatable/serviceTasksDatatable.js","webpack://portainer/./app/docker/components/datatables/service-tasks-datatable/serviceTasksDatatableController.js","webpack://portainer/./app/docker/components/datatables/services-datatable/actions/servicesDatatableActions.js","webpack://portainer/./app/docker/components/datatables/services-datatable/actions/servicesDatatableActionsController.js","webpack://portainer/./app/docker/components/datatables/services-datatable/servicesDatatable.js","webpack://portainer/./app/docker/components/datatables/services-datatable/servicesDatatableController.js","webpack://portainer/./app/docker/components/datatables/tasks-datatable/tasksDatatable.js","webpack://portainer/./app/docker/components/datatables/tasks-datatable/tasksDatatableController.js","webpack://portainer/./app/docker/components/datatables/volumes-datatable/volumesDatatable.js","webpack://portainer/./app/docker/components/datatables/volumes-datatable/volumesDatatableController.js","webpack://portainer/./app/docker/components/host-overview/host-overview.js","webpack://portainer/./app/docker/components/host-view-panels/devices-panel/devices-panel.js","webpack://portainer/./app/docker/components/host-view-panels/disks-panel/disks-panel.js","webpack://portainer/./app/docker/components/host-view-panels/engine-details-panel/engine-details-panel.js","webpack://portainer/./app/docker/components/host-view-panels/host-details-panel/host-details-panel.js","webpack://portainer/./app/docker/components/host-view-panels/node-availability-select/node-availability-select-controller.js","webpack://portainer/./app/docker/components/host-view-panels/node-availability-select/node-availability-select.js","webpack://portainer/./app/docker/components/host-view-panels/node-labels-table/node-labels-table-controller.js","webpack://portainer/./app/docker/components/host-view-panels/node-labels-table/node-labels-table.js","webpack://portainer/./app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel-controller.js","webpack://portainer/./app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.js","webpack://portainer/./app/docker/components/imageRegistry/por-image-registry-rate-limits.controller.js","webpack://portainer/./app/docker/components/imageRegistry/por-image-registry-rate-limits.js","webpack://portainer/./app/docker/components/imageRegistry/por-image-registry.controller.js","webpack://portainer/./app/docker/components/imageRegistry/por-image-registry.js","webpack://portainer/./app/docker/components/log-viewer/log-viewer.js","webpack://portainer/./app/docker/components/log-viewer/logViewerController.js","webpack://portainer/./app/docker/components/network-macvlan-form/network-macvlan-form.js","webpack://portainer/./app/docker/components/network-macvlan-form/networkMacvlanFormController.js","webpack://portainer/./app/react/docker/networks/CreateView/macvlanOptions.tsx","webpack://portainer/./app/docker/components/network-macvlan-form/networkMacvlanFormModel.js","webpack://portainer/./app/docker/components/volumesCIFSForm/volumesCifsForm.js","webpack://portainer/./app/docker/components/volumesCIFSForm/volumesCifsFormModel.js","webpack://portainer/./app/docker/components/volumesNFSForm/volumes-nfs-form.js","webpack://portainer/./app/docker/components/volumesNFSForm/volumesNFSFormModel.js","webpack://portainer/./app/docker/filters/filters.js","webpack://portainer/./app/docker/helpers/configHelper.js","webpack://portainer/./app/docker/helpers/constraintsHelper.js","webpack://portainer/./app/docker/helpers/containerHelper.js","webpack://portainer/./app/docker/helpers/imageHelper.js","webpack://portainer/./app/docker/helpers/infoHelper.js","webpack://portainer/./app/docker/helpers/labelHelper.js","webpack://portainer/./app/docker/helpers/networkHelper.js","webpack://portainer/./app/docker/helpers/nodeHelper.js","webpack://portainer/./app/docker/helpers/secretHelper.js","webpack://portainer/./app/docker/helpers/serviceHelper.js","webpack://portainer/./app/docker/helpers/taskHelper.js","webpack://portainer/./app/docker/helpers/volumeHelper.js","webpack://portainer/./app/docker/models/config.js","webpack://portainer/./app/docker/models/container.js","webpack://portainer/./app/docker/models/containerCapabilities.js","webpack://portainer/./app/docker/models/event.js","webpack://portainer/./app/docker/models/image.js","webpack://portainer/./app/docker/models/imageDetails.js","webpack://portainer/./app/docker/models/imageLayer.js","webpack://portainer/./app/docker/models/network.js","webpack://portainer/./app/docker/models/node.js","webpack://portainer/./app/docker/models/plugin.js","webpack://portainer/./app/docker/models/porImageRegistry.js","webpack://portainer/./app/docker/models/secret.js","webpack://portainer/./app/docker/models/service.js","webpack://portainer/./app/docker/models/swarm.js","webpack://portainer/./app/docker/models/task.js","webpack://portainer/./app/docker/models/volume.js","webpack://portainer/./app/docker/rest/build.js","webpack://portainer/./app/docker/rest/commit.js","webpack://portainer/./app/docker/rest/config.js","webpack://portainer/./app/docker/rest/container.js","webpack://portainer/./app/docker/rest/exec.js","webpack://portainer/./app/docker/rest/image.js","webpack://portainer/./app/docker/rest/network.js","webpack://portainer/./app/docker/rest/node.js","webpack://portainer/./app/docker/rest/plugin.js","webpack://portainer/./app/docker/rest/response/handlers.js","webpack://portainer/./app/docker/rest/response/image.js","webpack://portainer/./app/docker/rest/secret.js","webpack://portainer/./app/docker/rest/service.js","webpack://portainer/./app/docker/rest/swarm.js","webpack://portainer/./app/docker/rest/system.js","webpack://portainer/./app/docker/rest/task.js","webpack://portainer/./app/docker/rest/volume.js","webpack://portainer/./app/docker/services/buildService.js","webpack://portainer/./app/docker/services/configService.js","webpack://portainer/./app/docker/services/containerService.js","webpack://portainer/./app/docker/services/execService.js","webpack://portainer/./app/docker/services/imageService.js","webpack://portainer/./app/docker/services/networkService.js","webpack://portainer/./app/docker/services/nodeService.js","webpack://portainer/./app/docker/services/pluginService.js","webpack://portainer/./app/docker/services/secretService.js","webpack://portainer/./app/docker/services/serviceService.js","webpack://portainer/./app/docker/services/swarmService.js","webpack://portainer/./app/docker/services/systemService.js","webpack://portainer/./app/docker/services/taskService.js","webpack://portainer/./app/docker/services/volumeService.js","webpack://portainer/./app/docker/views/configs/configsController.js","webpack://portainer/./app/docker/views/configs/create/createConfigController.js","webpack://portainer/./app/docker/views/configs/edit/configController.js","webpack://portainer/./app/docker/views/containers/console/containerConsoleController.js","webpack://portainer/./app/docker/views/containers/create/createContainerController.js","webpack://portainer/./app/react/docker/containers/ItemView/ConfirmRecreationModal.tsx","webpack://portainer/./app/docker/views/containers/edit/containerController.js","webpack://portainer/./app/docker/views/containers/inspect/containerInspectController.js","webpack://portainer/./app/docker/views/containers/logs/containerLogsController.js","webpack://portainer/./app/docker/views/containers/stats/containerStatsController.js","webpack://portainer/./app/react/docker/DashboardView/ContainerStatus.tsx","webpack://portainer/./app/react/docker/DashboardView/ImagesTotalSize.tsx","webpack://portainer/./app/docker/views/dashboard/dashboardController.js","webpack://portainer/./app/docker/views/docker-features-configuration/docker-features-configuration.controller.js","webpack://portainer/./app/docker/views/docker-features-configuration/index.js","webpack://portainer/./app/docker/views/events/eventsController.js","webpack://portainer/./app/docker/views/host/host-browser-view/host-browser-view-controller.js","webpack://portainer/./app/docker/views/host/host-browser-view/host-browser-view.js","webpack://portainer/./app/docker/views/host/host-view-controller.js","webpack://portainer/./app/docker/views/host/host-view.js","webpack://portainer/./app/docker/views/images/build/buildImageController.js","webpack://portainer/./app/docker/views/images/edit/imageController.js","webpack://portainer/./app/docker/views/images/imagesController.js","webpack://portainer/./app/docker/views/images/import/importImageController.js","webpack://portainer/./app/docker/views/networks/create/createNetworkController.js","webpack://portainer/./app/docker/views/networks/networksController.js","webpack://portainer/./app/docker/views/nodes/node-browser/node-browser-controller.js","webpack://portainer/./app/docker/views/nodes/node-browser/node-browser.js","webpack://portainer/./app/docker/views/nodes/node-details/node-details-view-controller.js","webpack://portainer/./app/docker/views/nodes/node-details/node-details-view.js","webpack://portainer/./app/docker/views/registries/access/registryAccess.js","webpack://portainer/./app/docker/views/registries/access/registryAccessController.js","webpack://portainer/./app/docker/views/secrets/create/createSecretController.js","webpack://portainer/./app/docker/views/secrets/edit/secretController.js","webpack://portainer/./app/docker/views/secrets/secretsController.js","webpack://portainer/./app/docker/views/services/create/createServiceController.js","webpack://portainer/./app/docker/views/services/edit/serviceController.js","webpack://portainer/./app/docker/views/services/logs/serviceLogsController.js","webpack://portainer/./app/docker/views/services/servicesController.js","webpack://portainer/./app/docker/views/swarm/swarmController.js","webpack://portainer/./app/docker/views/swarm/visualizer/swarmVisualizerController.js","webpack://portainer/./app/docker/views/tasks/edit/taskController.js","webpack://portainer/./app/docker/views/tasks/logs/taskLogsController.js","webpack://portainer/./app/docker/views/volumes/browse/browseVolumeController.js","webpack://portainer/./app/docker/views/volumes/create/createVolumeController.js","webpack://portainer/./app/docker/views/volumes/edit/volumeController.js","webpack://portainer/./app/docker/views/volumes/volumesController.js","webpack://portainer/./app/react/edge/edge-stacks/components/EdgeStackDeploymentTypeSelector.tsx","webpack://portainer/./app/react/edge/edge-stacks/components/PrivateRegistryFieldset.tsx","webpack://portainer/./app/react/edge/edge-stacks/queries/buildUrl.ts","webpack://portainer/./app/react/edge/edge-stacks/queries/useCreateStackFromFileContent.ts","webpack://portainer/./app/react/portainer/registries/queries/query-keys.ts","webpack://portainer/./app/react/portainer/registries/queries/useRegistries.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/PrivateRegistryFieldsetWrapper.tsx","webpack://portainer/./app/react/components/WebEditorForm.tsx","webpack://portainer/./app/react/portainer/gitops/AuthFieldset/utils.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/useEdgeGroupHasType.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/atLeastTwo.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/GitForm/useUpdateEdgeStackGitMutation.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/GitForm/GitForm.tsx","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/EditEdgeStackForm.tsx","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/ComposeForm.tsx","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/KubernetesForm.tsx","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EditEdgeStackForm/NomadForm.tsx","webpack://portainer/./app/react/edge/components/EdgeGroupAssociationTable.tsx","webpack://portainer/./app/react/edge/edge-stacks/queries/query-keys.ts","webpack://portainer/./app/react/edge/edge-stacks/queries/useEdgeStack.ts","webpack://portainer/./app/assets/ico/icon_updates-available.svg","webpack://portainer/./app/assets/ico/icon_up-to-date.svg","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/useLogsStatus.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/useCollectLogsMutation.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/useDeleteLogsMutation.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/useDownloadLogsMutation.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/LogsActions.tsx","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/EnvironmentActions.tsx","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/ActionStatus.tsx","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/columns.tsx","webpack://portainer/./app/edge/react/components/index.ts","webpack://portainer/./app/react/edge/edge-stacks/ItemView/EnvironmentsDatatable/EnvironmentsDatatable.tsx","webpack://portainer/./app/react/hooks/useParamState.ts","webpack://portainer/./app/react/edge/components/AssociatedEdgeEnvironmentsSelector.tsx","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/columns.ts","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/filter-store.ts","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/Filter.tsx","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/queries.ts","webpack://portainer/./app/react/portainer/environments/queries/useUpdateEnvironmentsRelationsMutation.ts","webpack://portainer/./app/react/edge/edge-groups/queries/useCreateEdgeGroupMutation.ts","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/AssignmentDialog/Selectors/CreatableSelector.tsx","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/AssignmentDialog/Selectors/EdgeGroupSelector.tsx","webpack://portainer/./app/react/portainer/environments/environment-groups/queries/useCreateGroupMutation.ts","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/AssignmentDialog/Selectors/GroupSelector.tsx","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/AssignmentDialog/Selectors/TagSelector.tsx","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/AssignmentDialog/utils.ts","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/AssignmentDialog/AssignmentDialog.tsx","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/AssignmentDialog/createPayload.tsx","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/TableActions.tsx","webpack://portainer/./app/react/portainer/environments/queries/useDeleteEnvironmentsMutation.ts","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/Datatable.tsx","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/Datatable/useEnvironments.ts","webpack://portainer/./app/react/edge/edge-devices/WaitingRoomView/WaitingRoomView.tsx","webpack://portainer/./app/react/edge/edge-stacks/queries/useEdgeStacks.ts","webpack://portainer/./app/react/edge/edge-stacks/ListView/EdgeStacksDatatable/EdgeStacksStatus.tsx","webpack://portainer/./app/react/edge/edge-stacks/ListView/EdgeStacksDatatable/DeploymentCounter.tsx","webpack://portainer/./app/react/edge/edge-stacks/ListView/EdgeStacksDatatable/columns.tsx","webpack://portainer/./app/react/edge/edge-stacks/ListView/EdgeStacksDatatable/TableSettingsMenus.tsx","webpack://portainer/./app/react/edge/edge-stacks/ListView/EdgeStacksDatatable/useDeleteEdgeStacksMutation.ts","webpack://portainer/./app/react/edge/edge-stacks/ListView/EdgeStacksDatatable/TableActions.tsx","webpack://portainer/./app/react/edge/edge-stacks/ListView/EdgeStacksDatatable/EdgeStacksDatatable.tsx","webpack://portainer/./app/react/edge/edge-stacks/ListView/EdgeStacksDatatable/store.ts","webpack://portainer/./app/edge/react/views/index.ts","webpack://portainer/./app/react/edge/edge-stacks/ListView/ListView.tsx","webpack://portainer/./app/edge/react/index.ts","webpack://portainer/./app/edge/__module.js","webpack://portainer/./app/edge/components/associated-endpoints-datatable/associatedEndpointsDatatableController.js","webpack://portainer/./app/edge/components/associated-endpoints-datatable/index.js","webpack://portainer/./app/react/edge/edge-jobs/CreateView/cron-method-options.tsx","webpack://portainer/./app/edge/components/edge-job-form/edgeJobFormController.js","webpack://portainer/./app/edge/components/edge-job-form/index.js","webpack://portainer/./app/edge/components/edge-job-results-datatable/edgeJobResultsDatatableController.js","webpack://portainer/./app/edge/components/edge-job-results-datatable/index.js","webpack://portainer/./app/edge/components/edge-jobs-datatable/index.js","webpack://portainer/./app/edge/components/edge-stack-status/edgeStackStatusController.js","webpack://portainer/./app/edge/components/edge-stack-status/index.js","webpack://portainer/./app/react/edge/edge-groups/CreateView/tag-options.tsx","webpack://portainer/./app/react/edge/edge-groups/CreateView/group-type-options.tsx","webpack://portainer/./app/edge/components/group-form/groupFormController.js","webpack://portainer/./app/edge/components/group-form/index.js","webpack://portainer/./app/edge/components/groups-datatable/groupsDatatableController.js","webpack://portainer/./app/edge/components/groups-datatable/index.js","webpack://portainer/./app/edge/rest/edge-groups.js","webpack://portainer/./app/edge/rest/edge-job-results.js","webpack://portainer/./app/edge/rest/edge-jobs.js","webpack://portainer/./app/edge/rest/edge-stacks.js","webpack://portainer/./app/edge/rest/edge-templates.js","webpack://portainer/./app/edge/services/edge-group.js","webpack://portainer/./app/edge/services/edge-job.js","webpack://portainer/./app/edge/services/edge-stack.js","webpack://portainer/./app/edge/services/edge-template.js","webpack://portainer/./app/edge/views/edge-groups/createEdgeGroupView/createEdgeGroupViewController.js","webpack://portainer/./app/edge/views/edge-groups/createEdgeGroupView/index.js","webpack://portainer/./app/edge/views/edge-groups/edgeGroupsView/edgeGroupsViewController.js","webpack://portainer/./app/edge/views/edge-groups/edgeGroupsView/index.js","webpack://portainer/./app/edge/views/edge-groups/editEdgeGroupView/editEdgeGroupViewController.js","webpack://portainer/./app/edge/views/edge-groups/editEdgeGroupView/index.js","webpack://portainer/./app/edge/views/edge-jobs/createEdgeJobView/createEdgeJobViewController.js","webpack://portainer/./app/edge/views/edge-jobs/createEdgeJobView/index.js","webpack://portainer/./app/edge/views/edge-jobs/edgeJob/edgeJobController.js","webpack://portainer/./app/edge/views/edge-jobs/edgeJob/index.js","webpack://portainer/./app/edge/views/edge-jobs/edgeJobsView/edgeJobsViewController.js","webpack://portainer/./app/edge/views/edge-jobs/edgeJobsView/index.js","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.controller.js","webpack://portainer/./app/react/edge/edge-stacks/utils.ts","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.js","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/docker-compose-form/docker-compose-form.controller.js","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/docker-compose-form/index.js","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/index.js","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/kube-deploy-description/index.js","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/index.js","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/kube-manifest-form.controller.js","webpack://portainer/./app/edge/views/edge-stacks/editEdgeStackView/editEdgeStackViewController.js","webpack://portainer/./app/edge/views/edge-stacks/editEdgeStackView/index.js","webpack://portainer/./app/edge/views/edge-stacks/index.js","webpack://portainer/./app/i18n.ts","webpack://portainer/./app/azure/react/components/index.ts","webpack://portainer/./app/react/azure/container-instances/CreateView/PortsMappingField.module.css?a1c2","webpack://portainer/./app/react/azure/container-instances/CreateView/PortsMappingField.tsx","webpack://portainer/./app/react/azure/services/utils.ts","webpack://portainer/./app/react/azure/queries/query-keys.ts","webpack://portainer/./app/react/azure/queries/useProvider.ts","webpack://portainer/./app/react/azure/queries/utils.ts","webpack://portainer/./app/react/azure/queries/useResourceGroups.ts","webpack://portainer/./app/react/azure/queries/useSubscriptions.ts","webpack://portainer/./app/react/azure/container-instances/CreateView/utils.ts","webpack://portainer/./app/react/azure/services/container-groups.service.ts","webpack://portainer/./app/react/azure/container-instances/CreateView/useCreateInstanceMutation.tsx","webpack://portainer/./app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.tsx","webpack://portainer/./app/react/azure/container-instances/CreateView/useLoadFormState.ts","webpack://portainer/./app/react/azure/container-instances/CreateView/CreateContainerInstanceForm.validation.ts","webpack://portainer/./app/react/azure/container-instances/CreateView/PortsMappingField.validation.ts","webpack://portainer/./app/react/azure/queries/useContainerGroup.ts","webpack://portainer/./app/react/azure/queries/useResourceGroup.ts","webpack://portainer/./app/react/azure/queries/useSubscription.ts","webpack://portainer/./app/react/azure/queries/useContainerGroups.ts","webpack://portainer/./app/react/azure/container-instances/ListView/columns/helper.ts","webpack://portainer/./app/react/azure/container-instances/ListView/columns/name.tsx","webpack://portainer/./app/react/azure/container-instances/ListView/columns/location.ts","webpack://portainer/./app/react/azure/container-instances/ListView/columns/ports.tsx","webpack://portainer/./app/react/azure/utils.ts","webpack://portainer/./app/react/azure/container-instances/ListView/columns/index.ts","webpack://portainer/./app/react/azure/container-instances/ListView/columns/ownership.tsx","webpack://portainer/./app/react/azure/container-instances/ListView/ContainersDatatable.tsx","webpack://portainer/./app/react/azure/container-instances/ListView/ListView.tsx","webpack://portainer/./app/azure/react/views/index.ts","webpack://portainer/./app/react/azure/container-instances/ItemView/ItemView.tsx","webpack://portainer/./app/react/azure/container-instances/CreateView/CreateView.tsx","webpack://portainer/./app/react/azure/DashboardView/DashboardView.tsx","webpack://portainer/./app/azure/react/index.ts","webpack://portainer/./app/azure/index.ts","webpack://portainer/./app/ng-constants.ts","webpack://portainer/./app/react/nomad/DashboardView/useDashboard.ts","webpack://portainer/./app/react/nomad/DashboardView/RunningStatus.tsx","webpack://portainer/./app/react/nomad/jobs/EventsView/EventsDatatable/columns/helper.ts","webpack://portainer/./app/react/nomad/jobs/EventsView/EventsDatatable/columns/index.tsx","webpack://portainer/./app/react/nomad/jobs/EventsView/EventsDatatable/columns/date.tsx","webpack://portainer/./app/react/nomad/jobs/EventsView/EventsDatatable/columns/type.tsx","webpack://portainer/./app/react/nomad/jobs/EventsView/EventsDatatable/columns/message.tsx","webpack://portainer/./app/react/nomad/jobs/EventsView/EventsDatatable/EventsDatatable.tsx","webpack://portainer/./app/react/nomad/jobs/EventsView/useEvents.ts","webpack://portainer/./app/react/nomad/jobs/JobsView/useJobs.ts","webpack://portainer/./app/react/components/datatables/ExpandableDatatableRow.tsx","webpack://portainer/./app/react/components/datatables/ExpandableDatatable.tsx","webpack://portainer/./app/react/components/datatables/NestedTable.tsx","webpack://portainer/./app/react/components/datatables/NestedDatatable.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/columns/helper.ts","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/columns/taskStatus.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/columns/taskName.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/columns/taskGroup.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/columns/allocationID.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/columns/started.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/columns/index.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/columns/actions.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/TasksDatatable/TasksDatatable.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/columns/helper.ts","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/columns/name.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/columns/status.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/columns/created.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/columns/actions.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/columns/index.tsx","webpack://portainer/./app/react/components/datatables/expand-column.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/columns/namespace.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/JobsDatatableSettings.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/JobsDatatable.tsx","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsDatatable/datatable-store.ts","webpack://portainer/./app/react/nomad/jobs/JobsView/JobsView.tsx","webpack://portainer/./app/react/nomad/nomad.service.ts","webpack://portainer/./app/nomad/react/components/index.ts","webpack://portainer/./app/nomad/react/views/index.ts","webpack://portainer/./app/nomad/react/index.ts","webpack://portainer/./app/nomad/logs/logs.ts","webpack://portainer/./app/nomad/logs/index.ts","webpack://portainer/./app/nomad/index.ts","webpack://portainer/./app/react/nomad/DashboardView/DashboardView.tsx","webpack://portainer/./app/react/nomad/jobs/EventsView/EventsView.tsx","webpack://portainer/./app/index.js","webpack://portainer/./app/react/kubernetes/namespaces/service.ts","webpack://portainer/./app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/columns/helper.ts","webpack://portainer/./app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/columns/availability.tsx","webpack://portainer/./app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/columns/type.tsx","webpack://portainer/./app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/columns/name.tsx","webpack://portainer/./app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/columns/index.ts","webpack://portainer/./app/react/kubernetes/cluster/ingressClass/IngressClassDatatable/IngressClassDatatable.tsx","webpack://portainer/./app/react/kubernetes/cluster/ConfigureView/StorageAccessModeSelector.tsx","webpack://portainer/./app/react/kubernetes/namespaces/AccessView/NamespaceAccessUsersSelector.tsx","webpack://portainer/./app/react/kubernetes/ingresses/queries.ts","webpack://portainer/./app/react/components/Card/Card.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/components/ContainerPortInput.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/components/ServicePortInput.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/ingress/AppIngressPathForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/ingress/AppIngressPathsForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/cluster-ip/ClusterIpServiceForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/cluster-ip/ClusterIpServicesForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/components/ServiceTabs.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/node-port/NodePortServiceForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/node-port/NodePortServicesForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/load-balancer/LoadBalancerServiceForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/load-balancer/LoadBalancerServicesForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/components/ServiceTabLabel.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/PublishingExplaination.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/KubeServicesForm.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/application-services/kubeServicesValidation.ts","webpack://portainer/./app/react/kubernetes/namespaces/utils.ts","webpack://portainer/./app/react/kubernetes/applications/constants.ts","webpack://portainer/./app/react/kubernetes/applications/utils.ts","webpack://portainer/./app/react/kubernetes/applications/pod.service.ts","webpack://portainer/./app/react/kubernetes/applications/application.service.ts","webpack://portainer/./app/react/kubernetes/applications/autoscaling.service.ts","webpack://portainer/./app/react/kubernetes/applications/application.queries.ts","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationSummaryWidget.tsx","webpack://portainer/./app/react/common/stacks/stack.service.ts","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/RestartApplicationButton.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/RedeployApplicationButton.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/RollbackApplicationButton.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/ApplicationServicesTable.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/ApplicationIngressesTable.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/ApplicationAutoScalingTable.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/ApplicationEnvVarsTable.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/ApplicationVolumeConfigsTable.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/ApplicationPersistentDataTable.tsx","webpack://portainer/./app/kubernetes/react/components/index.ts","webpack://portainer/./app/react/kubernetes/cluster/RegistryAccessView/NamespacesSelector.tsx","webpack://portainer/./app/react/kubernetes/namespaces/CreateView/CreateNamespaceRegistriesSelector.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/KubeApplicationAccessPolicySelector.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/KubeApplicationDeploymentTypeSelector.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/deploymentOptions.tsx","webpack://portainer/./app/react/kubernetes/applications/DetailsView/ApplicationDetailsWidget/ApplicationDetailsWidget.tsx","webpack://portainer/./app/react/kubernetes/namespaces/queries.ts","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/columns/helper.ts","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/columns/name.tsx","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/columns/type.tsx","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/columns/namespace.tsx","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/columns/className.tsx","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/columns/ingressRules.tsx","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/columns/index.ts","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/columns/created.tsx","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/IngressDatatable.tsx","webpack://portainer/./app/react/kubernetes/configs/service.ts","webpack://portainer/./app/react/components/InlineLoader/InlineLoader.tsx","webpack://portainer/./app/react/kubernetes/ingresses/CreateIngressView/Annotations/index.tsx","webpack://portainer/./app/react/kubernetes/ingresses/CreateIngressView/IngressForm.tsx","webpack://portainer/./app/react/kubernetes/ingresses/CreateIngressView/utils.ts","webpack://portainer/./app/react/kubernetes/volumes/service.ts","webpack://portainer/./app/react/kubernetes/axiosError.ts","webpack://portainer/./app/react/kubernetes/configs/configmap.service.ts","webpack://portainer/./app/react/kubernetes/configs/secret.service.ts","webpack://portainer/./app/react/kubernetes/dashboard/EnvironmentInfo.tsx","webpack://portainer/./app/react/kubernetes/datatables/DefaultDatatableSettings.tsx","webpack://portainer/./app/react/kubernetes/datatables/SystemResourceDescription.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/helper.ts","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/name.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/type.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/namespace.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/ports.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/clusterIP.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/ExternalIPLink.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/externalIP.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/targetPorts.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/index.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/application.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/columns/created.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/ServicesDatatable.tsx","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesDatatable/datatable-store.ts","webpack://portainer/./app/react/components/Widget/WidgetTabs.tsx","webpack://portainer/./app/react/kubernetes/datatables/default-kube-datatable-store.ts","webpack://portainer/./app/react/kubernetes/configs/ListView/ConfigMapsDatatable/utils.ts","webpack://portainer/./app/react/kubernetes/configs/ListView/ConfigMapsDatatable/columns/helper.ts","webpack://portainer/./app/react/kubernetes/configs/ListView/ConfigMapsDatatable/columns/name.tsx","webpack://portainer/./app/react/kubernetes/configs/ListView/ConfigMapsDatatable/columns/namespace.tsx","webpack://portainer/./app/react/kubernetes/configs/ListView/ConfigMapsDatatable/columns/created.tsx","webpack://portainer/./app/react/kubernetes/configs/ListView/ConfigMapsDatatable/columns/index.ts","webpack://portainer/./app/react/kubernetes/configs/ListView/ConfigMapsDatatable/ConfigMapsDatatable.tsx","webpack://portainer/./app/react/kubernetes/configs/ListView/SecretsDatatable/utils.ts","webpack://portainer/./app/react/kubernetes/configs/ListView/SecretsDatatable/columns/helper.ts","webpack://portainer/./app/react/kubernetes/configs/ListView/SecretsDatatable/columns/name.tsx","webpack://portainer/./app/react/kubernetes/configs/ListView/SecretsDatatable/columns/namespace.tsx","webpack://portainer/./app/react/kubernetes/configs/ListView/SecretsDatatable/columns/created.tsx","webpack://portainer/./app/react/kubernetes/configs/ListView/SecretsDatatable/columns/index.ts","webpack://portainer/./app/react/kubernetes/configs/ListView/SecretsDatatable/SecretsDatatable.tsx","webpack://portainer/./app/react/kubernetes/configs/ListView/ConfigmapsAndSecretsView.tsx","webpack://portainer/./app/kubernetes/react/views/index.ts","webpack://portainer/./app/react/kubernetes/services/ServicesView/ServicesView.tsx","webpack://portainer/./app/react/kubernetes/ingresses/IngressDatatable/index.tsx","webpack://portainer/./app/react/kubernetes/ingresses/CreateIngressView/CreateIngressView.tsx","webpack://portainer/./app/react/kubernetes/networks/services/queries.ts","webpack://portainer/./app/react/kubernetes/configs/queries.ts","webpack://portainer/./app/react/kubernetes/dashboard/DashboardView.tsx","webpack://portainer/./app/react/kubernetes/volumes/queries.ts","webpack://portainer/./app/react/kubernetes/applications/ConsoleView/ConsoleView.tsx","webpack://portainer/./app/kubernetes/react/index.ts","webpack://portainer/./app/kubernetes/__module.js","webpack://portainer/./app/kubernetes/components/datatables/application/containers-datatable/containersDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.controller.js","webpack://portainer/./app/kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.js","webpack://portainer/./app/kubernetes/components/datatables/applications-datatable/applicationsDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/applications-datatable/applicationsDatatableController.js","webpack://portainer/./app/kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatableController.js","webpack://portainer/./app/kubernetes/components/datatables/configurations-datatable/configurationsDatatableController.js","webpack://portainer/./app/kubernetes/components/datatables/events-datatable/eventsDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/integrated-applications-datatable/integratedApplicationsDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatableController.js","webpack://portainer/./app/kubernetes/components/datatables/nodes-datatable/nodesDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatableController.js","webpack://portainer/./app/kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatableController.js","webpack://portainer/./app/kubernetes/components/datatables/volumes-datatable/volumesDatatable.js","webpack://portainer/./app/kubernetes/components/datatables/volumes-datatable/volumesDatatableController.js","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.controller.js","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.js","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list-item/helm-templates-list-item.js","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.controller.js","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.js","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-templates.controller.js","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-templates.js","webpack://portainer/./app/kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationData.js","webpack://portainer/./app/kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationDataController.js","webpack://portainer/./app/kubernetes/components/resource-reservation/resourceReservation.js","webpack://portainer/./app/kubernetes/components/resource-reservation/resourceReservationController.js","webpack://portainer/./app/kubernetes/components/view-loading/viewLoading.js","webpack://portainer/./app/kubernetes/components/yaml-inspector/yamlInspector.js","webpack://portainer/./app/kubernetes/components/yaml-inspector/yamlInspectorController.js","webpack://portainer/./app/kubernetes/converters/application.js","webpack://portainer/./app/kubernetes/converters/configMap.js","webpack://portainer/./app/kubernetes/converters/configuration.js","webpack://portainer/./app/kubernetes/converters/daemonSet.js","webpack://portainer/./app/kubernetes/converters/deployment.js","webpack://portainer/./app/kubernetes/converters/event.js","webpack://portainer/./app/kubernetes/converters/namespace.js","webpack://portainer/./app/kubernetes/converters/persistentVolumeClaim.js","webpack://portainer/./app/kubernetes/converters/resourcePool.js","webpack://portainer/./app/kubernetes/converters/resourceQuota.js","webpack://portainer/./app/kubernetes/converters/secret.js","webpack://portainer/./app/kubernetes/converters/service.js","webpack://portainer/./app/kubernetes/converters/statefulSet.js","webpack://portainer/./app/kubernetes/converters/storageClass.js","webpack://portainer/./app/kubernetes/converters/volume.js","webpack://portainer/./app/kubernetes/custom-templates/index.js","webpack://portainer/./app/kubernetes/custom-templates/kube-create-custom-template-view/index.js","webpack://portainer/./app/kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.controller.js","webpack://portainer/./app/kubernetes/custom-templates/kube-custom-templates-view/index.js","webpack://portainer/./app/kubernetes/custom-templates/kube-custom-templates-view/kube-custom-templates-view.controller.js","webpack://portainer/./app/kubernetes/custom-templates/kube-edit-custom-template-view/index.js","webpack://portainer/./app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js","webpack://portainer/./app/kubernetes/endpoint/converter.js","webpack://portainer/./app/kubernetes/endpoint/models.js","webpack://portainer/./app/kubernetes/endpoint/rest.js","webpack://portainer/./app/kubernetes/endpoint/service.js","webpack://portainer/./app/kubernetes/filters/applicationFilters.js","webpack://portainer/./app/kubernetes/filters/configurationFilters.js","webpack://portainer/./app/kubernetes/filters/eventFilters.js","webpack://portainer/./app/kubernetes/filters/filters.js","webpack://portainer/./app/kubernetes/helm/rest.js","webpack://portainer/./app/kubernetes/helm/service.js","webpack://portainer/./app/kubernetes/helpers/application/index.js","webpack://portainer/./app/kubernetes/helpers/commonHelper.js","webpack://portainer/./app/kubernetes/helpers/configMapHelper.js","webpack://portainer/./app/kubernetes/helpers/configurationHelper.js","webpack://portainer/./app/kubernetes/helpers/eventHelper.js","webpack://portainer/./app/kubernetes/helpers/formValidationHelper.js","webpack://portainer/./app/kubernetes/helpers/namespaceHelper.js","webpack://portainer/./app/kubernetes/helpers/resourceQuotaHelper.js","webpack://portainer/./app/kubernetes/helpers/resourceReservationHelper.js","webpack://portainer/./app/kubernetes/helpers/serviceHelper.js","webpack://portainer/./app/kubernetes/helpers/stackHelper.js","webpack://portainer/./app/kubernetes/helpers/stackHelper.test.js","webpack://portainer/./app/kubernetes/helpers/volumeHelper.js","webpack://portainer/./app/kubernetes/horizontal-pod-auto-scaler/converter.js","webpack://portainer/./app/kubernetes/horizontal-pod-auto-scaler/helper.js","webpack://portainer/./app/kubernetes/horizontal-pod-auto-scaler/models.js","webpack://portainer/./app/kubernetes/horizontal-pod-auto-scaler/payload.js","webpack://portainer/./app/kubernetes/horizontal-pod-auto-scaler/rest.js","webpack://portainer/./app/kubernetes/horizontal-pod-auto-scaler/service.js","webpack://portainer/./app/kubernetes/ingress/constants.js","webpack://portainer/./app/kubernetes/ingress/converter.js","webpack://portainer/./app/kubernetes/ingress/helper.js","webpack://portainer/./app/kubernetes/ingress/models.js","webpack://portainer/./app/kubernetes/ingress/payloads.js","webpack://portainer/./app/kubernetes/ingress/rest.js","webpack://portainer/./app/kubernetes/ingress/service.js","webpack://portainer/./app/kubernetes/models/application/formValues.js","webpack://portainer/./app/kubernetes/models/application/models/constants.js","webpack://portainer/./app/kubernetes/models/application/models/index.js","webpack://portainer/./app/kubernetes/models/application/payloads.js","webpack://portainer/./app/kubernetes/models/common/params.js","webpack://portainer/./app/kubernetes/models/common/payloads.js","webpack://portainer/./app/kubernetes/models/config-map/models.js","webpack://portainer/./app/kubernetes/models/config-map/payloads.js","webpack://portainer/./app/kubernetes/models/configuration/formvalues.js","webpack://portainer/./app/kubernetes/models/configuration/models.js","webpack://portainer/./app/kubernetes/models/daemon-set/models.js","webpack://portainer/./app/kubernetes/models/daemon-set/payloads.js","webpack://portainer/./app/kubernetes/models/deploy.js","webpack://portainer/./app/kubernetes/models/deployment/models.js","webpack://portainer/./app/kubernetes/models/deployment/payloads.js","webpack://portainer/./app/kubernetes/models/event/models.js","webpack://portainer/./app/kubernetes/models/history/models.js","webpack://portainer/./app/kubernetes/models/namespace/models.js","webpack://portainer/./app/kubernetes/models/namespace/payloads.js","webpack://portainer/./app/kubernetes/models/nodes-limits/models.js","webpack://portainer/./app/kubernetes/models/port/models.js","webpack://portainer/./app/kubernetes/models/resource-pool/formValues.js","webpack://portainer/./app/kubernetes/models/resource-pool/models.js","webpack://portainer/./app/kubernetes/models/resource-quota/models.js","webpack://portainer/./app/kubernetes/models/resource-quota/payloads.js","webpack://portainer/./app/kubernetes/models/resource-reservation/models.js","webpack://portainer/./app/kubernetes/models/resource-types/models.js","webpack://portainer/./app/kubernetes/models/secret/models.js","webpack://portainer/./app/kubernetes/models/secret/payloads.js","webpack://portainer/./app/kubernetes/models/service/models.js","webpack://portainer/./app/kubernetes/models/service/payloads.js","webpack://portainer/./app/kubernetes/models/stack/models.js","webpack://portainer/./app/kubernetes/models/stateful-set/models.js","webpack://portainer/./app/kubernetes/models/stateful-set/payloads.js","webpack://portainer/./app/kubernetes/models/storage-class/models.js","webpack://portainer/./app/kubernetes/models/storage-class/payload.js","webpack://portainer/./app/kubernetes/models/volume/models.js","webpack://portainer/./app/kubernetes/models/volume/payloads.js","webpack://portainer/./app/kubernetes/node/converter.js","webpack://portainer/./app/kubernetes/node/filters.js","webpack://portainer/./app/kubernetes/node/formValues.js","webpack://portainer/./app/kubernetes/node/helper.js","webpack://portainer/./app/kubernetes/node/models.js","webpack://portainer/./app/kubernetes/node/payload.js","webpack://portainer/./app/kubernetes/node/rest.js","webpack://portainer/./app/kubernetes/node/service.js","webpack://portainer/./app/kubernetes/pod/converter.js","webpack://portainer/./app/kubernetes/pod/filters.js","webpack://portainer/./app/kubernetes/pod/models/affinities.js","webpack://portainer/./app/kubernetes/pod/models/index.js","webpack://portainer/./app/kubernetes/pod/payloads/affinities.js","webpack://portainer/./app/kubernetes/pod/payloads/create.js","webpack://portainer/./app/kubernetes/pod/service.js","webpack://portainer/./app/kubernetes/registries/index.js","webpack://portainer/./app/kubernetes/registries/kube-registry-access-view/index.js","webpack://portainer/./app/kubernetes/registries/kube-registry-access-view/kube-registry-access-view.controller.js","webpack://portainer/./app/react/kubernetes/cluster/RegistryAccessView/ConfirmDeleteAccess.tsx","webpack://portainer/./app/kubernetes/rest/configMap.js","webpack://portainer/./app/kubernetes/rest/controllerRevision.js","webpack://portainer/./app/kubernetes/rest/daemonSet.js","webpack://portainer/./app/kubernetes/rest/deployment.js","webpack://portainer/./app/kubernetes/rest/endpoint.js","webpack://portainer/./app/kubernetes/rest/event.js","webpack://portainer/./app/kubernetes/rest/health.js","webpack://portainer/./app/kubernetes/rest/namespace.js","webpack://portainer/./app/kubernetes/rest/nodesLimits.js","webpack://portainer/./app/kubernetes/rest/persistentVolumeClaim.js","webpack://portainer/./app/kubernetes/rest/pod.js","webpack://portainer/./app/kubernetes/rest/portainer-namespace.js","webpack://portainer/./app/kubernetes/rest/replicaSet.js","webpack://portainer/./app/kubernetes/rest/resourceQuota.js","webpack://portainer/./app/kubernetes/rest/response/transform.js","webpack://portainer/./app/kubernetes/rest/secret.js","webpack://portainer/./app/kubernetes/rest/service.js","webpack://portainer/./app/kubernetes/rest/serviceAccount.js","webpack://portainer/./app/kubernetes/rest/statefulSet.js","webpack://portainer/./app/kubernetes/rest/storage.js","webpack://portainer/./app/kubernetes/services/applicationService.js","webpack://portainer/./app/kubernetes/services/configMapService.js","webpack://portainer/./app/kubernetes/services/configurationService.js","webpack://portainer/./app/kubernetes/services/controllerRevisionService.js","webpack://portainer/./app/kubernetes/services/daemonSetService.js","webpack://portainer/./app/kubernetes/services/deploymentService.js","webpack://portainer/./app/kubernetes/services/eventService.js","webpack://portainer/./app/kubernetes/services/healthService.js","webpack://portainer/./app/kubernetes/services/namespaceService.js","webpack://portainer/./app/kubernetes/services/nodesLimitsService.js","webpack://portainer/./app/kubernetes/services/persistentVolumeClaimService.js","webpack://portainer/./app/kubernetes/services/resourcePoolService.js","webpack://portainer/./app/kubernetes/services/resourceQuotaService.js","webpack://portainer/./app/kubernetes/services/secretService.js","webpack://portainer/./app/kubernetes/services/serviceService.js","webpack://portainer/./app/kubernetes/services/stackService.js","webpack://portainer/./app/kubernetes/services/statefulSetService.js","webpack://portainer/./app/kubernetes/services/storageService.js","webpack://portainer/./app/kubernetes/services/volumeService.js","webpack://portainer/./app/kubernetes/store/namespace.js","webpack://portainer/./app/kubernetes/views/applications/applications.js","webpack://portainer/./app/kubernetes/views/applications/applicationsController.js","webpack://portainer/./app/kubernetes/views/applications/create/createApplication.js","webpack://portainer/./app/react/kubernetes/applications/CreateView/UpdateIngressPrompt.tsx","webpack://portainer/./app/react/kubernetes/applications/CreateView/placementTypes.tsx","webpack://portainer/./app/kubernetes/views/applications/create/createApplicationController.js","webpack://portainer/./app/kubernetes/views/applications/edit/application.js","webpack://portainer/./app/kubernetes/views/applications/edit/applicationController.js","webpack://portainer/./app/kubernetes/views/applications/edit/components/placements-datatable/controller.js","webpack://portainer/./app/kubernetes/views/applications/edit/components/placements-datatable/index.js","webpack://portainer/./app/kubernetes/views/applications/helm/helm.controller.js","webpack://portainer/./app/kubernetes/views/applications/helm/index.js","webpack://portainer/./app/kubernetes/views/applications/logs/logs.js","webpack://portainer/./app/kubernetes/views/applications/logs/logsController.js","webpack://portainer/./app/kubernetes/views/applications/stats/stats.js","webpack://portainer/./app/kubernetes/views/applications/stats/statsController.js","webpack://portainer/./app/kubernetes/views/cluster/cluster.js","webpack://portainer/./app/kubernetes/views/cluster/clusterController.js","webpack://portainer/./app/kubernetes/views/cluster/node/node.js","webpack://portainer/./app/kubernetes/views/cluster/node/nodeController.js","webpack://portainer/./app/react/kubernetes/cluster/NodeView/ConfirmUpdateNode.tsx","webpack://portainer/./app/kubernetes/views/cluster/node/stats/stats.js","webpack://portainer/./app/kubernetes/views/cluster/node/stats/statsController.js","webpack://portainer/./app/kubernetes/views/configurations/configmap/create/createConfigMap.js","webpack://portainer/./app/kubernetes/views/configurations/configmap/create/createConfigMapController.js","webpack://portainer/./app/kubernetes/views/configurations/configmap/edit/configMap.js","webpack://portainer/./app/kubernetes/views/configurations/configmap/edit/configMapController.js","webpack://portainer/./app/kubernetes/views/configurations/configurationsController.js","webpack://portainer/./app/kubernetes/views/configurations/secret/create/createSecret.js","webpack://portainer/./app/kubernetes/views/configurations/secret/create/createSecretController.js","webpack://portainer/./app/kubernetes/views/configurations/secret/edit/secret.js","webpack://portainer/./app/kubernetes/views/configurations/secret/edit/secretController.js","webpack://portainer/./app/kubernetes/views/configurations/validation.js","webpack://portainer/./app/kubernetes/views/configure/configureController.js","webpack://portainer/./app/kubernetes/views/deploy/deploy.js","webpack://portainer/./app/kubernetes/views/deploy/deployController.js","webpack://portainer/./app/kubernetes/views/resource-pools/access/resourcePoolAccess.js","webpack://portainer/./app/kubernetes/views/resource-pools/access/resourcePoolAccessController.js","webpack://portainer/./app/kubernetes/views/resource-pools/components/storage-class-switch/index.js","webpack://portainer/./app/kubernetes/views/resource-pools/components/storage-class-switch/storage-class-switch.controller.js","webpack://portainer/./app/kubernetes/views/resource-pools/create/createResourcePool.js","webpack://portainer/./app/kubernetes/views/resource-pools/create/createResourcePoolController.js","webpack://portainer/./app/kubernetes/views/resource-pools/edit/components/ingresses-datatable/controller.js","webpack://portainer/./app/kubernetes/views/resource-pools/edit/components/ingresses-datatable/index.js","webpack://portainer/./app/kubernetes/views/resource-pools/edit/resourcePool.js","webpack://portainer/./app/kubernetes/views/resource-pools/edit/resourcePoolController.js","webpack://portainer/./app/react/kubernetes/namespaces/ItemView/ConfirmUpdateNamespace.tsx","webpack://portainer/./app/kubernetes/views/resource-pools/resourcePools.js","webpack://portainer/./app/kubernetes/views/resource-pools/resourcePoolsController.js","webpack://portainer/./app/kubernetes/views/security-constraint/constraintController.js","webpack://portainer/./app/kubernetes/views/stacks/logs/logs.js","webpack://portainer/./app/kubernetes/views/stacks/logs/logsController.js","webpack://portainer/./app/kubernetes/views/summary/resources/applicationResources.js","webpack://portainer/./app/kubernetes/views/summary/resources/configurationResources.js","webpack://portainer/./app/kubernetes/views/summary/resources/helpers.js","webpack://portainer/./app/kubernetes/views/summary/resources/namespaceResources.js","webpack://portainer/./app/kubernetes/views/summary/summary.js","webpack://portainer/./app/kubernetes/views/summary/summaryController.js","webpack://portainer/./app/kubernetes/views/volumes/components/volumes-storages-datatable/controller.js","webpack://portainer/./app/kubernetes/views/volumes/components/volumes-storages-datatable/index.js","webpack://portainer/./app/kubernetes/views/volumes/edit/volume.js","webpack://portainer/./app/kubernetes/views/volumes/edit/volumeController.js","webpack://portainer/./app/react/kubernetes/volumes/ItemView/ConfirmRedeployModal.tsx","webpack://portainer/./app/kubernetes/views/volumes/volumes.js","webpack://portainer/./app/kubernetes/views/volumes/volumesController.js","webpack://portainer/./app/matomo-setup.js","webpack://portainer/./app/nomad/logs/logsController.js","webpack://portainer/./app/nomad/logs/nomad-log-viewer/nomad-log-viewer.js","webpack://portainer/./app/nomad/logs/nomad-log-viewer/nomadLogViewerController.js","webpack://portainer/./app/react/portainer/feature-flags/limited-feature.directive.ts","webpack://portainer/./app/react/portainer/feature-flags/index.ts","webpack://portainer/./app/portainer/services/api/index.ts","webpack://portainer/./app/react/hooks/current-environment-store.ts","webpack://portainer/./app/portainer/services/endpointProvider.ts","webpack://portainer/./app/portainer/services/index.ts","webpack://portainer/./app/react/portainer/environments/environment-groups/components/GroupAssociationTable.tsx","webpack://portainer/./app/react/components/Tip/SliderTooltip/SliderTooltip.module.css?eb3b","webpack://portainer/./app/react/components/Tip/SliderTooltip/SliderTooltip.tsx","webpack://portainer/./app/react/components/form-components/Slider/Slider.tsx","webpack://portainer/./app/portainer/react/components/file-upload-field.ts","webpack://portainer/./app/portainer/react/components/switch-field.ts","webpack://portainer/./app/react/portainer/custom-templates/components/CustomTemplatesVariablesDefinitionField/CustomTemplatesVariablesDefinitionField.tsx","webpack://portainer/./app/portainer/react/components/custom-templates/variables-field.ts","webpack://portainer/./app/portainer/react/components/custom-templates/index.ts","webpack://portainer/./app/react/portainer/custom-templates/components/CustomTemplatesVariablesField/CustomTemplatesVariablesField.tsx","webpack://portainer/./app/portainer/react/components/git-form.ts","webpack://portainer/./app/react/portainer/feature-flags/useFeatureFlag.ts","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/columns/created.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/columns/helper.ts","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/columns/index.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/FDOProfilesDatatableActions.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/FDOProfilesDatatable.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/FDOProfilesDatatable/useFDOProfiles.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/SettingsFDO/SettingsFDO.module.css?f2a1","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/SettingsFDO/SettingsFDO.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/SettingsFDO/SettingsFDO.validation.ts","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/SettingsOpenAMT/SettingsOpenAMT.tsx","webpack://portainer/./app/react/portainer/settings/AuthenticationView/InternalAuth/Badge.tsx","webpack://portainer/./app/react/portainer/settings/AuthenticationView/InternalAuth/PasswordLengthSlider/PasswordLengthSlider.module.css?000c","webpack://portainer/./app/react/portainer/settings/AuthenticationView/InternalAuth/PasswordLengthSlider/PasswordLengthSlider.tsx","webpack://portainer/./app/react/portainer/settings/AuthenticationView/InternalAuth/SaveAuthSettingsButton.tsx","webpack://portainer/./app/react/portainer/settings/AuthenticationView/InternalAuth/InternalAuth.tsx","webpack://portainer/./app/react/components/form-components/validate-url.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/ApplicationSettingsPanel/validation.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/useToggledValue.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ApplicationSettingsPanel/DemoAlert.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ApplicationSettingsPanel/LogoFieldset.tsx","webpack://portainer/./app/react/components/form-components/Input/Textarea.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ApplicationSettingsPanel/ScreenBannerFieldset.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ApplicationSettingsPanel/TemplatesUrlSection.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ApplicationSettingsPanel/EnableTelemetryField.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ApplicationSettingsPanel/ApplicationSettingsPanel.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/KubeSettingsPanel/HelmSection.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/KubeSettingsPanel/KubeConfigSection.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/KubeSettingsPanel/KubeNoteMinimumCharacters.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/KubeSettingsPanel/DeploymentOptionsSection.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/KubeSettingsPanel/validation.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/KubeSettingsPanel/KubeSettingsPanel.tsx","webpack://portainer/./app/react/components/form-components/FormActions.tsx","webpack://portainer/./app/react/components/BEFeatureIndicator/BEOverlay.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/useUpdateSSLConfigMutation.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/HelmCertPanel.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/HiddenContainersPanel/AddLabelForm.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/HiddenContainersPanel/HiddenContainersTable.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/HiddenContainersPanel/HiddenContainersPanel.tsx","webpack://portainer/./app/react/hooks/withHideOnExtension.tsx","webpack://portainer/./app/react/portainer/settings/queries/useSSLSettings.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/SSLSettingsPanel/SSLSettingsPanel.tsx","webpack://portainer/./app/portainer/react/components/settings.ts","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/SettingsOpenAMT/SettingsOpenAMT.validation.ts","webpack://portainer/./app/react/portainer/access-control/AccessManagement/PorAccessManagementUsersSelector.tsx","webpack://portainer/./app/portainer/react/components/access-control.ts","webpack://portainer/./app/react/portainer/access-control/PorAccessControlForm/TeamsSelector.tsx","webpack://portainer/./app/react/portainer/access-control/PorAccessControlForm/UsersSelector.tsx","webpack://portainer/./app/react/portainer/environments/ItemView/EdgeKeyDisplay.tsx","webpack://portainer/./app/portainer/react/components/environments.ts","webpack://portainer/./app/react/portainer/environments/KvmView/KVMControl/KVMControl.tsx","webpack://portainer/./app/react/portainer/environments/ListView/ImportFdoDeviceButton.tsx","webpack://portainer/./app/portainer/react/components/environments-list-view-components.ts","webpack://portainer/./app/portainer/react/components/registries.ts","webpack://portainer/./app/react/portainer/registries/ListView/DefaultRegistry/DefaultRegistryName.tsx","webpack://portainer/./app/react/portainer/registries/ListView/DefaultRegistry/DefaultRegistryAction.tsx","webpack://portainer/./app/react/portainer/registries/ListView/DefaultRegistry/DefaultRegistryDomain.tsx","webpack://portainer/./app/portainer/react/components/index.ts","webpack://portainer/./app/react/components/PasswordCheckHint.tsx","webpack://portainer/./app/react/components/ViewLoading/ViewLoading.tsx","webpack://portainer/./app/react/components/ViewLoading/ViewLoading.module.css?8d2c","webpack://portainer/./app/react/components/FallbackImage.tsx","webpack://portainer/./app/react/components/ReactQueryDevtoolsWrapper.tsx","webpack://portainer/./app/react/components/form-components/Slider/Slider.module.css?fdaa","webpack://portainer/./app/react/kubernetes/annotations/AnnotationsBeTeaser.tsx","webpack://portainer/./app/react/portainer/environments/environment-groups/components/AssociatedEnvironmentsSelector.tsx","webpack://portainer/./app/react/hooks/usePaginationLimitState.ts","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/types.ts","webpack://portainer/./app/react/components/EnvironmentStatusBadgeItem.tsx","webpack://portainer/./app/react/components/EdgeIndicator.tsx","webpack://portainer/./app/react/components/EnvironmentStatusBadge.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EnvironmentIcon.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EnvironmentStatsDocker.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EnvironmentStatsKubernetes.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EnvironmentStatsNomad.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EnvironmentStats.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EngineVersion.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EnvironmentTypeTag.tsx","webpack://portainer/./app/react/components/LinkButton.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EnvironmentBrowseButtons.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EditButtons.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/AgentDetails.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentItem/EnvironmentItem.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/KubeconfigButton/kubeconfig.service.ts","webpack://portainer/./app/react/hooks/useListSelection.ts","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/KubeconfigButton/KubeconfigPrompt.module.css?e1e9","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/KubeconfigButton/KubeconfigPrompt.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/KubeconfigButton/KubeconfigButton.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/NoEnvironmentsInfoPanel.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/query-keys.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/urls.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/useSupportedAgentVersions.ts","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/UpdateBadge.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/SortbySelector.module.css?a959","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/SortbySelector.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentList.module.css?ca38","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentListFilters.tsx","webpack://portainer/./app/react/portainer/environments/queries/useAgentVersionsList.ts","webpack://portainer/./app/react/edge/edge-devices/open-amt/useActivateDevicesMutation.ts","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/AMTButton/AssociateAMTDialog.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/AMTButton/AMTButton.tsx","webpack://portainer/./app/react/portainer/HomeView/EnvironmentList/EnvironmentList.tsx","webpack://portainer/./app/react/portainer/HomeView/EdgeLoadingSpinner.module.css?deac","webpack://portainer/./app/react/portainer/HomeView/EdgeLoadingSpinner.tsx","webpack://portainer/./app/react/hooks/useUIState.tsx","webpack://portainer/./app/react/portainer/HomeView/home.service.ts","webpack://portainer/./app/react/portainer/HomeView/MotdPanel.tsx","webpack://portainer/./app/react/portainer/HomeView/HomeView.tsx","webpack://portainer/./app/react/portainer/account/CreateAccessTokenView/CreateAccessToken.tsx","webpack://portainer/./app/react/portainer/common/PortainerUrlField.tsx","webpack://portainer/./app/react/portainer/common/PortainerTunnelAddrField.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/EdgeComputeSettings/EdgeComputeSettings.validation.ts","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/DeploymentSyncOptions/DeploymentSyncOptions.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/AutomaticEdgeEnvCreation/EnableWaitingRoomSwitch.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/AutomaticEdgeEnvCreation/AutoEnvCreationSettingsForm.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/AutomaticEdgeEnvCreation/AutomaticEdgeEnvCreation.tsx","webpack://portainer/./app/react/portainer/environments/environment.service/edge.ts","webpack://portainer/./app/react/edge/components/edge-agent-standard.svg","webpack://portainer/./app/react/edge/components/edge-agent-async.svg","webpack://portainer/./app/react/portainer/environments/EdgeAutoCreateScriptView/AutomaticEdgeEnvCreation/AutomaticEdgeEnvCreation.tsx","webpack://portainer/./app/react/portainer/environments/EdgeAutoCreateScriptView/EdgeAutoCreateScriptView.tsx","webpack://portainer/./app/react/portainer/environments/ListView/columns/helper.ts","webpack://portainer/./app/react/portainer/environments/ListView/columns/actions.tsx","webpack://portainer/./app/react/portainer/environments/ListView/columns/name.tsx","webpack://portainer/./app/react/portainer/environments/ListView/columns/type.tsx","webpack://portainer/./app/react/portainer/environments/queries/useUpdateEnvironmentMutation.ts","webpack://portainer/./app/react/portainer/environments/ListView/columns/index.ts","webpack://portainer/./app/react/portainer/environments/ListView/columns/url.tsx","webpack://portainer/./app/react/portainer/environments/ListView/EnvironmentsDatatable.tsx","webpack://portainer/./app/react/portainer/environments/ListView/useDeleteEnvironmentsMutation.ts","webpack://portainer/./app/react/portainer/environments/ListView/ListView.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/backup-options.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/queries/backupSettings.service.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/queries/queryKeys.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/queries/useBackupS3Settings.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/queries/useUpdateBackupS3SettingsMutation.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/queries/useDownloadBackupMutation.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/queries/useExportS3BackupMutation.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/BackupFileForm.validation.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/SecurityFieldset.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/BackupFileForm.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/BackupS3Form.validation.ts","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/BackupS3Form.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/BackupSettingsView/BackupSettingsPanel.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ExperimentalFeatures/EnableOpenAIIntegrationSwitch.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ExperimentalFeatures/ExperimentalFeaturesForm.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/ExperimentalFeatures/ExperimentalFeatures.tsx","webpack://portainer/./app/react/portainer/settings/SettingsView/SettingsView.tsx","webpack://portainer/./app/react/portainer/environments/wizard/components/Option/Option.module.css?6843","webpack://portainer/./app/react/portainer/environments/wizard/components/Option/Option.tsx","webpack://portainer/./app/react/portainer/environments/environment.service/create.ts","webpack://portainer/./app/react/portainer/environments/wizard/HomeView/useFetchOrCreateLocalEnvironment.ts","webpack://portainer/./app/react/portainer/environments/wizard/HomeView/HomeView.module.css?3029","webpack://portainer/./app/react/portainer/environments/wizard/HomeView/HomeView.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentTypeSelectView/EnvironmentSelector.tsx","webpack://portainer/./app/assets/ico/vendor/kaas-icon.svg","webpack://portainer/./app/assets/ico/vendor/install-kubernetes.svg","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentTypeSelectView/environment-types.ts","webpack://portainer/./app/react/components/Stepper/Stepper.module.css?ee23","webpack://portainer/./app/react/components/Stepper/Stepper.tsx","webpack://portainer/./app/react/portainer/environments/queries/useCreateEnvironmentMutation.ts","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/MetadataFieldset/MetadataFieldset.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/MoreSettingsSection.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/NameField.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/EdgeAgentTab/EdgeAgentForm/EdgeAgentFieldset.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/MetadataFieldset/validation.ts","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/EdgeAgentTab/EdgeAgentForm/EdgeAgentForm.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/EdgeAgentTab/EdgeAgentForm/EdgeAgentForm.validation.ts","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/EdgeAgentTab/EdgeAgentTab.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/AgentForm/EnvironmentUrlField.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/AgentForm/AgentForm.validation.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/shared/AgentForm/AgentForm.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/AgentTab/DeploymentScripts.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/AgentTab/AgentTab.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/APITab/APIForm.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/APITab/APIForm.validation.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/APITab/APITab.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/APITab/DeploymentScripts.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/SocketTab/SocketForm.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/SocketTab/SocketForm.validation.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/SocketTab/SocketTab.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardDocker/WizardDocker.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardAzure/WizardAzure.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardKubernetes/DeploymentScripts.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardKubernetes/AgentPanel.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardKubernetes/KubeConfigTeaserForm.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardKubernetes/WizardKubernetes.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/EnvironmentsCreationView.module.css?2094","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardEndpointsList/WizardEndpointsList.module.css?db60","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/WizardEndpointsList/WizardEndpointsList.tsx","webpack://portainer/./app/portainer/react/views/wizard.ts","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentsCreationView/EnvironmentsCreationView.tsx","webpack://portainer/./app/react/portainer/environments/wizard/EnvironmentTypeSelectView/EndpointTypeView.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/Details.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/UsersList/RowContext.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/UsersList/name-column.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/UsersList/UsersList.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/TeamMembersList/RowContext.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/TeamMembersList/columns/helper.ts","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/TeamMembersList/columns/name-column.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/TeamMembersList/columns/team-role-column.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/TeamMembersList/columns/index.ts","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/TeamMembersList/TeamMembersList.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/TeamAssociationSelector/TeamAssociationSelector.tsx","webpack://portainer/./app/react/portainer/users/teams/ListView/CreateTeamForm/CreateTeamForm.tsx","webpack://portainer/./app/react/portainer/users/teams/ListView/CreateTeamForm/CreateTeamForm.validation.ts","webpack://portainer/./app/react/portainer/users/teams/ListView/TeamsDatatable/TeamsDatatable.tsx","webpack://portainer/./app/portainer/react/views/teams.ts","webpack://portainer/./app/react/portainer/users/teams/ItemView/ItemView.tsx","webpack://portainer/./app/react/portainer/users/teams/ItemView/useTeamIdParam.ts","webpack://portainer/./app/react/portainer/users/teams/ListView/ListView.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/list.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/types.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/useRemoveMutation.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/columns/helper.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/columns/created.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/columns/groups.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/columns/schedule-status.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/columns/scheduled-time.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/columns/type.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/columns/index.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/ListView.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/ListView/datatable-store.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/create.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/common/NameField.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/common/useEdgeGroupsEnvironmentIds.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/common/ScheduledTimeField.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/common/VersionSelect.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/common/UpdateScheduleDetailsFieldset.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/usePreviousVersions.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/common/RollbackOptions.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/common/RollbackScheduleDetailsFieldset.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/common/ScheduleTypeSelector.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/common/useEnvironments.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/common/validation.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/common/EdgeGroupsField.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/CreateView/CreateView.tsx","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/useItem.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/queries/useUpdateMutation.ts","webpack://portainer/./app/react/portainer/environments/update-schedules/ItemView/ItemView.tsx","webpack://portainer/./app/portainer/react/views/update-schedules.ts","webpack://portainer/./app/portainer/react/views/index.ts","webpack://portainer/./app/react-tools/withI18nSuspense.tsx","webpack://portainer/./app/react/portainer/settings/EdgeComputeView/EdgeComputeSettingsView.tsx","webpack://portainer/./app/portainer/react/index.ts","webpack://portainer/./app/react/sidebar/useSidebarState.tsx","webpack://portainer/./app/react/sidebar/SidebarItem/Wrapper.tsx","webpack://portainer/./app/react/sidebar/SidebarItem/utils.ts","webpack://portainer/./app/react/sidebar/SidebarItem/Menu.tsx","webpack://portainer/./app/react/sidebar/SidebarItem/Head.tsx","webpack://portainer/./app/react/sidebar/SidebarItem/index.ts","webpack://portainer/./app/react/sidebar/SidebarItem/SidebarItem.tsx","webpack://portainer/./app/react/sidebar/SidebarSection.tsx","webpack://portainer/./app/react/sidebar/EdgeComputeSidebar.tsx","webpack://portainer/./app/react/portainer/environments/utils/docker.svg","webpack://portainer/./app/react/portainer/environments/utils/azure.svg","webpack://portainer/./app/react/portainer/environments/utils/kubernetes.svg","webpack://portainer/./app/react/portainer/environments/utils/nomad.svg","webpack://portainer/./app/react/portainer/environments/utils/get-platform-icon.ts","webpack://portainer/./app/react/sidebar/EnvironmentSidebar.module.css?43f4","webpack://portainer/./app/react/sidebar/items/DashboardLink.tsx","webpack://portainer/./app/react/sidebar/AzureSidebar/AzureSidebar.tsx","webpack://portainer/./app/react/sidebar/items/VolumesLink.tsx","webpack://portainer/./app/react/sidebar/DockerSidebar.tsx","webpack://portainer/./app/portainer/services/terminal-window.ts","webpack://portainer/./app/react/sidebar/KubernetesSidebar/KubectlShell/KubectlShell.module.css?3135","webpack://portainer/./app/react/sidebar/KubernetesSidebar/KubectlShell/KubectlShell.tsx","webpack://portainer/./app/react/sidebar/KubernetesSidebar/KubectlShell/KubectlShellButton.module.css?8d5d","webpack://portainer/./app/react/sidebar/KubernetesSidebar/KubectlShell/KubectlShellButton.tsx","webpack://portainer/./app/react/sidebar/KubernetesSidebar/KubernetesSidebar.tsx","webpack://portainer/./app/react/sidebar/NomadSidebar/NomadSidebar.tsx","webpack://portainer/./app/react/sidebar/EnvironmentSidebar.tsx","webpack://portainer/./app/react/sidebar/SettingsSidebar.tsx","webpack://portainer/./app/react/portainer/system/useSystemVersion.ts","webpack://portainer/./app/react/sidebar/Footer/UpdateNotifications.module.css?f05e","webpack://portainer/./app/react/sidebar/Footer/UpdateNotifications.tsx","webpack://portainer/./app/react/sidebar/Footer/portainer_logo.svg","webpack://portainer/./app/react/sidebar/Footer/Footer.module.css?214d","webpack://portainer/./app/react/sidebar/Footer/BuildInfoModal.tsx","webpack://portainer/./app/react/sidebar/Footer/Footer.tsx","webpack://portainer/./app/react/sidebar/Header.module.css?1fea","webpack://portainer/./app/react/sidebar/Header.tsx","webpack://portainer/./app/react/portainer/system/useSystemInfo.ts","webpack://portainer/./app/react/portainer/system/useUpgradeEditionMutation.ts","webpack://portainer/./app/react/sidebar/UpgradeBEBanner/UploadLicenseDialog.tsx","webpack://portainer/./app/react/sidebar/UpgradeBEBanner/LoadingDialog.tsx","webpack://portainer/./app/react/sidebar/UpgradeBEBanner/NonAdminUpgradeDialog.tsx","webpack://portainer/./app/react/components/HubspotForm.tsx","webpack://portainer/./app/react/sidebar/UpgradeBEBanner/GetLicenseDialog.tsx","webpack://portainer/./app/react/sidebar/UpgradeBEBanner/UpgradeDialog.tsx","webpack://portainer/./app/react/sidebar/UpgradeBEBanner/UpgradeBEBanner.tsx","webpack://portainer/./app/portainer/react/views/sidebar.ts","webpack://portainer/./app/react/sidebar/Sidebar.tsx","webpack://portainer/./app/react/sidebar/Sidebar.module.css?f14d","webpack://portainer/./app/portainer/environments/index.ts","webpack://portainer/./app/portainer/helpers/index.ts","webpack://portainer/./app/portainer/__module.js","webpack://portainer/./app/portainer/components/InformationPanel/InformationPanelAngular.js","webpack://portainer/./app/portainer/components/access-datatable/accessDatatable.js","webpack://portainer/./app/portainer/components/access-datatable/accessDatatableController.js","webpack://portainer/./app/portainer/components/access-table/access-table.js","webpack://portainer/./app/portainer/components/accessControlForm/por-access-control-form.js","webpack://portainer/./app/portainer/components/accessControlForm/porAccessControlFormController.js","webpack://portainer/./app/portainer/components/accessControlForm/porAccessControlFormModel.js","webpack://portainer/./app/portainer/components/accessManagement/index.js","webpack://portainer/./app/portainer/components/accessManagement/por-access-management.js","webpack://portainer/./app/portainer/components/accessManagement/porAccessManagementController.js","webpack://portainer/./app/portainer/components/autofocus.js","webpack://portainer/./app/portainer/components/buttonSpinner.js","webpack://portainer/./app/portainer/components/code-editor/code-editor.controller.js","webpack://portainer/./app/portainer/components/code-editor/code-editor.js","webpack://portainer/./app/portainer/components/code-editor/codeEditorController.js","webpack://portainer/./app/portainer/components/copy-button/copy-button.controller.js","webpack://portainer/./app/portainer/components/copy-button/copy-button.js","webpack://portainer/./app/portainer/components/custom-template-common-fields/customTemplateCommonFieldsController.js","webpack://portainer/./app/portainer/components/custom-template-common-fields/index.js","webpack://portainer/./app/portainer/components/custom-template-selector/custom-template-selector.controller.js","webpack://portainer/./app/portainer/components/custom-template-selector/index.js","webpack://portainer/./app/portainer/components/custom-templates-list/customTemplatesListController.js","webpack://portainer/./app/portainer/components/custom-templates-list/index.js","webpack://portainer/./app/portainer/components/datatables/access-tokens-datatable/access-tokens-datatable.controller.js","webpack://portainer/./app/portainer/components/datatables/access-tokens-datatable/index.js","webpack://portainer/./app/portainer/components/datatables/datatable-columns-visibility/datatable-columns-visibility.controller.js","webpack://portainer/./app/portainer/components/datatables/datatable-columns-visibility/index.js","webpack://portainer/./app/portainer/components/datatables/filter/datatable-filter.controller.js","webpack://portainer/./app/portainer/components/datatables/filter/index.js","webpack://portainer/./app/portainer/components/datatables/genericDatatableController.js","webpack://portainer/./app/portainer/components/datatables/groups-datatable/groupsDatatable.js","webpack://portainer/./app/portainer/components/datatables/index.js","webpack://portainer/./app/portainer/components/datatables/pagination/index.js","webpack://portainer/./app/portainer/components/datatables/registries-datatable/registriesDatatable.js","webpack://portainer/./app/portainer/components/datatables/registries-datatable/registriesDatatableController.js","webpack://portainer/./app/portainer/components/datatables/stacks-datatable/stacksDatatable.js","webpack://portainer/./app/portainer/components/datatables/stacks-datatable/stacksDatatableController.js","webpack://portainer/./app/portainer/components/datatables/strings-datatable/index.js","webpack://portainer/./app/portainer/components/datatables/tags-datatable/tagsDatatable.js","webpack://portainer/./app/portainer/components/datatables/titlebar/index.js","webpack://portainer/./app/portainer/components/datatables/users-datatable/usersDatatable.js","webpack://portainer/./app/portainer/components/datatables/users-datatable/usersDatatableController.js","webpack://portainer/./app/portainer/components/demo-feature-indicator/demo-feature-indicator.controller.js","webpack://portainer/./app/portainer/components/demo-feature-indicator/index.js","webpack://portainer/./app/portainer/components/endpointSecurity/por-endpoint-security.js","webpack://portainer/./app/react/portainer/environments/ItemView/tls-options.tsx","webpack://portainer/./app/portainer/components/endpointSecurity/porEndpointSecurityController.js","webpack://portainer/./app/portainer/components/endpointSecurity/porEndpointSecurityModel.js","webpack://portainer/./app/portainer/components/focusIf.js","webpack://portainer/./app/portainer/components/form-components/file-upload-form/index.js","webpack://portainer/./app/portainer/components/form-components/index.js","webpack://portainer/./app/portainer/components/form-components/web-editor-form/index.js","webpack://portainer/./app/portainer/components/form-components/web-editor-form/web-editor-form.controller.js","webpack://portainer/./app/portainer/components/forms/group-form/group-form.js","webpack://portainer/./app/portainer/components/forms/group-form/groupFormController.js","webpack://portainer/./app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.controller.js","webpack://portainer/./app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.js","webpack://portainer/./app/portainer/components/forms/registry-form-aws-ecr/registry-form-ecr.js","webpack://portainer/./app/portainer/components/forms/registry-form-azure/registry-form-azure.js","webpack://portainer/./app/portainer/components/forms/registry-form-custom/registry-form-custom.js","webpack://portainer/./app/portainer/components/forms/registry-form-dockerhub/registry-form-dockerhub.js","webpack://portainer/./app/portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatable.js","webpack://portainer/./app/portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatableController.js","webpack://portainer/./app/portainer/components/forms/registry-form-gitlab/registry-form-gitlab.js","webpack://portainer/./app/portainer/components/forms/registry-form-proget/registry-form-proget.js","webpack://portainer/./app/portainer/components/forms/registry-form-quay/registry-form-quay.js","webpack://portainer/./app/portainer/components/forms/stack-from-template-form/index.js","webpack://portainer/./app/portainer/components/forms/stack-redeploy-git-form/index.js","webpack://portainer/./app/portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.controller.js","webpack://portainer/./app/portainer/components/widget/index.ts","webpack://portainer/./app/portainer/components/widget/rd-widget.ts","webpack://portainer/./app/portainer/components/widget/rd-widget-body.ts","webpack://portainer/./app/portainer/components/widget/rd-widget-custom-header.ts","webpack://portainer/./app/portainer/components/widget/rd-widget-footer.ts","webpack://portainer/./app/portainer/components/widget/rd-widget-title.ts","webpack://portainer/./app/portainer/components/widget/rd-widget-taskbar.ts","webpack://portainer/./app/portainer/components/BEFeatureIndicator/BEFeatureIndicator.controller.ts","webpack://portainer/./app/portainer/components/BEFeatureIndicator/index.ts","webpack://portainer/./app/portainer/components/forms/git-form/git-form.controller.ts","webpack://portainer/./app/portainer/components/forms/git-form/git-form.ts","webpack://portainer/./app/portainer/components/forms/git-form/git-form-auth-fieldset.controller.ts","webpack://portainer/./app/portainer/components/forms/git-form/git-form-auth-fieldset.ts","webpack://portainer/./app/portainer/components/forms/git-form/git-form-auto-update-fieldset.controller.ts","webpack://portainer/./app/portainer/components/forms/git-form/git-form-auto-update-fieldset.ts","webpack://portainer/./app/portainer/components/forms/git-form/git-form-ref-field.ts","webpack://portainer/./app/portainer/components/forms/git-form/index.ts","webpack://portainer/./app/portainer/components/tls-fieldset/index.ts","webpack://portainer/./app/portainer/components/index.js","webpack://portainer/./app/portainer/components/intervalFormat.js","webpack://portainer/./app/portainer/components/onEnterKey.js","webpack://portainer/./app/portainer/components/option-panel/index.js","webpack://portainer/./app/portainer/components/option-panel/option-panel.controller.js","webpack://portainer/./app/portainer/components/product-list/product-item/product-item.js","webpack://portainer/./app/portainer/components/product-list/product-list.js","webpack://portainer/./app/portainer/components/registry-details/index.js","webpack://portainer/./app/portainer/components/sensitive-details/sensitive-details.js","webpack://portainer/./app/portainer/components/show-hide/show-hide.js","webpack://portainer/./app/portainer/components/slider/slider.js","webpack://portainer/./app/portainer/components/slider/sliderController.js","webpack://portainer/./app/portainer/components/stack-duplication-form/stack-duplication-form-controller.js","webpack://portainer/./app/portainer/components/stack-duplication-form/stack-duplication-form.js","webpack://portainer/./app/portainer/components/status-indicator/index.js","webpack://portainer/./app/portainer/components/template-list/template-item/template-item.js","webpack://portainer/./app/portainer/components/template-list/template-list-controller.js","webpack://portainer/./app/portainer/components/template-list/template-list.js","webpack://portainer/./app/portainer/components/template-widget.js","webpack://portainer/./app/react/portainer/account/AccountView/theme-options.tsx","webpack://portainer/./app/portainer/components/theme/theme-settings.controller.js","webpack://portainer/./app/portainer/components/theme/theme-settings.js","webpack://portainer/./app/portainer/environments/azure-endpoint-config/azure-endpoint-config.js","webpack://portainer/./app/portainer/filters/filters.js","webpack://portainer/./app/portainer/filters/index.js","webpack://portainer/./app/portainer/helpers/endpointHelper.js","webpack://portainer/./app/portainer/helpers/formHelper.js","webpack://portainer/./app/portainer/helpers/genericHelper.js","webpack://portainer/./app/portainer/helpers/networkHelper.js","webpack://portainer/./app/portainer/helpers/pathHelper.js","webpack://portainer/./app/portainer/helpers/resourceControlHelper.js","webpack://portainer/./app/portainer/helpers/stackHelper.js","webpack://portainer/./app/portainer/helpers/tagHelper.js","webpack://portainer/./app/portainer/helpers/templateHelper.js","webpack://portainer/./app/portainer/helpers/urlHelper.js","webpack://portainer/./app/portainer/models/access.js","webpack://portainer/./app/portainer/models/dockerhub.js","webpack://portainer/./app/portainer/models/endpoint/formValues.js","webpack://portainer/./app/portainer/models/endpoint/models.js","webpack://portainer/./app/portainer/models/gitlabRegistry.js","webpack://portainer/./app/portainer/models/group.js","webpack://portainer/./app/portainer/models/registry.js","webpack://portainer/./app/portainer/models/registryRepository.js","webpack://portainer/./app/portainer/models/registryTypes.js","webpack://portainer/./app/portainer/models/resourceControl/resourceControlCreatePayload.js","webpack://portainer/./app/portainer/models/resourceControl/resourceControlOwnershipParameters.js","webpack://portainer/./app/portainer/models/schedule.js","webpack://portainer/./app/portainer/models/settings.js","webpack://portainer/./app/portainer/models/stack.js","webpack://portainer/./app/portainer/models/status.js","webpack://portainer/./app/portainer/models/tag.js","webpack://portainer/./app/portainer/models/team.js","webpack://portainer/./app/portainer/models/teamMembership.js","webpack://portainer/./app/portainer/models/template.js","webpack://portainer/./app/portainer/models/user.js","webpack://portainer/./app/portainer/models/webhook.js","webpack://portainer/./app/portainer/oauth/__module.js","webpack://portainer/./app/portainer/oauth/components/oauth-providers-selector/index.js","webpack://portainer/./app/react/portainer/settings/AuthenticationView/oauth-options.tsx","webpack://portainer/./app/portainer/oauth/components/oauth-providers-selector/oauth-provider-selector.controller.js","webpack://portainer/./app/portainer/oauth/components/oauth-settings/index.js","webpack://portainer/./app/portainer/oauth/components/oauth-settings/oauth-settings.controller.js","webpack://portainer/./app/portainer/oauth/components/oauth-settings/providers.js","webpack://portainer/./app/portainer/oauth/services/rest/oauth.js","webpack://portainer/./app/portainer/rbac/components/access-viewer/access-viewer-datatable/index.js","webpack://portainer/./app/portainer/rbac/components/access-viewer/access-viewer.controller.js","webpack://portainer/./app/portainer/rbac/components/access-viewer/index.js","webpack://portainer/./app/portainer/rbac/components/roles-datatable/index.js","webpack://portainer/./app/portainer/rbac/components/roles-datatable/roles-datatable.controller.js","webpack://portainer/./app/portainer/rbac/index.js","webpack://portainer/./app/portainer/rbac/models/access.js","webpack://portainer/./app/portainer/rbac/models/role.js","webpack://portainer/./app/portainer/rbac/services/role.rest.js","webpack://portainer/./app/portainer/rbac/services/role.service.js","webpack://portainer/./app/portainer/rbac/views/roles/index.js","webpack://portainer/./app/portainer/rbac/views/roles/roles.controller.js","webpack://portainer/./app/portainer/rest/auth.js","webpack://portainer/./app/portainer/rest/backup.js","webpack://portainer/./app/portainer/rest/customTemplate.js","webpack://portainer/./app/portainer/rest/endpoint.js","webpack://portainer/./app/portainer/rest/gitlab.js","webpack://portainer/./app/portainer/rest/group.js","webpack://portainer/./app/portainer/rest/registry.js","webpack://portainer/./app/portainer/rest/resourceControl.js","webpack://portainer/./app/portainer/rest/settings.js","webpack://portainer/./app/portainer/rest/ssl.js","webpack://portainer/./app/portainer/rest/stack.js","webpack://portainer/./app/portainer/rest/support.js","webpack://portainer/./app/portainer/rest/tag.js","webpack://portainer/./app/portainer/rest/team.js","webpack://portainer/./app/portainer/rest/teamMembership.js","webpack://portainer/./app/portainer/rest/template.js","webpack://portainer/./app/portainer/rest/transform/getEndpointsTotalCount.js","webpack://portainer/./app/portainer/rest/transform/gitlabResponseGetLink.js","webpack://portainer/./app/portainer/rest/user.js","webpack://portainer/./app/portainer/rest/webhooks.js","webpack://portainer/./app/portainer/services/allSettled.js","webpack://portainer/./app/portainer/services/api/accessService.js","webpack://portainer/./app/portainer/services/api/backupService.js","webpack://portainer/./app/portainer/services/api/customTemplate.js","webpack://portainer/./app/portainer/services/api/dockerhubService.js","webpack://portainer/./app/portainer/services/api/endpointService.js","webpack://portainer/./app/portainer/services/api/groupService.js","webpack://portainer/./app/portainer/services/api/registryService.js","webpack://portainer/./app/portainer/services/api/resourceControlService.js","webpack://portainer/./app/portainer/services/api/settingsService.js","webpack://portainer/./app/portainer/services/api/sslService.js","webpack://portainer/./app/portainer/services/api/stackService.js","webpack://portainer/./app/portainer/services/api/statusService.js","webpack://portainer/./app/portainer/services/api/supportService.js","webpack://portainer/./app/portainer/services/api/tagService.js","webpack://portainer/./app/portainer/services/api/teamMembershipService.js","webpack://portainer/./app/portainer/services/api/teamService.js","webpack://portainer/./app/portainer/services/api/templateService.js","webpack://portainer/./app/portainer/services/api/userService.js","webpack://portainer/./app/portainer/services/api/webhookService.js","webpack://portainer/./app/portainer/services/async.js","webpack://portainer/./app/portainer/services/authentication.js","webpack://portainer/./app/portainer/services/chartService.js","webpack://portainer/./app/portainer/services/datatableService.js","webpack://portainer/./app/portainer/services/fileUpload.js","webpack://portainer/./app/portainer/services/formValidator.js","webpack://portainer/./app/portainer/services/localStorage.js","webpack://portainer/./app/portainer/services/nameValidator.js","webpack://portainer/./app/portainer/services/pagination.js","webpack://portainer/./app/portainer/services/registryGitlabService.js","webpack://portainer/./app/react/docker/images/ItemView/RegistrySelectPrompt.tsx","webpack://portainer/./app/portainer/services/registryModalService.js","webpack://portainer/./app/portainer/services/session-storage.js","webpack://portainer/./app/portainer/services/stateManager.js","webpack://portainer/./app/portainer/services/themeManager.js","webpack://portainer/./app/portainer/settings/authentication/auth-method-constants.js","webpack://portainer/./app/portainer/settings/authentication/auth-type-constants.js","webpack://portainer/./app/portainer/settings/authentication/auto-user-provision-toggle/index.js","webpack://portainer/./app/portainer/settings/authentication/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ad-settings/ad-settings.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ad-settings/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-connectivity-check/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-admin-group/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-group-search/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-group-search/ldap-custom-group-search.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-user-search/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-user-search/ldap-custom-user-search.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-group-search-item/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-group-search/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-group-search/ldap-group-search.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-groups-datatable/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-custom/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-custom/ldap-settings-custom.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-dn-builder/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-dn-builder/ldap-settings-dn-builder.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/ldap-settings-group-dn-builder.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-openldap/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-security/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-test-login/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-test-login/ldap-settings-test-login.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings.model.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings/index.js","webpack://portainer/./app/react/portainer/settings/AuthenticationView/ldap-options.tsx","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings/ldap-settings.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-user-search-item/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-user-search/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-user-search/ldap-user-search.controller.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-users-datatable/index.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap.rest.js","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap.service.js","webpack://portainer/./app/portainer/settings/authentication/save-auth-settings-button/index.js","webpack://portainer/./app/portainer/settings/general/index.js","webpack://portainer/./app/portainer/settings/index.js","webpack://portainer/./app/portainer/user-activity/activity-logs-view/activity-logs-datatable/activity-logs-datatable.controller.js","webpack://portainer/./app/portainer/user-activity/activity-logs-view/activity-logs-datatable/index.js","webpack://portainer/./app/portainer/user-activity/activity-logs-view/activity-logs-view.controller.js","webpack://portainer/./app/portainer/user-activity/activity-logs-view/activity-logs-view.js","webpack://portainer/./app/portainer/user-activity/activity-logs-view/index.js","webpack://portainer/./app/portainer/user-activity/auth-logs-view/auth-logs-datatable/auth-logs-datatable.controller.js","webpack://portainer/./app/portainer/user-activity/auth-logs-view/auth-logs-datatable/index.js","webpack://portainer/./app/portainer/user-activity/auth-logs-view/auth-logs-view.controller.js","webpack://portainer/./app/portainer/user-activity/auth-logs-view/auth-logs-view.js","webpack://portainer/./app/portainer/user-activity/auth-logs-view/index.js","webpack://portainer/./app/react/portainer/notifications/columns/helper.ts","webpack://portainer/./app/react/portainer/notifications/columns/type.tsx","webpack://portainer/./app/react/portainer/notifications/columns/title.tsx","webpack://portainer/./app/react/portainer/notifications/columns/details.tsx","webpack://portainer/./app/react/portainer/notifications/columns/index.tsx","webpack://portainer/./app/react/portainer/notifications/columns/time.tsx","webpack://portainer/./app/react/portainer/notifications/NotificationsView.tsx","webpack://portainer/./app/portainer/user-activity/index.js","webpack://portainer/./app/portainer/views/account/accountController.js","webpack://portainer/./app/portainer/views/account/create-user-access-token/create-user-access-token.controller.js","webpack://portainer/./app/portainer/views/account/create-user-access-token/index.js","webpack://portainer/./app/portainer/views/auth/authController.js","webpack://portainer/./app/portainer/views/custom-templates/create-custom-template-view/createCustomTemplateViewController.js","webpack://portainer/./app/portainer/views/custom-templates/create-custom-template-view/index.js","webpack://portainer/./app/portainer/views/custom-templates/custom-templates-view/customTemplatesViewController.js","webpack://portainer/./app/portainer/views/custom-templates/custom-templates-view/index.js","webpack://portainer/./app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js","webpack://portainer/./app/portainer/views/custom-templates/edit-custom-template-view/index.js","webpack://portainer/./app/portainer/views/devices/import/importDeviceController.js","webpack://portainer/./app/portainer/views/devices/profiles/add/addProfileController.js","webpack://portainer/./app/portainer/views/devices/profiles/add/index.js","webpack://portainer/./app/portainer/views/devices/profiles/edit/editProfileController.js","webpack://portainer/./app/portainer/views/devices/profiles/edit/index.js","webpack://portainer/./app/portainer/views/endpoint-registries/registries.js","webpack://portainer/./app/portainer/views/endpoint-registries/registriesController.js","webpack://portainer/./app/portainer/views/endpoints/access/endpointAccessController.js","webpack://portainer/./app/portainer/views/endpoints/edit/endpointController.js","webpack://portainer/./app/react/portainer/environments/ItemView/ConfirmDisassociateModel.tsx","webpack://portainer/./app/portainer/views/endpoints/helpers.js","webpack://portainer/./app/portainer/views/endpoints/kvm/endpointKVMController.js","webpack://portainer/./app/portainer/views/groups/access/groupAccessController.js","webpack://portainer/./app/portainer/views/groups/create/createGroupController.js","webpack://portainer/./app/portainer/views/groups/edit/groupController.js","webpack://portainer/./app/portainer/views/groups/groupsController.js","webpack://portainer/./app/react/portainer/init/InitAdminView/restore-options.tsx","webpack://portainer/./app/portainer/views/init/admin/initAdminController.js","webpack://portainer/./app/portainer/views/logout/logoutController.js","webpack://portainer/./app/portainer/views/main/mainController.js","webpack://portainer/./app/portainer/views/registries/create/createRegistry.js","webpack://portainer/./app/react/portainer/registries/CreateView/options.tsx","webpack://portainer/./app/portainer/views/registries/create/createRegistryController.js","webpack://portainer/./app/portainer/views/registries/edit/registry.js","webpack://portainer/./app/portainer/views/registries/edit/registryController.js","webpack://portainer/./app/portainer/views/registries/registriesController.js","webpack://portainer/./app/assets/ico/oauth.svg","webpack://portainer/./app/react/portainer/settings/AuthenticationView/InternalAuth/options.tsx","webpack://portainer/./app/portainer/views/settings/authentication/settingsAuthenticationController.js","webpack://portainer/./app/portainer/views/settings/edge-compute/index.js","webpack://portainer/./app/portainer/views/settings/edge-compute/settingsEdgeComputeController.js","webpack://portainer/./app/portainer/views/stacks/create/createStackController.js","webpack://portainer/./app/react/common/stacks/types.ts","webpack://portainer/./app/portainer/views/stacks/edit/stackController.js","webpack://portainer/./app/portainer/views/stacks/stacksController.js","webpack://portainer/./app/portainer/views/tags/tagsController.js","webpack://portainer/./app/portainer/views/templates/templatesController.js","webpack://portainer/./app/portainer/views/users/edit/userController.js","webpack://portainer/./app/portainer/views/users/usersController.js","webpack://portainer/./app/react/components/PageHeader/ContextHelp/docURLs.js","webpack://portainer/./app/setup-tests/global-setup.js","webpack://portainer/./app/vendors.js","webpack://portainer/./app/agent/components/host-browser/hostBrowser.html","webpack://portainer/./app/agent/components/node-selector/nodeSelector.html","webpack://portainer/./app/agent/components/volume-browser/volumeBrowser.html","webpack://portainer/./app/docker/components/container-capabilities/containerCapabilities.html","webpack://portainer/./app/docker/components/container-restart-policy/container-restart-policy.html","webpack://portainer/./app/docker/components/dashboard-cluster-agent-info/dashboardClusterAgentInfo.html","webpack://portainer/./app/docker/components/datatables/container-networks-datatable/containerNetworksDatatable.html","webpack://portainer/./app/docker/components/datatables/container-processes-datatable/containerProcessesDatatable.html","webpack://portainer/./app/docker/components/datatables/macvlan-nodes-datatable/macvlanNodesDatatable.html","webpack://portainer/./app/docker/components/datatables/networks-datatable/network-row-content/networkRowContent.html","webpack://portainer/./app/docker/components/datatables/networks-datatable/networksDatatable.html","webpack://portainer/./app/docker/components/datatables/node-tasks-datatable/nodeTasksDatatable.html","webpack://portainer/./app/docker/components/datatables/nodes-datatable/nodesDatatable.html","webpack://portainer/./app/docker/components/datatables/secrets-datatable/secretsDatatable.html","webpack://portainer/./app/docker/components/datatables/service-tasks-datatable/serviceTasksDatatable.html","webpack://portainer/./app/docker/components/datatables/services-datatable/actions/servicesDatatableActions.html","webpack://portainer/./app/docker/components/datatables/services-datatable/servicesDatatable.html","webpack://portainer/./app/docker/components/datatables/tasks-datatable/tasksDatatable.html","webpack://portainer/./app/docker/components/datatables/volumes-datatable/volumesDatatable.html","webpack://portainer/./app/docker/components/host-overview/host-overview.html","webpack://portainer/./app/docker/components/host-view-panels/devices-panel/devices-panel.html","webpack://portainer/./app/docker/components/host-view-panels/disks-panel/disks-panel.html","webpack://portainer/./app/docker/components/host-view-panels/engine-details-panel/engine-details-panel.html","webpack://portainer/./app/docker/components/host-view-panels/host-details-panel/host-details-panel.html","webpack://portainer/./app/docker/components/host-view-panels/node-availability-select/node-availability-select.html","webpack://portainer/./app/docker/components/host-view-panels/node-labels-table/node-labels-table.html","webpack://portainer/./app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html","webpack://portainer/./app/docker/components/imageRegistry/por-image-registry-rate-limits.html","webpack://portainer/./app/docker/components/imageRegistry/por-image-registry.html","webpack://portainer/./app/docker/components/log-viewer/logViewer.html","webpack://portainer/./app/docker/components/network-macvlan-form/networkMacvlanForm.html","webpack://portainer/./app/docker/components/volumesCIFSForm/volumesCifsForm.html","webpack://portainer/./app/docker/components/volumesNFSForm/volumesnfsForm.html","webpack://portainer/./app/docker/views/configs/configs.html","webpack://portainer/./app/docker/views/configs/create/createconfig.html","webpack://portainer/./app/docker/views/configs/edit/config.html","webpack://portainer/./app/docker/views/containers/console/attach.html","webpack://portainer/./app/docker/views/containers/console/exec.html","webpack://portainer/./app/docker/views/containers/create/createcontainer.html","webpack://portainer/./app/docker/views/containers/edit/container.html","webpack://portainer/./app/docker/views/containers/inspect/containerinspect.html","webpack://portainer/./app/docker/views/containers/logs/containerlogs.html","webpack://portainer/./app/docker/views/containers/stats/containerstats.html","webpack://portainer/./app/docker/views/dashboard/dashboard.html","webpack://portainer/./app/docker/views/docker-features-configuration/docker-features-configuration.html","webpack://portainer/./app/docker/views/events/events.html","webpack://portainer/./app/docker/views/host/host-browser-view/host-browser-view.html","webpack://portainer/./app/docker/views/host/host-view.html","webpack://portainer/./app/docker/views/images/build/buildimage.html","webpack://portainer/./app/docker/views/images/edit/image.html","webpack://portainer/./app/docker/views/images/images.html","webpack://portainer/./app/docker/views/images/import/importimage.html","webpack://portainer/./app/docker/views/networks/create/createnetwork.html","webpack://portainer/./app/docker/views/networks/networks.html","webpack://portainer/./app/docker/views/nodes/node-browser/node-browser.html","webpack://portainer/./app/docker/views/nodes/node-details/node-details-view.html","webpack://portainer/./app/docker/views/registries/access/registryAccess.html","webpack://portainer/./app/docker/views/secrets/create/createsecret.html","webpack://portainer/./app/docker/views/secrets/edit/secret.html","webpack://portainer/./app/docker/views/secrets/secrets.html","webpack://portainer/./app/docker/views/services/create/createservice.html","webpack://portainer/./app/docker/views/services/create/includes/config.html","webpack://portainer/./app/docker/views/services/create/includes/resources-placement.html","webpack://portainer/./app/docker/views/services/create/includes/secret.html","webpack://portainer/./app/docker/views/services/create/includes/update-restart.html","webpack://portainer/./app/docker/views/services/edit/includes/configs.html","webpack://portainer/./app/docker/views/services/edit/includes/constraints.html","webpack://portainer/./app/docker/views/services/edit/includes/container-specs.html","webpack://portainer/./app/docker/views/services/edit/includes/containerlabels.html","webpack://portainer/./app/docker/views/services/edit/includes/environmentvariables.html","webpack://portainer/./app/docker/views/services/edit/includes/hosts.html","webpack://portainer/./app/docker/views/services/edit/includes/image.html","webpack://portainer/./app/docker/views/services/edit/includes/logging.html","webpack://portainer/./app/docker/views/services/edit/includes/mounts.html","webpack://portainer/./app/docker/views/services/edit/includes/networks.html","webpack://portainer/./app/docker/views/services/edit/includes/placementPreferences.html","webpack://portainer/./app/docker/views/services/edit/includes/ports.html","webpack://portainer/./app/docker/views/services/edit/includes/resources.html","webpack://portainer/./app/docker/views/services/edit/includes/restart.html","webpack://portainer/./app/docker/views/services/edit/includes/secrets.html","webpack://portainer/./app/docker/views/services/edit/includes/servicelabels.html","webpack://portainer/./app/docker/views/services/edit/includes/tasks.html","webpack://portainer/./app/docker/views/services/edit/includes/updateconfig.html","webpack://portainer/./app/docker/views/services/edit/service.html","webpack://portainer/./app/docker/views/services/logs/servicelogs.html","webpack://portainer/./app/docker/views/services/services.html","webpack://portainer/./app/docker/views/swarm/swarm.html","webpack://portainer/./app/docker/views/swarm/visualizer/swarmvisualizer.html","webpack://portainer/./app/docker/views/tasks/edit/task.html","webpack://portainer/./app/docker/views/tasks/logs/tasklogs.html","webpack://portainer/./app/docker/views/volumes/browse/browsevolume.html","webpack://portainer/./app/docker/views/volumes/create/createvolume.html","webpack://portainer/./app/docker/views/volumes/edit/volume.html","webpack://portainer/./app/docker/views/volumes/volumes.html","webpack://portainer/./app/edge/components/associated-endpoints-datatable/associatedEndpointsDatatable.html","webpack://portainer/./app/edge/components/edge-job-form/edgeJobForm.html","webpack://portainer/./app/edge/components/edge-job-results-datatable/edgeJobResultsDatatable.html","webpack://portainer/./app/edge/components/edge-jobs-datatable/edgeJobsDatatable.html","webpack://portainer/./app/edge/components/edge-stack-status/edgeStackStatus.html","webpack://portainer/./app/edge/components/group-form/groupForm.html","webpack://portainer/./app/edge/components/groups-datatable/groupsDatatable.html","webpack://portainer/./app/edge/views/edge-groups/createEdgeGroupView/createEdgeGroupView.html","webpack://portainer/./app/edge/views/edge-groups/edgeGroupsView/edgeGroupsView.html","webpack://portainer/./app/edge/views/edge-groups/editEdgeGroupView/editEdgeGroupView.html","webpack://portainer/./app/edge/views/edge-jobs/createEdgeJobView/createEdgeJobView.html","webpack://portainer/./app/edge/views/edge-jobs/edgeJob/edgeJob.html","webpack://portainer/./app/edge/views/edge-jobs/edgeJobsView/edgeJobsView.html","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.html","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/docker-compose-form/docker-compose-form.html","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/kube-deploy-description/kube-deploy-description.html","webpack://portainer/./app/edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/kube-manifest-form.html","webpack://portainer/./app/edge/views/edge-stacks/editEdgeStackView/editEdgeStackView.html","webpack://portainer/./app/kubernetes/components/datatables/application/containers-datatable/containersDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.html","webpack://portainer/./app/kubernetes/components/datatables/applications-datatable/applicationsDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/events-datatable/eventsDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/integrated-applications-datatable/integratedApplicationsDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/nodes-datatable/nodesDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatable.html","webpack://portainer/./app/kubernetes/components/datatables/volumes-datatable/volumesDatatable.html","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.html","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list-item/helm-templates-list-item.html","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.html","webpack://portainer/./app/kubernetes/components/helm/helm-templates/helm-templates.html","webpack://portainer/./app/kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationData.html","webpack://portainer/./app/kubernetes/components/resource-reservation/resourceReservation.html","webpack://portainer/./app/kubernetes/components/view-loading/viewLoading.html","webpack://portainer/./app/kubernetes/components/yaml-inspector/yamlInspector.html","webpack://portainer/./app/kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.html","webpack://portainer/./app/kubernetes/custom-templates/kube-custom-templates-view/kube-custom-templates-view.html","webpack://portainer/./app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.html","webpack://portainer/./app/kubernetes/registries/kube-registry-access-view/kube-registry-access-view.html","webpack://portainer/./app/kubernetes/views/applications/applications.html","webpack://portainer/./app/kubernetes/views/applications/create/createApplication.html","webpack://portainer/./app/kubernetes/views/applications/edit/application.html","webpack://portainer/./app/kubernetes/views/applications/edit/components/placements-datatable/template.html","webpack://portainer/./app/kubernetes/views/applications/helm/helm.html","webpack://portainer/./app/kubernetes/views/applications/logs/logs.html","webpack://portainer/./app/kubernetes/views/applications/stats/stats.html","webpack://portainer/./app/kubernetes/views/cluster/cluster.html","webpack://portainer/./app/kubernetes/views/cluster/node/node.html","webpack://portainer/./app/kubernetes/views/cluster/node/stats/stats.html","webpack://portainer/./app/kubernetes/views/configurations/configmap/create/createConfigMap.html","webpack://portainer/./app/kubernetes/views/configurations/configmap/edit/configMap.html","webpack://portainer/./app/kubernetes/views/configurations/secret/create/createSecret.html","webpack://portainer/./app/kubernetes/views/configurations/secret/edit/secret.html","webpack://portainer/./app/kubernetes/views/configure/configure.html","webpack://portainer/./app/kubernetes/views/deploy/deploy.html","webpack://portainer/./app/kubernetes/views/resource-pools/access/resourcePoolAccess.html","webpack://portainer/./app/kubernetes/views/resource-pools/components/storage-class-switch/storage-class-switch.html","webpack://portainer/./app/kubernetes/views/resource-pools/create/createResourcePool.html","webpack://portainer/./app/kubernetes/views/resource-pools/edit/components/ingresses-datatable/template.html","webpack://portainer/./app/kubernetes/views/resource-pools/edit/resourcePool.html","webpack://portainer/./app/kubernetes/views/resource-pools/resourcePools.html","webpack://portainer/./app/kubernetes/views/security-constraint/constraint.html","webpack://portainer/./app/kubernetes/views/stacks/logs/logs.html","webpack://portainer/./app/kubernetes/views/summary/summary.html","webpack://portainer/./app/kubernetes/views/volumes/components/volumes-storages-datatable/template.html","webpack://portainer/./app/kubernetes/views/volumes/edit/volume.html","webpack://portainer/./app/kubernetes/views/volumes/volumes.html","webpack://portainer/./app/nomad/logs/logs.html","webpack://portainer/./app/nomad/logs/nomad-log-viewer/nomadLogViewer.html","webpack://portainer/./app/portainer/components/BEFeatureIndicator/BEFeatureIndicator.html","webpack://portainer/./app/portainer/components/InformationPanel/InformationPanelAngular.html","webpack://portainer/./app/portainer/components/access-datatable/accessDatatable.html","webpack://portainer/./app/portainer/components/access-table/accessTable.html","webpack://portainer/./app/portainer/components/accessControlForm/porAccessControlForm.html","webpack://portainer/./app/portainer/components/accessManagement/porAccessManagement.html","webpack://portainer/./app/portainer/components/code-editor/code-editor.html","webpack://portainer/./app/portainer/components/copy-button/copy-button.html","webpack://portainer/./app/portainer/components/custom-template-common-fields/customTemplateCommonFields.html","webpack://portainer/./app/portainer/components/custom-template-selector/custom-template-selector.html","webpack://portainer/./app/portainer/components/custom-templates-list/customTemplatesList.html","webpack://portainer/./app/portainer/components/datatables/access-tokens-datatable/access-tokens-datatable.html","webpack://portainer/./app/portainer/components/datatables/datatable-columns-visibility/datatable-columns-visibility.html","webpack://portainer/./app/portainer/components/datatables/filter/datatable-filter.html","webpack://portainer/./app/portainer/components/datatables/groups-datatable/groupsDatatable.html","webpack://portainer/./app/portainer/components/datatables/pagination/pagination.html","webpack://portainer/./app/portainer/components/datatables/registries-datatable/registriesDatatable.html","webpack://portainer/./app/portainer/components/datatables/stacks-datatable/stacksDatatable.html","webpack://portainer/./app/portainer/components/datatables/strings-datatable/strings-datatable.html","webpack://portainer/./app/portainer/components/datatables/tags-datatable/tagsDatatable.html","webpack://portainer/./app/portainer/components/datatables/titlebar/datatable-titlebar.html","webpack://portainer/./app/portainer/components/datatables/users-datatable/usersDatatable.html","webpack://portainer/./app/portainer/components/demo-feature-indicator/demo-feature-indicator.html","webpack://portainer/./app/portainer/components/endpointSecurity/porEndpointSecurity.html","webpack://portainer/./app/portainer/components/form-components/file-upload-form/file-upload-form.html","webpack://portainer/./app/portainer/components/form-components/web-editor-form/web-editor-form.html","webpack://portainer/./app/portainer/components/forms/group-form/groupForm.html","webpack://portainer/./app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.html","webpack://portainer/./app/portainer/components/forms/registry-form-aws-ecr/registry-form-ecr.html","webpack://portainer/./app/portainer/components/forms/registry-form-azure/registry-form-azure.html","webpack://portainer/./app/portainer/components/forms/registry-form-custom/registry-form-custom.html","webpack://portainer/./app/portainer/components/forms/registry-form-dockerhub/registry-form-dockerhub.html","webpack://portainer/./app/portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatable.html","webpack://portainer/./app/portainer/components/forms/registry-form-gitlab/registry-form-gitlab.html","webpack://portainer/./app/portainer/components/forms/registry-form-proget/registry-form-proget.html","webpack://portainer/./app/portainer/components/forms/registry-form-quay/registry-form-quay.html","webpack://portainer/./app/portainer/components/forms/stack-from-template-form/stackFromTemplateForm.html","webpack://portainer/./app/portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.html","webpack://portainer/./app/portainer/components/option-panel/option-panel.html","webpack://portainer/./app/portainer/components/product-list/product-item/productItem.html","webpack://portainer/./app/portainer/components/product-list/productList.html","webpack://portainer/./app/portainer/components/registry-details/registry-details.html","webpack://portainer/./app/portainer/components/sensitive-details/sensitive-details.html","webpack://portainer/./app/portainer/components/show-hide/show-hide.html","webpack://portainer/./app/portainer/components/slider/slider.html","webpack://portainer/./app/portainer/components/stack-duplication-form/stack-duplication-form.html","webpack://portainer/./app/portainer/components/status-indicator/status-indicator.html","webpack://portainer/./app/portainer/components/template-list/template-item/templateItem.html","webpack://portainer/./app/portainer/components/template-list/templateList.html","webpack://portainer/./app/portainer/components/theme/theme-settings.html","webpack://portainer/./app/portainer/environments/azure-endpoint-config/azureEndpointConfig.html","webpack://portainer/./app/portainer/oauth/components/oauth-providers-selector/oauth-providers-selector.html","webpack://portainer/./app/portainer/oauth/components/oauth-settings/oauth-settings.html","webpack://portainer/./app/portainer/rbac/components/access-viewer/access-viewer-datatable/access-viewer-datatable.html","webpack://portainer/./app/portainer/rbac/components/access-viewer/access-viewer.html","webpack://portainer/./app/portainer/rbac/components/roles-datatable/roles-datatable.html","webpack://portainer/./app/portainer/rbac/views/roles/roles.html","webpack://portainer/./app/portainer/settings/authentication/auto-user-provision-toggle/auto-user-provision-toggle.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ad-settings/ad-settings.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-connectivity-check/ldap-connectivity-check.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-group-search/ldap-custom-group-search.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-custom-user-search/ldap-custom-user-search.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-group-search/ldap-group-search.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-groups-datatable/ldap-groups-datatable.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-custom/ldap-settings-custom.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-dn-builder/ldap-settings-dn-builder.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/ldap-settings-group-dn-builder.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-security/ldap-settings-security.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings-test-login/ldap-settings-test-login.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-settings/ldap-settings.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-user-search/ldap-user-search.html","webpack://portainer/./app/portainer/settings/authentication/ldap/ldap-users-datatable/ldap-users-datatable.html","webpack://portainer/./app/portainer/settings/authentication/save-auth-settings-button/save-auth-settings-button.html","webpack://portainer/./app/portainer/user-activity/activity-logs-view/activity-logs-datatable/activity-logs-datatable.html","webpack://portainer/./app/portainer/user-activity/activity-logs-view/activity-logs-view.html","webpack://portainer/./app/portainer/user-activity/auth-logs-view/auth-logs-datatable/auth-logs-datatable.html","webpack://portainer/./app/portainer/user-activity/auth-logs-view/auth-logs-view.html","webpack://portainer/./app/portainer/views/account/account.html","webpack://portainer/./app/portainer/views/account/create-user-access-token/create-user-access-token.html","webpack://portainer/./app/portainer/views/auth/auth.html","webpack://portainer/./app/portainer/views/custom-templates/create-custom-template-view/createCustomTemplateView.html","webpack://portainer/./app/portainer/views/custom-templates/custom-templates-view/customTemplatesView.html","webpack://portainer/./app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateView.html","webpack://portainer/./app/portainer/views/devices/import/importDevice.html","webpack://portainer/./app/portainer/views/devices/profiles/add/addProfile.html","webpack://portainer/./app/portainer/views/devices/profiles/edit/editProfile.html","webpack://portainer/./app/portainer/views/endpoint-registries/registries.html","webpack://portainer/./app/portainer/views/endpoints/access/endpointAccess.html","webpack://portainer/./app/portainer/views/endpoints/edit/endpoint.html","webpack://portainer/./app/portainer/views/endpoints/kvm/endpointKVM.html","webpack://portainer/./app/portainer/views/groups/access/groupAccess.html","webpack://portainer/./app/portainer/views/groups/create/creategroup.html","webpack://portainer/./app/portainer/views/groups/edit/group.html","webpack://portainer/./app/portainer/views/groups/groups.html","webpack://portainer/./app/portainer/views/init/admin/initAdmin.html","webpack://portainer/./app/portainer/views/logout/logout.html","webpack://portainer/./app/portainer/views/registries/create/createRegistry.html","webpack://portainer/./app/portainer/views/registries/edit/registry.html","webpack://portainer/./app/portainer/views/registries/registries.html","webpack://portainer/./app/portainer/views/settings/authentication/settingsAuthentication.html","webpack://portainer/./app/portainer/views/settings/edge-compute/settingsEdgeCompute.html","webpack://portainer/./app/portainer/views/stacks/create/createstack.html","webpack://portainer/./app/portainer/views/stacks/edit/stack.html","webpack://portainer/./app/portainer/views/stacks/stacks.html","webpack://portainer/./app/portainer/views/tags/tags.html","webpack://portainer/./app/portainer/views/templates/templates.html","webpack://portainer/./app/portainer/views/users/edit/user.html","webpack://portainer/./app/portainer/views/users/users.html"],"sourcesContent":["var map = {\n\t\"./__mocks__/fileMock.js\": 8770,\n\t\"./__mocks__/styleMock.js\": 77569,\n\t\"./__mocks__/svg.js\": 15771,\n\t\"./agent/components/host-browser/hostBrowserController.js\": 46553,\n\t\"./agent/components/host-browser/index.js\": 22635,\n\t\"./agent/components/node-selector/index.js\": 46977,\n\t\"./agent/components/node-selector/nodeSelectorController.js\": 10604,\n\t\"./agent/components/volume-browser/index.js\": 92560,\n\t\"./agent/components/volume-browser/volumeBrowserController.js\": 15231,\n\t\"./agent/index.js\": 43719,\n\t\"./agent/models/agent.js\": 69554,\n\t\"./agent/rest/agent.js\": 49727,\n\t\"./agent/rest/browse.js\": 10823,\n\t\"./agent/rest/dockerhub.js\": 65745,\n\t\"./agent/rest/host.js\": 22305,\n\t\"./agent/rest/ping.js\": 73444,\n\t\"./agent/rest/response/browse.js\": 96914,\n\t\"./agent/rest/v1/agent.js\": 26284,\n\t\"./agent/rest/v1/browse.js\": 25778,\n\t\"./agent/services/agentService.js\": 4849,\n\t\"./agent/services/hostBrowserService.js\": 43242,\n\t\"./agent/services/pingService.js\": 14161,\n\t\"./agent/services/volumeBrowserService.js\": 90427,\n\t\"./angulartics.matomo/index.js\": 27014,\n\t\"./app.js\": 41935,\n\t\"./assets/css/index.js\": 78110,\n\t\"./config.js\": 80852,\n\t\"./docker/__module.js\": 56117,\n\t\"./docker/components/container-capabilities/container-capabilities.controller.js\": 22750,\n\t\"./docker/components/container-capabilities/container-capabilities.js\": 15513,\n\t\"./docker/components/container-restart-policy/container-restart-policy-controller.js\": 47318,\n\t\"./docker/components/container-restart-policy/container-restart-policy.js\": 44585,\n\t\"./docker/components/dashboard-cluster-agent-info/dashboard-cluster-agent-info.js\": 58421,\n\t\"./docker/components/dashboard-cluster-agent-info/dashboardClusterAgentInfoController.js\": 83995,\n\t\"./docker/components/datatables/container-networks-datatable/containerNetworksDatatable.js\": 37644,\n\t\"./docker/components/datatables/container-networks-datatable/containerNetworksDatatableController.js\": 89552,\n\t\"./docker/components/datatables/container-processes-datatable/containerProcessesDatatable.js\": 91599,\n\t\"./docker/components/datatables/macvlan-nodes-datatable/macvlanNodesDatatable.js\": 37815,\n\t\"./docker/components/datatables/networks-datatable/network-row-content/networkRowContent.js\": 40154,\n\t\"./docker/components/datatables/networks-datatable/networksDatatable.js\": 46236,\n\t\"./docker/components/datatables/networks-datatable/networksDatatableController.js\": 63506,\n\t\"./docker/components/datatables/node-tasks-datatable/nodeTasksDatatable.js\": 91303,\n\t\"./docker/components/datatables/nodes-datatable/nodesDatatable.js\": 98585,\n\t\"./docker/components/datatables/secrets-datatable/secretsDatatable.js\": 68251,\n\t\"./docker/components/datatables/service-tasks-datatable/serviceTasksDatatable.js\": 91734,\n\t\"./docker/components/datatables/service-tasks-datatable/serviceTasksDatatableController.js\": 35751,\n\t\"./docker/components/datatables/services-datatable/actions/servicesDatatableActions.js\": 86439,\n\t\"./docker/components/datatables/services-datatable/actions/servicesDatatableActionsController.js\": 59756,\n\t\"./docker/components/datatables/services-datatable/servicesDatatable.js\": 86867,\n\t\"./docker/components/datatables/services-datatable/servicesDatatableController.js\": 43635,\n\t\"./docker/components/datatables/tasks-datatable/tasksDatatable.js\": 1438,\n\t\"./docker/components/datatables/tasks-datatable/tasksDatatableController.js\": 21279,\n\t\"./docker/components/datatables/volumes-datatable/volumesDatatable.js\": 25019,\n\t\"./docker/components/datatables/volumes-datatable/volumesDatatableController.js\": 37814,\n\t\"./docker/components/host-overview/host-overview.js\": 83015,\n\t\"./docker/components/host-view-panels/devices-panel/devices-panel.js\": 1596,\n\t\"./docker/components/host-view-panels/disks-panel/disks-panel.js\": 76878,\n\t\"./docker/components/host-view-panels/engine-details-panel/engine-details-panel.js\": 44300,\n\t\"./docker/components/host-view-panels/host-details-panel/host-details-panel.js\": 42009,\n\t\"./docker/components/host-view-panels/node-availability-select/node-availability-select-controller.js\": 98209,\n\t\"./docker/components/host-view-panels/node-availability-select/node-availability-select.js\": 78218,\n\t\"./docker/components/host-view-panels/node-labels-table/node-labels-table-controller.js\": 29119,\n\t\"./docker/components/host-view-panels/node-labels-table/node-labels-table.js\": 90820,\n\t\"./docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel-controller.js\": 65553,\n\t\"./docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.js\": 74092,\n\t\"./docker/components/imageRegistry/por-image-registry-rate-limits.controller.js\": 25760,\n\t\"./docker/components/imageRegistry/por-image-registry-rate-limits.js\": 70698,\n\t\"./docker/components/imageRegistry/por-image-registry.controller.js\": 81199,\n\t\"./docker/components/imageRegistry/por-image-registry.js\": 25898,\n\t\"./docker/components/log-viewer/log-viewer.js\": 74961,\n\t\"./docker/components/log-viewer/logViewerController.js\": 40433,\n\t\"./docker/components/network-macvlan-form/network-macvlan-form.js\": 69020,\n\t\"./docker/components/network-macvlan-form/networkMacvlanFormController.js\": 78160,\n\t\"./docker/components/network-macvlan-form/networkMacvlanFormModel.js\": 93262,\n\t\"./docker/components/volumesCIFSForm/volumesCifsForm.js\": 42365,\n\t\"./docker/components/volumesCIFSForm/volumesCifsFormModel.js\": 53333,\n\t\"./docker/components/volumesNFSForm/volumes-nfs-form.js\": 23295,\n\t\"./docker/components/volumesNFSForm/volumesNFSFormModel.js\": 3744,\n\t\"./docker/filters/filters.js\": 79688,\n\t\"./docker/helpers/configHelper.js\": 88307,\n\t\"./docker/helpers/constraintsHelper.js\": 76080,\n\t\"./docker/helpers/containerHelper.js\": 69389,\n\t\"./docker/helpers/imageHelper.js\": 29447,\n\t\"./docker/helpers/infoHelper.js\": 60259,\n\t\"./docker/helpers/labelHelper.js\": 93269,\n\t\"./docker/helpers/networkHelper.js\": 78830,\n\t\"./docker/helpers/nodeHelper.js\": 16772,\n\t\"./docker/helpers/secretHelper.js\": 20802,\n\t\"./docker/helpers/serviceHelper.js\": 91889,\n\t\"./docker/helpers/taskHelper.js\": 60775,\n\t\"./docker/helpers/volumeHelper.js\": 58706,\n\t\"./docker/models/config.js\": 56765,\n\t\"./docker/models/container.js\": 48442,\n\t\"./docker/models/containerCapabilities.js\": 35687,\n\t\"./docker/models/event.js\": 58129,\n\t\"./docker/models/image.js\": 51088,\n\t\"./docker/models/imageDetails.js\": 22350,\n\t\"./docker/models/imageLayer.js\": 64263,\n\t\"./docker/models/network.js\": 86796,\n\t\"./docker/models/node.js\": 78494,\n\t\"./docker/models/plugin.js\": 35791,\n\t\"./docker/models/porImageRegistry.js\": 73801,\n\t\"./docker/models/secret.js\": 53222,\n\t\"./docker/models/service.js\": 19911,\n\t\"./docker/models/swarm.js\": 54047,\n\t\"./docker/models/task.js\": 14166,\n\t\"./docker/models/volume.js\": 8466,\n\t\"./docker/rest/build.js\": 4280,\n\t\"./docker/rest/commit.js\": 65955,\n\t\"./docker/rest/config.js\": 14875,\n\t\"./docker/rest/container.js\": 75871,\n\t\"./docker/rest/exec.js\": 61221,\n\t\"./docker/rest/image.js\": 15978,\n\t\"./docker/rest/network.js\": 1741,\n\t\"./docker/rest/node.js\": 73981,\n\t\"./docker/rest/plugin.js\": 27690,\n\t\"./docker/rest/response/handlers.js\": 40455,\n\t\"./docker/rest/response/image.js\": 16008,\n\t\"./docker/rest/secret.js\": 40186,\n\t\"./docker/rest/service.js\": 58109,\n\t\"./docker/rest/swarm.js\": 35445,\n\t\"./docker/rest/system.js\": 86045,\n\t\"./docker/rest/task.js\": 96929,\n\t\"./docker/rest/volume.js\": 82726,\n\t\"./docker/services/buildService.js\": 62678,\n\t\"./docker/services/configService.js\": 91218,\n\t\"./docker/services/containerService.js\": 8361,\n\t\"./docker/services/execService.js\": 10710,\n\t\"./docker/services/imageService.js\": 20793,\n\t\"./docker/services/networkService.js\": 24293,\n\t\"./docker/services/nodeService.js\": 34024,\n\t\"./docker/services/pluginService.js\": 34347,\n\t\"./docker/services/secretService.js\": 88317,\n\t\"./docker/services/serviceService.js\": 32773,\n\t\"./docker/services/swarmService.js\": 3304,\n\t\"./docker/services/systemService.js\": 92882,\n\t\"./docker/services/taskService.js\": 57040,\n\t\"./docker/services/volumeService.js\": 39640,\n\t\"./docker/views/configs/configsController.js\": 18914,\n\t\"./docker/views/configs/create/createConfigController.js\": 33695,\n\t\"./docker/views/configs/edit/configController.js\": 56530,\n\t\"./docker/views/containers/console/containerConsoleController.js\": 42077,\n\t\"./docker/views/containers/create/createContainerController.js\": 12789,\n\t\"./docker/views/containers/edit/containerController.js\": 31061,\n\t\"./docker/views/containers/inspect/containerInspectController.js\": 24127,\n\t\"./docker/views/containers/logs/containerLogsController.js\": 6983,\n\t\"./docker/views/containers/stats/containerStatsController.js\": 97076,\n\t\"./docker/views/dashboard/dashboardController.js\": 93961,\n\t\"./docker/views/docker-features-configuration/docker-features-configuration.controller.js\": 3482,\n\t\"./docker/views/docker-features-configuration/index.js\": 68369,\n\t\"./docker/views/events/eventsController.js\": 4278,\n\t\"./docker/views/host/host-browser-view/host-browser-view-controller.js\": 37531,\n\t\"./docker/views/host/host-browser-view/host-browser-view.js\": 11431,\n\t\"./docker/views/host/host-view-controller.js\": 28499,\n\t\"./docker/views/host/host-view.js\": 52042,\n\t\"./docker/views/images/build/buildImageController.js\": 98239,\n\t\"./docker/views/images/edit/imageController.js\": 64896,\n\t\"./docker/views/images/imagesController.js\": 96425,\n\t\"./docker/views/images/import/importImageController.js\": 12828,\n\t\"./docker/views/networks/create/createNetworkController.js\": 85253,\n\t\"./docker/views/networks/networksController.js\": 11820,\n\t\"./docker/views/nodes/node-browser/node-browser-controller.js\": 38979,\n\t\"./docker/views/nodes/node-browser/node-browser.js\": 98442,\n\t\"./docker/views/nodes/node-details/node-details-view-controller.js\": 81776,\n\t\"./docker/views/nodes/node-details/node-details-view.js\": 26480,\n\t\"./docker/views/registries/access/registryAccess.js\": 42407,\n\t\"./docker/views/registries/access/registryAccessController.js\": 78669,\n\t\"./docker/views/secrets/create/createSecretController.js\": 62994,\n\t\"./docker/views/secrets/edit/secretController.js\": 70683,\n\t\"./docker/views/secrets/secretsController.js\": 57672,\n\t\"./docker/views/services/create/createServiceController.js\": 53723,\n\t\"./docker/views/services/edit/serviceController.js\": 38745,\n\t\"./docker/views/services/logs/serviceLogsController.js\": 10094,\n\t\"./docker/views/services/servicesController.js\": 757,\n\t\"./docker/views/swarm/swarmController.js\": 58931,\n\t\"./docker/views/swarm/visualizer/swarmVisualizerController.js\": 58652,\n\t\"./docker/views/tasks/edit/taskController.js\": 80555,\n\t\"./docker/views/tasks/logs/taskLogsController.js\": 49572,\n\t\"./docker/views/volumes/browse/browseVolumeController.js\": 47335,\n\t\"./docker/views/volumes/create/createVolumeController.js\": 58716,\n\t\"./docker/views/volumes/edit/volumeController.js\": 82974,\n\t\"./docker/views/volumes/volumesController.js\": 99313,\n\t\"./edge/__module.js\": 63867,\n\t\"./edge/components/associated-endpoints-datatable/associatedEndpointsDatatableController.js\": 70263,\n\t\"./edge/components/associated-endpoints-datatable/index.js\": 32756,\n\t\"./edge/components/edge-job-form/edgeJobFormController.js\": 73760,\n\t\"./edge/components/edge-job-form/index.js\": 34678,\n\t\"./edge/components/edge-job-results-datatable/edgeJobResultsDatatableController.js\": 23702,\n\t\"./edge/components/edge-job-results-datatable/index.js\": 49076,\n\t\"./edge/components/edge-jobs-datatable/index.js\": 35885,\n\t\"./edge/components/edge-stack-status/edgeStackStatusController.js\": 56122,\n\t\"./edge/components/edge-stack-status/index.js\": 60559,\n\t\"./edge/components/group-form/groupFormController.js\": 482,\n\t\"./edge/components/group-form/index.js\": 42796,\n\t\"./edge/components/groups-datatable/groupsDatatableController.js\": 79393,\n\t\"./edge/components/groups-datatable/index.js\": 72851,\n\t\"./edge/rest/edge-groups.js\": 15850,\n\t\"./edge/rest/edge-job-results.js\": 31413,\n\t\"./edge/rest/edge-jobs.js\": 98715,\n\t\"./edge/rest/edge-stacks.js\": 34264,\n\t\"./edge/rest/edge-templates.js\": 18291,\n\t\"./edge/services/edge-group.js\": 61629,\n\t\"./edge/services/edge-job.js\": 68817,\n\t\"./edge/services/edge-stack.js\": 59571,\n\t\"./edge/services/edge-template.js\": 8949,\n\t\"./edge/views/edge-groups/createEdgeGroupView/createEdgeGroupViewController.js\": 53138,\n\t\"./edge/views/edge-groups/createEdgeGroupView/index.js\": 31089,\n\t\"./edge/views/edge-groups/edgeGroupsView/edgeGroupsViewController.js\": 32546,\n\t\"./edge/views/edge-groups/edgeGroupsView/index.js\": 52642,\n\t\"./edge/views/edge-groups/editEdgeGroupView/editEdgeGroupViewController.js\": 49542,\n\t\"./edge/views/edge-groups/editEdgeGroupView/index.js\": 77505,\n\t\"./edge/views/edge-jobs/createEdgeJobView/createEdgeJobViewController.js\": 11922,\n\t\"./edge/views/edge-jobs/createEdgeJobView/index.js\": 86642,\n\t\"./edge/views/edge-jobs/edgeJob/edgeJobController.js\": 13385,\n\t\"./edge/views/edge-jobs/edgeJob/index.js\": 94650,\n\t\"./edge/views/edge-jobs/edgeJobsView/edgeJobsViewController.js\": 82106,\n\t\"./edge/views/edge-jobs/edgeJobsView/index.js\": 51751,\n\t\"./edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.controller.js\": 58094,\n\t\"./edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.js\": 53675,\n\t\"./edge/views/edge-stacks/createEdgeStackView/docker-compose-form/docker-compose-form.controller.js\": 94244,\n\t\"./edge/views/edge-stacks/createEdgeStackView/docker-compose-form/index.js\": 6346,\n\t\"./edge/views/edge-stacks/createEdgeStackView/index.js\": 63701,\n\t\"./edge/views/edge-stacks/createEdgeStackView/kube-deploy-description/index.js\": 73448,\n\t\"./edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/index.js\": 27055,\n\t\"./edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/kube-manifest-form.controller.js\": 64324,\n\t\"./edge/views/edge-stacks/editEdgeStackView/editEdgeStackViewController.js\": 50649,\n\t\"./edge/views/edge-stacks/editEdgeStackView/index.js\": 40755,\n\t\"./edge/views/edge-stacks/index.js\": 24810,\n\t\"./index.js\": 65819,\n\t\"./kubernetes/__module.js\": 40485,\n\t\"./kubernetes/components/datatables/application/containers-datatable/containersDatatable.js\": 49434,\n\t\"./kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.controller.js\": 91277,\n\t\"./kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.js\": 5149,\n\t\"./kubernetes/components/datatables/applications-datatable/applicationsDatatable.js\": 30021,\n\t\"./kubernetes/components/datatables/applications-datatable/applicationsDatatableController.js\": 36915,\n\t\"./kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatable.js\": 1862,\n\t\"./kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatableController.js\": 11588,\n\t\"./kubernetes/components/datatables/configurations-datatable/configurationsDatatableController.js\": 54709,\n\t\"./kubernetes/components/datatables/events-datatable/eventsDatatable.js\": 32068,\n\t\"./kubernetes/components/datatables/integrated-applications-datatable/integratedApplicationsDatatable.js\": 73118,\n\t\"./kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatable.js\": 46190,\n\t\"./kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatableController.js\": 51383,\n\t\"./kubernetes/components/datatables/nodes-datatable/nodesDatatable.js\": 51537,\n\t\"./kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatable.js\": 8265,\n\t\"./kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatableController.js\": 17687,\n\t\"./kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatable.js\": 58881,\n\t\"./kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatableController.js\": 14542,\n\t\"./kubernetes/components/datatables/volumes-datatable/volumesDatatable.js\": 7387,\n\t\"./kubernetes/components/datatables/volumes-datatable/volumesDatatableController.js\": 66454,\n\t\"./kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.controller.js\": 35682,\n\t\"./kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.js\": 42368,\n\t\"./kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list-item/helm-templates-list-item.js\": 99213,\n\t\"./kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.controller.js\": 98117,\n\t\"./kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.js\": 93578,\n\t\"./kubernetes/components/helm/helm-templates/helm-templates.controller.js\": 38761,\n\t\"./kubernetes/components/helm/helm-templates/helm-templates.js\": 41377,\n\t\"./kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationData.js\": 77349,\n\t\"./kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationDataController.js\": 57232,\n\t\"./kubernetes/components/resource-reservation/resourceReservation.js\": 63047,\n\t\"./kubernetes/components/resource-reservation/resourceReservationController.js\": 81879,\n\t\"./kubernetes/components/view-loading/viewLoading.js\": 59834,\n\t\"./kubernetes/components/yaml-inspector/yamlInspector.js\": 53286,\n\t\"./kubernetes/components/yaml-inspector/yamlInspectorController.js\": 86093,\n\t\"./kubernetes/converters/application.js\": 64570,\n\t\"./kubernetes/converters/configMap.js\": 96171,\n\t\"./kubernetes/converters/configuration.js\": 21835,\n\t\"./kubernetes/converters/daemonSet.js\": 34489,\n\t\"./kubernetes/converters/deployment.js\": 80552,\n\t\"./kubernetes/converters/event.js\": 67922,\n\t\"./kubernetes/converters/namespace.js\": 20949,\n\t\"./kubernetes/converters/persistentVolumeClaim.js\": 83204,\n\t\"./kubernetes/converters/resourcePool.js\": 22374,\n\t\"./kubernetes/converters/resourceQuota.js\": 94055,\n\t\"./kubernetes/converters/secret.js\": 87641,\n\t\"./kubernetes/converters/service.js\": 55774,\n\t\"./kubernetes/converters/statefulSet.js\": 60746,\n\t\"./kubernetes/converters/storageClass.js\": 42553,\n\t\"./kubernetes/converters/volume.js\": 26212,\n\t\"./kubernetes/custom-templates/index.js\": 98487,\n\t\"./kubernetes/custom-templates/kube-create-custom-template-view/index.js\": 32022,\n\t\"./kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.controller.js\": 63548,\n\t\"./kubernetes/custom-templates/kube-custom-templates-view/index.js\": 87277,\n\t\"./kubernetes/custom-templates/kube-custom-templates-view/kube-custom-templates-view.controller.js\": 26960,\n\t\"./kubernetes/custom-templates/kube-edit-custom-template-view/index.js\": 20600,\n\t\"./kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.controller.js\": 16301,\n\t\"./kubernetes/endpoint/converter.js\": 84352,\n\t\"./kubernetes/endpoint/models.js\": 92100,\n\t\"./kubernetes/endpoint/rest.js\": 89152,\n\t\"./kubernetes/endpoint/service.js\": 53405,\n\t\"./kubernetes/filters/applicationFilters.js\": 91951,\n\t\"./kubernetes/filters/configurationFilters.js\": 3662,\n\t\"./kubernetes/filters/eventFilters.js\": 59514,\n\t\"./kubernetes/filters/filters.js\": 69698,\n\t\"./kubernetes/helm/rest.js\": 53067,\n\t\"./kubernetes/helm/service.js\": 99193,\n\t\"./kubernetes/helpers/application/index.js\": 18724,\n\t\"./kubernetes/helpers/commonHelper.js\": 55302,\n\t\"./kubernetes/helpers/configMapHelper.js\": 3781,\n\t\"./kubernetes/helpers/configurationHelper.js\": 13195,\n\t\"./kubernetes/helpers/eventHelper.js\": 66965,\n\t\"./kubernetes/helpers/formValidationHelper.js\": 92530,\n\t\"./kubernetes/helpers/namespaceHelper.js\": 88454,\n\t\"./kubernetes/helpers/resourceQuotaHelper.js\": 28832,\n\t\"./kubernetes/helpers/resourceReservationHelper.js\": 46717,\n\t\"./kubernetes/helpers/serviceHelper.js\": 63094,\n\t\"./kubernetes/helpers/stackHelper.js\": 75511,\n\t\"./kubernetes/helpers/stackHelper.test.js\": 55561,\n\t\"./kubernetes/helpers/volumeHelper.js\": 24038,\n\t\"./kubernetes/horizontal-pod-auto-scaler/converter.js\": 67635,\n\t\"./kubernetes/horizontal-pod-auto-scaler/helper.js\": 5229,\n\t\"./kubernetes/horizontal-pod-auto-scaler/models.js\": 88400,\n\t\"./kubernetes/horizontal-pod-auto-scaler/payload.js\": 73242,\n\t\"./kubernetes/horizontal-pod-auto-scaler/rest.js\": 94711,\n\t\"./kubernetes/horizontal-pod-auto-scaler/service.js\": 30862,\n\t\"./kubernetes/ingress/constants.js\": 9273,\n\t\"./kubernetes/ingress/converter.js\": 90497,\n\t\"./kubernetes/ingress/helper.js\": 14854,\n\t\"./kubernetes/ingress/models.js\": 75914,\n\t\"./kubernetes/ingress/payloads.js\": 7971,\n\t\"./kubernetes/ingress/rest.js\": 51121,\n\t\"./kubernetes/ingress/service.js\": 85357,\n\t\"./kubernetes/models/application/formValues.js\": 13258,\n\t\"./kubernetes/models/application/models/constants.js\": 61360,\n\t\"./kubernetes/models/application/models/index.js\": 59182,\n\t\"./kubernetes/models/application/payloads.js\": 58962,\n\t\"./kubernetes/models/common/params.js\": 50963,\n\t\"./kubernetes/models/common/payloads.js\": 22255,\n\t\"./kubernetes/models/config-map/models.js\": 76970,\n\t\"./kubernetes/models/config-map/payloads.js\": 15481,\n\t\"./kubernetes/models/configuration/formvalues.js\": 53716,\n\t\"./kubernetes/models/configuration/models.js\": 96506,\n\t\"./kubernetes/models/daemon-set/models.js\": 67733,\n\t\"./kubernetes/models/daemon-set/payloads.js\": 70306,\n\t\"./kubernetes/models/deploy.js\": 26000,\n\t\"./kubernetes/models/deployment/models.js\": 78710,\n\t\"./kubernetes/models/deployment/payloads.js\": 46811,\n\t\"./kubernetes/models/event/models.js\": 7799,\n\t\"./kubernetes/models/history/models.js\": 60557,\n\t\"./kubernetes/models/namespace/models.js\": 7462,\n\t\"./kubernetes/models/namespace/payloads.js\": 48651,\n\t\"./kubernetes/models/nodes-limits/models.js\": 2150,\n\t\"./kubernetes/models/port/models.js\": 5846,\n\t\"./kubernetes/models/resource-pool/formValues.js\": 87160,\n\t\"./kubernetes/models/resource-pool/models.js\": 49706,\n\t\"./kubernetes/models/resource-quota/models.js\": 50042,\n\t\"./kubernetes/models/resource-quota/payloads.js\": 53986,\n\t\"./kubernetes/models/resource-reservation/models.js\": 18199,\n\t\"./kubernetes/models/resource-types/models.js\": 30151,\n\t\"./kubernetes/models/secret/models.js\": 60134,\n\t\"./kubernetes/models/secret/payloads.js\": 44602,\n\t\"./kubernetes/models/service/models.js\": 3586,\n\t\"./kubernetes/models/service/payloads.js\": 89836,\n\t\"./kubernetes/models/stack/models.js\": 52814,\n\t\"./kubernetes/models/stateful-set/models.js\": 51041,\n\t\"./kubernetes/models/stateful-set/payloads.js\": 68196,\n\t\"./kubernetes/models/storage-class/models.js\": 60943,\n\t\"./kubernetes/models/storage-class/payload.js\": 15886,\n\t\"./kubernetes/models/volume/models.js\": 15145,\n\t\"./kubernetes/models/volume/payloads.js\": 1003,\n\t\"./kubernetes/node/converter.js\": 48013,\n\t\"./kubernetes/node/filters.js\": 19577,\n\t\"./kubernetes/node/formValues.js\": 40900,\n\t\"./kubernetes/node/helper.js\": 4993,\n\t\"./kubernetes/node/models.js\": 83561,\n\t\"./kubernetes/node/payload.js\": 29296,\n\t\"./kubernetes/node/rest.js\": 60198,\n\t\"./kubernetes/node/service.js\": 73707,\n\t\"./kubernetes/pod/converter.js\": 88090,\n\t\"./kubernetes/pod/filters.js\": 79250,\n\t\"./kubernetes/pod/models/affinities.js\": 88865,\n\t\"./kubernetes/pod/models/index.js\": 22080,\n\t\"./kubernetes/pod/payloads/affinities.js\": 28882,\n\t\"./kubernetes/pod/payloads/create.js\": 56254,\n\t\"./kubernetes/pod/service.js\": 383,\n\t\"./kubernetes/registries/index.js\": 21246,\n\t\"./kubernetes/registries/kube-registry-access-view/index.js\": 81652,\n\t\"./kubernetes/registries/kube-registry-access-view/kube-registry-access-view.controller.js\": 34517,\n\t\"./kubernetes/rest/configMap.js\": 98737,\n\t\"./kubernetes/rest/controllerRevision.js\": 59985,\n\t\"./kubernetes/rest/daemonSet.js\": 6706,\n\t\"./kubernetes/rest/deployment.js\": 39356,\n\t\"./kubernetes/rest/endpoint.js\": 45198,\n\t\"./kubernetes/rest/event.js\": 34232,\n\t\"./kubernetes/rest/health.js\": 77772,\n\t\"./kubernetes/rest/namespace.js\": 82527,\n\t\"./kubernetes/rest/nodesLimits.js\": 22602,\n\t\"./kubernetes/rest/persistentVolumeClaim.js\": 97550,\n\t\"./kubernetes/rest/pod.js\": 23359,\n\t\"./kubernetes/rest/portainer-namespace.js\": 18866,\n\t\"./kubernetes/rest/replicaSet.js\": 80562,\n\t\"./kubernetes/rest/resourceQuota.js\": 35381,\n\t\"./kubernetes/rest/response/transform.js\": 76549,\n\t\"./kubernetes/rest/secret.js\": 47870,\n\t\"./kubernetes/rest/service.js\": 5132,\n\t\"./kubernetes/rest/serviceAccount.js\": 63675,\n\t\"./kubernetes/rest/statefulSet.js\": 1700,\n\t\"./kubernetes/rest/storage.js\": 6642,\n\t\"./kubernetes/services/applicationService.js\": 72686,\n\t\"./kubernetes/services/configMapService.js\": 89776,\n\t\"./kubernetes/services/configurationService.js\": 97128,\n\t\"./kubernetes/services/controllerRevisionService.js\": 44073,\n\t\"./kubernetes/services/daemonSetService.js\": 30703,\n\t\"./kubernetes/services/deploymentService.js\": 41968,\n\t\"./kubernetes/services/eventService.js\": 55654,\n\t\"./kubernetes/services/healthService.js\": 10931,\n\t\"./kubernetes/services/namespaceService.js\": 31894,\n\t\"./kubernetes/services/nodesLimitsService.js\": 97437,\n\t\"./kubernetes/services/persistentVolumeClaimService.js\": 33560,\n\t\"./kubernetes/services/resourcePoolService.js\": 41401,\n\t\"./kubernetes/services/resourceQuotaService.js\": 85419,\n\t\"./kubernetes/services/secretService.js\": 64507,\n\t\"./kubernetes/services/serviceService.js\": 95225,\n\t\"./kubernetes/services/stackService.js\": 24640,\n\t\"./kubernetes/services/statefulSetService.js\": 44050,\n\t\"./kubernetes/services/storageService.js\": 1777,\n\t\"./kubernetes/services/volumeService.js\": 72804,\n\t\"./kubernetes/store/namespace.js\": 44238,\n\t\"./kubernetes/views/applications/applications.js\": 58886,\n\t\"./kubernetes/views/applications/applicationsController.js\": 47191,\n\t\"./kubernetes/views/applications/create/createApplication.js\": 44522,\n\t\"./kubernetes/views/applications/create/createApplicationController.js\": 80636,\n\t\"./kubernetes/views/applications/edit/application.js\": 85533,\n\t\"./kubernetes/views/applications/edit/applicationController.js\": 85600,\n\t\"./kubernetes/views/applications/edit/components/placements-datatable/controller.js\": 59916,\n\t\"./kubernetes/views/applications/edit/components/placements-datatable/index.js\": 54243,\n\t\"./kubernetes/views/applications/helm/helm.controller.js\": 96398,\n\t\"./kubernetes/views/applications/helm/index.js\": 23051,\n\t\"./kubernetes/views/applications/logs/logs.js\": 7029,\n\t\"./kubernetes/views/applications/logs/logsController.js\": 72888,\n\t\"./kubernetes/views/applications/stats/stats.js\": 70483,\n\t\"./kubernetes/views/applications/stats/statsController.js\": 62581,\n\t\"./kubernetes/views/cluster/cluster.js\": 37553,\n\t\"./kubernetes/views/cluster/clusterController.js\": 30227,\n\t\"./kubernetes/views/cluster/node/node.js\": 78297,\n\t\"./kubernetes/views/cluster/node/nodeController.js\": 94455,\n\t\"./kubernetes/views/cluster/node/stats/stats.js\": 69780,\n\t\"./kubernetes/views/cluster/node/stats/statsController.js\": 26162,\n\t\"./kubernetes/views/configurations/configmap/create/createConfigMap.js\": 32116,\n\t\"./kubernetes/views/configurations/configmap/create/createConfigMapController.js\": 6444,\n\t\"./kubernetes/views/configurations/configmap/edit/configMap.js\": 19888,\n\t\"./kubernetes/views/configurations/configmap/edit/configMapController.js\": 70738,\n\t\"./kubernetes/views/configurations/configurationsController.js\": 42408,\n\t\"./kubernetes/views/configurations/secret/create/createSecret.js\": 40948,\n\t\"./kubernetes/views/configurations/secret/create/createSecretController.js\": 72225,\n\t\"./kubernetes/views/configurations/secret/edit/secret.js\": 23645,\n\t\"./kubernetes/views/configurations/secret/edit/secretController.js\": 14132,\n\t\"./kubernetes/views/configurations/validation.js\": 56167,\n\t\"./kubernetes/views/configure/configureController.js\": 40588,\n\t\"./kubernetes/views/deploy/deploy.js\": 78076,\n\t\"./kubernetes/views/deploy/deployController.js\": 8155,\n\t\"./kubernetes/views/resource-pools/access/resourcePoolAccess.js\": 3625,\n\t\"./kubernetes/views/resource-pools/access/resourcePoolAccessController.js\": 65291,\n\t\"./kubernetes/views/resource-pools/components/storage-class-switch/index.js\": 38444,\n\t\"./kubernetes/views/resource-pools/components/storage-class-switch/storage-class-switch.controller.js\": 57451,\n\t\"./kubernetes/views/resource-pools/create/createResourcePool.js\": 13580,\n\t\"./kubernetes/views/resource-pools/create/createResourcePoolController.js\": 59553,\n\t\"./kubernetes/views/resource-pools/edit/components/ingresses-datatable/controller.js\": 19046,\n\t\"./kubernetes/views/resource-pools/edit/components/ingresses-datatable/index.js\": 96653,\n\t\"./kubernetes/views/resource-pools/edit/resourcePool.js\": 25851,\n\t\"./kubernetes/views/resource-pools/edit/resourcePoolController.js\": 98772,\n\t\"./kubernetes/views/resource-pools/resourcePools.js\": 86414,\n\t\"./kubernetes/views/resource-pools/resourcePoolsController.js\": 16699,\n\t\"./kubernetes/views/security-constraint/constraintController.js\": 68524,\n\t\"./kubernetes/views/stacks/logs/logs.js\": 60946,\n\t\"./kubernetes/views/stacks/logs/logsController.js\": 66000,\n\t\"./kubernetes/views/summary/resources/applicationResources.js\": 55208,\n\t\"./kubernetes/views/summary/resources/configurationResources.js\": 63476,\n\t\"./kubernetes/views/summary/resources/helpers.js\": 13919,\n\t\"./kubernetes/views/summary/resources/namespaceResources.js\": 15754,\n\t\"./kubernetes/views/summary/summary.js\": 28812,\n\t\"./kubernetes/views/summary/summaryController.js\": 56936,\n\t\"./kubernetes/views/volumes/components/volumes-storages-datatable/controller.js\": 7845,\n\t\"./kubernetes/views/volumes/components/volumes-storages-datatable/index.js\": 88453,\n\t\"./kubernetes/views/volumes/edit/volume.js\": 66730,\n\t\"./kubernetes/views/volumes/edit/volumeController.js\": 527,\n\t\"./kubernetes/views/volumes/volumes.js\": 56094,\n\t\"./kubernetes/views/volumes/volumesController.js\": 20451,\n\t\"./matomo-setup.js\": 77113,\n\t\"./nomad/logs/logsController.js\": 17272,\n\t\"./nomad/logs/nomad-log-viewer/nomad-log-viewer.js\": 28259,\n\t\"./nomad/logs/nomad-log-viewer/nomadLogViewerController.js\": 21442,\n\t\"./portainer/__module.js\": 36020,\n\t\"./portainer/components/InformationPanel/InformationPanelAngular.js\": 96475,\n\t\"./portainer/components/access-datatable/accessDatatable.js\": 73623,\n\t\"./portainer/components/access-datatable/accessDatatableController.js\": 14984,\n\t\"./portainer/components/access-table/access-table.js\": 43320,\n\t\"./portainer/components/accessControlForm/por-access-control-form.js\": 56996,\n\t\"./portainer/components/accessControlForm/porAccessControlFormController.js\": 29761,\n\t\"./portainer/components/accessControlForm/porAccessControlFormModel.js\": 48228,\n\t\"./portainer/components/accessManagement/index.js\": 60251,\n\t\"./portainer/components/accessManagement/por-access-management.js\": 43697,\n\t\"./portainer/components/accessManagement/porAccessManagementController.js\": 91660,\n\t\"./portainer/components/autofocus.js\": 35882,\n\t\"./portainer/components/buttonSpinner.js\": 77830,\n\t\"./portainer/components/code-editor/code-editor.controller.js\": 11505,\n\t\"./portainer/components/code-editor/code-editor.js\": 47076,\n\t\"./portainer/components/code-editor/codeEditorController.js\": 42276,\n\t\"./portainer/components/copy-button/copy-button.controller.js\": 31145,\n\t\"./portainer/components/copy-button/copy-button.js\": 40931,\n\t\"./portainer/components/custom-template-common-fields/customTemplateCommonFieldsController.js\": 12641,\n\t\"./portainer/components/custom-template-common-fields/index.js\": 72687,\n\t\"./portainer/components/custom-template-selector/custom-template-selector.controller.js\": 15793,\n\t\"./portainer/components/custom-template-selector/index.js\": 3992,\n\t\"./portainer/components/custom-templates-list/customTemplatesListController.js\": 4840,\n\t\"./portainer/components/custom-templates-list/index.js\": 49445,\n\t\"./portainer/components/datatables/access-tokens-datatable/access-tokens-datatable.controller.js\": 40991,\n\t\"./portainer/components/datatables/access-tokens-datatable/index.js\": 7602,\n\t\"./portainer/components/datatables/datatable-columns-visibility/datatable-columns-visibility.controller.js\": 65372,\n\t\"./portainer/components/datatables/datatable-columns-visibility/index.js\": 83812,\n\t\"./portainer/components/datatables/filter/datatable-filter.controller.js\": 14979,\n\t\"./portainer/components/datatables/filter/index.js\": 4955,\n\t\"./portainer/components/datatables/genericDatatableController.js\": 65307,\n\t\"./portainer/components/datatables/groups-datatable/groupsDatatable.js\": 54933,\n\t\"./portainer/components/datatables/index.js\": 4691,\n\t\"./portainer/components/datatables/pagination/index.js\": 75936,\n\t\"./portainer/components/datatables/registries-datatable/registriesDatatable.js\": 56988,\n\t\"./portainer/components/datatables/registries-datatable/registriesDatatableController.js\": 41069,\n\t\"./portainer/components/datatables/stacks-datatable/stacksDatatable.js\": 56481,\n\t\"./portainer/components/datatables/stacks-datatable/stacksDatatableController.js\": 10932,\n\t\"./portainer/components/datatables/strings-datatable/index.js\": 52540,\n\t\"./portainer/components/datatables/tags-datatable/tagsDatatable.js\": 434,\n\t\"./portainer/components/datatables/titlebar/index.js\": 92754,\n\t\"./portainer/components/datatables/users-datatable/usersDatatable.js\": 25416,\n\t\"./portainer/components/datatables/users-datatable/usersDatatableController.js\": 36636,\n\t\"./portainer/components/demo-feature-indicator/demo-feature-indicator.controller.js\": 31032,\n\t\"./portainer/components/demo-feature-indicator/index.js\": 49345,\n\t\"./portainer/components/endpointSecurity/por-endpoint-security.js\": 73593,\n\t\"./portainer/components/endpointSecurity/porEndpointSecurityController.js\": 33165,\n\t\"./portainer/components/endpointSecurity/porEndpointSecurityModel.js\": 41104,\n\t\"./portainer/components/focusIf.js\": 10726,\n\t\"./portainer/components/form-components/file-upload-form/index.js\": 36507,\n\t\"./portainer/components/form-components/index.js\": 35879,\n\t\"./portainer/components/form-components/web-editor-form/index.js\": 90518,\n\t\"./portainer/components/form-components/web-editor-form/web-editor-form.controller.js\": 55821,\n\t\"./portainer/components/forms/group-form/group-form.js\": 31579,\n\t\"./portainer/components/forms/group-form/groupFormController.js\": 77593,\n\t\"./portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.controller.js\": 18136,\n\t\"./portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.js\": 49982,\n\t\"./portainer/components/forms/registry-form-aws-ecr/registry-form-ecr.js\": 71694,\n\t\"./portainer/components/forms/registry-form-azure/registry-form-azure.js\": 29407,\n\t\"./portainer/components/forms/registry-form-custom/registry-form-custom.js\": 39860,\n\t\"./portainer/components/forms/registry-form-dockerhub/registry-form-dockerhub.js\": 31814,\n\t\"./portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatable.js\": 28940,\n\t\"./portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatableController.js\": 23316,\n\t\"./portainer/components/forms/registry-form-gitlab/registry-form-gitlab.js\": 96583,\n\t\"./portainer/components/forms/registry-form-proget/registry-form-proget.js\": 94563,\n\t\"./portainer/components/forms/registry-form-quay/registry-form-quay.js\": 77445,\n\t\"./portainer/components/forms/stack-from-template-form/index.js\": 83262,\n\t\"./portainer/components/forms/stack-redeploy-git-form/index.js\": 13804,\n\t\"./portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.controller.js\": 99674,\n\t\"./portainer/components/index.js\": 67636,\n\t\"./portainer/components/intervalFormat.js\": 80762,\n\t\"./portainer/components/onEnterKey.js\": 11887,\n\t\"./portainer/components/option-panel/index.js\": 25899,\n\t\"./portainer/components/option-panel/option-panel.controller.js\": 11145,\n\t\"./portainer/components/product-list/product-item/product-item.js\": 36229,\n\t\"./portainer/components/product-list/product-list.js\": 6508,\n\t\"./portainer/components/registry-details/index.js\": 63786,\n\t\"./portainer/components/sensitive-details/sensitive-details.js\": 90586,\n\t\"./portainer/components/show-hide/show-hide.js\": 93960,\n\t\"./portainer/components/slider/slider.js\": 89732,\n\t\"./portainer/components/slider/sliderController.js\": 89463,\n\t\"./portainer/components/stack-duplication-form/stack-duplication-form-controller.js\": 23686,\n\t\"./portainer/components/stack-duplication-form/stack-duplication-form.js\": 45781,\n\t\"./portainer/components/status-indicator/index.js\": 6963,\n\t\"./portainer/components/template-list/template-item/template-item.js\": 55050,\n\t\"./portainer/components/template-list/template-list-controller.js\": 82802,\n\t\"./portainer/components/template-list/template-list.js\": 70630,\n\t\"./portainer/components/template-widget.js\": 12556,\n\t\"./portainer/components/theme/theme-settings.controller.js\": 91181,\n\t\"./portainer/components/theme/theme-settings.js\": 59087,\n\t\"./portainer/environments/azure-endpoint-config/azure-endpoint-config.js\": 65088,\n\t\"./portainer/filters/filters.js\": 54958,\n\t\"./portainer/filters/index.js\": 50968,\n\t\"./portainer/helpers/endpointHelper.js\": 36954,\n\t\"./portainer/helpers/formHelper.js\": 70782,\n\t\"./portainer/helpers/genericHelper.js\": 90331,\n\t\"./portainer/helpers/networkHelper.js\": 53586,\n\t\"./portainer/helpers/pathHelper.js\": 24000,\n\t\"./portainer/helpers/resourceControlHelper.js\": 61018,\n\t\"./portainer/helpers/stackHelper.js\": 95999,\n\t\"./portainer/helpers/tagHelper.js\": 89170,\n\t\"./portainer/helpers/templateHelper.js\": 87913,\n\t\"./portainer/helpers/urlHelper.js\": 14103,\n\t\"./portainer/models/access.js\": 35489,\n\t\"./portainer/models/dockerhub.js\": 82337,\n\t\"./portainer/models/endpoint/formValues.js\": 62642,\n\t\"./portainer/models/endpoint/models.js\": 50975,\n\t\"./portainer/models/gitlabRegistry.js\": 73274,\n\t\"./portainer/models/group.js\": 3788,\n\t\"./portainer/models/registry.js\": 11337,\n\t\"./portainer/models/registryRepository.js\": 49938,\n\t\"./portainer/models/registryTypes.js\": 16887,\n\t\"./portainer/models/resourceControl/resourceControlCreatePayload.js\": 31060,\n\t\"./portainer/models/resourceControl/resourceControlOwnershipParameters.js\": 75679,\n\t\"./portainer/models/schedule.js\": 9167,\n\t\"./portainer/models/settings.js\": 95111,\n\t\"./portainer/models/stack.js\": 71542,\n\t\"./portainer/models/status.js\": 44257,\n\t\"./portainer/models/tag.js\": 9557,\n\t\"./portainer/models/team.js\": 18486,\n\t\"./portainer/models/teamMembership.js\": 84236,\n\t\"./portainer/models/template.js\": 95893,\n\t\"./portainer/models/user.js\": 69617,\n\t\"./portainer/models/webhook.js\": 29843,\n\t\"./portainer/oauth/__module.js\": 70847,\n\t\"./portainer/oauth/components/oauth-providers-selector/index.js\": 99387,\n\t\"./portainer/oauth/components/oauth-providers-selector/oauth-provider-selector.controller.js\": 25148,\n\t\"./portainer/oauth/components/oauth-settings/index.js\": 85122,\n\t\"./portainer/oauth/components/oauth-settings/oauth-settings.controller.js\": 51362,\n\t\"./portainer/oauth/components/oauth-settings/providers.js\": 28121,\n\t\"./portainer/oauth/services/rest/oauth.js\": 19870,\n\t\"./portainer/rbac/components/access-viewer/access-viewer-datatable/index.js\": 40912,\n\t\"./portainer/rbac/components/access-viewer/access-viewer.controller.js\": 10992,\n\t\"./portainer/rbac/components/access-viewer/index.js\": 71450,\n\t\"./portainer/rbac/components/roles-datatable/index.js\": 22839,\n\t\"./portainer/rbac/components/roles-datatable/roles-datatable.controller.js\": 76033,\n\t\"./portainer/rbac/index.js\": 12966,\n\t\"./portainer/rbac/models/access.js\": 5681,\n\t\"./portainer/rbac/models/role.js\": 48315,\n\t\"./portainer/rbac/services/role.rest.js\": 94881,\n\t\"./portainer/rbac/services/role.service.js\": 4220,\n\t\"./portainer/rbac/views/roles/index.js\": 17093,\n\t\"./portainer/rbac/views/roles/roles.controller.js\": 87146,\n\t\"./portainer/rest/auth.js\": 71170,\n\t\"./portainer/rest/backup.js\": 86194,\n\t\"./portainer/rest/customTemplate.js\": 94953,\n\t\"./portainer/rest/endpoint.js\": 93934,\n\t\"./portainer/rest/gitlab.js\": 28435,\n\t\"./portainer/rest/group.js\": 14394,\n\t\"./portainer/rest/registry.js\": 37573,\n\t\"./portainer/rest/resourceControl.js\": 62779,\n\t\"./portainer/rest/settings.js\": 63662,\n\t\"./portainer/rest/ssl.js\": 11196,\n\t\"./portainer/rest/stack.js\": 57296,\n\t\"./portainer/rest/support.js\": 56040,\n\t\"./portainer/rest/tag.js\": 28055,\n\t\"./portainer/rest/team.js\": 66488,\n\t\"./portainer/rest/teamMembership.js\": 75931,\n\t\"./portainer/rest/template.js\": 25543,\n\t\"./portainer/rest/transform/getEndpointsTotalCount.js\": 21837,\n\t\"./portainer/rest/transform/gitlabResponseGetLink.js\": 94180,\n\t\"./portainer/rest/user.js\": 14363,\n\t\"./portainer/rest/webhooks.js\": 81515,\n\t\"./portainer/services/allSettled.js\": 39435,\n\t\"./portainer/services/api/accessService.js\": 91261,\n\t\"./portainer/services/api/backupService.js\": 2646,\n\t\"./portainer/services/api/customTemplate.js\": 36570,\n\t\"./portainer/services/api/dockerhubService.js\": 34431,\n\t\"./portainer/services/api/endpointService.js\": 96133,\n\t\"./portainer/services/api/groupService.js\": 9959,\n\t\"./portainer/services/api/registryService.js\": 71247,\n\t\"./portainer/services/api/resourceControlService.js\": 19355,\n\t\"./portainer/services/api/settingsService.js\": 40630,\n\t\"./portainer/services/api/sslService.js\": 69704,\n\t\"./portainer/services/api/stackService.js\": 24379,\n\t\"./portainer/services/api/statusService.js\": 1265,\n\t\"./portainer/services/api/supportService.js\": 45989,\n\t\"./portainer/services/api/tagService.js\": 82679,\n\t\"./portainer/services/api/teamMembershipService.js\": 5872,\n\t\"./portainer/services/api/teamService.js\": 92915,\n\t\"./portainer/services/api/templateService.js\": 9511,\n\t\"./portainer/services/api/userService.js\": 84672,\n\t\"./portainer/services/api/webhookService.js\": 23846,\n\t\"./portainer/services/async.js\": 40677,\n\t\"./portainer/services/authentication.js\": 1848,\n\t\"./portainer/services/chartService.js\": 93408,\n\t\"./portainer/services/datatableService.js\": 41507,\n\t\"./portainer/services/fileUpload.js\": 99670,\n\t\"./portainer/services/formValidator.js\": 25128,\n\t\"./portainer/services/localStorage.js\": 76793,\n\t\"./portainer/services/nameValidator.js\": 53058,\n\t\"./portainer/services/pagination.js\": 29686,\n\t\"./portainer/services/registryGitlabService.js\": 29128,\n\t\"./portainer/services/registryModalService.js\": 5513,\n\t\"./portainer/services/session-storage.js\": 53125,\n\t\"./portainer/services/stateManager.js\": 53518,\n\t\"./portainer/services/themeManager.js\": 60997,\n\t\"./portainer/settings/authentication/auth-method-constants.js\": 81960,\n\t\"./portainer/settings/authentication/auth-type-constants.js\": 64501,\n\t\"./portainer/settings/authentication/auto-user-provision-toggle/index.js\": 92367,\n\t\"./portainer/settings/authentication/index.js\": 98108,\n\t\"./portainer/settings/authentication/ldap/ad-settings/ad-settings.controller.js\": 34821,\n\t\"./portainer/settings/authentication/ldap/ad-settings/index.js\": 83460,\n\t\"./portainer/settings/authentication/ldap/index.js\": 64057,\n\t\"./portainer/settings/authentication/ldap/ldap-connectivity-check/index.js\": 7729,\n\t\"./portainer/settings/authentication/ldap/ldap-custom-admin-group/index.js\": 75022,\n\t\"./portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.controller.js\": 70629,\n\t\"./portainer/settings/authentication/ldap/ldap-custom-group-search/index.js\": 5760,\n\t\"./portainer/settings/authentication/ldap/ldap-custom-group-search/ldap-custom-group-search.controller.js\": 3709,\n\t\"./portainer/settings/authentication/ldap/ldap-custom-user-search/index.js\": 33606,\n\t\"./portainer/settings/authentication/ldap/ldap-custom-user-search/ldap-custom-user-search.controller.js\": 85870,\n\t\"./portainer/settings/authentication/ldap/ldap-group-search-item/index.js\": 58735,\n\t\"./portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.controller.js\": 52265,\n\t\"./portainer/settings/authentication/ldap/ldap-group-search/index.js\": 56050,\n\t\"./portainer/settings/authentication/ldap/ldap-group-search/ldap-group-search.controller.js\": 34244,\n\t\"./portainer/settings/authentication/ldap/ldap-groups-datatable/index.js\": 37844,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-custom/index.js\": 89554,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-custom/ldap-settings-custom.controller.js\": 87592,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-dn-builder/index.js\": 93492,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-dn-builder/ldap-settings-dn-builder.controller.js\": 20819,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/index.js\": 2797,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/ldap-settings-group-dn-builder.controller.js\": 95086,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-openldap/index.js\": 66076,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.controller.js\": 12900,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-security/index.js\": 69183,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-test-login/index.js\": 47807,\n\t\"./portainer/settings/authentication/ldap/ldap-settings-test-login/ldap-settings-test-login.controller.js\": 5376,\n\t\"./portainer/settings/authentication/ldap/ldap-settings.model.js\": 68006,\n\t\"./portainer/settings/authentication/ldap/ldap-settings/index.js\": 14454,\n\t\"./portainer/settings/authentication/ldap/ldap-settings/ldap-settings.controller.js\": 42970,\n\t\"./portainer/settings/authentication/ldap/ldap-user-search-item/index.js\": 71465,\n\t\"./portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.controller.js\": 97943,\n\t\"./portainer/settings/authentication/ldap/ldap-user-search/index.js\": 96596,\n\t\"./portainer/settings/authentication/ldap/ldap-user-search/ldap-user-search.controller.js\": 56478,\n\t\"./portainer/settings/authentication/ldap/ldap-users-datatable/index.js\": 66199,\n\t\"./portainer/settings/authentication/ldap/ldap.rest.js\": 40818,\n\t\"./portainer/settings/authentication/ldap/ldap.service.js\": 58677,\n\t\"./portainer/settings/authentication/save-auth-settings-button/index.js\": 97069,\n\t\"./portainer/settings/general/index.js\": 86697,\n\t\"./portainer/settings/index.js\": 46043,\n\t\"./portainer/user-activity/activity-logs-view/activity-logs-datatable/activity-logs-datatable.controller.js\": 36759,\n\t\"./portainer/user-activity/activity-logs-view/activity-logs-datatable/index.js\": 18919,\n\t\"./portainer/user-activity/activity-logs-view/activity-logs-view.controller.js\": 45949,\n\t\"./portainer/user-activity/activity-logs-view/activity-logs-view.js\": 65147,\n\t\"./portainer/user-activity/activity-logs-view/index.js\": 92020,\n\t\"./portainer/user-activity/auth-logs-view/auth-logs-datatable/auth-logs-datatable.controller.js\": 45727,\n\t\"./portainer/user-activity/auth-logs-view/auth-logs-datatable/index.js\": 90370,\n\t\"./portainer/user-activity/auth-logs-view/auth-logs-view.controller.js\": 63963,\n\t\"./portainer/user-activity/auth-logs-view/auth-logs-view.js\": 51936,\n\t\"./portainer/user-activity/auth-logs-view/index.js\": 42384,\n\t\"./portainer/user-activity/index.js\": 10381,\n\t\"./portainer/views/account/accountController.js\": 42523,\n\t\"./portainer/views/account/create-user-access-token/create-user-access-token.controller.js\": 37291,\n\t\"./portainer/views/account/create-user-access-token/index.js\": 62925,\n\t\"./portainer/views/auth/authController.js\": 6049,\n\t\"./portainer/views/custom-templates/create-custom-template-view/createCustomTemplateViewController.js\": 68883,\n\t\"./portainer/views/custom-templates/create-custom-template-view/index.js\": 16886,\n\t\"./portainer/views/custom-templates/custom-templates-view/customTemplatesViewController.js\": 44243,\n\t\"./portainer/views/custom-templates/custom-templates-view/index.js\": 94439,\n\t\"./portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateViewController.js\": 34206,\n\t\"./portainer/views/custom-templates/edit-custom-template-view/index.js\": 62953,\n\t\"./portainer/views/devices/import/importDeviceController.js\": 23893,\n\t\"./portainer/views/devices/profiles/add/addProfileController.js\": 61483,\n\t\"./portainer/views/devices/profiles/add/index.js\": 30518,\n\t\"./portainer/views/devices/profiles/edit/editProfileController.js\": 75238,\n\t\"./portainer/views/devices/profiles/edit/index.js\": 50100,\n\t\"./portainer/views/endpoint-registries/registries.js\": 27921,\n\t\"./portainer/views/endpoint-registries/registriesController.js\": 3587,\n\t\"./portainer/views/endpoints/access/endpointAccessController.js\": 88740,\n\t\"./portainer/views/endpoints/edit/endpointController.js\": 54141,\n\t\"./portainer/views/endpoints/helpers.js\": 71329,\n\t\"./portainer/views/endpoints/kvm/endpointKVMController.js\": 31995,\n\t\"./portainer/views/groups/access/groupAccessController.js\": 23172,\n\t\"./portainer/views/groups/create/createGroupController.js\": 86770,\n\t\"./portainer/views/groups/edit/groupController.js\": 2226,\n\t\"./portainer/views/groups/groupsController.js\": 6347,\n\t\"./portainer/views/init/admin/initAdminController.js\": 15430,\n\t\"./portainer/views/logout/logoutController.js\": 47263,\n\t\"./portainer/views/main/mainController.js\": 21026,\n\t\"./portainer/views/registries/create/createRegistry.js\": 47231,\n\t\"./portainer/views/registries/create/createRegistryController.js\": 78072,\n\t\"./portainer/views/registries/edit/registry.js\": 12890,\n\t\"./portainer/views/registries/edit/registryController.js\": 62500,\n\t\"./portainer/views/registries/registriesController.js\": 13752,\n\t\"./portainer/views/settings/authentication/settingsAuthenticationController.js\": 41295,\n\t\"./portainer/views/settings/edge-compute/index.js\": 45711,\n\t\"./portainer/views/settings/edge-compute/settingsEdgeComputeController.js\": 27110,\n\t\"./portainer/views/stacks/create/createStackController.js\": 30322,\n\t\"./portainer/views/stacks/edit/stackController.js\": 44681,\n\t\"./portainer/views/stacks/stacksController.js\": 95637,\n\t\"./portainer/views/tags/tagsController.js\": 86378,\n\t\"./portainer/views/templates/templatesController.js\": 51750,\n\t\"./portainer/views/users/edit/userController.js\": 56899,\n\t\"./portainer/views/users/usersController.js\": 49531,\n\t\"./react/components/PageHeader/ContextHelp/docURLs.js\": 43786,\n\t\"./setup-tests/global-setup.js\": 72664,\n\t\"./vendors.js\": 4185\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 19338;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgGit = function SvgGit(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E15B39\",\n d: \"M27.363 17.908 15.537 5.66a2.121 2.121 0 0 0-3.075 0l-2.364 2.45 3.212 3.326c.255-.109.535-.17.829-.17 1.202 0 2.177 1.01 2.177 2.255 0 .304-.058.594-.164.859l3.075 3.185c.256-.11.535-.17.83-.17 1.202 0 2.176 1.01 2.176 2.255 0 1.245-.974 2.255-2.177 2.255-1.202 0-2.177-1.01-2.177-2.255 0-.304.058-.594.164-.859l-3.067-3.177v8.025a2.258 2.258 0 0 1 1.34 2.082c0 1.246-.975 2.255-2.178 2.255-1.202 0-2.177-1.01-2.177-2.255 0-.938.553-1.742 1.34-2.082v-8.035a2.258 2.258 0 0 1-1.34-2.083c0-.304.059-.594.164-.858L8.913 9.336.637 17.908c-.85.88-.85 2.304 0 3.184L12.463 33.34c.85.88 2.225.88 3.074 0l11.826-12.248c.85-.88.85-2.305 0-3.184Z\"\n })));\n};\nexport default SvgGit;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgKube = function SvgKube(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 2v10m0 0v10m0-10 7.071-7.071M12 12l-7.071 7.071M12 12h10m-10 0H2m10 0 7.071 7.071M12 12 4.929 4.929m15.404 7.07a8.333 8.333 0 1 1-16.666 0 8.333 8.333 0 0 1 16.666 0Z\"\n })));\n};\nexport default SvgKube;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgLdap = function SvgLdap(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 79 44\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#CB2026\",\n d: \"m45.322 11.32 9.313 15.984 9.317 15.982H26.693l9.313-15.982 9.316-15.985ZM64.157 38.703H79l-9.316-15.985L60.37 6.737 52.95 19.473l6.213 10.666 4.994 8.564ZM31.93 29.558l-3.985-6.84L18.63 6.737 9.316 22.718 0 38.703H26.6l2.615-4.487 2.716-4.659ZM33.295 27.224l.468-.801L40.421 15 31.78.175l-7.123 12.223 5.869 10.07 2.77 4.756Z\"\n })));\n};\nexport default SvgLdap;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgLinux = function SvgLinux(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\"\n }, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.613 19.27c-.703-.29-1.004-.672-.976-1.243.031-.664-.348-1.152-.528-1.347.11-.414.426-1.844 0-3.09-.457-1.332-1.851-3.367-3.289-5.367-.59-.82-.617-1.715-.648-2.746-.031-.989-.067-2.106-.617-3.348C14.957.777 13.758 0 12.265 0c-.89 0-1.804.277-2.503.762-1.438.992-1.25 3.156-1.121 4.586.015.195.03.382.039.539.086 1.402.008 2.14-.09 2.367-.067.144-.383.562-.719 1.008-.348.457-.738.972-1.062 1.457-.387.582-.696 1.469-.997 2.328-.218.629-.43 1.223-.628 1.578a2.143 2.143 0 0 0-.211 1.613c-.145.102-.356.301-.532.676-.214.453-.648.7-1.55.875-.414.082-.7.258-.848.516-.219.379-.102.851.008 1.175.16.477.058.778-.121 1.325-.043.125-.09.27-.137.425-.074.25-.047.477.082.672.34.524 1.336.707 2.36.828.609.07 1.277.317 1.925.551.633.235 1.29.473 1.887.547.09.008.18.016.265.016.899 0 1.305-.598 1.434-.844a15.825 15.825 0 0 1 2.59-.305c1.144-.03 2.254.196 2.57.266.098.187.36.621.774.844.226.125.547.195.87.195.348 0 1.009-.082 1.532-.633.523-.555 1.828-1.258 2.777-1.773.215-.117.414-.223.586-.32.535-.297.828-.72.801-1.165-.02-.367-.266-.687-.633-.84Zm-11.84-.106c-.066-.469-.671-.934-1.37-1.473-.571-.441-1.22-.941-1.395-1.363-.371-.871-.078-2.406.426-3.195.253-.395.457-.992.656-1.574.21-.625.433-1.274.68-1.555.39-.445.753-1.305.816-1.984.367.351.934.793 1.46.793a.806.806 0 0 0 .235-.032c.36-.101.887-.406 1.399-.703.437-.254.98-.566 1.187-.598.348.504 2.387 5.012 2.594 6.457a6.878 6.878 0 0 1-.098 2.461 2.163 2.163 0 0 0-.242-.015c-.566 0-.719.308-.758.492-.097.48-.11 2.016-.11 2.363-.206.262-1.241 1.489-2.73 1.707-.609.09-1.175.133-1.683.133-.438 0-.715-.035-.832-.05l-.746-.856c.293-.145.59-.453.511-1.008Zm.95-14.117-.07.035c0-.05-.008-.105-.016-.156-.082-.469-.395-.813-.742-.813-.024 0-.051.004-.079.008-.207.035-.37.191-.457.41.079-.484.352-.84.676-.84.383 0 .703.512.703 1.122 0 .078-.004.152-.015.234Zm2.964.363c.036-.11.055-.23.055-.355 0-.555-.351-.985-.797-.985-.437 0-.793.442-.793.985 0 .035 0 .074.004.11a1.269 1.269 0 0 1-.066-.024 1.504 1.504 0 0 1-.078-.477c0-.66.422-1.195.941-1.195.52 0 .942.535.942 1.195 0 .277-.079.54-.207.746Zm-.382 1.285c-.008.032-.024.047-.2.14-.09.044-.199.103-.335.188l-.094.055c-.371.227-1.242.754-1.477.785-.16.02-.258-.043-.48-.195-.051-.031-.106-.07-.164-.106-.403-.265-.66-.554-.688-.667.13-.102.457-.356.621-.504.336-.317.676-.528.844-.528.012 0 .02.004.027.004.196.035.684.23 1.04.371.164.067.308.121.406.16.316.106.48.247.5.297Zm2.828 14.664c.18-.8.383-1.89.351-2.53-.007-.15-.023-.306-.035-.462-.023-.285-.058-.715-.023-.84.008-.004.015-.007.023-.007.004.367.082 1.097.668 1.355.176.074.375.113.594.113.586 0 1.238-.285 1.504-.554.16-.157.289-.348.383-.5.02.058.03.136.027.234-.035.543.227 1.262.727 1.527l.074.04c.18.093.652.34.66.46 0 0-.004.012-.031.035-.117.11-.535.325-.938.532-.719.363-1.531.781-1.894 1.164-.516.539-1.098.902-1.45.902a.361.361 0 0 1-.113-.015c-.383-.118-.695-.668-.527-1.454ZM3.14 19.316c-.04-.183-.07-.324-.036-.464.024-.102.532-.215.75-.262.305-.067.622-.133.829-.258.277-.172.43-.484.562-.758.098-.199.2-.406.316-.472a.066.066 0 0 1 .036-.008c.222 0 .691.465.96.886.067.106.192.317.34.56.438.733 1.036 1.733 1.348 2.07.281.304.738.882.625 1.382-.082.383-.52.7-.621.77a.728.728 0 0 1-.14.011c-.598 0-1.782-.5-2.419-.765l-.093-.04c-.356-.148-.938-.241-1.496-.335-.45-.07-1.059-.168-1.16-.258-.083-.094.011-.395.097-.656.059-.192.121-.387.156-.594a2.162 2.162 0 0 0-.054-.809Zm0 0\",\n style: {\n stroke: \"none\",\n fillRule: \"nonzero\",\n fill: \"currentColor\",\n fillOpacity: 1\n }\n }));\n};\nexport default SvgLinux;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgMemory = function SvgMemory(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M14.5 18.3v2.58m2.5-9.84v-3M5.5 18.3v2.58M10 18.3v2.58m0-2.58h5.2c1.68 0 4.658 0 5.3-.327a3 3 0 0 0 1.311-1.311c.243-.477.305-1.183.322-2.142M10 18.3H8.8c-1.68 0-4.52 0-5.162-.327a3 3 0 0 1-1.311-1.311c-.243-.477-.305-1.183-.321-2.142M19 18.3v2.58m-6.88-9.84v-3m-5.04 3v-3m-5.074 6.48C2 14.188 2 13.932 2 13.5V8.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C4.28 4 7.12 4 8.8 4h6.4c1.68 0 4.658 0 5.3.327a3 3 0 0 1 1.311 1.311c.327.642.327 1.482.327 3.162v4.7c0 .432 0 .688-.006 1.02m-20.126 0h20.127\"\n })));\n};\nexport default SvgMemory;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgRoute = function SvgRoute(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M11.5 5h.434c3.048 0 4.571 0 5.15.547a2 2 0 0 1 .586 1.845c-.156.781-1.4 1.66-3.888 3.42l-4.064 2.876c-2.488 1.76-3.732 2.639-3.888 3.42a2 2 0 0 0 .586 1.845c.579.547 2.102.547 5.15.547h.934M8 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm14 14a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\"\n })));\n};\nexport default SvgRoute;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgSubscription = function SvgSubscription(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 22 20\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.8,\n d: \"M20.864 8.083H1.697m8.625 8.625h7.475c1.074 0 1.61 0 2.02-.209.361-.183.654-.476.838-.837.21-.41.21-.947.21-2.02V6.358c0-1.073 0-1.61-.21-2.02a1.917 1.917 0 0 0-.837-.837c-.41-.21-.947-.21-2.02-.21h-1.726m-5.75 13.417 1.917 1.917m-1.917-1.917 1.917-1.916m-5.75 1.916H4.764c-1.073 0-1.61 0-2.02-.209a1.916 1.916 0 0 1-.838-.837c-.209-.41-.209-.947-.209-2.02V6.358c0-1.073 0-1.61.21-2.02.183-.36.476-.654.837-.837.41-.21.947-.21 2.02-.21h7.475m0 0-1.917 1.917m1.917-1.916-1.917-1.917\"\n })));\n};\nexport default SvgSubscription;","var _path, _path2, _path3, _path4, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgAzure = function SvgAzure(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#azure_svg__a)\",\n d: \"M8.34 7.955h7.401L8.058 31.222a1.2 1.2 0 0 1-.43.595c-.2.147-.442.226-.689.226H1.18a1.16 1.16 0 0 1-.538-.133 1.191 1.191 0 0 1-.628-.893 1.233 1.233 0 0 1 .049-.564l7.16-21.677c.078-.24.228-.447.43-.594.2-.147.441-.226.688-.226v-.001Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0078D4\",\n d: \"M19.096 23.562H7.358a.536.536 0 0 0-.506.35.565.565 0 0 0 .135.61l7.543 7.194c.22.21.508.326.809.326h6.646l-2.89-8.482v.002Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#azure_svg__b)\",\n d: \"M8.34 7.955c-.25 0-.493.08-.695.23-.202.15-.351.363-.426.606L.07 30.435a1.224 1.224 0 0 0 .146 1.1c.11.157.254.287.422.375.168.089.354.135.543.134h5.91c.22-.04.425-.139.595-.287.17-.148.3-.34.373-.555l1.426-4.293 5.091 4.854c.213.18.481.28.758.282h6.622l-2.905-8.482-8.465.002 5.181-15.61H8.34Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#azure_svg__c)\",\n d: \"M17.794 8.775a1.205 1.205 0 0 0-.43-.594c-.2-.147-.44-.226-.687-.226h-8.25c.248 0 .487.08.688.226.2.147.35.355.43.594l7.159 21.68a1.222 1.222 0 0 1-.58 1.456c-.166.087-.35.133-.537.133h8.249a1.159 1.159 0 0 0 .957-.502 1.231 1.231 0 0 0 .16-1.088l-7.16-21.68Z\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"azure_svg__a\",\n x1: 11.038,\n x2: 3.044,\n y1: 9.741,\n y2: 32.844,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#114A8B\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#0669BC\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"azure_svg__b\",\n x1: 13.438,\n x2: 11.652,\n y1: 20.556,\n y2: 21.147,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopOpacity: 0.3\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.07,\n stopOpacity: 0.2\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.32,\n stopOpacity: 0.1\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.62,\n stopOpacity: 0.05\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"azure_svg__c\",\n x1: 12.516,\n x2: 21.281,\n y1: 9.042,\n y2: 31.892,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#3CCBF4\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#2892DF\"\n })))));\n};\nexport default SvgAzure;","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgDockerCompose = function SvgDockerCompose(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#docker-compose_svg__a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#B8C9DA\",\n d: \"M26.923 21.727c-2.571 0-2.82 2.047-2.82 2.047l1.671-.474s1.248-.65 2.347.574c1.198 1.248.55 3.37 0 4.17-.774 1.247-3.843 1.397-4.044 1.347-1.348-2.87-4.469-2.996-4.469-2.996l3.37-3.095s3.52-3.42 3.52-6.615c0-3.195-3.695-6.64-3.695-6.64s-1.523-1.198-1.523-2.22c0-1.723 3.47-2.197 5.417-3.22 1.947-1.023.45-3.844-.324-4.294-1.522-.649-2.371.525-2.371.525L22.354 4.98l-1.198.474s-.95-.05-1.723.924c-.774.973-.15 3.12-.15 3.12s-1.298-.673-3.494-.673c-7.189 0-7.838 5.99-7.838 7.04 0 1.047.574 3.144 1.398 4.143.823.998 2.645 3.095 2.645 4.417 0 2.097-3.295 3.37-4.992 3.37-2.321 0-3.22-1.423-3.22-2.396 0-1.398.924-2.921 1.473-3.944.549-1.023-.35-2.322-.35-2.322l-1.198.55-2.421-1.374s.03-2.178-.068-2.228c-.45.1-.98.78-.98 1.88 0 1.5 1.596 1.739 2.436 2.061 1.136.438 1.132 1.508.384 2.53-.748 1.024-1.298 3.246-1.298 4.344 0 2.196 2.846 3.22 4.767 3.22 2.97 0 4.992-1.548 4.992-1.548s.274 1.723.274 2.571c0 .849-.773 1.648-2.096 1.648s-2.371-.598-2.371-.598-2.696-1.748-3.82-1.748c-1.971 0-2.67 2.022-2.67 2.472 0 .45.324 1.472.598 1.847.275.375 1.698.95 2.073.849.374-.1.524-.924.45-1.198-.076-.275-1.323-1.048-1.323-1.423s.216-.7.89-.7c.673 0 1.46.593 2.682 1.742.89.837 3.164 1.844 4.59 1.778.948-.043 2.758-.477 3.145-1.971.221-.857-.1-3.37.124-2.72.225.648.765 1.809 2.357 2.873.548.365 3.103 1.067 4.706.472 1.998-.375 3.096-3.145 3.12-3.17 2.123 0 3.546-.8 5.018-1.573 1.473-.774 1.448-3.42 1.448-4.843 0-1.847-2.72-3.144-3.794-3.144l.003-.004Zm-13.18 8.488s-.499-.749-.499-1.548c0-.8.175-1.522 1.473-2.022-.026.026-1.182 1.133-.974 3.57Zm5.318 2.47c-1.947 0-3.02-1.922-3.02-3.17 0-1.247.649-2.096.649-2.096s.03.632.03.757c0 .124.341 1.24 1.115 2.039.774.799 3.896.973 3.822 1.048-.5.998-1.923 1.423-2.596 1.423Zm2.597-3.862a4.908 4.908 0 0 1-2.13-1.292c1.498-.093 2.228 1.33 2.13 1.292Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#99B3D1\",\n d: \"M11.512 13.05c.876-.953 1.107-2.166.516-2.71-.298-.274-.75-.323-1.237-.184-1.135.804-1.831 1.85-2.257 2.835.01.322.11.605.323.8.59.543 1.78.212 2.656-.74l-.001-.002ZM14.802 11.476c.67-.386 1.015-1.043.77-1.466-.244-.424-.986-.454-1.656-.067-.67.386-1.014 1.043-.77 1.467.244.423.986.453 1.656.066ZM8.914 34.851c.24-.44-.133-1.103-.831-1.48s-1.455-.324-1.694.116c-.095.174-.09.383-.012.595.427.412 1.206.806 2.012 1.11.235-.047.426-.158.524-.34h.001ZM15.145 27.415c-.326-.193-.763-.036-1.102.348a6.483 6.483 0 0 0-.353 1.824c.06.103.136.19.233.247.424.251 1.04-.088 1.377-.755.337-.668.268-1.413-.155-1.665ZM15.311 30.244c-.234.463-.185.978.108 1.152.286.17.698-.05.935-.492a3.355 3.355 0 0 1-.37-1.232c-.244.034-.507.244-.673.572Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#8597A9\",\n d: \"M21.593 28.782A4.824 4.824 0 0 1 20 27.968c.153.592.424 1.969-.003 2.975.857.171 1.634.239 1.594.28-.034.067-.082.126-.124.189.16-.135.67-.62.649-1.338-.015-.508-.237-.978-.527-1.345.015.038.016.058.003.053h.001ZM23.6 19.116c-.587.849-1.834 2.122-1.834 2.122s-2.572 1.498-3.545 3.47c0 0 1.29-.788 3.543-.392l1.15-1.055s3.52-3.42 3.52-6.615c0-1.597-.924-3.258-1.848-4.518-.024.666-.101 1.497-.324 2.047.026.45.4 3.294-.662 4.942ZM4.61 22.497c.204-.396.423-.695.6-1.01.738-1.304-.367-2.396-.367-2.396l-1.198.549-1.51-.856c-.099.242-.203.516-.237.683-.01.05.005.119.039.196.38.12.552.322.815.414.596.21.992.829.77 1.562.285.323.724.616 1.088.857v.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#101111\",\n d: \"M17.942 25.473s.078-1.054.988-2.101c.91-1.048 1.385-1.329 2.32-2.144.937-.814 2.434-2.041 2.774-4.21.23-1.299.127-2.813-.548-3.895-.674-1.082-2.31-3.108-5.443-3.832-3.132-.725-5.566.287-5.566.287s-4.063 1.464-4.372 6.117c-.07 1.34.264 2.144.264 2.144s.435 1.37 1.043 2.124c.607.753 1.318 1.631 1.318 1.631s1.303 1.327 1.303 2.878c0 .618-.242 1.199-.64 1.61-.395.41-1.551 1.977-4.547 1.977-1.82 0-3.29-1.158-3.29-2.47 0-1.076.342-1.996.756-2.7.415-.705 1.118-1.562 1.118-2.384 0-.553-.562-1.334-.562-1.334l.11-.103s.568.652.568 1.425c0 .478-.088.772-.203 1.01-.115.237-1.439 2.269-1.439 3.708 0 .804.512 2.38 2.94 2.38 1.8 0 2.754-.547 3.87-1.375.635-.49 1.112-1.157 1.112-1.769 0-.61-.2-1.123-.633-1.728a17.442 17.442 0 0 0-1.303-1.642c-.575-.65-2.287-2.183-2.287-5.547 0-1.593 1.398-7.001 8.43-7.001 1.547 0 8.667 1.316 8.667 7.437 0 1.78-.983 4.029-2.497 5.277-1.515 1.248-3.727 2.691-4.254 4.23h.003Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#121313\",\n d: \"M19.585 26.438s-.559.158-.42.098c.212-.092.843-.539 1.204-.905.716-.728 5.784-4.99 5.784-8.49 0-3.252-2.208-5.332-2.208-5.332s-.326-.278-1.286-1.41c-.96-1.13-1.232-1.487-1.341-1.87-.207-.355-.2-1.491.513-1.988.712-.498.853-.449.853-.449l.018.17s-.994.426-1.286 1.332c-.06.298-.12.91.592 1.619l1.937 1.928s2.728 2.261 2.728 6.002c0 1.152-.669 2.998-1.752 4.228-1.083 1.229-3.566 3.887-5.335 5.067ZM19.082 9.328s-.616-1.32-.277-2.542c.336-1.03 1.29-1.346 2.423-1.474.177.036.198.12.198.12s-1.675.142-2.282 1.742c-.191.58.047 1.788.256 2.237.04.067-.318-.083-.318-.083ZM14.625 19.985c-.67-.52-1.672-.315-2.158.3-.54.686-.485 1.682.182 2.17.504.368 1.698.287 2.158-.3.605-.774.471-1.664-.182-2.17Zm-.01 2.018c-.409.522-1.463.58-1.92.266-.492-.338-.65-1.325-.165-1.933a1.43 1.43 0 0 1 1.016-.537c-.06.073-.096.126-.096.225 0 .238.201.432.452.432.25 0 .452-.157.452-.396 0-.02-.004-.04-.007-.058.036.023.072.04.106.068.575.46.702 1.243.164 1.933h-.002Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M14.452 20.07c-.034-.027-.07-.045-.106-.068.003.02.007.038.007.058a.442.442 0 0 1-.452.432.442.442 0 0 1-.452-.432c0-.1.037-.19.097-.262a1.431 1.431 0 0 0-1.016.537c-.486.607-.328 1.594.163 1.933.458.315 1.512.256 1.921-.267.54-.688.412-1.472-.163-1.932Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#121313\",\n d: \"M17.796 20.463c-.67-.519-1.672-.315-2.158.3-.54.686-.486 1.682.182 2.17.504.368 1.698.287 2.158-.3.605-.773.471-1.664-.182-2.17Zm-.01 2.018c-.409.523-1.463.581-1.92.267-.492-.338-.65-1.325-.165-1.933.263-.33.638-.51 1.016-.538-.06.073-.096.126-.096.225 0 .24.201.433.452.433.25 0 .452-.157.452-.397a.31.31 0 0 0-.007-.058c.035.024.072.04.106.069.575.46.702 1.243.164 1.932h-.002Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M17.623 20.549c-.034-.027-.07-.046-.106-.069.003.02.007.038.007.058a.442.442 0 0 1-.452.433.442.442 0 0 1-.453-.433c0-.099.037-.189.097-.262a1.43 1.43 0 0 0-1.016.538c-.485.606-.327 1.593.164 1.933.458.314 1.512.256 1.921-.267.54-.688.412-1.473-.163-1.933v.002Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#151516\",\n d: \"m1.188 18.105-.14-2.05s-.063-.258.24-.357l2.954-.97s.508-.108.92.031c.412.14 1.716.688 1.716.688s.318.106.318.45c0 .343-.023 1.655-.023 1.655s.002.517-.208.634c-.21.116-3.046 1.558-3.046 1.558s-.47.11-.761-.081c-.292-.192-1.683-1.01-1.683-1.01s-.286-.165-.286-.548h-.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0F5983\",\n d: \"m1.29 16.3.095 1.761s.007.265.424.52 1.557.9 1.557.9.122.067.122-.237V17.58s.077-.36-.122-.437c-.2-.076-1.909-.93-1.909-.93s-.167-.15-.167.087v.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#29B4FA\",\n d: \"M3.679 19.122v-1.586s-.043-.308.268-.42c.312-.113 2.653-1.103 2.653-1.103s.278-.13.278.188v1.348s-.005.26-.23.393-2.68 1.413-2.68 1.413-.288.091-.288-.234l-.001.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#72CCFA\",\n d: \"m1.632 16.003 1.824.935s.193.119.544-.028l2.548-1.062s.243-.135.019-.209c-.224-.073-1.699-.663-1.699-.663s-.363-.085-.646 0c-.282.086-2.452.788-2.452.788s-.409.097-.139.239h.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#05446D\",\n d: \"M3.252 19.219a.093.093 0 0 1-.035-.007l-.043-.017c-.056-.022-.1-.1-.103-.181l-.048-1.647c-.002-.054.016-.098.048-.121a.085.085 0 0 1 .083-.01l.044.018c.056.022.1.1.102.18l.049 1.648c.001.054-.016.098-.049.12a.088.088 0 0 1-.05.017h.002Zm.002-.098-.018.046.018-.046Zm-.131-1.79v.035l.048 1.646c.001.048.027.087.04.093l.041.016v-.035l-.048-1.646c-.002-.048-.027-.087-.04-.093l-.041-.016ZM2.874 18.996a.091.091 0 0 1-.035-.007l-.043-.017c-.057-.022-.1-.099-.103-.18l-.048-1.648c-.002-.054.016-.098.048-.12a.087.087 0 0 1 .084-.01l.044.017c.057.022.1.1.103.181l.048 1.647c.001.054-.016.098-.048.121a.085.085 0 0 1-.05.016Zm.002-.098-.018.047.018-.047Zm-.131-1.79v.035l.048 1.647c.002.048.027.086.04.092l.041.016v-.034l-.048-1.647c-.002-.047-.027-.086-.04-.092l-.041-.016ZM2.479 18.791a.093.093 0 0 1-.035-.007l-.044-.017c-.056-.022-.1-.1-.102-.181l-.049-1.647c-.001-.054.016-.098.049-.121a.088.088 0 0 1 .084-.01l.044.018c.056.022.1.1.102.181l.049 1.647c0 .054-.017.098-.049.121a.088.088 0 0 1-.05.016Zm0-.098-.017.046.019-.046H2.48Zm-.13-1.79s-.002.015 0 .034l.048 1.646c0 .048.026.087.04.093l.04.016s.002-.015 0-.035l-.048-1.646c-.001-.049-.027-.087-.04-.093l-.04-.016v.001ZM2.083 18.528a.083.083 0 0 1-.034-.007l-.044-.017c-.056-.022-.1-.098-.102-.178l-.047-1.615c-.002-.053.016-.096.048-.119a.09.09 0 0 1 .084-.01l.044.018c.056.022.1.098.103.179l.047 1.615c.001.053-.016.096-.047.12a.087.087 0 0 1-.05.015h-.002Zm0-.098-.016.046.018-.046h-.001Zm-.13-1.755v.032l.048 1.616c.001.046.026.084.039.089l.042.016v-.032l-.048-1.616c0-.046-.026-.084-.04-.089l-.04-.016ZM1.689 18.308a.112.112 0 0 1-.033-.006l-.044-.016c-.057-.02-.1-.097-.103-.175l-.046-1.592c-.001-.052.016-.094.047-.117a.09.09 0 0 1 .084-.01l.044.017c.057.02.1.097.103.176l.046 1.59c.001.052-.016.095-.047.118a.088.088 0 0 1-.051.016v-.001Zm.001-.098-.017.046.017-.046Zm-.128-1.726s-.002.013-.001.03l.046 1.592c.001.045.027.082.04.087l.04.016s.002-.014 0-.031l-.045-1.59c-.001-.046-.027-.082-.04-.088l-.041-.015.001-.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#101111\",\n d: \"M27.797 23.567c-.609-.427-.915-.528-1.476-.528-.562 0-.783.43-.783.43s.655-.257 1.057-.257c.403 0 1.997.824 1.997 2.519 0 2.537-2.072 3.484-3.76 3.484-.318 0-.62-.012-.906-.032l.138.384c.25.028.493.044.715.044 2.015 0 3.077-1.054 3.51-1.6.432-.546.627-1.53.627-2.26 0-.73-.511-1.755-1.119-2.182v-.002ZM21.721 29.055l-.14-.308c-.953-.318-1.617-.754-2.077-1.172.01.031.031.078.082.14a.7.7 0 0 1 .126.303c.202.194.395.356.545.446.383.205.898.41 1.464.59v.002ZM18.556 26.265c-.054.097.007.281.134.503l.088-.057c-.163-.267-.222-.446-.222-.446Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#101111\",\n d: \"M14.745 26.62s-1.283 1.112-1.283 2.863c0 1.752.746 2.79.944 3.006.199.215 1.856 2.289 5.3 2.289 1.246 0 4.606-1.044 4.606-4.302 0-1.91-1.685-4.07-4.915-4.07-.889.041-1.468.728-1.468 1.233 0 .758.448 1.236 1.01 1.236.502 0 .832-.223.832-.817 0-.3-.243-.47-.305-.51-.06-.041.244.324.174.657-.07.332-.225.575-.684.575-.314 0-.946-.424-.824-1.117.084-.423.468-.928 1.242-1.02 1.36-.161 4.58.842 4.58 3.807 0 2.085-1.918 4.2-4.249 4.2-2.33 0-3.637-1.044-3.637-1.044s-2.234-1.82-2.234-4.1c0-1.07.141-1.893.9-2.872\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#101111\",\n d: \"M16.676 27.48s-.603.685-.603 1.879c0 1.193.87 3.106 2.775 3.106 1.257 0 2.966-.943 2.966-2.306 0-1.244-1.009-2.608-2.348-2.608-.03-.031.039-.07.123-.07.084 0 .914.007 1.677.666.762.658.972 1.305.972 1.984 0 .68-.16 1.305-.966 1.91-.804.606-1.34.862-2.424.862-1.082 0-2.037-.968-2.037-.968s-.926-.861-.926-2.396c0-.556.445-2.015.792-2.059h-.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#101111\",\n d: \"M18.415 30.296c-.693-.39-1.641-1.062-1.765-3.53 0 0-.51 2.51 1.336 3.827.705.527 1.494.8 3.409.908l.232-.325c-1.15-.157-2.377-.428-3.21-.88h-.002ZM30.925 26.408c0-1.16.041-4.812-4.253-4.812-1.461 0-2.69 1.295-2.69 2.25.075 0 .168-.087.168-.087s.101-.787.742-1.279c.644-.495.95-.643 1.78-.643.829 0 3.821.469 3.821 4.191 0 1.987-.957 3.526-2.393 4.219-1.176.567-2.323.96-4.002 1.026l-.082.285c3.882-.018 6.91-2.177 6.91-5.15h-.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#090D0F\",\n d: \"M1.154 16.142s-.531-.054-.834.496c-.302.55-.438 1.272-.196 1.943.243.671.742.9 1.254 1.08.512.18 2.163.665 2.163 1.57 0 .461-.7 1.583-1.057 2.134-.358.55-.969 2.015-.969 3.688 0 1.494 1.623 3.405 4.815 3.405 1.6 0 3.144-.46 5.008-1.509.225-.159.075-.561.075-.561s-2.11 1.577-5.094 1.577c-2.077 0-4.392-1.162-4.392-2.97 0-1.808.341-2.886.753-3.606.412-.72.977-1.48.977-2.172 0-.691-.672-1.34-1.172-1.544-.5-.204-1.33-.403-1.711-.665-.38-.262-.456-.932-.456-1.17 0-.24-.017-1.04.521-1.507.126-.083.315-.19.315-.19v.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#101111\",\n d: \"M14.986 25.233s-.326-.15-.865-.15c-.76 0-2.956 1.023-2.956 2.494 0 1.472 1.408 4.966-1.54 4.966-1.795 0-3.427-1.22-3.427-1.22s-1.388-1.07-2.743-1.07S.6 31.415.6 33.023c0 1.61 1.425 2.857 2.37 2.857.946 0 1.098-.688 1.098-.688s.236-.587-.122-.896c-.357-.31-1.204-.736-1.204-1.365 0-.628.714-.596.714-.596s.653-.04 1.387.596c.735.637 3.005 3.15 5.795 3.15 1.956 0 2.72-.841 3.055-1.329.334-.488.962-1.395.385-3.087-.64-1.877-1.737-3.677.66-5.03 0 .013-1.07.232-1.583 1.461-.305.774.042 1.925.259 2.784.216.859.678 2.42-.065 3.4-.566.747-1.373 1.312-2.689 1.312s-2.54-.564-2.54-.564-1.031-.377-1.876-1.088c-.844-.71-1.514-1.266-1.514-1.266s-.603-.485-1.345-.485c-.743 0-.924.505-.924.717 0 .212.11.672.429.9.32.229.588.435.712.585.125.15.244.443.081.7-.162.255-.27.41-.68.41-.41 0-.789-.244-1.062-.462-.274-.218-.75-.785-.87-1.259-.122-.474-.102-.756-.102-.756s.042-.642.33-1.116c.287-.474.957-1.278 2.157-1.278.489 0 1.017.175 1.798.645.78.47 1.788 1.112 1.788 1.112s.946.637 2.525.637c1.03 0 1.716-.38 2.127-.953.412-.573.314-1.603.064-3.066-.25-1.464-.414-1.933.436-2.837.792-.843 1.904-1.108 2.793-.935h-.002Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0E1011\",\n d: \"m15.683 34.62.07 1.566s-.056.399.416.697c.473.299 3.518 2.317 3.518 2.317s.356.238.857-.061c.5-.299 2.348-1.413 2.348-1.413s.226-.142.251-.517c.026-.376.088-1.567.088-1.567s.031-.156-.247-.344c-.278-.188-4.065-1.85-4.065-1.85s-.375-.164-.782-.028c-.407.136-2.065.719-2.065.719s-.404.187-.391.48h.002Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#72CCFA\",\n d: \"m16.254 34.515 3.683 1.967s.223.154.568 0 1.9-.988 1.9-.988.255-.083-.11-.253c-.366-.168-3.474-1.648-3.474-1.648s-.168-.137-.493-.044c-.326.094-2.037.673-2.037.673s-.412.092-.037.293Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#29B4FA\",\n d: \"m15.889 34.73.107 1.43s-.02.263.403.49c.424.225 3.472 2.299 3.472 2.299s.23.107.23-.282c0-.388-.025-1.511-.025-1.511s.034-.266-.186-.392l-3.766-2.121s-.235-.132-.235.086Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0F5983\",\n d: \"m20.334 38.667-.019-1.618s-.047-.23.196-.351c.245-.123 2.247-1.104 2.247-1.104s.18-.11.178.173c0 .284-.043 1.444-.043 1.444s-.03.177-.187.276l-2.143 1.323s-.23.154-.23-.142Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#05446D\",\n d: \"M20.662 38.552a.099.099 0 0 1-.059-.019c-.031-.021-.048-.06-.048-.106l.002-1.5c0-.077.048-.152.113-.174l.05-.018a.11.11 0 0 1 .098.011c.03.022.048.061.048.106l-.002 1.5c0 .078-.049.153-.113.175l-.052.018a.11.11 0 0 1-.038.007Zm.1-1.725-.06.018c-.022.007-.047.045-.047.082l-.002 1.5c0 .015.004.025.007.027l.058-.019c.022-.008.048-.043.048-.081l.002-1.5c0-.016-.005-.025-.007-.027ZM21.152 38.196a.105.105 0 0 1-.061-.02.122.122 0 0 1-.046-.1l.007-1.37c0-.07.05-.142.114-.163l.052-.016a.109.109 0 0 1 .098.014.12.12 0 0 1 .046.098l-.007 1.37c0 .071-.05.143-.114.164l-.052.016a.139.139 0 0 1-.037.005v.002Zm.106-1.576-.062.018c-.022.007-.046.038-.046.07l-.007 1.37c0 .012.003.017.006.018l.062-.017c.022-.007.046-.038.046-.07l.007-1.37c0-.012-.003-.017-.006-.019ZM21.617 37.867a.102.102 0 0 1-.064-.02.11.11 0 0 1-.042-.094l.01-1.277c0-.068.052-.136.116-.155l.051-.017a.11.11 0 0 1 .1.015c.028.021.043.055.043.093l-.01 1.276a.172.172 0 0 1-.115.156l-.052.015a.127.127 0 0 1-.036.006l-.001.002Zm.107-1.468-.008.001-.05.016a.073.073 0 0 0-.047.063l-.01 1.276c0 .008.002.013.003.014h.013l.052-.015a.071.071 0 0 0 .046-.062l.01-1.277c0-.007 0-.011-.003-.014h-.005V36.4ZM22.079 37.606a.104.104 0 0 1-.064-.02.11.11 0 0 1-.042-.094l.01-1.276c0-.068.052-.136.115-.156l.052-.015a.114.114 0 0 1 .1.015.11.11 0 0 1 .042.093l-.01 1.277a.172.172 0 0 1-.116.156l-.051.015a.128.128 0 0 1-.036.005Zm.107-1.468s-.005 0-.008.002l-.052.015a.071.071 0 0 0-.046.062l-.01 1.276c0 .008.002.013.003.014h.013l.052-.016c.024-.007.045-.037.046-.062l.01-1.277c0-.008-.002-.012-.003-.014h-.005ZM22.517 37.368a.105.105 0 0 1-.064-.021.112.112 0 0 1-.042-.09l.012-1.235a.17.17 0 0 1 .116-.152l.052-.015a.113.113 0 0 1 .1.016c.027.02.043.053.042.09l-.012 1.236c0 .068-.05.133-.116.152l-.052.015a.126.126 0 0 1-.036.005v-.001Zm.106-1.421h-.004l-.052.015c-.023.007-.045.035-.045.059l-.012 1.235c.005.013.01.013.016.01l.052-.015a.072.072 0 0 0 .047-.059l.011-1.235c-.003-.009-.007-.011-.011-.011l-.002.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0E1011\",\n d: \"m26.434 23.134-2.906.688s-.415.01-.399.573c.016.563.084 1.738.084 1.738s.09.523.594.703c.506.18 2.19.925 2.19.925s.216.177.535.062c.321-.117 2.06-.803 2.06-.803s.4-.866.058-1.936c-.344-1.069-1.198-1.951-2.216-1.951v.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#29B4FA\",\n d: \"M26.393 27.334V25.5s-.029-.267.182-.338c.211-.07 1.497-.52 1.497-.52s.17-.117.286.091c.115.208.233.612.233 1.03 0 .416-.107.86-.107.86s-.049.163-.19.216c-.143.053-1.706.662-1.706.662s-.194.126-.194-.167h-.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0F5983\",\n d: \"M26.213 25.537v1.701s.038.283-.093.232a316.13 316.13 0 0 1-2.387-1.063s-.222-.145-.24-.518c-.019-.374-.097-1.472-.097-1.472s-.016-.218.149-.133c.165.083 2.261.865 2.384.906.124.042.284.17.284.348Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#72CCFA\",\n d: \"m23.634 24.12 2.262.8s.217.204.71.023a61.772 61.772 0 0 1 1.404-.483s.205-.046.086-.196c-.118-.15-.403-.57-1.246-.963-.199-.083-.474-.004-.67.049-.196.053-2.496.598-2.496.598s-.232.108-.05.172Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#121313\",\n d: \"M18.993 3.577s.26-2.1.302-2.34c.043-.238.22-.387.647-.439.393-.048 2.573-.333 2.573-.333s.498-.127 1.034.16c.535.287 3.027 1.632 3.216 1.76.19.13.361.16.285.777a62.834 62.834 0 0 1-.296 1.984s.052.321-.344.433c-.395.112-3.171.827-3.171.827s-.354.135-.877-.164c-.522-.298-3.059-1.903-3.187-1.99-.128-.086-.25-.25-.18-.675h-.002Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#090D0F\",\n d: \"M26.793 4.271s.674-.355.674-1.293c0-.787-.564-2.747-2.032-2.747-1.216 0-1.55.75-1.55.75l-.179-.152S24.18 0 25.436 0c1.257 0 2.342 1.678 2.342 3.042 0 1.054-1.057 1.739-1.057 1.739l.074-.51-.002.001Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#29B4FA\",\n d: \"m19.237 3.717.255-2.254s-.013-.27.174-.15c.186.118 3.172 1.948 3.172 1.948s.216.163.14.59c-.074.425-.223 1.98-.223 1.98s.018.224-.23.088c-.249-.136-3.19-1.876-3.19-1.876s-.127-.078-.098-.326Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0F5983\",\n d: \"m22.999 5.98.24-2.374s.048-.2.24-.227c.19-.028 3.228-.571 3.228-.571s.204-.014.15.314l-.338 1.98s-.075.219-.275.305c-.2.087-2.962.723-2.962.723s-.297.109-.286-.15H23Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#72CCFA\",\n d: \"m19.976 1.162 3.052 1.894s.145.156.623.076c.477-.08 2.809-.497 2.809-.497s.148 0 .084-.066C26.479 2.504 23.39.857 23.39.857s-.26-.19-.8-.14c-.54.048-2.58.287-2.58.287s-.22.045-.035.16l.001-.002Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#05446D\",\n d: \"M25.869 27.127a.108.108 0 0 1-.033-.004l-.048-.015c-.061-.02-.11-.092-.114-.17l-.075-1.52c-.003-.048.014-.09.044-.113a.1.1 0 0 1 .09-.015l.048.015c.061.02.11.093.114.17l.075 1.521c.003.047-.014.089-.044.112a.097.097 0 0 1-.058.02Zm-.003-.099h.003s.004-.009.004-.029l-.075-1.52c-.002-.041-.028-.076-.046-.081l-.048-.015s-.007.008-.007.027l.075 1.521c.002.042.029.075.046.081l.048.015v.001ZM25.372 26.87a.099.099 0 0 1-.031-.004l-.049-.014c-.062-.019-.112-.088-.115-.162l-.07-1.42a.126.126 0 0 1 .043-.106.102.102 0 0 1 .091-.017l.049.014c.062.019.112.088.115.162l.07 1.42a.126.126 0 0 1-.043.107.095.095 0 0 1-.06.02Zm-.158-1.628s-.008.007-.008.023l.069 1.42c.001.034.025.067.045.072l.048.015h.004s.004-.008.004-.023l-.069-1.42c-.001-.034-.025-.066-.045-.072l-.048-.014v-.001ZM24.886 26.68a.096.096 0 0 1-.03-.005l-.05-.015c-.062-.018-.111-.087-.114-.161l-.07-1.42a.125.125 0 0 1 .043-.107.102.102 0 0 1 .091-.016l.049.015c.062.018.111.088.115.161l.069 1.421a.123.123 0 0 1-.043.106.095.095 0 0 1-.06.021Zm-.003-.1h.003s.006 0 .005-.022l-.07-1.42c0-.034-.025-.067-.044-.072l-.049-.015s-.008.007-.008.023l.07 1.42c0 .034.025.066.044.072l.049.014ZM24.404 26.475a.096.096 0 0 1-.031-.005l-.049-.014c-.062-.018-.112-.087-.115-.161l-.07-1.42a.125.125 0 0 1 .044-.107.102.102 0 0 1 .09-.016l.05.014c.061.018.11.087.114.161l.07 1.42a.126.126 0 0 1-.043.107.095.095 0 0 1-.06.02Zm-.158-1.629s-.008.007-.008.023l.07 1.421c0 .034.024.066.044.072l.049.014h.003s.005-.007.003-.024l-.069-1.42c0-.034-.025-.066-.045-.072l-.048-.014h.001ZM23.913 26.265a.085.085 0 0 1-.03-.005l-.048-.014c-.062-.017-.112-.085-.115-.158l-.068-1.381a.122.122 0 0 1 .041-.104.105.105 0 0 1 .092-.017l.049.014c.062.017.112.085.115.158l.068 1.381a.121.121 0 0 1-.041.104.098.098 0 0 1-.061.02l-.002.002Zm-.155-1.584s-.01.008-.008.021l.068 1.382c0 .032.025.063.043.068l.049.014h.005s.004-.007.003-.021l-.068-1.382c-.001-.032-.024-.063-.044-.068l-.048-.014ZM23.496 5.818h-.083a.162.162 0 0 1-.116-.056.17.17 0 0 1-.037-.132l.265-1.933a.198.198 0 0 1 .189-.168h.078a.162.162 0 0 1 .115.055.17.17 0 0 1 .037.134L23.68 5.65a.194.194 0 0 1-.185.168v-.001Zm.215-2.191c-.041 0-.081.038-.087.083l-.264 1.933a.073.073 0 0 0 .014.056c.01.013.025.019.042.02h.08c.043 0 .083-.036.089-.082l.264-1.933a.073.073 0 0 0-.014-.056.057.057 0 0 0-.043-.02h-.08v-.001ZM24.158 5.691h-.004l-.078-.002a.15.15 0 0 1-.116-.055.17.17 0 0 1-.036-.132l.264-1.933a.193.193 0 0 1 .185-.168h.004l.078.002c.045 0 .086.02.114.054a.17.17 0 0 1 .037.133l-.264 1.933a.193.193 0 0 1-.185.168Zm-.001-.098c.042 0 .083-.038.088-.083l.264-1.933a.069.069 0 0 0-.013-.055.058.058 0 0 0-.043-.02l-.078-.002h-.002c-.041 0-.082.038-.087.083l-.264 1.933a.069.069 0 0 0 .014.055c.01.013.025.018.042.02l.079.002ZM24.821 5.554h-.083a.162.162 0 0 1-.115-.056.171.171 0 0 1-.037-.133l.264-1.933a.193.193 0 0 1 .185-.169h.084a.162.162 0 0 1 .115.056.17.17 0 0 1 .037.134l-.264 1.932a.193.193 0 0 1-.186.169Zm.216-2.191c-.042 0-.082.038-.088.083l-.264 1.932a.073.073 0 0 0 .014.057c.01.013.025.018.042.02h.081c.042 0 .082-.036.088-.082l.264-1.933a.073.073 0 0 0-.014-.057.057.057 0 0 0-.043-.02h-.08ZM25.431 5.404h-.083a.162.162 0 0 1-.115-.056.17.17 0 0 1-.037-.132l.264-1.933a.194.194 0 0 1 .186-.168h.082a.162.162 0 0 1 .115.055.17.17 0 0 1 .037.133l-.264 1.932a.192.192 0 0 1-.185.169Zm.216-2.191c-.041 0-.082.038-.088.083l-.264 1.933a.072.072 0 0 0 .014.056c.01.013.025.018.043.02h.08c.04 0 .081-.036.087-.081l.264-1.933a.073.073 0 0 0-.014-.056.058.058 0 0 0-.042-.02h-.08v-.002ZM26.082 5.282h-.081a.162.162 0 0 1-.116-.056.17.17 0 0 1-.037-.132l.265-1.933a.194.194 0 0 1 .185-.169h.082a.162.162 0 0 1 .115.056.17.17 0 0 1 .037.132l-.264 1.933a.194.194 0 0 1-.186.169Zm.216-2.191c-.041 0-.082.038-.087.083l-.264 1.932a.073.073 0 0 0 .013.057c.01.012.026.018.043.02h.08c.041 0 .081-.036.087-.082l.264-1.933a.073.073 0 0 0-.014-.057.058.058 0 0 0-.042-.02h-.08Z\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"docker-compose_svg__a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h30.925v39.29H0z\"\n })))));\n};\nexport default SvgDockerCompose;","var _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgDockerIcon = function SvgDockerIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 34 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M19.033 9.676h3.194Zm-3.802 0h3.194Zm-3.726 0h3.194Zm-3.727 0h3.118Zm-3.802 0H7.17Zm3.802-3.498h3.118Zm3.727 0h3.194Zm3.726 0h3.194Zm0-3.498h3.194Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 2.887,\n d: \"M19.033 9.676h3.194m-6.996 0h3.194m-6.92 0h3.194m-6.92 0h3.117m-6.92 0H7.17m.608-3.498h3.118m.609 0h3.194m.532 0h3.194M15.23 2.68h3.194\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M32.417 9.828s-1.369-1.293-4.182-.836c-.305-2.206-2.662-3.498-2.662-3.498s-2.205 2.661-.608 5.627c-.456.228-1.217.532-2.358.532H1.695c-.38 1.445-.38 11.027 10.114 11.027 7.528 0 13.156-3.498 15.817-9.886 3.955.304 4.791-2.966 4.791-2.966Z\"\n })));\n};\nexport default SvgDockerIcon;","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgDocker = function SvgDocker(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0091E2\",\n d: \"M35.492 15.925c-.1-.085-.997-.782-2.925-.782a9.03 9.03 0 0 0-1.513.137c-.366-2.6-2.477-3.856-2.56-3.924l-.515-.306-.333.493a7.35 7.35 0 0 0-.913 2.175c-.35 1.478-.134 2.87.598 4.06-.881.509-2.31.628-2.61.645H1.116c-.615 0-1.114.51-1.114 1.138a17.526 17.526 0 0 0 1.03 6.2c.815 2.175 2.028 3.788 3.591 4.774 1.762 1.104 4.638 1.732 7.88 1.732 1.462 0 2.925-.136 4.371-.408a17.806 17.806 0 0 0 5.719-2.123 15.735 15.735 0 0 0 3.89-3.26c1.878-2.158 2.992-4.57 3.807-6.71h.332c2.045 0 3.308-.833 4.007-1.546a4.53 4.53 0 0 0 1.063-1.597l.15-.442-.349-.255v-.001Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0091E2\",\n d: \"M3.31 17.725h3.157c.15 0 .283-.119.283-.29V14.55a.283.283 0 0 0-.283-.289H3.31a.283.283 0 0 0-.283.289v2.887c.017.17.134.29.283.29ZM7.666 17.725h3.158c.15 0 .282-.119.282-.29V14.55a.283.283 0 0 0-.282-.289H7.666a.283.283 0 0 0-.283.289v2.887c.016.17.133.29.283.29ZM12.104 17.725h3.158c.15 0 .283-.119.283-.29V14.55a.283.283 0 0 0-.283-.289h-3.158a.283.283 0 0 0-.283.289v2.887c0 .17.117.29.283.29ZM16.475 17.725h3.159c.15 0 .282-.119.282-.29V14.55a.283.283 0 0 0-.282-.289h-3.159a.283.283 0 0 0-.283.289v2.887c0 .17.134.29.283.29ZM7.666 13.597h3.158c.15 0 .282-.136.282-.289v-2.887a.284.284 0 0 0-.282-.29H7.666a.284.284 0 0 0-.283.29v2.887c.016.153.133.29.283.29ZM12.104 13.597h3.158c.15 0 .283-.136.283-.289v-2.887a.284.284 0 0 0-.283-.29h-3.158a.283.283 0 0 0-.283.29v2.887c0 .153.117.29.283.29ZM16.475 13.597h3.159c.15 0 .282-.136.282-.289v-2.887a.295.295 0 0 0-.282-.29h-3.159a.283.283 0 0 0-.283.29v2.887c0 .153.134.29.283.29ZM16.475 9.453h3.159c.15 0 .282-.119.282-.29V6.277a.295.295 0 0 0-.282-.289h-3.159a.284.284 0 0 0-.283.29v2.887c0 .153.134.289.283.289ZM20.883 17.725h3.158c.15 0 .283-.119.283-.29V14.55a.283.283 0 0 0-.283-.289h-3.158a.283.283 0 0 0-.283.289v2.887c.016.17.133.29.283.29Z\"\n })));\n};\nexport default SvgDocker;","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgEcr = function SvgEcr(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 37 41\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#ecr_svg__a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#ecr_svg__b)\",\n d: \"M13.249 34.7a.697.697 0 0 1-.356-.097L1.345 27.77A.707.707 0 0 1 1 27.164V12.647c0-.252.135-.486.353-.612l12.625-7.243a.698.698 0 0 1 .7.004l11.328 6.656a.7.7 0 0 1 .348.608c0 .254-.13.48-.348.608l-12.057 7.07v14.258a.706.706 0 0 1-.7.704ZM1.845 27.08l11.259 6.661V19.655c0-.25.133-.483.348-.608l11.914-6.987-11.042-6.488-12.479 7.16V27.08Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#ecr_svg__c)\",\n d: \"M15.767 34.703a.702.702 0 0 1-.7-.704v-6.152c0-.248.132-.481.346-.607l5.63-3.316v-6.788c0-.248.132-.48.344-.607l5.535-3.281a.698.698 0 0 1 1.055.606v13.43c0 .25-.133.483-.348.609l-11.511 6.715a.697.697 0 0 1-.352.096v-.001Zm.145-6.773v5.816L27.133 27.2V14.11l-5.245 3.11v6.788a.707.707 0 0 1-.347.608l-5.63 3.315Z\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"ecr_svg__b\",\n x1: 1.427,\n x2: 18.968,\n y1: 19.7,\n y2: 19.7,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#DF6B4A\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#E99B41\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"ecr_svg__c\",\n x1: 15.791,\n x2: 23.572,\n y1: 23.927,\n y2: 23.927,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#DF6B4A\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#E99B41\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"ecr_svg__a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M1 4.7h27v30H1z\"\n })))));\n};\nexport default SvgEcr;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgGithub = function SvgGithub(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 1024 1024\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1B1F23\",\n fillRule: \"evenodd\",\n d: \"M512 0C229.12 0 0 229.12 0 512c0 226.56 146.56 417.92 350.08 485.76 25.6 4.48 35.2-10.88 35.2-24.32 0-12.16-.64-52.48-.64-95.36-128.64 23.68-161.92-31.36-172.16-60.16-5.76-14.72-30.72-60.16-52.48-72.32-17.92-9.6-43.52-33.28-.64-33.92 40.32-.64 69.12 37.12 78.72 52.48 46.08 77.44 119.68 55.68 149.12 42.24 4.48-33.28 17.92-55.68 32.64-68.48-113.92-12.8-232.96-56.96-232.96-252.8 0-55.68 19.84-101.76 52.48-137.6-5.12-12.8-23.04-65.28 5.12-135.68 0 0 42.88-13.44 140.8 52.48 40.96-11.52 84.48-17.28 128-17.28 43.52 0 87.04 5.76 128 17.28 97.92-66.56 140.8-52.48 140.8-52.48 28.16 70.4 10.24 122.88 5.12 135.68 32.64 35.84 52.48 81.28 52.48 137.6 0 196.48-119.68 240-233.6 252.8 18.56 16 34.56 46.72 34.56 94.72 0 68.48-.64 123.52-.64 140.8 0 13.44 9.6 29.44 35.2 24.32C877.44 929.92 1024 737.92 1024 512 1024 229.12 794.88 0 512 0Z\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgGithub;","var _path, _path2, _path3, _path4, _path5, _path6, _path7;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgGitlab = function SvgGitlab(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E24329\",\n d: \"m13.8 32.71 5.08-15.638H8.719l5.081 15.638Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FC6D26\",\n d: \"M13.8 32.71 8.718 17.072H1.597L13.799 32.71Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FCA326\",\n d: \"M1.596 17.072.052 21.824c-.141.434.013.909.382 1.176l13.365 9.71L1.596 17.072Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E24329\",\n d: \"M1.597 17.072h7.121l-3.06-9.418a.526.526 0 0 0-1 0l-3.061 9.418Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FC6D26\",\n d: \"m13.8 32.71 5.082-15.638h7.122L13.8 32.71Z\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FCA326\",\n d: \"m26.004 17.072 1.544 4.752c.14.434-.014.909-.382 1.176L13.8 32.71l12.203-15.638Z\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#E24329\",\n d: \"M26.002 17.072h-7.121l3.06-9.418a.526.526 0 0 1 1 0l3.061 9.418Z\"\n })));\n};\nexport default SvgGitlab;","var _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgGoogle = function SvgGoogle(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#4285F4\",\n d: \"M23.745 12.27c0-.79-.07-1.54-.19-2.27h-11.3v4.51h6.47c-.29 1.48-1.14 2.73-2.4 3.58v3h3.86c2.26-2.09 3.56-5.17 3.56-8.82Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#34A853\",\n d: \"M12.255 24c3.24 0 5.95-1.08 7.93-2.91l-3.86-3c-1.08.72-2.45 1.16-4.07 1.16-3.13 0-5.78-2.11-6.73-4.96h-3.98v3.09C3.515 21.3 7.565 24 12.255 24Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FBBC05\",\n d: \"M5.525 14.29c-.25-.72-.38-1.49-.38-2.29s.14-1.57.38-2.29V6.62h-3.98a11.86 11.86 0 0 0 0 10.76l3.98-3.09Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EA4335\",\n d: \"M12.255 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C18.205 1.19 15.495 0 12.255 0c-4.69 0-8.74 2.7-10.71 6.62l3.98 3.09c.95-2.85 3.6-4.96 6.73-4.96Z\"\n })));\n};\nexport default SvgGoogle;","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgHelm = function SvgHelm(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#helm_svg__a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeWidth: 2,\n d: \"M2.034 12.08h19.932M4.059 7.913A9.317 9.317 0 0 1 5.437 6.11m0 0a9.253 9.253 0 0 1 6.635-2.792c2.561 0 4.88 1.037 6.559 2.714M5.437 6.11 3.87 4.542M5.437 6.11l.009.008m13.185-.086a9.32 9.32 0 0 1 1.455 1.881M18.63 6.032l1.556-1.557M18.63 6.032l-.007.006m-6.63-4.993v2.273m7.975 12.751a9.315 9.315 0 0 1-1.378 1.803m0 0a9.253 9.253 0 0 1-6.635 2.792 9.252 9.252 0 0 1-6.559-2.713m13.194-.079 1.567 1.568m-1.567-1.568-.009-.008m-13.185.087a9.318 9.318 0 0 1-1.455-1.882m1.455 1.882-1.556 1.556m1.556-1.556.007-.007m6.63 4.993v-2.273\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"helm_svg__a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M24 0v24H0V0z\"\n })))));\n};\nexport default SvgHelm;","var _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgKubernetes = function SvgKubernetes(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#326CE4\",\n d: \"M13.849 32.493c-1.69 0-3.381-.014-5.07.007-.769.008-1.361-.264-1.843-.869C4.798 28.95 2.648 26.28.498 23.606c-.431-.536-.6-1.107-.436-1.809.79-3.376 1.55-6.76 2.322-10.142.154-.678.546-1.143 1.18-1.444a1799.08 1799.08 0 0 0 9.357-4.484c.652-.315 1.273-.295 1.92.015 3.096 1.493 6.195 2.983 9.3 4.457.658.312 1.057.789 1.217 1.488.77 3.383 1.536 6.766 2.32 10.145.15.648.014 1.196-.39 1.699-2.172 2.708-4.345 5.416-6.51 8.13-.467.587-1.055.843-1.794.837-1.71-.013-3.422-.004-5.133-.004l-.003-.001Zm-.435-21.608c.03.872-.075 1.005-.876 1.163-1.42.28-2.704.863-3.745 1.885-.392.386-.723.304-1.072.055-.27-.191-.487-.456-.73-.685-.166-.155-.322-.335-.512-.454-.28-.174-.572-.149-.776.132-.185.253-.139.526.07.743.143.147.326.257.5.371.259.174.537.321.787.509.507.381.554.64.253 1.185a7.636 7.636 0 0 0-.955 4.038c.027.783-.202 1.03-.988 1.12-.352.04-.707.061-1.056.12-.395.067-.675.287-.59.728.082.426.427.49.78.404.383-.095.748-.255 1.125-.371.772-.237 1.032-.112 1.356.626a7.471 7.471 0 0 0 2.582 3.164c.495.351.575.652.289 1.204-.134.257-.308.497-.461.746-.098.16-.2.318-.286.484-.172.332-.098.622.208.819.341.219.635.049.787-.25.206-.406.325-.855.49-1.282.264-.686.54-.823 1.218-.633a7.583 7.583 0 0 0 4.134.007c.672-.187.92-.075 1.186.588.155.387.252.798.425 1.177.155.343.416.621.837.398.391-.208.406-.559.205-.914-.196-.345-.434-.666-.63-1.01-.383-.679-.328-.91.29-1.364a7.518 7.518 0 0 0 2.56-3.26c.253-.615.494-.737 1.143-.545.399.118.781.293 1.183.394.359.091.729.078.868-.372.112-.366-.134-.667-.63-.749-.39-.065-.789-.074-1.18-.134-.624-.097-.852-.372-.826-.99.063-1.48-.252-2.866-.98-4.156-.277-.494-.233-.788.224-1.147.262-.205.56-.36.838-.543.172-.115.357-.223.5-.37.21-.216.254-.484.07-.743-.188-.266-.468-.29-.726-.162-.198.099-.36.279-.527.434-.228.214-.432.456-.67.657-.474.4-.76.392-1.21-.008a7.752 7.752 0 0 0-3.83-1.862c-.582-.107-.759-.297-.735-.898.016-.416.092-.83.129-1.245.045-.486-.227-.88-.594-.879-.367.002-.638.395-.59.882.034.332.09.661.139.993h-.003.002Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FDFDFE\",\n d: \"M13.413 10.885c-.046-.332-.104-.66-.138-.993-.049-.487.222-.88.59-.882.367-.001.639.393.594.879-.04.417-.115.83-.13 1.246-.022.6.153.79.735.897a7.741 7.741 0 0 1 3.83 1.862c.45.4.736.409 1.21.008.239-.2.443-.443.67-.657.167-.155.33-.336.527-.434.258-.128.54-.104.727.162.183.259.139.526-.071.742-.143.148-.327.255-.5.37-.277.185-.576.34-.838.544-.457.359-.501.654-.223 1.147.727 1.29 1.042 2.677.98 4.156-.027.617.202.892.825.99.392.06.79.07 1.18.134.497.083.744.383.63.75-.139.45-.509.462-.868.371-.401-.1-.785-.275-1.182-.394-.65-.192-.89-.07-1.144.545a7.518 7.518 0 0 1-2.56 3.26c-.618.453-.674.684-.29 1.363.196.345.433.666.63 1.01.202.357.187.707-.204.915-.421.223-.682-.056-.838-.398-.172-.377-.269-.79-.425-1.177-.267-.663-.513-.775-1.185-.588a7.576 7.576 0 0 1-4.134-.007c-.68-.189-.955-.051-1.218.633-.165.428-.285.877-.49 1.283-.15.298-.446.468-.787.249-.306-.196-.379-.487-.208-.819.086-.166.186-.324.285-.484.153-.25.326-.487.461-.746.287-.552.207-.853-.288-1.204a7.472 7.472 0 0 1-2.583-3.164c-.323-.739-.584-.862-1.356-.626-.377.116-.742.275-1.124.372-.353.087-.697.022-.78-.405-.086-.441.195-.66.59-.727.347-.06.703-.081 1.056-.121.787-.088 1.015-.337.987-1.12a7.637 7.637 0 0 1 .955-4.038c.301-.545.255-.804-.253-1.185-.25-.188-.528-.335-.787-.508-.173-.115-.356-.224-.5-.372-.208-.217-.255-.49-.07-.743.206-.28.498-.306.776-.132.19.12.346.297.513.454.243.23.46.494.73.685.349.249.679.331 1.072-.055 1.039-1.022 2.322-1.606 3.745-1.885.8-.157.905-.291.876-1.163h.002-.002Zm-.328 3.414h.034c0-.166-.009-.335.002-.5.015-.23-.07-.284-.293-.24a6.313 6.313 0 0 0-2.9 1.38c-.235.196-.189.307.038.462.67.46 1.324.944 1.994 1.404.605.416.977.232 1.025-.501.042-.667.067-1.336.1-2.005Zm-5.206 5.033c-.005.516.219.708.673.576.697-.202 1.399-.394 2.091-.61.635-.197.732-.591.248-1.049-.589-.558-1.217-1.076-1.802-1.641-.31-.301-.423-.151-.566.139a6.455 6.455 0 0 0-.644 2.584v.001Zm5.968 6.131c.545.015 1.074-.082 1.6-.213.215-.054.353-.088.198-.358-.444-.778-.85-1.578-1.31-2.347-.256-.43-.687-.426-.94.006-.454.773-.867 1.568-1.305 2.35-.114.204-.067.278.158.335.527.132 1.054.236 1.6.227v.001h-.001Zm6.009-6.113c-.049-.84-.229-1.711-.63-2.53-.162-.333-.346-.446-.66-.15-.562.526-1.152 1.026-1.713 1.555-.504.474-.399.87.278 1.074.696.212 1.396.407 2.094.608.64.185.643.184.63-.557Zm-3.068 1.703c-.902.04-1.014.21-.709.964.29.717.598 1.426.879 2.146.095.244.172.364.432.168.886-.67 1.565-1.5 1.992-2.53.053-.127.15-.297-.091-.34-.861-.146-1.725-.28-2.504-.408Zm-2.17-6.828h.02c.035.686.068 1.372.107 2.06.042.739.408.934 1.008.523.65-.447 1.272-.935 1.936-1.36.354-.229.275-.355.01-.572a6.244 6.244 0 0 0-2.725-1.294c-.358-.074-.392.048-.36.332.01.103 0 .207 0 .312h.004v-.001Zm-2.771 7.327c-.098-.212-.086-.491-.453-.478-.923.034-1.823.235-2.733.361-.32.044-.386.183-.26.46a6.1 6.1 0 0 0 1.935 2.412c.22.164.333.167.438-.128.19-.528.428-1.04.642-1.56.143-.345.28-.694.43-1.065v-.002Zm2.051-2.89c-.64-.002-1.016.252-1.03.696-.019.532.499 1.13.988 1.14.465.01.997-.554 1-1.06.003-.47-.372-.776-.958-.778v.002Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#326CE4\",\n d: \"M13.086 14.3c-.032.667-.057 1.336-.1 2.004-.048.734-.42.917-1.024.501-.67-.46-1.324-.945-1.994-1.404-.227-.156-.272-.266-.039-.463a6.32 6.32 0 0 1 2.901-1.38c.224-.043.308.012.293.24-.011.166-.003.335-.003.502h-.034v-.001ZM7.88 19.332c.038-.86.233-1.747.645-2.584.143-.29.256-.441.567-.139.583.565 1.213 1.08 1.802 1.641.483.46.386.853-.248 1.05-.693.215-1.394.406-2.091.61-.454.131-.678-.06-.673-.577l-.001-.001ZM13.85 25.462c-.545.01-1.073-.096-1.6-.228-.225-.057-.27-.131-.157-.335.437-.781.85-1.578 1.304-2.35.253-.432.685-.437.941-.006.459.768.866 1.569 1.31 2.347.154.269.014.303-.198.357-.527.133-1.055.23-1.601.214ZM19.856 19.35c.013.74.01.744-.63.557-.697-.202-1.398-.397-2.094-.608-.676-.205-.781-.598-.278-1.074.562-.529 1.15-1.029 1.713-1.556.315-.294.498-.183.66.15.402.82.58 1.692.63 2.531ZM16.79 21.052c.778.126 1.642.262 2.504.41.24.04.143.21.091.339-.428 1.03-1.106 1.862-1.992 2.53-.26.196-.337.075-.432-.169-.28-.72-.588-1.43-.878-2.145-.306-.754-.193-.924.708-.964v-.001ZM14.62 14.224c0-.105.01-.21-.002-.313-.03-.283.003-.404.361-.33 1.02.21 1.919.638 2.724 1.293.266.217.346.343-.01.571-.663.427-1.285.914-1.936 1.36-.599.412-.966.217-1.008-.523-.038-.686-.07-1.373-.106-2.06h-.024v.002ZM11.846 21.55c-.15.372-.287.72-.43 1.066-.214.52-.45 1.03-.641 1.56-.105.294-.22.293-.439.128A6.113 6.113 0 0 1 8.4 21.892c-.126-.278-.06-.417.261-.46.91-.125 1.81-.328 2.733-.362.368-.014.355.267.453.479v.001ZM13.899 18.66c.585.001.961.305.959.777-.004.507-.535 1.07-1 1.06-.489-.011-1.007-.608-.99-1.14.015-.443.393-.699 1.032-.696l-.002-.002h.001Z\"\n })));\n};\nexport default SvgKubernetes;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgMicrosoftIcon = function SvgMicrosoftIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M0 0h11.406v11.406H0V0ZM12.598 0H24v11.406H12.598V0ZM0 12.594h11.406V24H0V12.594ZM12.598 12.594H24V24H12.598V12.594Z\"\n })));\n};\nexport default SvgMicrosoftIcon;","var _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgMicrosoft = function SvgMicrosoft(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F35325\",\n d: \"M11.246 7.461H0v11.247h11.246V7.46Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#81BC06\",\n d: \"M23.703 7.461H12.457v11.247h11.246V7.46Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#05A6F0\",\n d: \"M11.246 19.919H0v11.246h11.246V19.92Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFBA08\",\n d: \"M23.703 19.919H12.457v11.246h11.246V19.92Z\"\n })));\n};\nexport default SvgMicrosoft;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgNomadIcon = function SvgNomadIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M12.005 0 1.74 6v12l10.255 6 10.265-6V6L12.005 0Zm4.58 13.205-2.735 1.598-3.306-1.832V16.8l-3.101 1.992V10.8l2.464-1.53 3.417 1.828V7.19l3.26-1.983v7.997Z\"\n })));\n};\nexport default SvgNomadIcon;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgNomad = function SvgNomad(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#00CA8E\",\n d: \"M12.273 6.172 0 13.328v14.316L12.265 34.8l12.273-7.156V13.328L12.273 6.172Zm5.476 15.75L14.48 23.83l-3.95-2.183v4.563l-3.711 2.38v-9.535l2.948-1.822 4.086 2.175V14.75l3.896-2.367v9.54Z\"\n })));\n};\nexport default SvgNomad;","function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgOpenldap = function SvgOpenldap(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 744.09 1052.4\",\n width: \"1em\",\n height: \"1em\"\n }, props), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"openldap_svg__e\",\n x1: 80.916,\n x2: 89.429,\n y1: 129.23,\n y2: 129.23,\n gradientTransform: \"translate(244.83 -81.693) scale(1.9236)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n style: {\n stopColor: \"#60c\"\n }\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n style: {\n stopColor: \"#60c\",\n stopOpacity: 0\n }\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"openldap_svg__d\",\n x1: 80.916,\n x2: 89.429,\n y1: 129.23,\n y2: 129.23,\n gradientTransform: \"translate(216.56 -73.967) scale(1.9236)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n style: {\n stopColor: \"#60c\"\n }\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n style: {\n stopColor: \"#60c\",\n stopOpacity: 0\n }\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"openldap_svg__b\",\n x1: 8.535,\n x2: 77.015,\n y1: 384.81,\n y2: 465.09,\n gradientTransform: \"translate(267.18 -40.495) scale(1.9236)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n style: {\n stopColor: \"#6d5744\"\n }\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n style: {\n stopColor: \"#6d5744\",\n stopOpacity: 0\n }\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"openldap_svg__a\",\n x1: -41.915,\n x2: 100.23,\n y1: 163.64,\n y2: 197.66,\n gradientTransform: \"translate(267.18 -40.495) scale(1.9236)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n style: {\n stopColor: \"#6d5744\"\n }\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n style: {\n stopColor: \"#6d5744\",\n stopOpacity: 0\n }\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"openldap_svg__c\",\n x1: 420.17,\n x2: 416.51,\n y1: 220.22,\n y2: 202.05,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n style: {\n stopColor: \"#212121\"\n }\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n style: {\n stopColor: \"#212121\",\n stopOpacity: 0\n }\n }))), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M416.93 357.28c-13.927 2.158-29.996 7.106-40.074 15.502 4.966 23.732 26.302-3.863 41.709 1.114 19.575-1.994 11.267-20.953-1.636-16.616zM405.02 320.44c-14.087-.44-30.791 1.47-42.241 7.87.518 24.24 26.564 1.039 40.793 8.764 19.608 1.639 14.927-18.525 1.447-16.634zM445.25 394.59c-13.87 2.5-29.812 7.842-39.68 16.484 5.548 23.602 26.199-4.51 41.724.087 19.52-2.475 10.748-21.224-2.044-16.57zM469.88 440.79c-14.484-5.122-45.334 19.408-19.277 22.574 8.32-8.557 21.103-5.338 32.541-7.27 13.791-10.401-3.588-17.608-13.264-15.303zM511.36 603.7c-19.378 6.19.023 20.385 12.165 15.99 8.792.11 17.767-.418 26.333.712 14.807-8.3-3.011-20.33-13.628-16.702h-24.87zM543.52 678c-16.558-7.786-30.682 18.894-7.972 16.243 11.17-3.076 30.464 6.068 35.019-8.248-1.659-13.088-18.785-5.98-27.047-7.995zM510.94 752.36c-23.064 11.227 20.121 24.639 19.417 29.155 5.015 8.059 5.422 11.558 9.593 13.687 18.953 4.068 9.72-18.678.806-25.048-8.268-8.393-17.81-15.759-29.816-17.794zM536.13 790.23l.06.24zM458.58 832.25c-21.038 7.37 4.813 20.578 14.908 23.685-2.962 12.592 14.925 29.912 18.094 9.738 1.794-20.17-15.98-29.587-33.002-33.423z\",\n style: {\n stroke: \"#816647\",\n strokeWidth: 2.5007,\n fill: \"#ff9\"\n }\n }), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n stroke: \"#015a01\"\n }\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M155.98 488.01a31.122 36.497 0 1 1-1.22-64.48\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.9,\n fill: \"#6c3\"\n },\n transform: \"translate(-39.643 -60.964) scale(1.9236)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.8 445.27a33.986 36.899 0 1 1 9.737 39.546\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.88405,\n fill: \"#6c3\"\n },\n transform: \"rotate(-10.219 -127.089 1148.416) scale(1.95832)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M167.9 478.33a43.697 33.986 0 1 1 38.346 11.559\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.84894,\n fill: \"#6c3\"\n },\n transform: \"matrix(1.86568 .99923 -1.08995 1.6453 463.551 -138.373)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M205.36 406.05a50.381 30.214 0 1 1 75.368 24.902\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.86545,\n fill: \"#6c3\"\n },\n transform: \"matrix(1.82128 .74478 -.71166 1.9061 206.257 -166.5)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M221.38 425.53a50.381 28.411 0 1 1 67.773.438\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.82037,\n fill: \"#6c3\"\n },\n transform: \"matrix(1.99535 .47632 -.45534 2.12327 90.042 -217.313)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M206.04 409.53a50.381 28.411 0 1 1 86.24 14.733\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.77966,\n fill: \"#6c3\"\n },\n transform: \"matrix(2.0465 0 0 2.4093 -88.464 -261.585)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M225.39 392a46.972 26.895 0 1 1 62.784-15.176\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.806,\n fill: \"#6c3\"\n },\n transform: \"matrix(2.1562 0 0 2.1396 -89.484 -106.989)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M157.51 375.64c4.938-9.01 1.653-17.354-7.625-24.469 6.077-17.646-8.654-60.144-35.031-91.812-1.38-1.658-3.293-2.985-5.625-4-6.188-22.424-26.148-28.54-43.875-23.594-23.792 6.64-44.719 13.087-44.719 29.25 0 8.436 5.46 16.034 14.188 21.375-.31.68-.594 1.362-.844 2.063-6.48 27.8 16.103 65.353 26.031 76.75.145.166.293.308.438.468-5.575 13.415 6.61 27.527 29.75 32.97\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.9,\n fill: \"#6c3\"\n },\n transform: \"translate(215.33 -72.118) scale(1.9236)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M165.1 192.18a35.714 25.423 0 1 1 60.364-7.458\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.75961,\n fill: \"#6c3\"\n },\n transform: \"rotate(-7.122 141.565 1368.623) scale(2.27916)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M165.18 192.64a35.714 26.026 0 1 1 58.892-5.404\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.75961,\n fill: \"#6c3\"\n },\n transform: \"matrix(2.279 0 0 2.279 -132.014 -86.976)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M178.08 200.01a35.714 26.582 0 1 1 43.239-9.101\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.75961,\n fill: \"#6c3\"\n },\n transform: \"matrix(2.279 0 0 2.279 -127.205 -135.85)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M194.64 164.22a50.528 44.244 0 1 1 42.772 22.373\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 0.9,\n fill: \"#6c3\"\n },\n transform: \"rotate(-25.365 260.383 483.741) scale(1.9236)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M345.16 123.48c-18.445 2.416-36.231 9.639-51.157 20.739 3.67 10.439 8.552 19.439 7.764 31.245 6.17 3.425 6.974.76 8.707 8.67-5.472 1.348 12.146 3.992 16.65 3.197 12.842-6.387 1.965-24.003 5.472-35.177-1.157-12.639 4.178-18.613 12.564-28.674zm-11.662 17.072c-1.079 1.83 2.06.045 0 0zm-54.47 17.26c-14.103 14.686-23.007 34.328-24.586 54.643 5.548 6.701 10.064 14.055 23.745 12.744 12.83-.612 25.13 13.586 38.054 3.77.558-10.675-11.82-20.203-21.377-24.201-10.807-5.478-9.337-17.826-11.324-24.49-4.484-7.632-1.208-4.536-4.03-14.411-.42-2.662-.528-5.365-.481-8.056zm-39.194 77.006c-12.088 13.667-14.622 34.874-6.492 51.157-8.447 11.861-13.275 28.947-6.387 42.527 8.684 9.376 15.535 18.781 23.923 27.836 5.148 4.231 29.949 1.327 22.899-9.392 3.62-9.74 11.573-4.67 20.46-5.546-.882-6.944-13.13-21.402-3.727-21.28-5.308-.467-10.441.912-16.634-.663-2.316 1.179-11.748 3.965-16.789 7.156-2.813-4.37-9.528-9.026-14.006-13.285 6.329-6.942 12.568-11.394 18.635-22.362-1.418-11.027 1.41-23.937-4.952-34.526-4.39-7.982-9.538-16.258-16.93-21.62zm21.04 29.576c-2.579 2.068 2.648 1.222 0 0zm33.063 1.262c-7.962 8.595-13.598-.637-22.603 6.853-7.391 6.563-7.957 18.171.767 23.49 4.06 2.449 8.14 13.005 11.977 4.824 3.508-.209 6.1-.73 12.383-6.252 8.126-2.643 16.85-9.205 7.935-11.722-1.73 2.567-1.673-1.994-4.267-3.908-2.254 2.354-1.054-11.239-6.192-13.285zm9.678 15.15c-4.602 4.341 3.15 1.218 0 0zm-11.963 20.438c6.236 3.03 17.23-.028 4.42.286-1.482.204-2.946-.174-4.42-.286zm12.203.481c-.595 3.29 1.896.633 0 0zm-56.026 14.908c-.85.904 1.544.19 0 0zm43.703 3.487c-2.573 1.483 1.96-.001 0 0zm.421.12c-.561.637 1.28.297 0 0zm-13.646 20.92c-1.301.21.812 1.138 0 0zm3.907.42c-3.404 3.408 4.722.294 0 0zm-38.713 20.139c-16.799 2.284-10.957 31.496 2.805 33.354 5.64 9.286 19.757 13.694 24.547 24.655 12.72 4.112 22.56-7.895 20.44-20.018 8.73 1.284 22.706-6.826 20.378-18.335-11.926-.224-22.746-2.603-33.62 2.757-15.887 2.693-25.953-11.899-34.549-22.415zm45.025 14.968c-2.295 3.054 1.946 1.48 0 0zm-.781 1.503c-1.04-3.208-2.889 3.588 0 0zm2.645-1.503c-3.15 1.919 5.565.92 0 0zm.842 1.683c-1.517 1.519 3.67.686 0 0zm22.362 4.268c-2.081 2.173 2.8 3.946 0 0zm1.923 42.44c-1.06 2.522 4.023 2.282 0 0zm-60.835.481c-3.129 19.345 11.046 36.912 26.69 46.468-7.272 14.968 24.864 4.591 22.53-7.431-3.52-4.406-3.597-8.426-6.66-12.226 10.34.225 18.674-.723 29.335-7.574 10.545-.483-9.431-19.033-14.573-17.474-7.491 6.703-18.908 3.173-26.725 11.463-8.885-6.562-19.78-11.221-30.598-13.225zm50.616 27.232c-2.016.842 3.15 1.795 0 0zm-.781 8.236c-5.884 2.548 3.093 1.194 0 0z\",\n style: {\n fill: \"url(#openldap_svg__a)\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M376.06 624.62c-5.876 3.042-21.757 3.705-21.12 7.535 6.706 3.036-9.727 2.31-3.046-1.524-6.055 3.63-4.387-1.105-6.973 4.509-4.344-.588-1.79-8.583-9.235-2.745-12.237 6.275-3.708 20.152 2.654 27.602 2.665 6.133 15.762-6.604 17.04 4.539 8.022-2.48 15.796-2.173 24.888-5.53 7.495-.574 12.594 10.91 15.569 5.95 7.221-1.065 4.553 7.088 9.323.252 5.226-7.084 10.894-21.606 4.856-21.06-2.713-2.06-4.296-9.432.008-2.996 4.307-2.722.144-4.5 6.852-4.492 4.604-4.489-10.706 2.535-3.846-2.481-8.94.797 7.612-4.563-4.702-3.546-8.26-1.493-26.336 1.196-28.377-1.918 6.607-4.343-4.686 1.95-3.89-4.095zm-30.177 6.853c-.382-2.596-2.783-.59 0 0zm38.413-5.35c-5.547 4.11 3.66 3.36 0 0zm-35.167 3.246c-5.571 2.012 3.462 2.668 0 0zm-4.508 2.044c-3.596 1.388 5.346 4.043 0 0zm-1.684.54c-.852 1.16.955 2.003 0 0zm69.792 10.28c-3.374 1.08 2.565 1.766 0 0zm.782 12.444 4.93 12.444c-1.211-4.275-1.661-9.11-4.93-12.444zm-65.764 27.592c-5.276 5.044-13.384 8.078-14.41 16.23-5.04 9.286.73 20.869 9.09 22.718 4.203 9.595 17.532 7.67 22.512 16.336 10.903 2.65 26.672.473 27.793-13.261 6.018-16.31 13.062 9.716 22.882 9.772 4.928-1.522 7.334-2.06 10.615 1.278 3.227-2.624 8.773-1.22 12.59-5.944 2.41-1.37 5.576-10.131-1.49-13.02-6.048-4.783-11.199-22.286-19.283-11.598-2.185-3.091-10.746-6.59-9.8-.397-5.938 4.84-10.636.017-5.796-4.921-11.975 1.757-23.053-.588-34.994-.398-5.478 1.504-14.347 1.281-6.786-4.471-3.455-4.987-10.878-6.38-12.924-12.323zm17.794 13.105c-10.605 2.308 7.362 2.827 0 0zm51.157 4.809c-1.854 2.246 4.144 1.687 0 0zm2.164 1.323c-2.217 4.01 3.012.564 0 0zm-77.066 20.859c-2.942 1.253 1.563 2.385 0 0zm102.19 2.284c.7 2.992 4.89 1.724 0 0zm-125.94 6.672c-8.115 5.513-20.707 9.841-24.887 18.094 5.362 7.538 9.86 15.711 12.55 23.686 3.711 1.483 12.27 11.936 10.233 7.152-2.548-3.394 10.374 6.403 2.557 2.03-3.485 5.547 6.905 14.76 12.921 6.704 3.367-2.554 11.628-6.886 5.261.043-6.153 14.272 11.76 23.915 21.881 23.324-1.587 5.039 13.156 3.343 10.16-3.787 9.783 6.205 10.034-12.581 12.15-18.922 1.04-4.433 2.08-8.866 3.118-13.3-1.89 2.532-9.142.334-9.002 1.835-4.931-4.11-13.488 3.44-16.666-.151-6.938-1.54-9.062-7.517-9.739-12.985-8.094.567-3.698.62-1.576-4.514-5.869-.315-13.837-1.76-12.14-7.101-11.402-4.656-2.209-15.071-10.819-21.29-1.93-.648-3.984-.769-6.003-.82zm-44.965 12.864c-8.59-.995-7.514 5.968-13.225 2.946-10.15 5.745-20.136-2.751-30.925-1.387-29.137.253-51.071 29.092-55.872 56.42-7.326 13.756 5.339-.477 13.637-2.2-2.174-12.195 15.58-25.188 15.597-13.978-2.572 4.957.562 35.905 9.372 42.415 5.65 7.411 15.864 7.438 16.829-3.37 2.964-7.94 10.06-14.312 13.028-18.147-6.703 3.544-3.79-6.904-7.88-9.219 6.738-6.241-3.49-25.475.967-30.577 1.888.822 19.213-10.243 18.074 3.77 1.16 3.555-8.118 5.14-2.024 8.433-7.658 4.665 3.455 5.39-3.427 9.498 3.253 5.399 6.01 9.833 2.165 15.028 5.35 2.88-.846 4.956 2.464 9.859 1.778 3.928 6.245.778 1.383 5.41-1.361 8.392 12.419 11.331 9.277 18.591 8.517 3.138 17.255 14.93 21.647 1.175 4.39-6.642 8.989-13.158 13.44-19.766-3.415 1.673-6.978-2.014-10.4-3.306 3.183-7.442-7.567-10.669-4.388-18.695 2.026-5.576-2.942-14.986 1.397-15.442-3.634-2.89 2.346.649-.435-4.335 3.824-1.818-1.302-7.133 5.59-7.094-4.774-7.513 7.287-4.69 3.06-10.753-6.328-3.212 11.084-14.42-1.016-12.034-3.592-.464-14.71-3.287-18.334-3.242zm68.409 12.564c-5.594.816-1.062 2.671 0 0zm-106.58 10.76c-3.124 2.508 2.53 1.994 0 0zm-.18 2.165c-2.707.23 3.602 2.232 0 0zm116.32 1.983c-.612 2.06 1.536.488 0 0zm-33.123 9.258c-1.11 1.048.899.708 0 0zm-75.743 29.816c.207 1.666-.16.54 0 0zm1.322.06c.487 1.064-.19.145 0 0zm112.77 2.164c-3.791 1.324 3.067 2.71 0 0z\",\n style: {\n fill: \"url(#openldap_svg__b)\"\n }\n }), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n stroke: \"#015a01\"\n }\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.95 147.91c2.062 13.147-6.643 16.932-10.971 15.996\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 1,\n fill: \"#6c3\"\n },\n transform: \"translate(215.33 -72.118) scale(1.9236)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M247.45 144.66a14.908 15.413 0 0 1-28.87 1.41\",\n style: {\n stroke: \"#015a01\",\n fill: \"#6c3\"\n },\n transform: \"matrix(2.0679 0 0 1.9236 -85.252 -62.905)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M254.4 122.14a13.756 14.188 0 0 1-9.596 26.558\",\n style: {\n stroke: \"#015a01\",\n fill: \"#6c3\"\n },\n transform: \"matrix(1.69038 0 0 1.9236 8.062 -62.905)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M427.42 204.03a13.577 11.915 0 1 1-20.903 3.651\",\n style: {\n stroke: \"#333\",\n strokeWidth: 1.431,\n fill: \"url(#openldap_svg__c)\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M280.54 469.64c8.633 3.94 25.105 2 46.417-3.57M257.12 414.7c8.633 3.94 28.892 5.786 50.204.217M241.99 350.59c12.42 7.726 15.901 10.802 32.109 11.815\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 1.7313,\n fill: \"none\"\n }\n }), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n opacity: 0.45,\n stroke: \"#015a01\"\n }\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M238.76 154.03a10.902 13.628 0 1 1-21.804 0 10.902 13.628 0 1 1 21.804 0z\",\n style: {\n opacity: 0.33,\n stroke: \"#015a01\",\n fill: \"#060\"\n },\n transform: \"matrix(1.91312 -1.0905 1.23997 1.6825 -284.739 205.84)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M-2.467 124.52c-10.397 7.867 3.174 25.794 15.402 20.06 11.488-7.465-3.201-26.94-15.402-20.06z\",\n style: {\n opacity: 0.33,\n stroke: \"#015a01\",\n fill: \"#060\"\n },\n transform: \"translate(336.93 -40.977) scale(1.9236)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M403.28 150.64c-7.692.501-14.793 4.685-15.089 13.586a20.49 20.49 0 0 0 .48 3.306c-3.317-3.523-7.434-6.313-11.36-7.815-11.25-6.31-32.094-3.901-32.642 12.083 1.272 20.2 29.984 34.111 46.288 21.701 4.544-4.377 5.481-9.502 4.268-14.487 8.648 8.688 23.31 12.136 32.942 4.569 10.541-10.48-1.254-25.962-11.782-30.117-3.642-2.109-8.49-3.126-13.105-2.825z\",\n style: {\n opacity: 0.5696,\n stroke: \"#015a01\",\n strokeWidth: 1.9236,\n fill: \"#015a01\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M352.96 116.34c1.938-.888 4.249.037 5.182 2.073 0 0 3.183 13.713 11.456 25.004 2.145 6.463-6.445 8.713-8.763 4.015 0 0-.968-10.617-11.456-25.004s.648-4.744 3.581-6.088z\",\n style: {\n stroke: \"#424242\",\n strokeWidth: 1.9236,\n fill: \"#474747\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M362.23 112.63a11.734 11.734 0 1 1-23.468 0 11.734 11.734 0 1 1 23.468 0z\",\n style: {\n stroke: \"#3c3c3c\",\n strokeWidth: 2.843,\n fill: \"#474747\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M392.01 189.01c-3.48 7.067-14.963 8.53-25.649 3.27-10.687-5.262-16.529-15.256-13.05-22.323 3.48-7.067 12.924-3.34 25.649-3.269 11.911.067 16.529 15.255 13.05 22.322zM428.77 179.39c-2.932 6.147-12.61 7.42-21.616 2.844s-13.93-13.27-10.998-19.416c2.932-6.147 10.386-3.713 21.616-2.844 10.072.78 13.93 13.269 10.998 19.416z\",\n style: {\n stroke: \"#015a01\",\n strokeWidth: 1.9236,\n fill: \"#eee\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M386.95 174.62a6.554 6.292 0 1 1-13.107 0 6.554 6.292 0 1 1 13.107 0z\",\n style: {\n stroke: \"url(#openldap_svg__d)\",\n strokeWidth: 3.2702,\n fill: \"#212121\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M420.28 260.08c-66.519-.144-41.52 15.048-88.371 22.3-26.994 12.355 2.254 36.023-28.249 57.531-12.191 24.257 25.422 32.975 14.127 56.988 1.094 17.721 28.212 17.044 15.87 35.106.077 27.295 34.615 32.862 24.995 61.134 5.822 58.494 26.558 115.42 56.87 165.61 24.209 15.049 1.4 44.842 26.58 58.256-15.417 16.017-2.308 41.461-16.414 58.695-15.858 27.915-52.033 71.541-86.055 70.198-32.5 6.163-62.672-8.101-85.514 18.724-21.068 27.152 26.849 29.08 43.943 22.231 17.663-15.932 35.21-5.876 56.135-3.462 21.996 1.56 46.031-3.354 62.056-19.468 25.603.823 58.065-11.778 61.136-40.697 25.458-6.112 48.466-32.949 36.241-59.636 7.342-17.164 35.37-42.277 20.025-68.406 16.566-22.139-13.544-40.219-11.646-57.89 1.52-24.036-27.484-32.739-16.422-57.827-5.88-56.776-34.65-108.99-69.858-152.93-17.715-10.826-17.772-37.67-38.852-46.975-1.577-13.237-.082-35.222-15.13-46.08 12.85-21.035-11.481-49.556 20.581-57.405 9.32-6.825 11.765-6.15 17.952-15.995z\",\n style: {\n opacity: 0.16,\n strokeOpacity: 0.45631,\n stroke: \"#015a01\",\n strokeWidth: 1.9236,\n fill: \"#2f5a01\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m364.39 291.24-33.123 5.23c17.189-1.058 41.41 10.702 52.138 2.144 2.808-7.652-14.418-4.55-19.015-7.374zm18.755 37.451c-2.226.221-5.16.953-5.951.18-15.9.467-38.753 1.689-50.255 5.951l31.379 7.996c9.785-5.765 36.092 1.65 26.45-11.301 2.09-2.727.603-3.047-1.623-2.826zm15.269 47.37c-23.53 1.418-46.945 4.234-70.513 5.17 18.484 2.734 36.866 6.798 55.605 3.547 8.85-2.878 26.726 3.882 14.908-8.717zm30.418 42.621c-17.609 2.141-22.028.732-40.577 1.082-12.172-.35-44.69.348-44.244 2.946 15.711 2.07 31.36 6.102 47.189 2.464 8.774-3.204 54.756 6.425 37.631-6.492zm27.472 33.664c-30.006 4.477-61.241 1.051-90.411 10.881l33.363 3.907c16.451-8.86 54.588-1.713 59.693-10.94zM497 602.56c-7.134-.107-15.756 1.445-21.4.36-22.649.075-44.368 7.02-66.305 11.783 15.165.922 30.594 7.281 45.446 1.623 15.954-6.58 41.892-5.303 52.539-10.82-2.28-2.21-5.999-2.882-10.279-2.946zm13.526 44.965c-14.177-.298-32.495 2.867-43.582.902l-33.002 5.23c31.72-.05 63.44.025 95.16 0-3.034-4.524-10.069-5.953-18.575-6.132zm-6.913 48.692c-4.496-.07-8.982.188-13.526 1.022l-32.522 8.175c21.543-3.55 43.01 2.847 64.562-1.202 11.962 2.216 20.66-8.78 3.907-6.793-7.5-.175-14.929-1.085-22.422-1.202zM465.2 757.773l-29.576 7.995c23.849 2.836 47.753 6.214 71.656 1.503 9.744-1.574 4.567-13.92-3.667-5.59-12.552 1.862-25.699-3.404-38.413-3.908zm-33.063 63.961-33.123 5.23c26.419-2.515 51.986 6.292 78.328 4.689 5.416-14.802-36.343-7.572-45.206-9.919zm-38.773 30.297c-10.945.795-21.774 3.134-32.642 4.81 19.66-1.443 39.974 13.754 57.409 7.573 8.563.63 33.329-2.739 11.842-4.929-12.15-2.623-23.995-7.708-36.61-7.454z\",\n style: {\n opacity: 0.22,\n fill: \"#816647\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M304.45 326.16c-10.886 1.967-8.4 22.052 3.066 22.302 8.465 2.325 15.632 3.845 26.342.932 11.164-8.74-4.137-14.974-12.453-12.714-16.156 1.402-6.886-8.034-16.955-10.52zm5.951 53.08c-15.564 5.843-1.743 25.357 11.602 21.821 10.833.873 16.443-4.823 22.422-7.514 13.366-13.213-9.2-14.904-16.952-6.011-12.514 4.096-8.06-5.899-17.072-8.296zm50.736 40.877c-10.278-.312-16.719 10.516-26.51 10.099-15.413-2.714-11.509 17.881 2.164 13.285 10.433 1.739 13.941-8.465 23.925-9.317 8.076-.63 9.6-13.53.421-14.067zm19.717 50.916c-7.237 2.817-15.739 11.599-24.045 7.213-17.483-12.77-11.249 18.608-.901 14.127 9.028 2.152 20.787-3.388 25.428-6.792 3.646.512 11.826-13.3-.482-14.547zm-4.629 17.373c-1.757 1.064 1.7-.61 0 0zm48.632 150.16c-16.235 5.22 1.896 25.317 13.465 25.067 10.318.826 21.684.346 28.734-8.176 9.25-23.358-30.97 7.123-37.196-14.127l-1.45-1.515-3.553-1.25zm7.334 67.027c-12.786 3.28-2.84 22.219 3.727 28.433 9.873 6.706 22.122 6.794 33.616 5.38 11.174-8.715-4.149-14.989-12.453-12.714-8 1.03-16.762-3.311-17.255-12.143-1.53-3.684-2.48-8.882-7.634-8.957zm12.864 32.822-.6-.3zm-60.354 65.344c-11.482 3.658-6.54 21.416-.12 28.373 4.485 5.22 7.873 12.227 12.203 15.208 5.716 3.355 9.67 8.453 16.776 5.416 9.556-6.93-8.199-14.998-5.835-13.892-5.885-2.69-9.886-12.655-15.028-18.034-3.525-5.64 2.14-16.518-7.995-17.072zm11.963 43.462c-2.054-2.264-.507-.136 0 0zm-91.313-6.312c-10.66 4.691-10.693 19.058-10.219 29.212-1.488 10.106 2.839 20.308 12.804 24.048 16.495 8.538 9.815-16.676 2.104-14.427-4.5-4.573.282-13.545-1.622-19.356-.478-6.55 10.803-17.505-3.067-19.477zm-75.623 3.246c-8.979 2.724-15.863 14.021-15.509 26.03-2.008 9.592 3.418 22.026 10.4 23.864 15.634 10.556 16.95-11.274 2.886-14.668-.48-9.208-.568-19.474 8.14-25.047 3.09-4.211-.8-10.666-5.916-10.179zm172.17 6.372c.434.02.033.146 0 0zm-92.816 5.59c.286-.058-.476.461 0 0z\",\n style: {\n stroke: \"#816647\",\n strokeWidth: 2.5007,\n fill: \"#ff9\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M403.43 108.33c2.104.342 3.508 2.397 3.148 4.608 0 0-4.995 13.162-4.414 27.147-1.818 6.562-10.206 3.646-9.514-1.547 0 0 5.11-9.356 4.414-27.147-.695-17.79 3.182-3.579 6.366-3.061z\",\n style: {\n stroke: \"#424242\",\n strokeWidth: 1.9236,\n fill: \"#474747\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M413.2 110.41a11.734 11.734 0 1 1-19.49-13.077 11.734 11.734 0 1 1 19.49 13.077z\",\n style: {\n stroke: \"#3c3c3c\",\n strokeWidth: 2.843,\n fill: \"#474747\"\n }\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M415.23 166.9a6.554 6.292 0 1 1-13.107 0 6.554 6.292 0 1 1 13.107 0z\",\n style: {\n stroke: \"url(#openldap_svg__e)\",\n strokeWidth: 3.2702,\n fill: \"#212121\"\n }\n }));\n};\nexport default SvgOpenldap;","var _path, _path2, _path3, _path4, _path5;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgProget = function SvgProget(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#282B3A\",\n d: \"M23.586 13.035 13.46 7.381a2.24 2.24 0 0 0-2.192 0L1.144 13.035A2.255 2.255 0 0 0 0 15.036v11.198a2.255 2.255 0 0 0 1.144 1.961l10.125 5.654a2.24 2.24 0 0 0 2.192 0l10.125-5.693a2.248 2.248 0 0 0 1.151-1.962V15.036a2.246 2.246 0 0 0-1.151-2Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#3FA9F5\",\n d: \"m16.01 18.213-3.375-1.89a.564.564 0 0 0-.548 0l-3.367 1.89a.556.556 0 0 0-.294.492v3.733a.556.556 0 0 0 .294.492l3.367 1.89a.564.564 0 0 0 .548 0l3.375-1.842a.564.564 0 0 0 .285-.493v-3.732a.564.564 0 0 0-.285-.54Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#1696F0\",\n d: \"M6.742 23.772v-5.313l-3.375-1.834v8.338a1.136 1.136 0 0 0 .58.985l7.576 4.232v-3.772l-4.78-2.636Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#37BBF7\",\n d: \"M12.911 10.843a1.12 1.12 0 0 0-1.096 0l-7.647 4.273 3.399 1.874 4.764-2.676 4.741 2.628 3.336-1.906-7.497-4.193Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#79BFF2\",\n d: \"M18.026 18.372v5.4l-4.764 2.668v3.772l7.576-4.232a1.129 1.129 0 0 0 .571-.985V16.45l-3.383 1.922Z\"\n })));\n};\nexport default SvgProget;","var _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgQuay = function SvgQuay(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#40B4E5\",\n fillRule: \"evenodd\",\n d: \"m21.696 7.1 6.024 12.901L21.696 32.9H16.57l6.021-12.899L16.571 7.1h5.125Z\",\n clipRule: \"evenodd\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#003764\",\n fillRule: \"evenodd\",\n d: \"m16.57 32.9-6.024-12.899L16.57 7.1h5.126l-6.021 12.901 6.02 12.899H16.57Z\",\n clipRule: \"evenodd\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#40B4E5\",\n fillRule: \"evenodd\",\n d: \"M13.859 12.905 11.15 7.1H6.024l5.273 11.296 2.562-5.492ZM11.297 21.604 6.024 32.9h5.126l2.709-5.804-2.562-5.492Z\",\n clipRule: \"evenodd\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#003764\",\n fillRule: \"evenodd\",\n d: \"M6.024 32.9 0 20.001 6.024 7.1h5.126L5.126 20.001 11.15 32.9H6.024Z\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgQuay;","import _ from 'lodash';\n\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\n\nconst categories = [\n 'docker',\n 'kubernetes',\n 'aci',\n 'portainer',\n 'edge',\n] as const;\ntype Category = (typeof categories)[number];\n\nenum DimensionConfig {\n PortainerVersion = 1,\n PortainerInstanceID,\n PortainerUserRole,\n PortainerEndpointUserRole,\n}\n\ninterface TrackEventProps {\n category: Category;\n metadata?: Record<string, unknown>;\n value?: string | number;\n dimensions?: DimensionConfig;\n}\n\nexport function setPortainerStatus(instanceID: string, version: string) {\n setCustomDimension(DimensionConfig.PortainerInstanceID, instanceID);\n setCustomDimension(DimensionConfig.PortainerVersion, version);\n}\n\nexport function setUserRole(role: string) {\n setCustomDimension(DimensionConfig.PortainerUserRole, role);\n}\n\nexport function clearUserRole() {\n deleteCustomDimension(DimensionConfig.PortainerUserRole);\n}\n\nexport function setUserEndpointRole(role: string) {\n setCustomDimension(DimensionConfig.PortainerEndpointUserRole, role);\n}\n\nexport function clearUserEndpointRole() {\n deleteCustomDimension(DimensionConfig.PortainerEndpointUserRole);\n}\n\nfunction setCustomDimension(dimensionId: number, value: string) {\n push('setCustomDimension', dimensionId, value);\n}\n\nfunction deleteCustomDimension(dimensionId: number) {\n push('deleteCustomDimension', dimensionId.toString());\n}\n\nexport function push(\n name: string,\n ...args: (string | number | DimensionConfig)[]\n) {\n if (typeof window !== 'undefined') {\n window._paq.push([name, ...args]);\n }\n}\n\nexport function useAnalytics() {\n const telemetryQuery = usePublicSettings({\n select: (settings) => settings.EnableTelemetry,\n });\n\n return { trackEvent: handleTrackEvent };\n\n function handleTrackEvent(...args: Parameters<typeof trackEvent>) {\n if (telemetryQuery.data) {\n trackEvent(...args);\n }\n }\n}\n\nexport function trackEvent(action: string, properties: TrackEventProps) {\n /**\n * @description Logs an event with an event category (Videos, Music, Games...), an event\n * action (Play, Pause, Duration, Add Playlist, Downloaded, Clicked...), and an optional\n * event name and optional numeric value.\n *\n * @link https://piwik.org/docs/event-tracking/\n * @link https://developer.piwik.org/api-reference/tracking-javascript#using-the-tracker-object\n *\n */\n\n let { value } = properties;\n const { metadata, dimensions, category } = properties;\n // PAQ requires that eventValue be an integer, see: http://piwik.org/docs/event-tracking\n if (value) {\n const parsed = parseInt(value.toString(), 10);\n value = Number.isNaN(parsed) ? 0 : parsed;\n }\n\n if (!category) {\n throw new Error('missing category');\n }\n\n if (!categories.includes(category)) {\n throw new Error('unsupported category');\n }\n\n let metadataString = '';\n if (metadata) {\n const kebabCasedMetadata = Object.fromEntries(\n Object.entries(metadata).map(([key, value]) => [_.kebabCase(key), value])\n );\n metadataString = JSON.stringify(kebabCasedMetadata).toLowerCase();\n }\n\n push(\n 'trackEvent',\n category,\n action.toLowerCase(),\n metadataString, // Changed in favour of Piwik documentation. Added fallback so it's backwards compatible.\n value || '',\n dimensions || <DimensionConfig>{}\n );\n}\n\ndeclare global {\n interface Window {\n _paq: [string, ...(string | number)[]][];\n }\n}\n","// try to declare constant where it's needed, not in a global file\nexport const API_ENDPOINT_AUTH = 'api/auth';\nexport const API_ENDPOINT_BACKUP = 'api/backup';\nexport const API_ENDPOINT_CUSTOM_TEMPLATES = 'api/custom_templates';\nexport const API_ENDPOINT_EDGE_GROUPS = 'api/edge_groups';\nexport const API_ENDPOINT_EDGE_JOBS = 'api/edge_jobs';\nexport const API_ENDPOINT_EDGE_STACKS = 'api/edge_stacks';\nexport const API_ENDPOINT_EDGE_TEMPLATES = 'api/edge_templates';\nexport const API_ENDPOINT_ENDPOINTS = 'api/endpoints';\nexport const API_ENDPOINT_ENDPOINT_GROUPS = 'api/endpoint_groups';\nexport const API_ENDPOINT_KUBERNETES = 'api/kubernetes';\nexport const API_ENDPOINT_MOTD = 'api/motd';\nexport const API_ENDPOINT_REGISTRIES = 'api/registries';\nexport const API_ENDPOINT_RESOURCE_CONTROLS = 'api/resource_controls';\nexport const API_ENDPOINT_SETTINGS = 'api/settings';\nexport const API_ENDPOINT_STACKS = 'api/stacks';\nexport const API_ENDPOINT_SUPPORT = 'api/support';\nexport const API_ENDPOINT_USERS = 'api/users';\nexport const API_ENDPOINT_TAGS = 'api/tags';\nexport const API_ENDPOINT_TEAMS = 'api/teams';\nexport const API_ENDPOINT_TEAM_MEMBERSHIPS = 'api/team_memberships';\nexport const API_ENDPOINT_TEMPLATES = 'api/templates';\nexport const API_ENDPOINT_WEBHOOKS = 'api/webhooks';\nexport const PAGINATION_MAX_ITEMS = 10;\nexport const APPLICATION_CACHE_VALIDITY = 3600;\nexport const CONSOLE_COMMANDS_LABEL_PREFIX = 'io.portainer.commands.';\nexport const PREDEFINED_NETWORKS = ['host', 'bridge', 'ingress', 'nat', 'none'];\nexport const PORTAINER_FADEOUT = 1500;\nexport const STACK_NAME_VALIDATION_REGEX = '^[-_a-z0-9]+$';\nexport const TEMPLATE_NAME_VALIDATION_REGEX = '^[-_a-z0-9]+$';\nexport const KUBE_TEMPLATE_NAME_VALIDATION_REGEX =\n '^(([a-z0-9](?:(?:[-a-z0-9_.]){0,61}[a-z0-9])?))$'; // alphanumeric, lowercase, can contain dashes, dots and underscores, max 63 characters\n","import _ from 'lodash';\n\nexport function trimSHA(imageName: string) {\n if (!imageName) {\n return '';\n }\n if (imageName.indexOf('sha256:') === 0) {\n return imageName.substring(7, 19);\n }\n return _.split(imageName, '@sha256')[0];\n}\n\nexport function joinCommand(command: null | Array<string> = []) {\n if (!command) {\n return '';\n }\n\n return command.join(' ');\n}\n","// original code comes from https://www.npmjs.com/package/x256\n// only picking the used parts as there is no type definition\n// package is unmaintained and repository doesn't exist anymore\n\n// colors scraped from\n// http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html\n// %s/ *\\d\\+ \\+#\\([^ ]\\+\\)/\\1\\r/g\n\nimport rawColors from './rawColors.json';\n\nexport type RGBColor = [number, number, number];\nexport type TextColor = string | undefined;\n\nfunction hexToRGB(hex: string): RGBColor {\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n return [r, g, b];\n}\n\nexport const colors = rawColors.map(hexToRGB);\n\nexport const FOREGROUND_COLORS_BY_ANSI: {\n [k: string]: RGBColor;\n} = {\n black: colors[0],\n red: colors[1],\n green: colors[2],\n yellow: colors[3],\n blue: colors[4],\n magenta: colors[5],\n cyan: colors[6],\n white: colors[7],\n brightBlack: colors[8],\n brightRed: colors[9],\n brightGreen: colors[10],\n brightYellow: colors[11],\n brightBlue: colors[12],\n brightMagenta: colors[13],\n brightCyan: colors[14],\n brightWhite: colors[15],\n};\n\nexport const BACKGROUND_COLORS_BY_ANSI: {\n [k: string]: RGBColor;\n} = {\n bgBlack: colors[0],\n bgRed: colors[1],\n bgGreen: colors[2],\n bgYellow: colors[3],\n bgBlue: colors[4],\n bgMagenta: colors[5],\n bgCyan: colors[6],\n bgWhite: colors[7],\n bgBrightBlack: colors[8],\n bgBrightRed: colors[9],\n bgBrightGreen: colors[10],\n bgBrightYellow: colors[11],\n bgBrightBlue: colors[12],\n bgBrightMagenta: colors[13],\n bgBrightCyan: colors[14],\n bgBrightWhite: colors[15],\n};\n","import { FontWeight } from 'xterm';\n\nimport { type TextColor } from './colors';\n\nexport type Token = string | number;\n\nexport type Level =\n | 'debug'\n | 'info'\n | 'warn'\n | 'error'\n | 'DBG'\n | 'INF'\n | 'WRN'\n | 'ERR';\n\nexport type JSONStackTrace = {\n func: string;\n line: string;\n source: string;\n}[];\n\nexport type JSONLogs = {\n [k: string]: unknown;\n time: number;\n level: Level;\n caller: string;\n message: string;\n stack_trace?: JSONStackTrace;\n};\n\nexport type Span = {\n fgColor?: TextColor;\n bgColor?: TextColor;\n text: string;\n fontWeight?: FontWeight;\n};\n\nexport type FormattedLine = {\n spans: Span[];\n line: string;\n};\n\nexport const TIMESTAMP_LENGTH = 31; // 30 for timestamp + 1 for trailing space\n\nexport const Colors = {\n Grey: 'var(--text-log-viewer-color-json-grey)',\n Magenta: 'var(--text-log-viewer-color-json-magenta)',\n Yellow: 'var(--text-log-viewer-color-json-yellow)',\n Green: 'var(--text-log-viewer-color-json-green)',\n Red: 'var(--text-log-viewer-color-json-red)',\n Blue: 'var(--text-log-viewer-color-json-blue)',\n};\n","import { format } from 'date-fns';\nimport { takeRight } from 'lodash';\n\nimport { Span, Level, Colors, JSONStackTrace, FormattedLine } from './types';\n\nconst spaceSpan: Span = { text: ' ' };\n\nfunction logLevelToSpan(level: Level): Span {\n switch (level) {\n case 'debug':\n case 'DBG':\n return {\n fgColor: Colors.Grey,\n text: 'DBG',\n fontWeight: 'bold',\n };\n case 'info':\n case 'INF':\n return {\n fgColor: Colors.Green,\n text: 'INF',\n fontWeight: 'bold',\n };\n case 'warn':\n case 'WRN':\n return {\n fgColor: Colors.Yellow,\n text: 'WRN',\n fontWeight: 'bold',\n };\n case 'error':\n case 'ERR':\n return {\n fgColor: Colors.Red,\n text: 'ERR',\n fontWeight: 'bold',\n };\n default:\n return { text: level };\n }\n}\n\nexport function formatTime(\n time: number | string | undefined,\n spans: Span[],\n line: string\n) {\n let nl = line;\n if (time) {\n let date = '';\n if (typeof time === 'number') {\n // time is a number, so it is the number of seconds OR milliseconds since Unix Epoch (1970-01-01T00:00:00.000Z)\n // we need to know if time's unit is second or millisecond\n // 253402214400 is the numer of seconds between Unix Epoch and 9999-12-31T00:00:00.000Z\n // if time is greater than 253402214400, then time unit cannot be second, so it is millisecond\n const timestampInMilliseconds = time > 253402214400 ? time : time * 1000;\n date = format(new Date(timestampInMilliseconds), 'Y/MM/dd hh:mmaa');\n } else {\n date = time;\n }\n spans.push({ fgColor: Colors.Grey, text: date }, spaceSpan);\n nl += `${date} `;\n }\n return nl;\n}\n\nexport function formatLevel(\n level: Level | undefined,\n spans: Span[],\n line: string\n) {\n let nl = line;\n if (level) {\n const levelSpan = logLevelToSpan(level);\n spans.push(levelSpan, spaceSpan);\n nl += `${levelSpan.text} `;\n }\n return nl;\n}\n\nexport function formatCaller(\n caller: string | undefined,\n spans: Span[],\n line: string\n) {\n let nl = line;\n if (caller) {\n const trim = takeRight(caller.split('/'), 2).join('/');\n spans.push(\n { fgColor: Colors.Magenta, text: trim, fontWeight: 'bold' },\n spaceSpan\n );\n spans.push({ fgColor: Colors.Blue, text: '>' }, spaceSpan);\n nl += `${trim} > `;\n }\n return nl;\n}\n\nexport function formatMessage(\n message: string,\n spans: Span[],\n line: string,\n hasKeys: boolean\n) {\n let nl = line;\n if (message) {\n spans.push({ fgColor: Colors.Magenta, text: `${message}` }, spaceSpan);\n nl += `${message} `;\n\n if (hasKeys) {\n spans.push({ fgColor: Colors.Magenta, text: `|` }, spaceSpan);\n nl += '| ';\n }\n }\n return nl;\n}\n\nexport function formatKeyValuePair(\n key: string,\n value: unknown,\n spans: Span[],\n line: string,\n isLastKey: boolean\n) {\n let nl = line;\n\n const strValue = typeof value !== 'string' ? JSON.stringify(value) : value;\n\n spans.push(\n { fgColor: Colors.Blue, text: `${key}=` },\n {\n fgColor: key === 'error' || key === 'ERR' ? Colors.Red : Colors.Magenta,\n text: strValue,\n }\n );\n if (!isLastKey) spans.push(spaceSpan);\n nl += `${key}=${strValue}${!isLastKey ? ' ' : ''}`;\n\n return nl;\n}\n\nexport function formatStackTrace(\n stackTrace: JSONStackTrace | undefined,\n lines: FormattedLine[]\n) {\n if (stackTrace) {\n stackTrace.forEach(({ func, line: lineNumber, source }) => {\n const line = ` at ${func} (${source}:${lineNumber})`;\n const spans: Span[] = [\n spaceSpan,\n spaceSpan,\n spaceSpan,\n spaceSpan,\n { text: 'at ', fgColor: Colors.Grey },\n { text: func, fgColor: Colors.Red },\n { text: `(${source}:${lineNumber})`, fgColor: Colors.Grey },\n ];\n lines.push({ line, spans });\n });\n }\n}\n","import {\n formatCaller,\n formatKeyValuePair,\n formatLevel,\n formatMessage,\n formatStackTrace,\n formatTime,\n} from './formatters';\nimport {\n FormattedLine,\n JSONStackTrace,\n Level,\n Span,\n TIMESTAMP_LENGTH,\n} from './types';\n\nconst dateRegex = /(\\d{4}\\/\\d{2}\\/\\d{2} \\d{2}:\\d{2}[AP]M) /; // \"2022/02/01 04:30AM \"\nconst levelRegex = /(\\w{3}) /; // \"INF \" or \"ERR \"\nconst callerRegex = /(.+?.go:\\d+) /; // \"path/to/file.go:line \"\nconst chevRegex = /> /; // \"> \"\nconst messageAndPairsRegex = /(.*)/; // include the rest of the string in a separate group\n\nconst keyRegex = /(\\S+=)/g; // \"\"\n\nexport const ZerologRegex = concatRegex(\n dateRegex,\n levelRegex,\n callerRegex,\n chevRegex,\n messageAndPairsRegex\n);\n\nfunction concatRegex(...regs: RegExp[]) {\n const flags = Array.from(\n new Set(\n regs\n .map((r) => r.flags)\n .join('')\n .split('')\n )\n ).join('');\n const source = regs.map((r) => r.source).join('');\n return new RegExp(source, flags);\n}\n\ntype Pair = {\n key: string;\n value: string;\n};\n\nexport function formatZerologLogs(rawText: string, withTimestamps?: boolean) {\n const spans: Span[] = [];\n const lines: FormattedLine[] = [];\n let line = '';\n\n const text = withTimestamps ? rawText.substring(TIMESTAMP_LENGTH) : rawText;\n\n if (withTimestamps) {\n const timestamp = rawText.substring(0, TIMESTAMP_LENGTH);\n spans.push({ text: timestamp });\n line += `${timestamp} `;\n }\n\n const [, date, level, caller, messageAndPairs] =\n text.match(ZerologRegex) || [];\n\n const [message, pairs] = extractPairs(messageAndPairs);\n\n line += formatTime(date, spans, line);\n line += formatLevel(level as Level, spans, line);\n line += formatCaller(caller, spans, line);\n line += formatMessage(message, spans, line, !!pairs.length);\n\n let stackTrace: JSONStackTrace | undefined;\n const stackTraceIndex = pairs.findIndex((p) => p.key === 'stack_trace');\n\n if (stackTraceIndex !== -1) {\n stackTrace = JSON.parse(pairs[stackTraceIndex].value);\n pairs.splice(stackTraceIndex);\n }\n\n pairs.forEach(({ key, value }, idx) => {\n line += formatKeyValuePair(\n key,\n value,\n spans,\n line,\n idx === pairs.length - 1\n );\n });\n lines.push({ line, spans });\n\n formatStackTrace(stackTrace, lines);\n\n return lines;\n}\n\nfunction extractPairs(messageAndPairs: string): [string, Pair[]] {\n const pairs: Pair[] = [];\n let [message, rawPairs] = messageAndPairs.split('|');\n\n if (!messageAndPairs.includes('|') && !rawPairs) {\n rawPairs = message;\n message = '';\n }\n message = message.trim();\n rawPairs = rawPairs.trim();\n\n const matches = [...rawPairs.matchAll(keyRegex)];\n\n matches.forEach((m, idx) => {\n const rawKey = m[0];\n const key = rawKey.slice(0, -1);\n const start = m.index || 0;\n const end = idx !== matches.length - 1 ? matches[idx + 1].index : undefined;\n const value = (\n end\n ? rawPairs.slice(start + rawKey.length, end)\n : rawPairs.slice(start + rawKey.length)\n ).trim();\n pairs.push({ key, value });\n });\n\n return [message, pairs];\n}\n","import tokenize from '@nxmix/tokenize-ansi';\nimport { FontWeight } from 'xterm';\n\nimport {\n colors,\n BACKGROUND_COLORS_BY_ANSI,\n FOREGROUND_COLORS_BY_ANSI,\n RGBColor,\n} from './colors';\nimport { formatJSONLine } from './formatJSONLogs';\nimport { formatZerologLogs, ZerologRegex } from './formatZerologLogs';\nimport { Token, Span, TIMESTAMP_LENGTH, FormattedLine } from './types';\n\ntype FormatOptions = {\n stripHeaders?: boolean;\n withTimestamps?: boolean;\n splitter?: string;\n};\n\nconst defaultOptions: FormatOptions = {\n splitter: '\\n',\n};\n\nexport function formatLogs(\n rawLogs: string,\n {\n stripHeaders,\n withTimestamps,\n splitter = '\\n',\n }: FormatOptions = defaultOptions\n) {\n let logs = rawLogs;\n if (stripHeaders) {\n logs = stripHeadersFunc(logs);\n }\n // if JSON logs come serialized 2 times, parse them once to unwrap them\n // for example when retrieving Edge Agent logs on Nomad\n if (logs.startsWith('\"')) {\n try {\n logs = JSON.parse(logs);\n } catch (error) {\n // noop, throw error away if logs cannot be parsed\n }\n }\n\n const tokens: Token[][] = tokenize(logs);\n const formattedLogs: FormattedLine[] = [];\n\n let fgColor: string | undefined;\n let bgColor: string | undefined;\n let fontWeight: FontWeight | undefined;\n let line = '';\n let spans: Span[] = [];\n\n tokens.forEach((token) => {\n const [type] = token;\n\n const fgAnsi = FOREGROUND_COLORS_BY_ANSI[type];\n const bgAnsi = BACKGROUND_COLORS_BY_ANSI[type];\n\n if (fgAnsi) {\n fgColor = cssColorFromRgb(fgAnsi);\n } else if (type === 'moreColor') {\n fgColor = extendedColorForToken(token);\n } else if (type === 'fgDefault') {\n fgColor = undefined;\n } else if (bgAnsi) {\n bgColor = cssColorFromRgb(bgAnsi);\n } else if (type === 'bgMoreColor') {\n bgColor = extendedColorForToken(token);\n } else if (type === 'bgDefault') {\n bgColor = undefined;\n } else if (type === 'reset') {\n fgColor = undefined;\n bgColor = undefined;\n fontWeight = undefined;\n } else if (type === 'bold') {\n fontWeight = 'bold';\n } else if (type === 'normal') {\n fontWeight = 'normal';\n } else if (type === 'text') {\n const tokenLines = (token[1] as string).split(splitter);\n\n tokenLines.forEach((tokenLine, idx) => {\n if (idx && line) {\n formattedLogs.push({ line, spans });\n line = '';\n spans = [];\n }\n\n const text = stripEscapeCodes(tokenLine);\n try {\n if (\n (!withTimestamps && text.startsWith('{')) ||\n (withTimestamps && text.substring(TIMESTAMP_LENGTH).startsWith('{'))\n ) {\n const lines = formatJSONLine(text, withTimestamps);\n formattedLogs.push(...lines);\n } else if (\n (!withTimestamps && ZerologRegex.test(text)) ||\n (withTimestamps &&\n ZerologRegex.test(text.substring(TIMESTAMP_LENGTH)))\n ) {\n const lines = formatZerologLogs(text, withTimestamps);\n formattedLogs.push(...lines);\n } else {\n spans.push({ fgColor, bgColor, text, fontWeight });\n line += text;\n }\n } catch (error) {\n // in case parsing fails for whatever reason, push the raw logs and continue\n spans.push({ fgColor, bgColor, text, fontWeight });\n line += text;\n }\n });\n }\n });\n if (line) {\n formattedLogs.push({ line, spans });\n }\n\n return formattedLogs;\n}\n\nfunction stripHeadersFunc(logs: string) {\n return logs.substring(8).replace(/\\r?\\n(.{8})/g, '\\n');\n}\n\nfunction stripEscapeCodes(logs: string) {\n return logs.replace(\n // eslint-disable-next-line no-control-regex\n /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\n ''\n );\n}\n\nfunction cssColorFromRgb(rgb: RGBColor) {\n const [r, g, b] = rgb;\n\n return `rgb(${r}, ${g}, ${b})`;\n}\n\n// assuming types based on original JS implementation\n// there is not much type definitions for the tokenize library\nfunction extendedColorForToken(token: Token[]) {\n const [, colorMode, colorRef] = token as [undefined, number, number];\n\n if (colorMode === 2) {\n return cssColorFromRgb(token.slice(2) as RGBColor);\n }\n\n if (colorMode === 5 && colors[colorRef]) {\n return cssColorFromRgb(colors[colorRef]);\n }\n\n return '';\n}\n","import { without } from 'lodash';\n\nimport { FormattedLine, Span, JSONLogs, TIMESTAMP_LENGTH } from './types';\nimport {\n formatCaller,\n formatKeyValuePair,\n formatLevel,\n formatMessage,\n formatStackTrace,\n formatTime,\n} from './formatters';\n\nfunction removeKnownKeys(keys: string[]) {\n return without(keys, 'time', 'level', 'caller', 'message', 'stack_trace');\n}\n\nexport function formatJSONLine(\n rawText: string,\n withTimestamps?: boolean\n): FormattedLine[] {\n const spans: Span[] = [];\n const lines: FormattedLine[] = [];\n let line = '';\n\n const text = withTimestamps ? rawText.substring(TIMESTAMP_LENGTH) : rawText;\n\n const json: JSONLogs = JSON.parse(text);\n const { time, level, caller, message, stack_trace: stackTrace } = json;\n const keys = removeKnownKeys(Object.keys(json));\n\n if (withTimestamps) {\n const timestamp = rawText.substring(0, TIMESTAMP_LENGTH);\n spans.push({ text: timestamp });\n line += `${timestamp} `;\n }\n line += formatTime(time, spans, line);\n line += formatLevel(level, spans, line);\n line += formatCaller(caller, spans, line);\n line += formatMessage(message, spans, line, !!keys.length);\n\n keys.forEach((key, idx) => {\n line += formatKeyValuePair(\n key,\n json[key],\n spans,\n line,\n idx === keys.length - 1\n );\n });\n\n lines.push({ line, spans });\n formatStackTrace(stackTrace, lines);\n\n return lines;\n}\n","import { BROWSER_OS_PLATFORM } from '@/react/constants';\n\nexport const NEW_LINE_BREAKER = BROWSER_OS_PLATFORM === 'win' ? '\\r\\n' : '\\n';\n","import { NEW_LINE_BREAKER } from './constants';\nimport { FormattedLine } from './types';\n\ntype FormatFunc = (line: FormattedLine) => string;\n\nexport function concatLogsToString(\n logs: FormattedLine[],\n formatFunc: FormatFunc = (line) => line.line\n) {\n return logs.reduce(\n (acc, formattedLine) => acc + formatFunc(formattedLine) + NEW_LINE_BREAKER,\n ''\n );\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport async function ping(environmentId: EnvironmentId) {\n try {\n await axios.get(`/endpoints/${environmentId}/docker/_ping`);\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nexport interface VersionResponse {\n ApiVersion: string;\n}\n\nexport async function getVersion(environmentId: EnvironmentId) {\n try {\n const { data } = await axios.get<VersionResponse>(\n buildUrl(environmentId, 'version')\n );\n return data;\n } catch (err) {\n throw parseAxiosError(err as Error, 'Unable to retrieve version');\n }\n}\n\nexport interface InfoResponse {\n Swarm?: {\n NodeID: string;\n ControlAvailable: boolean;\n };\n}\n\nexport async function getInfo(environmentId: EnvironmentId) {\n try {\n const { data } = await axios.get<InfoResponse>(\n buildUrl(environmentId, 'info')\n );\n return data;\n } catch (err) {\n throw parseAxiosError(err as Error, 'Unable to retrieve version');\n }\n}\n\nexport function useInfo<TSelect = InfoResponse>(\n environmentId: EnvironmentId,\n select?: (info: InfoResponse) => TSelect\n) {\n return useQuery(\n ['environment', environmentId, 'docker', 'info'],\n () => getInfo(environmentId),\n {\n select,\n }\n );\n}\nexport function useVersion<TSelect = VersionResponse>(\n environmentId: EnvironmentId,\n select?: (info: VersionResponse) => TSelect\n) {\n return useQuery(\n ['environment', environmentId, 'docker', 'version'],\n () => getVersion(environmentId),\n {\n select,\n }\n );\n}\n\nfunction buildUrl(\n environmentId: EnvironmentId,\n action: string,\n subAction = ''\n) {\n let url = `/endpoints/${environmentId}/docker/${action}`;\n\n if (subAction) {\n url += `/${subAction}`;\n }\n\n return url;\n}\n","import {\n IComponentOptions,\n IComponentController,\n IFormController,\n IScope,\n} from 'angular';\n\nclass BoxSelectorController implements IComponentController {\n formCtrl!: IFormController;\n\n onChange!: (value: string | number) => void;\n\n radioName!: string;\n\n $scope: IScope;\n\n /* @ngInject */\n constructor($scope: IScope) {\n this.handleChange = this.handleChange.bind(this);\n\n this.$scope = $scope;\n }\n\n handleChange(value: string | number, limitedToBE: boolean) {\n this.$scope.$evalAsync(() => {\n this.formCtrl.$setValidity(this.radioName, !limitedToBE, this.formCtrl);\n this.onChange(value);\n });\n }\n}\n\nexport const BoxSelectorAngular: IComponentOptions = {\n template: `<box-selector-react\n value=\"$ctrl.value\"\n on-change=\"$ctrl.handleChange\"\n options=\"$ctrl.options\"\n radio-name=\"$ctrl.radioName\"\n slim=\"$ctrl.slim\"\n ></box-selector-react>`,\n bindings: {\n value: '<',\n onChange: '<',\n options: '<',\n radioName: '<',\n slim: '<',\n },\n require: {\n formCtrl: '^form',\n },\n controller: BoxSelectorController,\n};\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { BoxSelectorOption } from '@@/BoxSelector/types';\nimport { IconProps } from '@@/Icon';\n\nexport function buildOption<T extends number | string>(\n id: BoxSelectorOption<T>['id'],\n icon: IconProps['icon'],\n label: BoxSelectorOption<T>['label'],\n description: BoxSelectorOption<T>['description'],\n value: BoxSelectorOption<T>['value'],\n feature?: FeatureId\n): BoxSelectorOption<T> {\n return { id, icon, label, description, value, feature };\n}\n","import angular from 'angular';\n\nimport { react2angular } from '@/react-tools/react2angular';\n\nimport { BoxSelector } from '@@/BoxSelector';\n\nimport { BoxSelectorAngular } from './BoxSelectorAngular';\n\nexport { buildOption } from './utils';\nconst BoxSelectorReact = react2angular(BoxSelector, [\n 'isMulti',\n 'value',\n 'onChange',\n 'options',\n 'radioName',\n 'slim',\n 'hiddenSpacingCount',\n]);\n\nexport const boxSelectorModule = angular\n .module('app.portainer.component.box-selector', [])\n .component('boxSelectorReact', BoxSelectorReact)\n .component('boxSelector', BoxSelectorAngular).name;\n","export default class PortainerError extends Error {\n err?: unknown;\n\n isPortainerError = true;\n\n constructor(msg: string, err?: unknown) {\n super(msg);\n this.err = err;\n }\n}\n\nexport function isPortainerError(error: unknown): error is PortainerError {\n return (\n !!error &&\n typeof error === 'object' &&\n 'isPortainerError' in error &&\n (error as PortainerError).isPortainerError\n );\n}\n","export function getValueAsArrayOfStrings(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value;\n }\n\n if (!value || (typeof value !== 'string' && typeof value !== 'number')) {\n return [];\n }\n\n if (typeof value === 'number') {\n return [value.toString()];\n }\n\n return [value];\n}\n","/**\n * runs the provided promises in a sequence, and returns a promise that resolves when all promises have resolved\n *\n * @param promises a list of functions that return promises\n */\nexport function promiseSequence(promises: (() => Promise<unknown>)[]) {\n return promises.reduce(\n (promise, nextPromise) => promise.then(nextPromise),\n Promise.resolve(undefined as unknown)\n );\n}\n\nexport function isFulfilled<T>(\n result: PromiseSettledResult<T>\n): result is PromiseFulfilledResult<T> {\n return result.status === 'fulfilled';\n}\n\nexport function isRejected<T>(\n result: PromiseSettledResult<T>\n): result is PromiseRejectedResult {\n return result.status === 'rejected';\n}\n\nexport function getFulfilledResults<T>(\n results: Array<PromiseSettledResult<T>>\n) {\n return results.filter(isFulfilled).map((result) => result.value);\n}\n","export function pluralize(val: number, word: string, plural = `${word}s`) {\n return [1, -1].includes(Number(val)) ? word : plural;\n}\n\nexport function addPlural(value: number, word: string, plural = `${word}s`) {\n return `${value} ${pluralize(value, word, plural)}`;\n}\n","import uuid from 'uuid';\n\nimport {\n API_ENDPOINT_EDGE_STACKS,\n API_ENDPOINT_STACKS,\n API_ENDPOINT_WEBHOOKS,\n} from '@/constants';\n\nimport { baseHref } from './pathHelper';\n\nconst baseUrl = getBaseUrl();\n\nexport function dockerWebhookUrl(token: string) {\n return `${baseUrl}${API_ENDPOINT_WEBHOOKS}/${token}`;\n}\n\nexport function baseStackWebhookUrl() {\n return `${baseUrl}${API_ENDPOINT_STACKS}/webhooks`;\n}\n\nexport function stackWebhookUrl(token: string) {\n return `${baseStackWebhookUrl()}/${token}`;\n}\n\nexport function createWebhookId() {\n return uuid();\n}\n\nexport function baseEdgeStackWebhookUrl() {\n return `${baseUrl}${API_ENDPOINT_EDGE_STACKS}/webhooks`;\n}\n\n/* @ngInject */\nexport function WebhookHelperFactory() {\n return {\n returnWebhookUrl: dockerWebhookUrl,\n getBaseStackWebhookUrl: baseStackWebhookUrl,\n returnStackWebhookUrl: stackWebhookUrl,\n };\n}\n\nfunction getBaseUrl() {\n const protocol = window.location.protocol.toLowerCase().replace(':', '');\n\n if (protocol === 'file') {\n return baseHref();\n }\n\n const { hostname } = window.location;\n const port = parseInt(window.location.port, 10);\n const displayPort =\n (protocol === 'http' && port === 80) ||\n (protocol === 'https' && port === 443) ||\n Number.isNaN(port)\n ? ''\n : `:${port}`;\n return `${protocol}://${hostname}${displayPort}${baseHref()}`;\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { FDOConfiguration, DeviceConfiguration, Profile } from './model';\n\nconst BASE_URL = '/fdo';\n\nexport async function configureFDO(formValues: FDOConfiguration) {\n try {\n await axios.post(`${BASE_URL}/configure`, formValues);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to configure FDO');\n }\n}\n\nexport async function configureDevice(\n deviceId: string,\n deviceConfig: DeviceConfiguration\n) {\n try {\n await axios.post(`${BASE_URL}/configure/${deviceId}`, deviceConfig);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to configure device');\n }\n}\n\nexport async function createProfile(\n name: string,\n method: string,\n profileFileContent: string\n) {\n const payload = {\n name,\n profileFileContent,\n };\n try {\n await axios.post(`${BASE_URL}/profiles`, payload, {\n params: { method },\n });\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to create profile');\n }\n}\n\nexport async function getProfiles() {\n try {\n const { data: profiles } = await axios.get<Profile[]>(\n `${BASE_URL}/profiles`\n );\n return profiles;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve the profiles');\n }\n}\n\nexport async function getProfile(profileId: number) {\n try {\n const { data: profile } = await axios.get<Profile>(\n `${BASE_URL}/profiles/${profileId}`\n );\n return profile;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve profile');\n }\n}\n\nexport async function deleteProfile(profileId: number) {\n try {\n await axios.delete(`${BASE_URL}/profiles/${profileId}`);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to delete profile');\n }\n}\n\nexport async function updateProfile(\n id: number,\n name: string,\n profileFileContent: string\n) {\n const payload = {\n name,\n profileFileContent,\n };\n try {\n await axios.put(`${BASE_URL}/profiles/${id}`, payload);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update profile');\n }\n}\n\nexport async function duplicateProfile(id: number) {\n try {\n const { data: profile } = await axios.post<Profile>(\n `${BASE_URL}/profiles/${id}/duplicate`\n );\n return profile;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to duplicate profile');\n }\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport {\n OpenAMTConfiguration,\n AMTInformation,\n AuthorizationResponse,\n DeviceFeatures,\n} from '@/react/edge/edge-devices/open-amt/types';\n\nconst BASE_URL = '/open_amt';\n\nexport async function configureAMT(formValues: OpenAMTConfiguration) {\n try {\n await axios.post(`${BASE_URL}/configure`, formValues);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to configure AMT');\n }\n}\n\nexport async function getAMTInfo(environmentId: EnvironmentId) {\n try {\n const { data: amtInformation } = await axios.get<AMTInformation>(\n `${BASE_URL}/${environmentId}/info`\n );\n\n return amtInformation;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve environment information'\n );\n }\n}\n\nexport async function enableDeviceFeatures(\n environmentId: EnvironmentId,\n deviceGUID: string,\n features: DeviceFeatures\n) {\n try {\n const featuresPayload = { features };\n const { data: authorizationResponse } =\n await axios.post<AuthorizationResponse>(\n `${BASE_URL}/${environmentId}/devices/${deviceGUID}/features`,\n featuresPayload\n );\n return authorizationResponse;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to enable device features');\n }\n}\n","import axiosOrigin, { AxiosError, AxiosRequestConfig } from 'axios';\nimport { loadProgressBar } from 'axios-progress-bar';\n\nimport 'axios-progress-bar/dist/nprogress.css';\nimport PortainerError from '@/portainer/error';\nimport { get as localStorageGet } from '@/react/hooks/useLocalStorage';\n\nimport {\n portainerAgentManagerOperation,\n portainerAgentTargetHeader,\n} from './http-request.helper';\n\nconst axios = axiosOrigin.create({ baseURL: 'api' });\n\nloadProgressBar(undefined, axios);\n\nexport default axios;\n\naxios.interceptors.request.use(async (config) => {\n const newConfig = { headers: config.headers || {}, ...config };\n\n const jwt = localStorageGet('JWT', '');\n if (jwt) {\n newConfig.headers.Authorization = `Bearer ${jwt}`;\n }\n\n return newConfig;\n});\n\nexport const agentTargetHeader = 'X-PortainerAgent-Target';\n\nexport function agentInterceptor(config: AxiosRequestConfig) {\n if (!config.url || !config.url.includes('/docker/')) {\n return config;\n }\n\n const newConfig = { headers: config.headers || {}, ...config };\n const target = portainerAgentTargetHeader();\n if (target) {\n newConfig.headers[agentTargetHeader] = target;\n }\n\n if (portainerAgentManagerOperation()) {\n newConfig.headers['X-PortainerAgent-ManagerOperation'] = '1';\n }\n\n return newConfig;\n}\n\naxios.interceptors.request.use(agentInterceptor);\n\nexport const AXIOS_UNAUTHENTICATED = '__axios__unauthenticated__';\n\n/**\n * Parses an Axios error and returns a PortainerError.\n * @param err The original error.\n * @param msg An optional error message to prepend.\n * @param parseError A function to parse AxiosErrors. Defaults to defaultErrorParser.\n * @returns A PortainerError with the parsed error message and details.\n */\nexport function parseAxiosError(\n err: unknown,\n msg = '',\n parseError = defaultErrorParser\n) {\n let resultErr = err;\n let resultMsg = msg;\n\n if (isAxiosError(err)) {\n const { error, details } = parseError(err as AxiosError);\n resultErr = error;\n if (msg && details) {\n resultMsg = `${msg}: ${details}`;\n } else {\n resultMsg = msg || details;\n }\n // dispatch an event for unauthorized errors that AngularJS can catch\n if (err.response?.status === 401) {\n dispatchEvent(\n new CustomEvent(AXIOS_UNAUTHENTICATED, {\n detail: {\n err,\n },\n })\n );\n }\n }\n\n return new PortainerError(resultMsg, resultErr);\n}\n\nexport function defaultErrorParser(axiosError: AxiosError) {\n const message = axiosError.response?.data.message || '';\n const details = axiosError.response?.data.details || message;\n const error = new Error(message);\n return { error, details };\n}\n\nexport function isAxiosError<\n ResponseType = { message: string; details: string }\n>(error: unknown): error is AxiosError<ResponseType> {\n return axiosOrigin.isAxiosError(error);\n}\n","interface Headers {\n agentTargetQueue: string[];\n agentManagerOperation: boolean;\n registryAuthentication?: string;\n agentTargetLastValue: string;\n}\n\nconst headers: Headers = {\n agentTargetQueue: [],\n agentManagerOperation: false,\n agentTargetLastValue: '',\n};\n\nexport function registryAuthenticationHeader() {\n return headers.registryAuthentication;\n}\n\nexport function setRegistryAuthenticationHeader(headerValue: string) {\n headers.registryAuthentication = headerValue;\n}\n\n// Due to the fact that async HTTP requests are decorated using an interceptor\n// we need to store and retrieve the headers using a first-in-first-out (FIFO) data structure.\n// Otherwise, sequential HTTP requests might end up using the same header value (incorrect in the case\n// of starting multiple containers on different nodes for example).\n// To prevent having to use the HttpRequestHelper.setPortainerAgentTargetHeader before EACH request,\n// we re-use the latest available header in the data structure (handy in thee case of multiple requests affecting\n// the same node in the same view).\nexport function portainerAgentTargetHeader() {\n if (headers.agentTargetQueue.length === 0) {\n return headers.agentTargetLastValue;\n }\n\n if (headers.agentTargetQueue.length === 1) {\n const [lastValue] = headers.agentTargetQueue;\n headers.agentTargetLastValue = lastValue;\n }\n\n return headers.agentTargetQueue.shift() || '';\n}\n\nexport function setPortainerAgentTargetHeader(headerValue: string) {\n if (headerValue) {\n headers.agentTargetQueue.push(headerValue);\n }\n}\n\nexport function setPortainerAgentManagerOperation(set: boolean) {\n headers.agentManagerOperation = set;\n}\n\nexport function portainerAgentManagerOperation() {\n return headers.agentManagerOperation;\n}\n\nexport function resetAgentHeaders() {\n headers.agentTargetQueue = [];\n headers.agentTargetLastValue = '';\n headers.agentManagerOperation = false;\n delete headers.registryAuthentication;\n}\n\n/* @ngInject */\nexport function HttpRequestHelperAngular() {\n return {\n registryAuthenticationHeader,\n setRegistryAuthenticationHeader,\n portainerAgentTargetHeader,\n setPortainerAgentTargetHeader,\n setPortainerAgentManagerOperation,\n portainerAgentManagerOperation,\n resetAgentHeaders,\n };\n}\n","import _ from 'lodash';\nimport toastr from 'toastr';\nimport sanitize from 'sanitize-html';\nimport jwtDecode from 'jwt-decode';\nimport { v4 as uuid } from 'uuid';\n\nimport { get as localStorageGet } from '@/react/hooks/useLocalStorage';\nimport { notificationsStore } from '@/react/portainer/notifications/notifications-store';\nimport { ToastNotification } from '@/react/portainer/notifications/types';\n\nconst { addNotification } = notificationsStore.getState();\n\ntoastr.options = {\n timeOut: 3000,\n closeButton: true,\n progressBar: true,\n tapToDismiss: false,\n escapeHtml: true,\n // custom button, using the lucide icon x.svg inside\n closeHtml: `<button type=\"button\"><svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n>\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n</svg></button>`,\n};\n\nexport function notifySuccess(title: string, text: string) {\n saveNotification(title, text, 'success');\n toastr.success(sanitize(_.escape(text)), sanitize(_.escape(title)));\n}\n\nexport function notifyWarning(title: string, text: string) {\n saveNotification(title, text, 'warning');\n toastr.warning(sanitize(_.escape(text)), sanitize(title), { timeOut: 6000 });\n}\n\nexport function notifyError(title: string, e?: Error, fallbackText = '') {\n const msg = pickErrorMsg(e) || fallbackText;\n saveNotification(title, msg, 'error');\n\n if (!_.get(e, 'resource.password')) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n\n if (msg !== 'Invalid JWT token') {\n toastr.error(sanitize(_.escape(msg)), sanitize(title), { timeOut: 6000 });\n }\n}\n\nexport const success = notifySuccess;\nexport const error = notifyError;\nexport const warning = notifyWarning;\n\n/* @ngInject */\nexport function Notifications() {\n return {\n success: notifySuccess,\n warning: notifyWarning,\n error: notifyError,\n };\n}\n\nfunction pickErrorMsg(e?: Error) {\n if (!e) {\n return '';\n }\n\n const props = [\n 'err.data.details',\n 'err.data.message',\n 'data.details',\n 'data.message',\n 'data.content',\n 'data.error',\n 'message',\n 'err.data[0].message',\n 'err.data.err',\n 'data.err',\n 'msg',\n ];\n\n let msg = '';\n\n props.forEach((prop) => {\n const val = _.get(e, prop);\n if (typeof val === 'string') {\n msg = msg || val;\n }\n });\n\n return msg;\n}\n\nfunction saveNotification(title: string, text: string, type: string) {\n const notif: ToastNotification = {\n id: uuid(),\n title,\n details: text,\n type,\n timeStamp: new Date(),\n };\n const jwt = localStorageGet('JWT', '');\n if (jwt !== '') {\n const { id } = jwtDecode(jwt) as { id: number };\n if (id) {\n addNotification(id, notif);\n }\n }\n}\n","import axios, { parseAxiosError } from '../services/axios';\n\nimport { Tag, TagId } from './types';\n\nexport async function getTags() {\n try {\n const { data } = await axios.get<Tag[]>(buildUrl());\n return data;\n } catch (err) {\n throw parseAxiosError(err as Error, 'Unable to retrieve tags');\n }\n}\n\nexport async function createTag(name: string) {\n try {\n const { data: tag } = await axios.post<Tag>(buildUrl(), { name });\n return tag;\n } catch (err) {\n throw parseAxiosError(err as Error, 'Unable to create tag');\n }\n}\n\nexport async function deleteTag(id: TagId) {\n try {\n await axios.delete(buildUrl(id));\n } catch (err) {\n throw parseAxiosError(err as Error, 'Unable to delte tag');\n }\n}\n\nfunction buildUrl(id?: TagId) {\n let url = '/tags';\n if (id) {\n url += `/${id}`;\n }\n\n return url;\n}\n","import { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { createTag, getTags } from './tags.service';\nimport { Tag, TagId } from './types';\n\nexport const tagKeys = {\n all: ['tags'] as const,\n tag: (id: TagId) => [...tagKeys.all, id] as const,\n};\n\nexport function useTags<T = Tag[]>({\n select,\n enabled = true,\n}: { select?: (tags: Tag[]) => T; enabled?: boolean } = {}) {\n return useQuery(tagKeys.all, () => getTags(), {\n staleTime: 50,\n select,\n enabled,\n ...withError('Failed to retrieve tags'),\n });\n}\n\nexport function useTagsForEnvironment(environmentId: EnvironmentId) {\n const { data: tags, isLoading } = useTags({\n select: (tags) => tags.filter((tag) => tag.Endpoints[environmentId]),\n });\n\n return { tags, isLoading };\n}\n\nexport function useCreateTagMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n createTag,\n mutationOptions(\n withError('Unable to create tag'),\n withInvalidate(queryClient, [tagKeys.all])\n )\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { TeamRole, TeamMembership } from '@/react/portainer/users/teams/types';\n\nimport { User, UserId } from './types';\nimport { isAdmin } from './user.helpers';\nimport { getUserMemberships, getUsers } from './user.service';\n\ninterface UseUserMembershipOptions<TSelect> {\n select?(userMemberships: TeamMembership[]): TSelect;\n enabled?: boolean;\n}\n\nexport function useUserMembership<TSelect = TeamMembership[]>(\n userId: UserId,\n { enabled, select }: UseUserMembershipOptions<TSelect> = {}\n) {\n return useQuery(\n ['users', userId, 'memberships'],\n () => getUserMemberships(userId),\n { select, enabled }\n );\n}\n\nexport function useIsTeamLeader(user: User) {\n const query = useUserMembership(user.Id, {\n enabled: !isAdmin(user),\n select: (memberships) =>\n memberships.some((membership) => membership.Role === TeamRole.Leader),\n });\n\n return isAdmin(user) ? true : query.data;\n}\n\nexport function useUsers<T = User[]>(\n includeAdministrator = false,\n environmentId = 0,\n enabled = true,\n select: (data: User[]) => T = (data) => data as unknown as T\n) {\n const users = useQuery(\n ['users'],\n () => getUsers(includeAdministrator, environmentId),\n {\n meta: {\n error: { title: 'Failure', message: 'Unable to load users' },\n },\n enabled,\n select,\n }\n );\n\n return users;\n}\n","import { UserId } from '../types';\n\nexport const queryKeys = {\n base: () => ['users'] as const,\n user: (id: UserId) => [...queryKeys.base(), id] as const,\n};\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { buildUrl } from '../user.service';\nimport { User, UserId } from '../types';\n\nimport { queryKeys } from './queryKeys';\n\nexport function useUser(\n id: UserId,\n { staleTime }: { staleTime?: number } = {}\n) {\n return useQuery(queryKeys.user(id), () => getUser(id), {\n ...withError('Unable to retrieve user details'),\n staleTime,\n });\n}\n\nexport async function getUser(id: UserId) {\n try {\n const { data: user } = await axios.get<User>(buildUrl(id));\n\n return user;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve user details');\n }\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { UserId } from './types/user-id';\n\nexport { type UserId };\n\nexport enum Role {\n Admin = 1,\n Standard,\n}\n\ninterface AuthorizationMap {\n [authorization: string]: boolean;\n}\n\nexport type User = {\n Id: UserId;\n Username: string;\n Role: Role;\n EndpointAuthorizations: {\n [endpointId: EnvironmentId]: AuthorizationMap;\n };\n ThemeSettings: {\n color: 'dark' | 'light' | 'highcontrast' | 'auto';\n };\n};\n","import { Role, User } from './types';\n\nexport function filterNonAdministratorUsers(users: User[]) {\n return users.filter((user) => user.Role !== Role.Admin);\n}\n\nexport function isAdmin(user?: User): boolean {\n return !!user && user.Role === 1;\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { TeamMembership } from '@/react/portainer/users/teams/types';\n\nimport { User, UserId } from './types';\nimport { filterNonAdministratorUsers } from './user.helpers';\n\nexport async function getUsers(\n includeAdministrators = false,\n environmentId = 0\n) {\n try {\n const { data } = await axios.get<User[]>(buildUrl(), {\n params: { environmentId },\n });\n\n return includeAdministrators ? data : filterNonAdministratorUsers(data);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve users');\n }\n}\n\nexport async function getUserMemberships(id: UserId) {\n try {\n const { data } = await axios.get<TeamMembership[]>(\n buildUrl(id, 'memberships')\n );\n return data;\n } catch (err) {\n throw parseAxiosError(err as Error, 'Unable to retrieve user memberships');\n }\n}\n\nexport function buildUrl(id?: UserId, entity?: string) {\n let url = '/users';\n\n if (id) {\n url += `/${id}`;\n }\n\n if (entity) {\n url += `/${entity}`;\n }\n\n return url;\n}\n","import {\n MutationCache,\n MutationOptions,\n QueryCache,\n QueryClient,\n QueryKey,\n QueryOptions,\n} from 'react-query';\n\nimport { notifyError } from '@/portainer/services/notifications';\n\nexport function withError(fallbackMessage?: string, title = 'Failure') {\n return {\n onError(error: unknown) {\n notifyError(title, error as Error, fallbackMessage);\n },\n };\n}\n\nexport function withGlobalError(fallbackMessage?: string, title = 'Failure') {\n return {\n meta: {\n error: { message: fallbackMessage, title },\n },\n };\n}\n\ntype OptionalReadonly<T> = T | Readonly<T>;\n\nexport function withInvalidate(\n queryClient: QueryClient,\n queryKeysToInvalidate: OptionalReadonly<string[]>[]\n) {\n return {\n onSuccess() {\n return Promise.all(\n queryKeysToInvalidate.map((keys) => queryClient.invalidateQueries(keys))\n );\n },\n };\n}\n\nexport function mutationOptions<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown\n>(...options: MutationOptions<TData, TError, TVariables, TContext>[]) {\n return mergeOptions(options);\n}\n\nexport function queryOptions<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey\n>(...options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>[]) {\n return mergeOptions(options);\n}\n\nfunction mergeOptions<T>(options: T[]) {\n return options.reduce(\n (acc, option) => ({\n ...acc,\n ...option,\n }),\n {} as T\n );\n}\n\nexport function createQueryClient() {\n return new QueryClient({\n mutationCache: new MutationCache({\n onError: (error, variable, context, mutation) => {\n handleError(error, mutation.meta?.error);\n },\n }),\n queryCache: new QueryCache({\n onError: (error, mutation) => {\n handleError(error, mutation.meta?.error);\n },\n }),\n });\n}\n\nfunction handleError(error: unknown, errorMeta?: unknown) {\n if (errorMeta && typeof errorMeta === 'object') {\n const { title = 'Failure', message } = errorMeta as {\n title?: string;\n message?: string;\n };\n\n notifyError(title, error as Error, message);\n }\n}\n\nexport const queryClient = createQueryClient();\n","import ReactDOM from 'react-dom';\nimport { IComponentOptions, IController } from 'angular';\nimport { StrictMode } from 'react';\nimport _ from 'lodash';\n\nfunction toProps(\n propNames: string[],\n controller: IController,\n $q: ng.IQService\n) {\n return Object.fromEntries(\n propNames.map((key) => {\n const prop = controller[key];\n if (typeof prop !== 'function') {\n return [key, prop];\n }\n\n return [\n key,\n (...args: unknown[]) =>\n $q((resolve) => resolve(controller[key](...args))),\n ];\n })\n );\n}\n\nexport type PropNames<T> = Exclude<keyof T, number | symbol>;\n\n/**\n * react2angular is used to bind a React component to an AngularJS component\n * it used in an AngularJS module definition:\n *\n * `.component('componentName', react2angular(ComponentName, ['prop1', 'prop2']))`\n *\n * if the second parameter has any ts errors check that the component has the correct props\n */\nexport function react2angular<T, U extends PropNames<T>[]>(\n Component: React.ComponentType<T & JSX.IntrinsicAttributes>,\n propNames: U & ([PropNames<T>] extends [U[number]] ? unknown : PropNames<T>)\n): IComponentOptions & { name: string } {\n const bindings = Object.fromEntries(propNames.map((key) => [key, '<']));\n\n return {\n bindings,\n controller: Controller,\n name: _.camelCase(Component.displayName || Component.name),\n };\n\n /* @ngInject */\n function Controller(\n this: IController,\n $element: HTMLElement[],\n $q: ng.IQService\n ) {\n let isDestroyed = false;\n const el = $element[0];\n\n this.$onChanges = () => {\n if (!isDestroyed) {\n const props = toProps(propNames, this, $q);\n ReactDOM.render(\n <StrictMode>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <Component {...(props as T & JSX.IntrinsicAttributes)} />\n </StrictMode>,\n\n el\n );\n }\n };\n\n this.$onDestroy = () => {\n if (!isDestroyed) {\n isDestroyed = true;\n ReactDOM.unmountComponentAtNode(el);\n }\n };\n }\n}\n\nexport const r2a = react2angular;\n","import { ComponentType, useEffect, useMemo, useState } from 'react';\n\ntype KeyRecord<T> = Record<keyof T, T[keyof T]>;\n\ntype KeysOfFunctions<T> = keyof {\n [K in keyof T as T[K] extends (v: never) => void ? K : never]: never;\n};\n\ntype KeysWithoutFunctions<T> = Exclude<keyof T, KeysOfFunctions<T>>;\n\n/**\n * React component wrapper that will sync AngularJS bound variables in React state.\n * This wrapper is mandatory to allow the binding of AngularJS variables directly in controlled components.\n *\n * Without this the component will be redrawn everytime the value changes in AngularJS (outside of React control)\n * and the redraw will create issues when typing in the inputs.\n *\n * Examples\n * ---\n * SINGLE PAIR\n * ```tsx\n * type Props = {\n * value: unknown;\n * onChange: (v: unknown) => void;\n * }\n *\n * function ReactComponent({ value, onChange }: Props) {\n * return <input value={value} onChange={onChange} />\n * }\n *\n * r2a(withControlledInput(ReactComponent), ['value', 'onChange']);\n *\n * ```\n * ---\n * MULTIPLE PAIRS\n * ```tsx\n * type Props = {\n * valueStr: string;\n * onChangeStr: (v: string) => void;\n * valueNum: number;\n * onChangeNum: (v: number) => void;\n * }\n *\n * function ReactComponent({ valueStr, onChangeStr, valueNum, onChangeNum }: Props) {\n * return (\n * <>\n * <input type=\"text\" value={valueStr} onChange={onChangeStr} />\n * <input type=\"number\" value={valueNum} onChange={onChangeNum} />\n * </>\n * );\n * }\n *\n * r2a(withControlledInput(ReactComponent, {\n * valueStr: 'onChangeStr',\n * valueNum: 'onChangeNum'\n * }),\n * ['valueStr', 'onChangeStr', 'valueNum', 'onChangeNum']\n * )\n *\n * ```\n *\n * @param WrappedComponent The React component to wrap\n * @param controlledValueOnChangePairs A map of `(value:onChange)-like` pairs.\n * @returns WrappedComponent\n */\nexport function withControlledInput<T>(\n WrappedComponent: ComponentType<T>,\n controlledValueOnChangePairs:\n | {\n [Key in KeysWithoutFunctions<T>]?: KeysOfFunctions<T>;\n }\n | { value?: 'onChange' } = { value: 'onChange' }\n): ComponentType<T> {\n // Try to create a nice displayName for React Dev Tools.\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n // extract keys of values that will be updated outside of React lifecycle and their handler functions\n const keysToControl = Object.entries(controlledValueOnChangePairs) as [\n keyof T,\n keyof T\n ][];\n\n function WrapperComponent(props: T) {\n // map of key = value for all tracked values that will be changed outside of React lifecycle\n // e.g. save in React state the values that will be changed in AngularJS\n const [controlledValues, setControlledValues] = useState<KeyRecord<T>>(\n {} as KeyRecord<T>\n );\n\n // generate a map of `funckey = (v: typeof props[value_key]) => void` to wrapp all handler functions.\n // each wrapped handler is referencing the key of the value it is changing so we can't use a single sync func\n const handlers = useMemo(\n () =>\n Object.fromEntries(\n keysToControl.map(([valueKey, onChangeKey]) => [\n onChangeKey,\n // generate and save a func that uses the key of the updated value\n (value: T[keyof T]) => {\n // update the state with the value coming from WrappedComponent\n setControlledValues(\n (c) => ({ ...c, [valueKey]: value } as KeyRecord<T>)\n );\n\n // call the bound handler func to update the value outside of React\n // eslint-disable-next-line react/destructuring-assignment\n const onChange = props[onChangeKey];\n if (typeof onChange === 'function') {\n onChange(value);\n }\n },\n ])\n ),\n [props]\n );\n\n // update the React state when a prop changes from outside of React lifecycle\n // limit keys to update to only tracked values ; ignore untracked props and handler functions\n useEffect(() => {\n const toUpdate = Object.fromEntries(\n // eslint-disable-next-line react/destructuring-assignment\n keysToControl.map(([key]) => [key, props[key]])\n ) as KeyRecord<T>;\n\n setControlledValues(toUpdate);\n }, [props]);\n\n return <WrappedComponent {...props} {...handlers} {...controlledValues} />;\n }\n\n WrapperComponent.displayName = `withControlledInput(${displayName})`;\n\n return WrapperComponent;\n}\n","import { ComponentType } from 'react';\n\nimport { UserProvider } from '@/react/hooks/useUser';\n\nimport { withReactQuery } from './withReactQuery';\n\nexport function withCurrentUser<T>(\n WrappedComponent: ComponentType<T & JSX.IntrinsicAttributes>\n): ComponentType<T & JSX.IntrinsicAttributes> {\n // Try to create a nice displayName for React Dev Tools.\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n function WrapperComponent(props: T & JSX.IntrinsicAttributes) {\n return (\n <UserProvider>\n <WrappedComponent {...props} />\n </UserProvider>\n );\n }\n\n WrapperComponent.displayName = `withCurrentUser(${displayName})`;\n\n // User provider makes a call to the API to get the current user.\n // We need to wrap it with React Query to make that call.\n return withReactQuery(WrapperComponent);\n}\n","import { IFormController, IComponentOptions, IModule } from 'angular';\nimport { FormikErrors } from 'formik';\nimport { SchemaOf } from 'yup';\nimport _ from 'lodash';\nimport { ComponentType } from 'react';\n\nimport { PropNames, r2a } from '@/react-tools/react2angular';\n\nimport { validateForm } from '@@/form-components/validate-form';\nimport { ArrayError } from '@@/form-components/InputList/InputList';\n\ninterface FormFieldProps<TValue> {\n onChange(values: TValue): void;\n values: TValue;\n errors?: FormikErrors<TValue> | ArrayError<TValue>;\n}\n\ntype WithFormFieldProps<TProps, TValue> = TProps & FormFieldProps<TValue>;\n\n/**\n * This utility function is used for wrapping React components with form validation.\n * When used inside an Angular form, it sets the form to invalid if the component values are invalid.\n * This function registers two AngularJS components:\n * 1. The React component with r2a wrapping:\n * - `onChange` and `values` must be manually passed to the React component from an Angular view.\n * - `errors` will be automatically passed to the React component and updated by the validation component.\n * 2. An AngularJS component that handles form validation, based on a yup validation schema:\n * - `validationData` can optionally be passed to the React component from an Angular view, which can be used in validation.\n *\n * @example\n * // Usage in Angular view\n * <component\n * values=\"ctrl.values\"\n * on-change=\"ctrl.handleChange\"\n * validation-data=\"ctrl.validationData\">\n * </component>\n */\nexport function withFormValidation<TProps, TValue, TData = never>(\n ngModule: IModule,\n Component: ComponentType<WithFormFieldProps<TProps, TValue>>,\n componentName: string,\n propNames: PropNames<TProps>[],\n schemaBuilder: (validationData?: TData) => SchemaOf<TValue>\n) {\n const reactComponentName = `react${_.upperFirst(componentName)}`;\n\n ngModule\n .component(\n reactComponentName,\n r2a(Component, ['errors', 'onChange', 'values', ...propNames])\n )\n .component(\n componentName,\n createFormValidationComponent(\n reactComponentName,\n propNames,\n schemaBuilder\n )\n );\n}\n\nexport function createFormValidationComponent<TFormModel, TData = never>(\n componentName: string,\n propNames: Array<string>,\n schemaBuilder: (validationData?: TData) => SchemaOf<TFormModel>\n): IComponentOptions {\n const kebabName = _.kebabCase(componentName);\n const propsWithErrors = [...propNames, 'errors', 'values'];\n\n return {\n template: `<ng-form name=\"$ctrl.form\">\n <${kebabName} ${propsWithErrors\n .filter((p) => p !== 'onChange')\n .map((p) => `${_.kebabCase(p)}=\"$ctrl.${p}\"`)\n .join(' ')}\n on-change=\"($ctrl.handleChange)\"\n ></${kebabName}>\n </ng-form>`,\n controller: createFormValidatorController(schemaBuilder),\n bindings: Object.fromEntries(\n [...propsWithErrors, 'validationData', 'onChange'].map((p) => [p, '<'])\n ),\n };\n}\n\nfunction createFormValidatorController<TFormModel, TData = never>(\n schemaBuilder: (validationData?: TData) => SchemaOf<TFormModel>\n) {\n return class FormValidatorController {\n errors?: FormikErrors<TFormModel> = {};\n\n $async: <T>(fn: () => Promise<T>) => Promise<T>;\n\n form?: IFormController;\n\n values?: TFormModel;\n\n validationData?: TData;\n\n onChange?: (value: TFormModel) => void;\n\n /* @ngInject */\n constructor($async: <T>(fn: () => Promise<T>) => Promise<T>) {\n this.$async = $async;\n\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n }\n\n async handleChange(newValues: TFormModel) {\n return this.$async(async () => {\n this.onChange?.(newValues);\n await this.runValidation(newValues);\n });\n }\n\n async runValidation(value: TFormModel) {\n return this.$async(async () => {\n this.form?.$setValidity('form', true, this.form);\n\n this.errors = await validateForm<TFormModel>(\n () => schemaBuilder(this.validationData),\n value\n );\n\n if (this.errors && Object.keys(this.errors).length > 0) {\n this.form?.$setValidity('form', false, this.form);\n }\n });\n }\n\n async $onChanges(changes: { values?: { currentValue: TFormModel } }) {\n if (changes.values) {\n await this.runValidation(changes.values.currentValue);\n }\n }\n };\n}\n","import { ComponentType } from 'react';\nimport { QueryClientProvider } from 'react-query';\n\nimport { queryClient as defaultQueryClient } from './react-query';\n\nexport function withReactQuery<T>(\n WrappedComponent: ComponentType<T & JSX.IntrinsicAttributes>,\n queryClient = defaultQueryClient\n): ComponentType<T & JSX.IntrinsicAttributes> {\n // Try to create a nice displayName for React Dev Tools.\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n function WrapperComponent(props: T & JSX.IntrinsicAttributes) {\n return (\n <QueryClientProvider client={queryClient}>\n <WrappedComponent {...props} />\n </QueryClientProvider>\n );\n }\n\n WrapperComponent.displayName = `withReactQuery(${displayName})`;\n\n return WrapperComponent;\n}\n","import { ComponentType } from 'react';\nimport { UIRouterContextComponent } from '@uirouter/react-hybrid';\n\nexport function withUIRouter<T>(\n WrappedComponent: ComponentType<T>\n): ComponentType<T> {\n // Try to create a nice displayName for React Dev Tools.\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n function WrapperComponent(props: T & JSX.IntrinsicAttributes) {\n return (\n <UIRouterContextComponent>\n <WrappedComponent {...props} />\n </UIRouterContextComponent>\n );\n }\n\n WrapperComponent.displayName = `withUIRouter(${displayName})`;\n\n return WrapperComponent;\n}\n","/**\n * Compares two semver strings.\n *\n * returns:\n * - `-1` if `a < b`\n * - `0` if `a == b`\n * - `1` if `a > b`\n */\nexport function semverCompare(a: string, b: string) {\n if (a.startsWith(`${b}-`)) {\n return -1;\n }\n\n if (b.startsWith(`${a}-`)) {\n return 1;\n }\n\n return a.localeCompare(b, undefined, {\n numeric: true,\n sensitivity: 'case',\n caseFirst: 'upper',\n });\n}\n\nexport function isVersionSmaller(a: string, b: string) {\n return semverCompare(a, b) < 0;\n}\n","import { openSwitchPrompt } from '@@/modals/SwitchPrompt';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport async function confirmStackUpdate(\n message: string,\n defaultValue: boolean\n) {\n const result = await openSwitchPrompt(\n 'Are you sure?',\n 'Re-pull image and redeploy',\n {\n message,\n confirmButton: buildConfirmButton('Update'),\n modalType: ModalType.Warn,\n defaultValue,\n }\n );\n\n return result ? { pullImage: result.value } : undefined;\n}\n","import clsx from 'clsx';\nimport { AlertCircle, AlertTriangle, CheckCircle, XCircle } from 'lucide-react';\nimport { PropsWithChildren, ReactNode } from 'react';\n\nimport { Icon } from '@@/Icon';\n\ntype AlertType = 'success' | 'error' | 'info' | 'warn';\n\nconst alertSettings: Record<\n AlertType,\n { container: string; header: string; body: string; icon: ReactNode }\n> = {\n success: {\n container:\n 'border-green-4 bg-green-2 th-dark:bg-green-3 th-dark:border-green-5',\n header: 'text-green-8',\n body: 'text-green-7',\n icon: CheckCircle,\n },\n error: {\n container:\n 'border-error-4 bg-error-2 th-dark:bg-error-3 th-dark:border-error-5',\n header: 'text-error-8',\n body: 'text-error-7',\n icon: XCircle,\n },\n info: {\n container:\n 'border-blue-4 bg-blue-2 th-dark:bg-blue-3 th-dark:border-blue-5',\n header: 'text-blue-8',\n body: 'text-blue-7',\n icon: AlertCircle,\n },\n warn: {\n container:\n 'border-warning-4 bg-warning-2 th-dark:bg-warning-3 th-dark:border-warning-5',\n header: 'text-warning-8',\n body: 'text-warning-7',\n icon: AlertTriangle,\n },\n};\n\nexport function Alert({\n color,\n title,\n children,\n}: PropsWithChildren<{ color: AlertType; title?: string }>) {\n const { container, header, body, icon } = alertSettings[color];\n\n return (\n <AlertContainer className={container}>\n {title ? (\n <>\n <AlertHeader className={header}>\n <Icon icon={icon} />\n {title}\n </AlertHeader>\n <AlertBody className={body}>{children}</AlertBody>\n </>\n ) : (\n <AlertBody className={clsx(body, 'flex items-center gap-2')}>\n <Icon icon={icon} /> {children}\n </AlertBody>\n )}\n </AlertContainer>\n );\n}\n\nfunction AlertContainer({\n className,\n children,\n}: PropsWithChildren<{ className?: string }>) {\n return (\n <div className={clsx('rounded-md border-2 border-solid', 'p-3', className)}>\n {children}\n </div>\n );\n}\n\nfunction AlertHeader({\n className,\n children,\n}: PropsWithChildren<{ className?: string }>) {\n return (\n <h4\n className={clsx(\n 'text-base',\n '!m-0 mb-2 flex items-center gap-2',\n className\n )}\n >\n {children}\n </h4>\n );\n}\n\nfunction AlertBody({\n className,\n children,\n}: PropsWithChildren<{ className?: string }>) {\n return <div className={clsx('ml-6 text-sm', className)}>{children}</div>;\n}\n","import { PropsWithChildren } from 'react';\nimport clsx from 'clsx';\nimport { Briefcase } from 'lucide-react';\n\nimport './BEFeatureIndicator.css';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { Icon } from '@@/Icon';\n\nimport { getFeatureDetails } from './utils';\n\nexport interface Props {\n featureId?: FeatureId;\n showIcon?: boolean;\n className?: string;\n}\n\nexport function BEFeatureIndicator({\n featureId,\n children,\n showIcon = true,\n className = '',\n}: PropsWithChildren<Props>) {\n const { url, limitedToBE } = getFeatureDetails(featureId);\n\n if (!limitedToBE) {\n return null;\n }\n return (\n <a\n className={clsx('be-indicator vertical-center text-xs', className)}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children}\n {showIcon && <Icon icon={Briefcase} className=\"be-indicator-icon mr-1\" />}\n <span className=\"be-indicator-label break-words\">Business Feature</span>\n </a>\n );\n}\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nconst BE_URL = 'https://www.portainer.io/business-upsell?from=';\n\nexport function getFeatureDetails(featureId?: FeatureId) {\n if (!featureId) {\n return {};\n }\n const url = `${BE_URL}${featureId}`;\n\n const limitedToBE = isLimitedToBE(featureId);\n\n return { url, limitedToBE };\n}\n","import { Briefcase } from 'lucide-react';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { Button } from '@@/buttons';\nimport { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';\n\ninterface Props {\n featureId: FeatureId;\n heading: string;\n message: string;\n buttonText: string;\n className?: string;\n buttonClassName?: string;\n}\n\nexport function BETeaserButton({\n featureId,\n heading,\n message,\n buttonText,\n className,\n buttonClassName,\n}: Props) {\n return (\n <TooltipWithChildren\n className={className}\n heading={heading}\n BEFeatureID={featureId}\n message={message}\n >\n <span>\n <Button\n className={buttonClassName}\n icon={Briefcase}\n type=\"button\"\n color=\"default\"\n size=\"small\"\n onClick={() => {}}\n disabled\n >\n {buttonText}\n </Button>\n </span>\n </TooltipWithChildren>\n );\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\n\ntype BadgeType = 'success' | 'danger' | 'warn' | 'info';\n\nexport interface Props {\n type?: BadgeType;\n className?: string;\n}\n\n// this component is used in tables and lists in portainer. It looks like this:\n// https://www.figma.com/file/g5TUMngrblkXM7NHSyQsD1/New-UI?node-id=76%3A2\nexport function Badge({ type, className, children }: PropsWithChildren<Props>) {\n const baseClasses =\n 'flex w-fit items-center !text-xs font-medium rounded-full px-2 py-0.5';\n const typeClasses = getClasses(type);\n\n return (\n <span className={clsx(baseClasses, typeClasses, className)}>\n {children}\n </span>\n );\n}\n\n// the classes are typed in full to prevent a dev server bug, where tailwind doesn't render the interpolated classes\nfunction getClasses(type: BadgeType | undefined) {\n switch (type) {\n case 'success':\n return clsx(\n `text-success-9 bg-success-2`,\n `th-dark:text-success-3 th-dark:bg-success-10`,\n `th-highcontrast:text-success-3 th-highcontrast:bg-success-10`\n );\n case 'warn':\n return clsx(\n `text-warning-9 bg-warning-2`,\n `th-dark:text-warning-3 th-dark:bg-warning-10`,\n `th-highcontrast:text-warning-3 th-highcontrast:bg-warning-10`\n );\n case 'danger':\n return clsx(\n `text-error-9 bg-error-2`,\n `th-dark:text-error-3 th-dark:bg-error-10`,\n `th-highcontrast:text-error-3 th-highcontrast:bg-error-10`\n );\n case 'info':\n return clsx(\n `text-blue-9 bg-blue-2`,\n `th-dark:text-blue-3 th-dark:bg-blue-10`,\n `th-highcontrast:text-blue-3 th-highcontrast:bg-blue-10`\n );\n default:\n return clsx(\n `text-blue-9 bg-blue-2`,\n `th-dark:text-blue-3 th-dark:bg-blue-10`,\n `th-highcontrast:text-blue-3 th-highcontrast:bg-blue-10`\n );\n }\n}\n","import clsx from 'clsx';\n\nimport { Icon, IconProps } from '@@/Icon';\n\nexport type BadgeSize = 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n\nexport interface Props extends IconProps {\n size?: BadgeSize;\n}\n\nexport function BadgeIcon({ icon, size = '3xl' }: Props) {\n const sizeClasses = iconSizeToClasses(size);\n return (\n <div\n className={clsx(\n sizeClasses,\n `badge-icon\n inline-flex items-center\n justify-center rounded-full\n bg-blue-3\n text-blue-8 th-dark:bg-gray-9 th-dark:text-blue-3\n `\n )}\n >\n <Icon icon={icon} className=\"!flex\" />\n </div>\n );\n}\n\nfunction iconSizeToClasses(size: BadgeSize) {\n switch (size) {\n case 'md':\n return 'h-6 w-6 text-md';\n case 'lg':\n return 'h-8 w-8 text-lg';\n case 'xl':\n return 'h-10 w-10 text-xl';\n case '2xl':\n return 'h-12 w-12 text-2xl';\n case '3xl':\n return 'h-14 w-14 text-3xl';\n default:\n return 'h-14 w-14 text-3xl';\n }\n}\n","import { Edit, FileText, Globe, UploadCloud } from 'lucide-react';\n\nimport GitIcon from '@/assets/ico/git.svg?c';\n\nimport { BoxSelectorOption } from '../types';\n\nexport const editor: BoxSelectorOption<'editor'> = {\n id: 'method_editor',\n icon: Edit,\n iconType: 'badge',\n label: 'Web editor',\n description: 'Use our Web editor',\n value: 'editor',\n};\n\nexport const upload: BoxSelectorOption<'upload'> = {\n id: 'method_upload',\n icon: UploadCloud,\n iconType: 'badge',\n label: 'Upload',\n description: 'Upload from your computer',\n value: 'upload',\n};\n\nexport const git: BoxSelectorOption<'repository'> = {\n id: 'method_repository',\n icon: GitIcon,\n iconType: 'logo',\n label: 'Repository',\n description: 'Use a git repository',\n value: 'repository',\n};\n\nexport const edgeStackTemplate: BoxSelectorOption<'template'> = {\n id: 'method_template',\n icon: FileText,\n iconType: 'badge',\n label: 'Template',\n description: 'Use an Edge stack template',\n value: 'template',\n};\n\nexport const customTemplate: BoxSelectorOption<'template'> = {\n id: 'method_template',\n icon: FileText,\n iconType: 'badge',\n label: 'Custom template',\n description: 'Use a custom template',\n value: 'template',\n};\n\nexport const url: BoxSelectorOption<'url'> = {\n id: 'method_url',\n icon: Globe,\n iconType: 'badge',\n label: 'URL',\n description: 'Specify a URL to a file',\n value: 'url',\n};\n","import Kubernetes from '@/assets/ico/vendor/kubernetes.svg?c';\nimport DockerCompose from '@/assets/ico/vendor/docker-compose.svg?c';\n\nimport { BoxSelectorOption } from '../types';\n\nexport const kubernetes: BoxSelectorOption<'kubernetes'> = {\n id: 'method_kubernetes',\n icon: Kubernetes,\n label: 'Kubernetes',\n description: 'Kubernetes manifest format',\n value: 'kubernetes',\n iconType: 'logo',\n};\n\nexport const compose: BoxSelectorOption<'compose'> = {\n id: 'method_compose',\n icon: DockerCompose,\n label: 'Compose',\n description: 'docker-compose format',\n value: 'compose',\n iconType: 'logo',\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-components-BoxSelector-BoxSelector-module__root\"};","// extracted by mini-css-extract-plugin\nexport default {\"boxSelectorItem\":\"app-react-components-BoxSelector-BoxSelectorItem-module__box-selector-item\",\"header\":\"app-react-components-BoxSelector-BoxSelectorItem-module__header\",\"imageContainer\":\"app-react-components-BoxSelector-BoxSelectorItem-module__image-container\",\"icon\":\"app-react-components-BoxSelector-BoxSelectorItem-module__icon\",\"slim\":\"app-react-components-BoxSelector-BoxSelectorItem-module__slim\",\"content\":\"app-react-components-BoxSelector-BoxSelectorItem-module__content\",\"limited\":\"app-react-components-BoxSelector-BoxSelectorItem-module__limited\",\"business\":\"app-react-components-BoxSelector-BoxSelectorItem-module__business\"};","import { Briefcase } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\nimport { Tooltip } from '@@/Tip/Tooltip';\n\ninterface Props {\n url?: string;\n showTooltip?: boolean;\n}\n\nexport function LimitedToBeBoxSelectorIndicator({\n url,\n showTooltip = true,\n}: Props) {\n return (\n <div className=\"absolute left-0 top-0 w-full\">\n <div className=\"mx-auto flex max-w-fit items-center rounded-b-lg border border-t-0 border-solid border-gray-6 bg-transparent px-3 py-1 text-gray-6\">\n <a\n className=\"inline-flex items-center text-xs text-gray-6\"\n href={url}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Icon icon={Briefcase} className=\"!mr-1\" />\n <span>Business Feature</span>\n </a>\n {showTooltip && (\n <Tooltip\n size=\"sm\"\n message=\"Select this option to preview this business feature.\"\n />\n )}\n </div>\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-components-BoxSelector-BoxOption-module__root\"};","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\nimport type { Icon } from 'lucide-react';\n\nimport { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';\n\nimport styles from './BoxOption.module.css';\nimport { BoxSelectorOption, Value } from './types';\n\ninterface Props<T extends Value> {\n radioName: string;\n option: BoxSelectorOption<T>;\n onSelect?(value: T): void;\n isSelected(value: T): boolean;\n disabled?: boolean;\n tooltip?: string;\n className?: string;\n type?: 'radio' | 'checkbox';\n checkIcon: Icon;\n}\n\nexport function BoxOption<T extends Value>({\n radioName,\n option,\n onSelect = () => {},\n isSelected,\n disabled,\n tooltip,\n className,\n type = 'radio',\n children,\n checkIcon: Check,\n}: PropsWithChildren<Props<T>>) {\n const selected = isSelected(option.value);\n\n const item = (\n <div className={clsx(styles.root, className)}>\n <input\n type={type}\n name={radioName}\n id={option.id}\n checked={selected}\n value={option.value.toString()}\n disabled={disabled}\n onChange={() => onSelect(option.value)}\n />\n\n <label htmlFor={option.id} data-cy={`${radioName}_${option.value}`}>\n {children}\n\n {!disabled && (\n <div\n className={clsx(\n 'absolute top-4 right-4 flex h-4 w-4 items-center justify-center border border-solid font-bold text-white',\n {\n 'border-gray-6 bg-white': !selected,\n 'border-blue-8 bg-blue-8': selected,\n },\n {\n 'rounded-full': type === 'radio',\n 'rounded-sm': type === 'checkbox',\n }\n )}\n >\n {selected && <Check className=\"lucide\" strokeWidth={3} />}\n </div>\n )}\n </label>\n </div>\n );\n\n if (tooltip) {\n return <TooltipWithChildren message={tooltip}>{item}</TooltipWithChildren>;\n }\n\n return item;\n}\n","import { Icon, IconProps } from '@@/Icon';\n\ntype Props = IconProps;\n\nexport function LogoIcon({ icon }: Props) {\n return (\n <div\n className={`\n inline-flex h-14 w-14\n items-center justify-center text-7xl\n`}\n >\n <Icon icon={icon} className=\"!flex\" />\n </div>\n );\n}\n","import clsx from 'clsx';\nimport { Icon as ReactFeatherComponentType, Check } from 'lucide-react';\nimport { Fragment } from 'react';\n\nimport { Icon } from '@/react/components/Icon';\n\nimport { BadgeIcon } from '@@/BadgeIcon';\nimport { getFeatureDetails } from '@@/BEFeatureIndicator/utils';\n\nimport styles from './BoxSelectorItem.module.css';\nimport { BoxSelectorOption, Value } from './types';\nimport { LimitedToBeBoxSelectorIndicator } from './LimitedToBeBoxSelectorIndicator';\nimport { BoxOption } from './BoxOption';\nimport { LogoIcon } from './LogoIcon';\n\ntype Props<T extends Value> = {\n option: BoxSelectorOption<T>;\n radioName: string;\n disabled?: boolean;\n tooltip?: string;\n onSelect(value: T, limitedToBE: boolean): void;\n isSelected(value: T): boolean;\n type?: 'radio' | 'checkbox';\n slim?: boolean;\n checkIcon?: ReactFeatherComponentType;\n};\n\nexport function BoxSelectorItem<T extends Value>({\n radioName,\n option,\n onSelect = () => {},\n disabled,\n tooltip,\n type = 'radio',\n isSelected,\n slim = false,\n checkIcon = Check,\n}: Props<T>) {\n const { limitedToBE = false, url: featureUrl } = getFeatureDetails(\n option.feature\n );\n\n const ContentBox = slim ? 'div' : Fragment;\n\n return (\n <BoxOption\n className={clsx(styles.boxSelectorItem, {\n [styles.business]: limitedToBE,\n [styles.limited]: limitedToBE,\n })}\n radioName={radioName}\n option={option}\n isSelected={isSelected}\n disabled={isDisabled()}\n onSelect={(value) => onSelect(value, limitedToBE)}\n tooltip={tooltip}\n type={type}\n checkIcon={checkIcon}\n >\n {limitedToBE && (\n <LimitedToBeBoxSelectorIndicator\n url={featureUrl}\n // show tooltip only for radio type options because be-only checkbox options can't be selected\n showTooltip={type === 'radio'}\n />\n )}\n <div\n className={clsx('flex min-w-[140px] gap-2', {\n 'opacity-30': limitedToBE,\n 'h-full flex-col justify-start': !slim,\n 'slim items-center': slim,\n })}\n >\n <div className={clsx(styles.imageContainer, 'flex items-start')}>\n {renderIcon()}\n </div>\n <ContentBox>\n <div className={styles.header}>{option.label}</div>\n <p className=\"mb-0\">{option.description}</p>\n </ContentBox>\n </div>\n </BoxOption>\n );\n\n function isDisabled() {\n return disabled || (limitedToBE && option.disabledWhenLimited);\n }\n\n function renderIcon() {\n if (!option.icon) {\n return null;\n }\n\n if (option.iconType === 'badge') {\n return <BadgeIcon icon={option.icon} />;\n }\n\n if (option.iconType === 'raw') {\n return (\n <Icon\n icon={option.icon}\n className={clsx(styles.icon, '!flex items-center')}\n />\n );\n }\n\n return <LogoIcon icon={option.icon} />;\n }\n}\n","import styles from './BoxSelector.module.css';\nimport { BoxSelectorItem } from './BoxSelectorItem';\nimport { BoxSelectorOption, Value } from './types';\n\ninterface IsMultiProps<T extends Value> {\n isMulti: true;\n value: T[];\n onChange(value: T[], limitedToBE: boolean): void;\n}\n\ninterface SingleProps<T extends Value> {\n isMulti?: never;\n value: T;\n onChange(value: T, limitedToBE: boolean): void;\n}\n\ntype Union<T extends Value> = IsMultiProps<T> | SingleProps<T>;\n\nexport type Props<T extends Value> = Union<T> & {\n radioName: string;\n options: ReadonlyArray<BoxSelectorOption<T>> | Array<BoxSelectorOption<T>>;\n slim?: boolean;\n hiddenSpacingCount?: number;\n};\n\nexport function BoxSelector<T extends Value>({\n radioName,\n options,\n slim = false,\n hiddenSpacingCount,\n ...props\n}: Props<T>) {\n return (\n <div className='form-group after:clear-both after:table after:content-[\"\"]'>\n <div className=\"col-sm-12\">\n <div className={styles.root} role=\"radiogroup\">\n {options\n .filter((option) => !option.hide)\n .map((option) => (\n <BoxSelectorItem\n key={option.id}\n radioName={radioName}\n option={option}\n onSelect={handleSelect}\n disabled={option.disabled && option.disabled()}\n tooltip={option.tooltip && option.tooltip()}\n type={props.isMulti ? 'checkbox' : 'radio'}\n isSelected={isSelected}\n slim={slim}\n />\n ))}\n {hiddenSpacingCount &&\n Array.from(Array(hiddenSpacingCount)).map((_, index) => (\n <div key={index} className=\"flex-1\" />\n ))}\n </div>\n </div>\n </div>\n );\n\n function handleSelect(optionValue: T, limitedToBE: boolean) {\n if (props.isMulti) {\n const newValue = isSelected(optionValue)\n ? props.value.filter((v) => v !== optionValue)\n : [...props.value, optionValue];\n props.onChange(newValue, limitedToBE);\n return;\n }\n\n if (isSelected(optionValue)) {\n return;\n }\n\n props.onChange(optionValue, limitedToBE);\n }\n\n function isSelected(optionValue: T) {\n if (props.isMulti) {\n return props.value.includes(optionValue);\n }\n\n return props.value === optionValue;\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"code\":\"app-react-components-Code-Code-module__code\",\"root\":\"app-react-components-Code-Code-module__root\",\"copyButton\":\"app-react-components-Code-Code-module__copy-button\"};","import { Check, Copy } from 'lucide-react';\n\nimport { Button } from '@@/buttons';\nimport { useCopy } from '@@/buttons/CopyButton/useCopy';\nimport { Icon } from '@@/Icon';\n\nimport styles from './Code.module.css';\n\ninterface Props {\n showCopyButton?: boolean;\n children: string;\n}\n\nexport function Code({ children, showCopyButton }: Props) {\n const { handleCopy, copiedSuccessfully } = useCopy(children);\n\n return (\n <div className={styles.root}>\n <code className={styles.code}>{children}</code>\n\n {showCopyButton && (\n <Button color=\"link\" className={styles.copyButton} onClick={handleCopy}>\n <Icon\n icon={copiedSuccessfully ? Check : Copy}\n className=\"!ml-1\"\n mode={copiedSuccessfully ? 'success' : undefined}\n />\n </Button>\n )}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-components-CodeEditor-module__root\"};","import CodeMirror from '@uiw/react-codemirror';\nimport { StreamLanguage, LanguageSupport } from '@codemirror/language';\nimport { yaml } from '@codemirror/legacy-modes/mode/yaml';\nimport { dockerFile } from '@codemirror/legacy-modes/mode/dockerfile';\nimport { shell } from '@codemirror/legacy-modes/mode/shell';\nimport { useMemo } from 'react';\nimport { createTheme } from '@uiw/codemirror-themes';\nimport { tags as highlightTags } from '@lezer/highlight';\n\nimport { CopyButton } from '@@/buttons/CopyButton';\n\nimport styles from './CodeEditor.module.css';\nimport { TextTip } from './Tip/TextTip';\n\ninterface Props {\n id: string;\n placeholder?: string;\n yaml?: boolean;\n dockerFile?: boolean;\n shell?: boolean;\n readonly?: boolean;\n onChange: (value: string) => void;\n value: string;\n height?: string;\n}\n\nconst theme = createTheme({\n theme: 'light',\n settings: {\n background: 'var(--bg-codemirror-color)',\n foreground: 'var(--text-codemirror-color)',\n caret: 'var(--border-codemirror-cursor-color)',\n selection: 'var(--bg-codemirror-selected-color)',\n selectionMatch: 'var(--bg-codemirror-selected-color)',\n gutterBackground: 'var(--bg-codemirror-gutters-color)',\n },\n styles: [\n { tag: highlightTags.atom, color: 'var(--text-cm-default-color)' },\n { tag: highlightTags.meta, color: 'var(--text-cm-meta-color)' },\n {\n tag: [highlightTags.string, highlightTags.special(highlightTags.brace)],\n color: 'var(--text-cm-string-color)',\n },\n { tag: highlightTags.number, color: 'var(--text-cm-number-color)' },\n { tag: highlightTags.keyword, color: 'var(--text-cm-keyword-color)' },\n { tag: highlightTags.comment, color: 'var(--text-cm-comment-color)' },\n {\n tag: highlightTags.variableName,\n color: 'var(--text-cm-variable-name-color)',\n },\n ],\n});\n\nconst yamlLanguage = new LanguageSupport(StreamLanguage.define(yaml));\nconst dockerFileLanguage = new LanguageSupport(\n StreamLanguage.define(dockerFile)\n);\nconst shellLanguage = new LanguageSupport(StreamLanguage.define(shell));\n\nexport function CodeEditor({\n id,\n onChange,\n placeholder,\n readonly,\n value,\n height = '500px',\n yaml: isYaml,\n dockerFile: isDockerFile,\n shell: isShell,\n}: Props) {\n const extensions = useMemo(() => {\n const extensions = [];\n if (isYaml) {\n extensions.push(yamlLanguage);\n }\n if (isDockerFile) {\n extensions.push(dockerFileLanguage);\n }\n if (isShell) {\n extensions.push(shellLanguage);\n }\n return extensions;\n }, [isYaml, isDockerFile, isShell]);\n\n return (\n <>\n <div className=\"mb-2 flex flex-col\">\n <div className=\"flex\">\n <div className=\"flex-1\">\n {!!placeholder && <TextTip color=\"blue\">{placeholder}</TextTip>}\n </div>\n\n <div className=\"ml-auto\">\n <CopyButton\n copyText={value}\n color=\"none\"\n className=\"!text-sm !font-medium text-blue-9 hover:!text-blue-11 th-highcontrast:text-blue-7 hover:th-highcontrast:!text-blue-6 th-dark:text-blue-7 hover:th-dark:!text-blue-6\"\n indicatorPosition=\"left\"\n >\n Copy to clipboard\n </CopyButton>\n </div>\n </div>\n </div>\n <CodeMirror\n className={styles.root}\n theme={theme}\n value={value}\n onChange={onChange}\n readOnly={readonly}\n id={id}\n extensions={extensions}\n height={height}\n basicSetup={{\n highlightSelectionMatches: false,\n autocompletion: false,\n }}\n />\n </>\n );\n}\n","import { PropsWithChildren } from 'react';\n\nexport function DashboardGrid({ children }: PropsWithChildren<unknown>) {\n return <div className=\"grid grid-cols-2 gap-3\">{children}</div>;\n}\n","import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { Loader2 } from 'lucide-react';\n\nimport { Icon, IconProps } from '@/react/components/Icon';\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { Link } from '@@/Link';\n\ninterface Props extends IconProps {\n type: string;\n pluralType?: string; // in case the pluralise function isn't suitable\n isLoading?: boolean;\n isRefetching?: boolean;\n value?: number;\n to?: string;\n params?: object;\n children?: ReactNode;\n dataCy?: string;\n}\n\nexport function DashboardItem({\n icon,\n type,\n pluralType,\n isLoading,\n isRefetching,\n value,\n to,\n params,\n children,\n dataCy,\n}: Props) {\n const Item = (\n <div\n className={clsx(\n 'relative rounded-lg border border-solid p-3',\n 'border-gray-5 bg-gray-2 hover:border-blue-7 hover:bg-blue-2',\n 'th-dark:border-gray-neutral-8 th-dark:bg-gray-iron-10 th-dark:hover:border-blue-8 th-dark:hover:bg-gray-10',\n 'th-highcontrast:border-white th-highcontrast:bg-black th-highcontrast:hover:border-blue-8 th-highcontrast:hover:bg-gray-11'\n )}\n data-cy={dataCy}\n >\n <div\n className={clsx(\n 'text-muted absolute top-2 right-2 flex items-center text-xs transition-opacity',\n isRefetching ? 'opacity-100' : 'opacity-0'\n )}\n >\n Refreshing total\n <Loader2 className=\"h-4 animate-spin-slow\" />\n </div>\n <div\n className={clsx(\n 'text-muted absolute top-2 right-2 flex items-center text-xs transition-opacity',\n isLoading ? 'opacity-100' : 'opacity-0'\n )}\n >\n Loading total\n <Loader2 className=\"h-4 animate-spin-slow\" />\n </div>\n <div className=\"flex items-center\" aria-label={type}>\n <div\n className={clsx(\n 'icon-badge mr-4 !p-2 text-2xl',\n 'bg-blue-3 text-blue-8',\n 'th-dark:bg-blue-3 th-dark:text-blue-8',\n 'th-highcontrast:bg-blue-3 th-highcontrast:text-blue-8'\n )}\n >\n <Icon icon={icon} />\n </div>\n\n <div className=\"flex flex-col justify-around\">\n <div\n className={clsx(\n 'text-2xl font-medium',\n 'text-gray-9',\n 'th-dark:text-white',\n 'th-highcontrast:text-white'\n )}\n aria-label=\"value\"\n >\n {typeof value === 'undefined' ? '-' : value}\n </div>\n <div\n className={clsx(\n 'text-xl',\n 'text-gray-7',\n 'th-dark:text-gray-warm-5',\n 'th-highcontrast:text-gray-warm-5'\n )}\n aria-label=\"resourceType\"\n >\n {pluralize(value || 0, type, pluralType)}\n </div>\n </div>\n\n <div className=\"ml-auto\">{children}</div>\n </div>\n </div>\n );\n\n if (to) {\n return (\n <Link to={to} className=\"!no-underline\" params={params}>\n {Item}\n </Link>\n );\n }\n return Item;\n}\n","import { DetailsTable as MainComponent } from './DetailsTable';\nimport { DetailsRow } from './DetailsRow';\n\ninterface DetailsTableSubcomponents {\n Row: typeof DetailsRow;\n}\n\nconst DetailsTable = MainComponent as typeof MainComponent &\n DetailsTableSubcomponents;\n\nDetailsTable.Row = DetailsRow;\n\nexport { DetailsTable };\n","import clsx from 'clsx';\nimport { Children, PropsWithChildren } from 'react';\n\ntype Props = {\n headers?: string[];\n dataCy?: string;\n className?: string;\n emptyMessage?: string;\n};\n\nexport function DetailsTable({\n headers = [],\n dataCy,\n className,\n emptyMessage,\n children,\n}: PropsWithChildren<Props>) {\n return (\n <table className={clsx('table', className)} data-cy={dataCy}>\n {headers.length > 0 && (\n <thead>\n <tr>\n {headers.map((header) => (\n <th key={header}>{header}</th>\n ))}\n </tr>\n </thead>\n )}\n <tbody>\n {Children.count(children) > 0 ? (\n children\n ) : (\n <tr>\n <td colSpan={headers.length} className=\"text-muted text-center\">\n {emptyMessage}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n );\n}\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\n\ninterface Props {\n children: ReactNode;\n label: string;\n colClassName?: string;\n className?: string;\n columns?: Array<ReactNode>;\n}\n\nexport function DetailsRow({\n label,\n children,\n colClassName,\n className,\n columns,\n}: Props) {\n return (\n <tr className={className}>\n <td className={clsx(colClassName, 'min-w-[150px] !break-normal')}>\n {label}\n </td>\n <td className={colClassName} data-cy={`detailsTable-${label}Value`}>\n {children}\n </td>\n {columns?.map((column, index) => (\n <td key={index} className={colClassName}>\n {column}\n </td>\n ))}\n </tr>\n );\n}\n","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgHeartbeatUp = function SvgHeartbeatUp(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 16 15\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#039855\",\n d: \"M7.919 2.193C6.335.34 3.693-.157 1.707 1.538-.278 3.234-.557 6.07 1.002 8.076c1.177 1.515 4.522 4.557 6.089 5.955.288.257.432.385.6.436.147.044.31.044.456 0 .168-.05.312-.18.6-.436 1.566-1.398 4.912-4.44 6.089-5.955 1.559-2.006 1.314-4.86-.706-6.538C12.111-.14 9.503.34 7.92 2.193Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.038 4.94v4.773m0-4.773 2.136 2.137M8.038 4.94 5.9 7.077\"\n })));\n};\nexport default SvgHeartbeatUp;","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgHeartbeatDown = function SvgHeartbeatDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 16 15\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D92D20\",\n d: \"M7.919 2.193C6.335.34 3.693-.157 1.707 1.538-.278 3.234-.557 6.07 1.002 8.076c1.177 1.515 4.522 4.557 6.089 5.955.288.257.432.385.6.436.147.044.31.044.456 0 .168-.05.312-.18.6-.436 1.566-1.398 4.912-4.44 6.089-5.955 1.559-2.006 1.314-4.86-.706-6.538C12.111-.14 9.503.34 7.92 2.193Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"#fff\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M8.038 9.713V4.94m0 4.773L5.9 7.577m2.137 2.136 2.136-2.136\"\n })));\n};\nexport default SvgHeartbeatDown;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgDataflow1 = function SvgDataflow1(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17 20h-.2c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C12 17.72 12 16.88 12 15.2V8.8c0-1.68 0-2.52.327-3.162a3 3 0 0 1 1.311-1.311C14.28 4 15.12 4 16.8 4h.2m0 16a2 2 0 1 0 4 0 2 2 0 0 0-4 0Zm0-16a2 2 0 1 0 4 0 2 2 0 0 0-4 0ZM7 12h10M7 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm10 0a2 2 0 1 0 4 0 2 2 0 0 0-4 0Z\"\n })));\n};\nexport default SvgDataflow1;","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgLaptopCode = function SvgLaptopCode(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 25 25\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M21.089 16.592v-8.8c0-1.12 0-1.68-.218-2.108a2 2 0 0 0-.874-.874c-.428-.218-.988-.218-2.108-.218h-11.6c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874c-.218.428-.218.988-.218 2.108v8.8m1.666 4h14.667c.62 0 .93 0 1.184-.068a2 2 0 0 0 1.414-1.415c.069-.254.069-.564.069-1.184 0-.31 0-.465-.034-.592a1 1 0 0 0-.708-.707c-.127-.034-.282-.034-.592-.034H3.422c-.31 0-.465 0-.592.034a1 1 0 0 0-.707.707c-.034.127-.034.282-.034.592 0 .62 0 .93.068 1.184a2 2 0 0 0 1.414 1.415c.254.068.564.068 1.184.068Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"m14.089 13.582 2.5-2.5-2.5-2.5m-4 0-2.5 2.5 2.5 2.5\"\n })));\n};\nexport default SvgLaptopCode;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgRestoreWindow = function SvgRestoreWindow(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M10.5 2.003c-.675.009-1.08.048-1.408.215a2 2 0 0 0-.874.874c-.167.328-.206.733-.215 1.408M19.5 2.003c.675.009 1.08.048 1.408.215a2 2 0 0 1 .874.874c.167.328.206.733.215 1.408m0 9c-.009.675-.048 1.08-.215 1.408a2 2 0 0 1-.874.874c-.328.167-.733.206-1.408.215M22 8v2m-8-8h2M5.2 22h7.6c1.12 0 1.68 0 2.108-.218a2 2 0 0 0 .874-.874C16 20.48 16 19.92 16 18.8v-7.6c0-1.12 0-1.68-.218-2.108a2 2 0 0 0-.874-.874C14.48 8 13.92 8 12.8 8H5.2c-1.12 0-1.68 0-2.108.218a2 2 0 0 0-.874.874C2 9.52 2 10.08 2 11.2v7.6c0 1.12 0 1.68.218 2.108a2 2 0 0 0 .874.874C3.52 22 4.08 22 5.2 22Z\"\n })));\n};\nexport default SvgRestoreWindow;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgSort = function SvgSort(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M17 4v16m0 0-4-4m4 4 4-4M7 20V4m0 0L3 8m4-4 4 4\"\n })));\n};\nexport default SvgSort;","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgPlaceholder = function SvgPlaceholder(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 0.3,\n d: \"M23.419 11.65a.43.43 0 0 0-.29-.218l-2.37-.604a.463.463 0 0 0-.58.362l-.532 2.152-2.055-.508-.096-.024a.608.608 0 0 0-.363.048.43.43 0 0 0-.217.29l-.532 2.152-2.152-.532a.463.463 0 0 0-.58.363l-.58 2.127-2.152-.532a.608.608 0 0 0-.363.049.431.431 0 0 0-.218.29l-.048.193-.556 2.273a.463.463 0 0 0 .363.58l9.38 2.345c.12.024.217.048.338.048.605 0 1.16-.41 1.306-1.015l2.37-9.477a.498.498 0 0 0-.073-.363Zm-8.97 4.157 2.104.532c.12.049.29.025.41-.048a.45.45 0 0 0 .218-.363l.412-1.668 1.353 1.79-.677 2.707-4.303-1.088.484-1.862Zm5.73 5.44a.382.382 0 0 1-.46.29l-8.92-2.224.338-1.33 7.398 1.862c.024 0 .073.024.097.024h.024c.024 0 .049 0 .097-.024h.024c.048 0 .073-.024.097-.048a.43.43 0 0 0 .217-.29l.846-3.41a.602.602 0 0 0-.072-.41L18.68 14.14l1.16.29a.463.463 0 0 0 .58-.363l.533-2.152 1.45.363-2.224 8.969ZM10.291 15.71a.485.485 0 0 0 .484-.483v-2.224h2.2a.485.485 0 0 0 .483-.483v-2.2h2.2a.485.485 0 0 0 .484-.483V7.613h1.982a.485.485 0 0 0 .483-.484V2.85c0-.749-.604-1.353-1.354-1.353h-15.4C1.105 1.496.5 2.1.5 2.85v14.07c0 .75.604 1.354 1.354 1.354h5.73a.485.485 0 0 0 .483-.483v-2.055l2.224-.025Zm2.2-3.674h-2.2a.485.485 0 0 0-.483.484v2.224H3.837v-1.475l1.885-1.427 1.644.943a.515.515 0 0 0 .58-.072L11.55 9.23l.943.75v2.055ZM7.1 17.282H1.854a.382.382 0 0 1-.387-.387V2.85c0-.218.17-.387.387-.387h15.4c.217 0 .386.17.386.387v3.82h-1.958a.485.485 0 0 0-.483.483v2.224h-1.934l-1.427-1.136c-.193-.145-.46-.145-.628.024l-3.675 3.506-1.596-.919c-.169-.097-.387-.097-.532.024l-2.345 1.765a.505.505 0 0 0-.193.387v2.224c0 .121.048.242.145.338a.477.477 0 0 0 .338.145H7.1l.001 1.547Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n stroke: \"currentColor\",\n strokeWidth: 0.3,\n d: \"M5.408 8.821a2.182 2.182 0 0 0 2.176-2.176A2.182 2.182 0 0 0 5.408 4.47a2.182 2.182 0 0 0-2.176 2.176c-.024 1.185.967 2.176 2.176 2.176Zm0-3.409c.677 0 1.208.556 1.208 1.209 0 .677-.556 1.209-1.208 1.209a1.212 1.212 0 0 1-1.209-1.21c-.024-.676.532-1.208 1.209-1.208Z\"\n })));\n};\nexport default SvgPlaceholder;","var _style, _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgAws = function SvgAws(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n id: \"aws_svg__Layer_1\",\n x: 0,\n y: 0,\n style: {\n enableBackground: \"new 0 0 304 182\"\n },\n viewBox: \"0 0 304 182\",\n width: \"1em\",\n height: \"1em\"\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".aws_svg__st1{fill-rule:evenodd;clip-rule:evenodd;fill:#f90}\")), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M86.4 66.4c0 3.7.4 6.7 1.1 8.9.8 2.2 1.8 4.6 3.2 7.2.5.8.7 1.6.7 2.3 0 1-.6 2-1.9 3L83.2 92c-.9.6-1.8.9-2.6.9-1 0-2-.5-3-1.4-1.4-1.5-2.6-3.1-3.6-4.7-1-1.7-2-3.6-3.1-5.9-7.8 9.2-17.6 13.8-29.4 13.8-8.4 0-15.1-2.4-20-7.2-4.9-4.8-7.4-11.2-7.4-19.2 0-8.5 3-15.4 9.1-20.6 6.1-5.2 14.2-7.8 24.5-7.8 3.4 0 6.9.3 10.6.8 3.7.5 7.5 1.3 11.5 2.2v-7.3c0-7.6-1.6-12.9-4.7-16-3.2-3.1-8.6-4.6-16.3-4.6-3.5 0-7.1.4-10.8 1.3-3.7.9-7.3 2-10.8 3.4-1.6.7-2.8 1.1-3.5 1.3-.7.2-1.2.3-1.6.3-1.4 0-2.1-1-2.1-3.1v-4.9c0-1.6.2-2.8.7-3.5.5-.7 1.4-1.4 2.8-2.1 3.5-1.8 7.7-3.3 12.6-4.5C41 1.9 46.2 1.3 51.7 1.3c11.9 0 20.6 2.7 26.2 8.1 5.5 5.4 8.3 13.6 8.3 24.6v32.4zM45.8 81.6c3.3 0 6.7-.6 10.3-1.8 3.6-1.2 6.8-3.4 9.5-6.4 1.6-1.9 2.8-4 3.4-6.4.6-2.4 1-5.3 1-8.7v-4.2c-2.9-.7-6-1.3-9.2-1.7-3.2-.4-6.3-.6-9.4-.6-6.7 0-11.6 1.3-14.9 4-3.3 2.7-4.9 6.5-4.9 11.5 0 4.7 1.2 8.2 3.7 10.6 2.4 2.5 5.9 3.7 10.5 3.7zm80.3 10.8c-1.8 0-3-.3-3.8-1-.8-.6-1.5-2-2.1-3.9L96.7 10.2c-.6-2-.9-3.3-.9-4 0-1.6.8-2.5 2.4-2.5h9.8c1.9 0 3.2.3 3.9 1 .8.6 1.4 2 2 3.9l16.8 66.2 15.6-66.2c.5-2 1.1-3.3 1.9-3.9.8-.6 2.2-1 4-1h8c1.9 0 3.2.3 4 1 .8.6 1.5 2 1.9 3.9l15.8 67 17.3-67c.6-2 1.3-3.3 2-3.9.8-.6 2.1-1 3.9-1h9.3c1.6 0 2.5.8 2.5 2.5 0 .5-.1 1-.2 1.6-.1.6-.3 1.4-.7 2.5l-24.1 77.3c-.6 2-1.3 3.3-2.1 3.9-.8.6-2.1 1-3.8 1h-8.6c-1.9 0-3.2-.3-4-1-.8-.7-1.5-2-1.9-4L156 23l-15.4 64.4c-.5 2-1.1 3.3-1.9 4-.8.7-2.2 1-4 1h-8.6zm128.5 2.7c-5.2 0-10.4-.6-15.4-1.8-5-1.2-8.9-2.5-11.5-4-1.6-.9-2.7-1.9-3.1-2.8-.4-.9-.6-1.9-.6-2.8v-5.1c0-2.1.8-3.1 2.3-3.1.6 0 1.2.1 1.8.3.6.2 1.5.6 2.5 1 3.4 1.5 7.1 2.7 11 3.5 4 .8 7.9 1.2 11.9 1.2 6.3 0 11.2-1.1 14.6-3.3 3.4-2.2 5.2-5.4 5.2-9.5 0-2.8-.9-5.1-2.7-7-1.8-1.9-5.2-3.6-10.1-5.2L246 52c-7.3-2.3-12.7-5.7-16-10.2-3.3-4.4-5-9.3-5-14.5 0-4.2.9-7.9 2.7-11.1 1.8-3.2 4.2-6 7.2-8.2 3-2.3 6.4-4 10.4-5.2 4-1.2 8.2-1.7 12.6-1.7 2.2 0 4.5.1 6.7.4 2.3.3 4.4.7 6.5 1.1 2 .5 3.9 1 5.7 1.6 1.8.6 3.2 1.2 4.2 1.8 1.4.8 2.4 1.6 3 2.5.6.8.9 1.9.9 3.3v4.7c0 2.1-.8 3.2-2.3 3.2-.8 0-2.1-.4-3.8-1.2-5.7-2.6-12.1-3.9-19.2-3.9-5.7 0-10.2.9-13.3 2.8-3.1 1.9-4.7 4.8-4.7 8.9 0 2.8 1 5.2 3 7.1 2 1.9 5.7 3.8 11 5.5l14.2 4.5c7.2 2.3 12.4 5.5 15.5 9.6 3.1 4.1 4.6 8.8 4.6 14 0 4.3-.9 8.2-2.6 11.6-1.8 3.4-4.2 6.4-7.3 8.8-3.1 2.5-6.8 4.3-11.1 5.6-4.5 1.4-9.2 2.1-14.3 2.1z\",\n style: {\n fill: \"#252f3e\"\n }\n }), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M273.5 143.7c-32.9 24.3-80.7 37.2-121.8 37.2-57.6 0-109.5-21.3-148.7-56.7-3.1-2.8-.3-6.6 3.4-4.4 42.4 24.6 94.7 39.5 148.8 39.5 36.5 0 76.6-7.6 113.5-23.2 5.5-2.5 10.2 3.6 4.8 7.6z\",\n className: \"aws_svg__st1\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M287.2 128.1c-4.2-5.4-27.8-2.6-38.5-1.3-3.2.4-3.7-2.4-.8-4.5 18.8-13.2 49.7-9.4 53.3-5 3.6 4.5-1 35.4-18.6 50.2-2.7 2.3-5.3 1.1-4.1-1.9 4-9.9 12.9-32.2 8.7-37.5z\",\n className: \"aws_svg__st1\"\n })));\n};\nexport default SvgAws;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgCivo = function SvgCivo(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 711.364 238.193\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#239DFF\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M273.539.081h-29.424c-5.424 0-8.981 4.179-8.981 9.423v219.13c0 5.245 3.557 9.447 8.981 9.447h29.424c5.424 0 9.595-4.202 9.595-9.447V9.504c0-5.244-4.171-9.423-9.595-9.423M181.662 173.122c-2.671-5.859-10.327-7.473-15.027-3.072-12.446 11.658-29.136 18.819-47.538 18.819-48.218 0-85.012-48.909-63.477-99.824 6.365-15.049 18.442-27.092 33.495-33.447 29.421-12.421 58.048-5.345 77.037 12.095 4.749 4.361 12.365 2.814 15.04-3.054l12.744-27.956c2.039-4.474.631-9.721-3.292-12.685C160.789 1.437 120.037-7.42 77.562 7.052 43.472 18.666 16.89 46.154 6.065 80.503c-25.894 82.163 34.749 157.69 113.032 157.69 27.245 0 52.286-9.214 72.327-24.633 3.786-2.913 4.973-8.113 2.991-12.462l-12.753-27.976zM705.299 80.503c-10.825-34.349-37.407-61.837-71.497-73.451-24.128-8.221-47.698-8.906-69.033-3.835-35.585 7.946-61.358 24.817-84.01 73.453l-45.455 98.598L358.15 5.667a9.498 9.498 0 0 0-8.626-5.56L315.818.054c-6.917-.011-11.524 7.142-8.653 13.436l100.064 218.79c1.542 3.383 4.917 5.67 8.634 5.671l1.637.131h37.841c.761 0 1.522-.157 2.244-.403 2.604-.887 4.798-2.745 5.938-5.311 0 0 50.098-114.027 50.681-115.402 15.244-35.949 24.495-50.922 48.691-61.206 18.307-7.78 39.955-8.727 60.885.753 14.57 6.599 26.028 18.657 32.122 33.443a80.065 80.065 0 0 1 6.122 28.142c.545 38.992-30.891 70.773-69.758 70.773-18.402 0-35.092-7.162-47.538-18.819-4.7-4.402-12.356-2.788-15.027 3.071L516.947 201.1c-1.981 4.348-.795 9.547 2.993 12.461 20.04 15.418 45.081 24.633 72.326 24.633 78.284-.001 138.926-75.528 113.033-157.691\"\n }))));\n};\nexport default SvgCivo;","var _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgDigitalocean = function SvgDigitalocean(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 -3.954 53.927 53.954\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#0080ff\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.915 50v-9.661c10.226 0 18.164-10.141 14.237-20.904a14.438 14.438 0 0 0-8.615-8.616C19.774 6.921 9.633 14.83 9.633 25.056H0C0 8.758 15.763-3.954 32.853 1.384 40.311 3.73 46.271 9.661 48.588 17.12 53.927 34.237 41.243 50 24.915 50\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.339 40.367h9.604v-9.604H15.34zm-7.401 7.401h7.4v-7.4h-7.4zm-6.187-7.4h6.187V34.18H1.751z\"\n }))));\n};\nexport default SvgDigitalocean;","var _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgGooglecloud = function SvgGooglecloud(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n preserveAspectRatio: \"xMidYMid\",\n viewBox: \"0 0 256 206\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#EA4335\",\n d: \"m170.252 56.819 22.253-22.253 1.483-9.37C153.437-11.677 88.976-7.496 52.42 33.92 42.267 45.423 34.734 59.764 30.717 74.573l7.97-1.123 44.505-7.34 3.436-3.513c19.797-21.742 53.27-24.667 76.128-6.168l7.496.39Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#4285F4\",\n d: \"M224.205 73.918a100.249 100.249 0 0 0-30.217-48.722l-31.232 31.232a55.515 55.515 0 0 1 20.379 44.037v5.544c15.35 0 27.797 12.445 27.797 27.796 0 15.352-12.446 27.485-27.797 27.485h-55.671l-5.466 5.934v33.34l5.466 5.231h55.67c39.93.311 72.553-31.494 72.864-71.424a72.303 72.303 0 0 0-31.793-60.453\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#34A853\",\n d: \"M71.87 205.796h55.593V161.29H71.87a27.275 27.275 0 0 1-11.399-2.498l-7.887 2.42-22.409 22.253-1.952 7.574c12.567 9.489 27.9 14.825 43.647 14.757\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FBBC05\",\n d: \"M71.87 61.425C31.94 61.664-.237 94.228.001 134.159a72.301 72.301 0 0 0 28.222 56.88l32.248-32.246c-13.99-6.322-20.208-22.786-13.887-36.776 6.32-13.99 22.786-20.208 36.775-13.888a27.796 27.796 0 0 1 13.887 13.888l32.248-32.248A72.224 72.224 0 0 0 71.87 61.425\"\n })));\n};\nexport default SvgGooglecloud;","var _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgLinode = function SvgLinode(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 32 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#123d10\",\n d: \"m9.545 14.42-1.2-8.258L3.37 3.074l1.612 7.8 4.562 3.556zm1.38 9.443-.852-5.823-4.356-3.63 1.17 5.648 4.038 3.804zm-3.383-.64.862 4.165L12 31.205 11.386 27l-3.842-3.78zm11.644-1.806-1.837-1.402.014.33a.19.19 0 0 1-.084.166l-1.386.934 1.507 1.23c.02.02.03.027.035.036l.022.042c.008.027.01.037.01.048l.064 1.45 1.7 1.423-.036-4.26zm6.3-4.507-.36 4.153-1.2-.828.13-2.118c0-.024-.002-.033-.003-.04-.006-.032-.012-.046-.02-.06s-.02-.028-.032-.04a.23.23 0 0 0-.032-.028l-2.56-1.69.037-1.856 4.03 2.51\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#33b652\",\n d: \"m16.59 11.116-.335-7.84-7.53 2.894 1.23 8.4 6.635-3.453zm.4 9.135-.246-5.78-6.27 3.57.88 6.01 5.638-3.798zm.127 2.93-5.333 3.816.648 4.422 4.872-3.88-.186-4.357zm2.465-1.762.036 4.275 3.8-3.032.253-4.17-4.1 2.926zm9.48-6.782-.534 3.955-2.998 2.4.352-4.068 3.18-2.276\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#231f20\",\n d: \"m17.472 22.812-.008-.042a.21.21 0 0 0-.019-.044c-.015-.024-.023-.032-.03-.04l-1.52-1.24 1.386-.934a.19.19 0 0 0 .084-.166l-.014-.33 1.837 1.402.036 4.26-1.7-1.423-.062-1.44zm-7.398-4.772.852 5.823-4.038-3.804-1.17-5.648 4.356 3.63zm6.904 2.212L11.34 24.05l-.88-6.01 6.27-3.57.246 5.78zm-.725-16.975.335 7.84-6.635 3.453-1.23-8.4 7.53-2.894zM8.335 6.16l1.2 8.258-4.562-3.556-1.612-7.8L8.335 6.16zm.07 21.225-.862-4.165L11.386 27l.615 4.203-3.596-3.817zm8.885.152-4.872 3.88-.648-4.422 5.333-3.816.186 4.357zm6.116-4.876-3.8 3.032-.036-4.275 4.1-2.926-.253 4.17zm.53-2.428.13-2.118c0-.024-.002-.033-.003-.04-.006-.032-.012-.046-.02-.06s-.02-.028-.032-.04a.23.23 0 0 0-.032-.028l-2.56-1.69.037-1.856 4.03 2.51-.36 4.153-1.2-.828zm1.58.747.352-4.068 3.18-2.276-.534 3.955-2.998 2.4zm3.97-6.77-.006-.03a.176.176 0 0 0-.01-.03.23.23 0 0 0-.027-.045c-.02-.023-.03-.03-.04-.038l-4.368-2.42a.182.182 0 0 0-.192.008l-3.674 2.246c-.006 0-.01.01-.016.013s-.013.01-.02.015l-.016.02c-.005.008-.01.01-.014.018s-.008.017-.01.026-.006.013-.008.02-.003.02-.004.03l-.042 1.97-1.494-.987a.186.186 0 0 0-.205 0l-2.15 1.314-.093-2.186-.007-.042a.118.118 0 0 0-.007-.02.19.19 0 0 0-.011-.024c-.004-.008-.008-.013-.013-.02l-.015-.02c-.005-.007-.012-.01-.02-.016l-2.25-1.514 2.094-1.1a.192.192 0 0 0 .103-.178l-.352-8.228a.313.313 0 0 0-.005-.03c-.006-.03-.013-.045-.022-.06s-.022-.03-.032-.04c-.017-.017-.022-.02-.028-.024-.017-.008-.02-.008-.022-.015L10.873.115a.19.19 0 0 0-.14-.011L3.036 2.502l-.05.028-.04.037-.014.023c-.004.008-.01.015-.013.024l-.01.03c-.006.03-.005.04-.005.05l.001.027 1.718 8.302c.01.044.034.084.07.112l2.33 1.817-1.685.802c-.02.008-.022.015-.026.016l-.027.023c-.022.024-.028.036-.034.047a.14.14 0 0 0-.02.062.24.24 0 0 0 .002.055l1.292 6.25a.19.19 0 0 0 .056.1l1.622 1.528-1.075.658c-.014.008-.026.02-.038.03a.282.282 0 0 0-.032.045.22.22 0 0 0-.021.065.171.171 0 0 0 .003.055l1 4.842a.195.195 0 0 0 .048.092l4.048 4.298c.006.008.013.01.02.017.02.017.033.024.047.03.027.008.05.013.072.013s.038 0 .056-.01.022-.008.027-.015c.008 0 .014-.01.02-.014l5.223-4.157a.195.195 0 0 0 .072-.157l-.122-2.85 1.74 1.464c.02.015.03.023.04.028s.02.008.025.015c.02.008.038.01.057.01s.037-.008.056-.01c.017-.008.022-.008.026-.015.01-.008.017-.01.026-.017l4.186-3.337a.192.192 0 0 0 .072-.138l.127-2.09 1.27.884c.012.008.015.015.02.015.007.008.015.008.023.01.033.015.05.015.067.015s.038 0 .056-.01.02-.008.026-.015c.01-.008.02-.012.03-.018l3.415-2.722a.183.183 0 0 0 .07-.124l.604-4.47.001-.037\"\n })));\n};\nexport default SvgLinode;","// general icons\nimport heartbeatup from '@/assets/ico/heartbeat-up.svg?c';\nimport heartbeatdown from '@/assets/ico/heartbeat-down.svg?c';\nimport dataflow from '@/assets/ico/dataflow-1.svg?c';\nimport git from '@/assets/ico/git.svg?c';\nimport kube from '@/assets/ico/kube.svg?c';\nimport laptopcode from '@/assets/ico/laptop-code.svg?c';\nimport ldap from '@/assets/ico/ldap.svg?c';\nimport linux from '@/assets/ico/linux.svg?c';\nimport memory from '@/assets/ico/memory.svg?c';\nimport restorewindow from '@/assets/ico/restore-window.svg?c';\nimport route from '@/assets/ico/route.svg?c';\nimport sort from '@/assets/ico/sort.svg?c';\nimport subscription from '@/assets/ico/subscription.svg?c';\nimport Placeholder from '@/assets/ico/placeholder.svg?c'; // Placeholder is used when an icon name cant be matched\n// vendor icons\nimport aws from '@/assets/ico/vendor/aws.svg?c';\nimport azure from '@/assets/ico/vendor/azure.svg?c';\nimport civo from '@/assets/ico/vendor/civo.svg?c';\nimport digitalocean from '@/assets/ico/vendor/digitalocean.svg?c';\nimport docker from '@/assets/ico/vendor/docker.svg?c';\nimport dockericon from '@/assets/ico/vendor/docker-icon.svg?c';\nimport dockercompose from '@/assets/ico/vendor/docker-compose.svg?c';\nimport ecr from '@/assets/ico/vendor/ecr.svg?c';\nimport github from '@/assets/ico/vendor/github.svg?c';\nimport gitlab from '@/assets/ico/vendor/gitlab.svg?c';\nimport google from '@/assets/ico/vendor/google.svg?c';\nimport googlecloud from '@/assets/ico/vendor/googlecloud.svg?c';\nimport kubernetes from '@/assets/ico/vendor/kubernetes.svg?c';\nimport helm from '@/assets/ico/vendor/helm.svg?c';\nimport linode from '@/assets/ico/vendor/linode.svg?c';\nimport microsoft from '@/assets/ico/vendor/microsoft.svg?c';\nimport microsofticon from '@/assets/ico/vendor/microsoft-icon.svg?c';\nimport nomad from '@/assets/ico/vendor/nomad.svg?c';\nimport nomadicon from '@/assets/ico/vendor/nomad-icon.svg?c';\nimport openldap from '@/assets/ico/vendor/openldap.svg?c';\nimport proget from '@/assets/ico/vendor/proget.svg?c';\nimport quay from '@/assets/ico/vendor/quay.svg?c';\n\nconst placeholder = Placeholder;\n\nexport const SvgIcons = {\n heartbeatup,\n heartbeatdown,\n dataflow,\n dockericon,\n git,\n laptopcode,\n ldap,\n linux,\n memory,\n placeholder,\n restorewindow,\n route,\n sort,\n subscription,\n aws,\n azure,\n civo,\n digitalocean,\n docker,\n dockercompose,\n ecr,\n github,\n gitlab,\n google,\n googlecloud,\n kubernetes,\n helm,\n linode,\n microsoft,\n microsofticon,\n nomad,\n nomadicon,\n openldap,\n proget,\n quay,\n kube,\n};\n\ninterface SvgProps {\n icon: keyof typeof SvgIcons;\n className?: string;\n}\n\nfunction Svg({ icon, className }: SvgProps) {\n const SvgIcon = SvgIcons[icon];\n\n if (!SvgIcon) {\n return (\n <span className={className} aria-hidden=\"true\">\n <Placeholder />\n </span>\n );\n }\n\n return (\n <span className={className} aria-hidden=\"true\">\n <SvgIcon />\n </span>\n );\n}\n\nexport default Svg;\n","import clsx from 'clsx';\nimport { ComponentType, ReactNode } from 'react';\nimport * as lucideIcons from 'lucide-react';\nimport { isValidElementType } from 'react-is';\n\nimport Svg, { SvgIcons } from './Svg';\n\nexport interface IconProps {\n icon: ReactNode | ComponentType<unknown>;\n}\n\nexport type IconMode =\n | 'alt'\n | 'primary'\n | 'primary-alt'\n | 'secondary'\n | 'secondary-alt'\n | 'warning'\n | 'warning-alt'\n | 'danger'\n | 'danger-alt'\n | 'success'\n | 'success-alt';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface Props {\n icon: ReactNode | ComponentType<{ size?: string | number }>;\n className?: string;\n size?: IconSize;\n mode?: IconMode;\n spin?: boolean;\n}\n\nexport function Icon({ icon, className, mode, size, spin }: Props) {\n const classes = clsx(className, 'icon inline-flex', {\n [`icon-${mode}`]: mode,\n [`icon-${size}`]: size,\n 'animate-spin-slow': spin,\n });\n\n if (typeof icon !== 'string') {\n const Icon = isValidElementType(icon) ? icon : null;\n\n if (Icon) {\n return <Icon className={classes} aria-hidden=\"true\" role=\"img\" />;\n }\n\n return (\n <span className={classes} aria-hidden=\"true\" role=\"img\">\n {icon}\n </span>\n );\n }\n\n if (icon.indexOf('svg-') === 0) {\n const svgIcon = icon.replace('svg-', '');\n return (\n <Svg\n icon={svgIcon as keyof typeof SvgIcons}\n className={classes}\n aria-hidden=\"true\"\n />\n );\n }\n\n const iconName = icon\n .split('-')\n .map((s) => s.slice(0, 1).toUpperCase() + s.slice(1))\n .join('') as keyof typeof lucideIcons;\n const IconComponent = lucideIcons[iconName] as React.FC<\n React.SVGProps<SVGSVGElement>\n >;\n if (!IconComponent) {\n // console error so that the error is logged but no functionality is broken\n // eslint-disable-next-line no-console\n console.error(`Icon not found: '${icon}'`);\n return null;\n }\n\n return <IconComponent className={classes} aria-hidden=\"true\" />;\n}\n","import { PropsWithChildren } from 'react';\nimport { X } from 'lucide-react';\n\nimport { Widget, WidgetBody } from './Widget';\nimport { Button } from './buttons';\n\ninterface Props {\n title?: string;\n onDismiss?(): void;\n bodyClassName?: string;\n wrapperStyle?: Record<string, string>;\n}\n\nexport function InformationPanel({\n title,\n onDismiss,\n wrapperStyle,\n bodyClassName,\n children,\n}: PropsWithChildren<Props>) {\n return (\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Widget>\n <WidgetBody className={bodyClassName}>\n <div style={wrapperStyle}>\n {title && (\n <div className=\"form-section-title\">\n <span>{title}</span>\n {!!onDismiss && (\n <span className=\"small\" style={{ float: 'right' }}>\n <Button color=\"link\" icon={X} onClick={() => onDismiss()}>\n dismiss\n </Button>\n </span>\n )}\n </div>\n )}\n <div>{children}</div>\n </div>\n </WidgetBody>\n </Widget>\n </div>\n </div>\n );\n}\n","import { createStore } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\nimport { keyBuilder } from '@/react/hooks/useLocalStorage';\n\ninterface InsightsStore {\n insightIDsClosed: string[];\n addInsightIDClosed: (insightIDClosed: string) => void;\n isClosed: (insightID?: string) => boolean;\n}\n\nexport const insightStore = createStore<InsightsStore>()(\n persist(\n (set, get) => ({\n insightIDsClosed: [],\n addInsightIDClosed: (insightIDClosed: string) => {\n set((state) => {\n const currentIDsClosed = state.insightIDsClosed || [];\n return { insightIDsClosed: [...currentIDsClosed, insightIDClosed] };\n });\n },\n isClosed: (insightID?: string) => {\n if (!insightID) {\n return false;\n }\n const currentIDsClosed = get().insightIDsClosed || [];\n return currentIDsClosed.includes(insightID);\n },\n }),\n {\n name: keyBuilder('insightIDsClosed'),\n getStorage: () => localStorage,\n }\n )\n);\n","import clsx from 'clsx';\nimport { Lightbulb, X } from 'lucide-react';\nimport { ReactNode } from 'react';\nimport { useStore } from 'zustand';\n\nimport { Button } from '@@/buttons';\n\nimport { insightStore } from './insights-store';\n\nexport type Props = {\n header?: string;\n content?: ReactNode;\n insightCloseId?: string; // set if you want to be able to close the box and not show it again\n type?: 'default' | 'slim';\n className?: string;\n};\n\nexport function InsightsBox({\n header,\n content,\n insightCloseId,\n type = 'default',\n className,\n}: Props) {\n // allow to close the box and not show it again in local storage with zustand\n const { addInsightIDClosed, isClosed } = useStore(insightStore);\n const isInsightClosed = isClosed(insightCloseId);\n\n if (isInsightClosed) {\n return null;\n }\n\n return (\n <div\n className={clsx(\n 'relative flex w-full gap-1 rounded-lg bg-gray-modern-3 p-4 text-sm th-highcontrast:bg-legacy-grey-3 th-dark:bg-legacy-grey-3',\n type === 'slim' && 'p-2',\n className\n )}\n >\n <div className=\"mt-0.5 shrink-0\">\n <Lightbulb className=\"h-4 text-warning-7 th-highcontrast:text-warning-6 th-dark:text-warning-6\" />\n </div>\n <div>\n {header && (\n <p\n className={clsx(\n // text-[0.9em] matches .form-horizontal .control-label font-size used in many labels in portainer\n 'align-middle text-[0.9em] font-medium',\n insightCloseId && 'pr-10',\n content ? 'mb-2' : 'mb-0'\n )}\n >\n {header}\n </p>\n )}\n {content && (\n <div className={clsx('small', !header && insightCloseId && 'pr-6')}>\n {content}\n </div>\n )}\n </div>\n {insightCloseId && (\n <Button\n icon={X}\n className={clsx(\n 'absolute top-3 right-2 flex !text-gray-7 hover:!text-gray-8 th-highcontrast:!text-gray-6 th-highcontrast:hover:!text-gray-5 th-dark:!text-gray-6 th-dark:hover:!text-gray-5',\n type === 'slim' && insightCloseId && 'top-1'\n )}\n color=\"link\"\n size=\"medium\"\n onClick={() => addInsightIDClosed(insightCloseId)}\n />\n )}\n </div>\n );\n}\n","import { PropsWithChildren, AnchorHTMLAttributes } from 'react';\nimport { UISref, UISrefProps } from '@uirouter/react';\n\ninterface Props {\n title?: string;\n target?: AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n rel?: AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n}\n\nexport function Link({\n title = '',\n className,\n children,\n ...props\n}: PropsWithChildren<Props> & UISrefProps) {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <UISref className={className} {...props}>\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a title={title} target={props.target} rel={props.rel}>\n {children}\n </a>\n </UISref>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"parent\":\"app-react-components-NavTabs-NavTabs-module__parent\"};","import clsx from 'clsx';\nimport { ReactNode } from 'react';\n\nimport styles from './NavTabs.module.css';\n\nexport interface Option<T extends string | number = string> {\n label: ReactNode;\n children?: ReactNode;\n id: T;\n}\n\ninterface Props<T extends string | number> {\n options: Option<T>[];\n selectedId?: T;\n onSelect?(id: T): void;\n disabled?: boolean;\n}\n\nexport function NavTabs<T extends string | number = string>({\n options,\n selectedId,\n onSelect = () => {},\n disabled,\n}: Props<T>) {\n const selected = options.find((option) => option.id === selectedId);\n\n return (\n <div className=\"nav-container\">\n <ul className=\"nav nav-tabs\">\n {options.map((option) => (\n <li\n className={clsx({\n active: option.id === selectedId,\n [styles.parent]: !option.children,\n disabled,\n })}\n key={option.id}\n >\n {/* rule disabled because `nav-tabs` requires an anchor */}\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\n <a\n onClick={() => handleSelect(option)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n handleSelect(option);\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n {option.label}\n </a>\n </li>\n ))}\n </ul>\n {selected && selected.children && (\n <div className=\"tab-content mt-3\">{selected.children}</div>\n )}\n </div>\n );\n\n function handleSelect(option: Option<T>) {\n if (disabled) {\n return;\n }\n\n if (option.children) {\n onSelect(option.id);\n }\n }\n}\n","import { Fragment } from 'react';\n\nimport { Link } from '@@/Link';\n\nexport interface Crumb {\n label: string;\n link?: string;\n linkParams?: Record<string, unknown>;\n}\ninterface Props {\n breadcrumbs: (Crumb | string)[] | string;\n}\n\nexport function Breadcrumbs({ breadcrumbs }: Props) {\n const breadcrumbsArray = Array.isArray(breadcrumbs)\n ? breadcrumbs\n : [breadcrumbs];\n\n return (\n <div className=\"space-x-2 text-xs font-medium text-gray-7 th-highcontrast:text-white th-dark:text-gray-5\">\n {breadcrumbsArray.map((crumb, index) => (\n <Fragment key={index}>\n <span>{renderCrumb(crumb)}</span>\n {index !== breadcrumbsArray.length - 1 && <span>></span>}\n </Fragment>\n ))}\n </div>\n );\n}\n\nfunction renderCrumb(crumb: Crumb | string) {\n if (!crumb) {\n return '';\n }\n\n if (typeof crumb === 'string') {\n return crumb;\n }\n\n if (crumb.link) {\n return (\n <Link\n to={crumb.link}\n params={crumb.linkParams}\n className=\"text-blue-9 hover:text-blue-11 hover:underline th-highcontrast:text-blue-5 th-dark:text-blue-7 th-dark:hover:text-blue-9\"\n >\n {crumb.label}\n </Link>\n );\n }\n\n return crumb.label;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"app-react-components-PageHeader-HeaderContainer-module__header\",\"meta\":\"app-react-components-PageHeader-HeaderContainer-module__meta\",\"login\":\"app-react-components-PageHeader-HeaderContainer-module__login\",\"user\":\"app-react-components-PageHeader-HeaderContainer-module__user\",\"item\":\"app-react-components-PageHeader-HeaderContainer-module__item\",\"dropdownMenu\":\"app-react-components-PageHeader-HeaderContainer-module__dropdown-menu\",\"dropdownHeader\":\"app-react-components-PageHeader-HeaderContainer-module__dropdown-header\",\"link\":\"app-react-components-PageHeader-HeaderContainer-module__link\",\"loadingbarPlaceholder\":\"app-react-components-PageHeader-HeaderContainer-module__loadingbar-placeholder\",\"loadingBar\":\"app-react-components-PageHeader-HeaderContainer-module__loading-bar\",\"bar\":\"app-react-components-PageHeader-HeaderContainer-module__bar\"};","import { PropsWithChildren, createContext, useContext } from 'react';\nimport clsx from 'clsx';\n\nimport styles from './HeaderContainer.module.css';\n\nconst Context = createContext<null | boolean>(null);\nContext.displayName = 'PageHeaderContext';\n\nexport function useHeaderContext() {\n const context = useContext(Context);\n\n if (context == null) {\n throw new Error('Should be nested inside a HeaderContainer component');\n }\n}\ninterface Props {\n id?: string;\n}\n\nexport function HeaderContainer({ id, children }: PropsWithChildren<Props>) {\n return (\n <Context.Provider value>\n <div id={id} className={clsx('row', styles.header)}>\n <div id=\"loadingbar-placeholder\" />\n <div className=\"col-xs-12\">\n <div className={styles.meta}>{children}</div>\n </div>\n </div>\n </Context.Provider>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"menuButton\":\"app-react-components-PageHeader-HeaderTitle-module__menu-button\",\"menuIcon\":\"app-react-components-PageHeader-HeaderTitle-module__menu-icon\",\"menuList\":\"app-react-components-PageHeader-HeaderTitle-module__menu-list\",\"menuLink\":\"app-react-components-PageHeader-HeaderTitle-module__menu-link\",\"arrowDown\":\"app-react-components-PageHeader-HeaderTitle-module__arrow-down\"};","import { HelpCircle } from 'lucide-react';\nimport clsx from 'clsx';\n\nimport { getDocURL } from '@@/PageHeader/ContextHelp/docURLs';\n\nimport headerStyles from '../HeaderTitle.module.css';\nimport './ContextHelp.css';\n\nexport function ContextHelp() {\n function onHelpClick() {\n const docURL = getDocURL();\n window.open(docURL, '_blank');\n }\n\n return (\n <div className={clsx(headerStyles.menuButton)}>\n <div\n className={clsx(\n headerStyles.menuIcon,\n 'menu-icon',\n 'icon-badge mr-1 !p-2 text-lg',\n 'text-gray-8',\n 'th-dark:text-gray-warm-7'\n )}\n title=\"Help\"\n >\n <HelpCircle className=\"lucide\" onClick={onHelpClick} />\n </div>\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-components-PageHeader-NotificationsMenu-module__root\",\"badge\":\"app-react-components-PageHeader-NotificationsMenu-module__badge\",\"notificationContainer\":\"app-react-components-PageHeader-NotificationsMenu-module__notification-container\",\"itemLast\":\"app-react-components-PageHeader-NotificationsMenu-module__item-last\",\"notifications\":\"app-react-components-PageHeader-NotificationsMenu-module__notifications\",\"notification\":\"app-react-components-PageHeader-NotificationsMenu-module__notification\",\"container\":\"app-react-components-PageHeader-NotificationsMenu-module__container\",\"notificationIcon\":\"app-react-components-PageHeader-NotificationsMenu-module__notificationIcon\",\"notificationBody\":\"app-react-components-PageHeader-NotificationsMenu-module__notificationBody\",\"deleteButton\":\"app-react-components-PageHeader-NotificationsMenu-module__deleteButton\",\"notificationDetails\":\"app-react-components-PageHeader-NotificationsMenu-module__notification-details\",\"notificationTitle\":\"app-react-components-PageHeader-NotificationsMenu-module__notification-title\",\"notificationLink\":\"app-react-components-PageHeader-NotificationsMenu-module__notification-link\"};","import clsx from 'clsx';\nimport {\n Menu,\n MenuButton,\n MenuList,\n MenuLink as ReachMenuLink,\n} from '@reach/menu-button';\nimport { UISrefProps, useSref } from '@uirouter/react';\nimport Moment from 'moment';\nimport { useStore } from 'zustand';\nimport { AlertCircle, Bell, CheckCircle, Trash2 } from 'lucide-react';\n\nimport { AutomationTestingProps } from '@/types';\nimport { useUser } from '@/react/hooks/useUser';\nimport { ToastNotification } from '@/react/portainer/notifications/types';\n\nimport { Icon } from '@@/Icon';\nimport { Link } from '@@/Link';\nimport { Button } from '@@/buttons';\n\nimport { notificationsStore } from '../../portainer/notifications/notifications-store';\n\nimport headerStyles from './HeaderTitle.module.css';\nimport notificationStyles from './NotificationsMenu.module.css';\n\nexport function NotificationsMenu() {\n const notificationsStoreState = useStore(notificationsStore);\n const { removeNotification } = notificationsStoreState;\n const { clearUserNotifications } = notificationsStoreState;\n\n const { user } = useUser();\n const userNotifications: ToastNotification[] = useStore(\n notificationsStore,\n (state) => state.userNotifications[user.Id]\n );\n const reducedNotifications = userNotifications?.slice(0, 50);\n\n return (\n <Menu>\n <MenuButton\n className={clsx(\n 'ml-auto flex items-center gap-1 self-start',\n headerStyles.menuButton\n )}\n data-cy=\"notificationsMenu-button\"\n aria-label=\"Notifications menu toggle\"\n >\n <div\n className={clsx(\n headerStyles.menuIcon,\n 'icon-badge mr-1 !p-2 text-lg',\n 'text-gray-8',\n 'th-dark:text-gray-warm-7'\n )}\n >\n <Icon icon={Bell} />\n <span\n className={\n reducedNotifications?.length > 0 ? notificationStyles.badge : ''\n }\n />\n </div>\n </MenuButton>\n\n <MenuList\n className={clsx(headerStyles.menuList, notificationStyles.root)}\n aria-label=\"Notifications Menu\"\n data-cy=\"notificationsMenu\"\n >\n <div>\n <div\n className={clsx(\n notificationStyles.notificationContainer,\n 'vertical-center'\n )}\n >\n <div>\n <h4>Notifications</h4>\n </div>\n <div className={notificationStyles.itemLast}>\n {reducedNotifications?.length > 0 && (\n <Button\n color=\"none\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onClear();\n }}\n data-cy=\"notification-deleteButton\"\n >\n Clear all\n </Button>\n )}\n </div>\n </div>\n </div>\n {reducedNotifications?.length > 0 ? (\n <>\n <div className={notificationStyles.notifications}>\n {reducedNotifications.map((notification) => (\n <MenuLink\n to=\"portainer.notifications\"\n params={{ id: notification.id }}\n notification={notification}\n key={notification.id}\n onDelete={() => onDelete(notification.id)}\n />\n ))}\n </div>\n\n <div className={notificationStyles.notificationLink}>\n <Link to=\"portainer.notifications\">View all notifications</Link>\n </div>\n </>\n ) : (\n <div className=\"flex flex-col items-center\">\n <Icon icon={Bell} size=\"xl\" />\n <p className=\"my-5\">You have no notifications yet.</p>\n </div>\n )}\n </MenuList>\n </Menu>\n );\n\n function onDelete(notificationId: string) {\n removeNotification(user.Id, notificationId);\n }\n\n function onClear() {\n clearUserNotifications(user.Id);\n }\n}\n\ninterface MenuLinkProps extends AutomationTestingProps, UISrefProps {\n notification: ToastNotification;\n onDelete: () => void;\n}\n\nfunction MenuLink({ to, params, notification, onDelete }: MenuLinkProps) {\n const anchorProps = useSref(to, params);\n\n return (\n <ReachMenuLink\n href={anchorProps.href}\n onClick={anchorProps.onClick}\n className={clsx(headerStyles.menuLink, notificationStyles.notification)}\n >\n <div className={notificationStyles.container}>\n <div className={notificationStyles.notificationIcon}>\n {notification.type === 'success' ? (\n <Icon icon={CheckCircle} size=\"lg\" mode=\"success\" />\n ) : (\n <Icon icon={AlertCircle} size=\"lg\" mode=\"danger\" />\n )}\n </div>\n <div className={notificationStyles.notificationBody}>\n <p className={notificationStyles.notificationTitle}>\n {notification.title}\n </p>\n <p className={notificationStyles.notificationDetails}>\n {notification.details}\n </p>\n <p className=\"small text-muted\">\n {formatTime(notification.timeStamp)}\n </p>\n </div>\n <div className={notificationStyles.deleteButton}>\n <Button\n color=\"none\"\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onDelete();\n }}\n data-cy=\"notification-deleteButton\"\n size=\"large\"\n icon={Trash2}\n />\n </div>\n </div>\n </ReachMenuLink>\n );\n}\n\nfunction formatTime(timeCreated: Date) {\n const timeStamp = new Date(timeCreated).valueOf().toString();\n\n const diff = Math.floor((Date.now() - parseInt(timeStamp, 10)) / 1000);\n\n if (diff <= 86400) {\n let interval = Math.floor(diff / 3600);\n if (interval >= 1) {\n return `${interval} hours ago`;\n }\n interval = Math.floor(diff / 60);\n if (interval >= 1) {\n return `${interval} min ago`;\n }\n }\n if (diff > 86400) {\n const formatDate = Moment(timeCreated).format('YYYY-MM-DD h:mm:ss');\n return formatDate;\n }\n return 'Just now';\n}\n","import {\n Menu,\n MenuButton,\n MenuList,\n MenuLink as ReachMenuLink,\n} from '@reach/menu-button';\nimport { UISrefProps, useSref } from '@uirouter/react';\nimport clsx from 'clsx';\nimport { User, ChevronDown } from 'lucide-react';\n\nimport { queryClient } from '@/react-tools/react-query';\nimport { AutomationTestingProps } from '@/types';\nimport { useUser } from '@/react/hooks/useUser';\n\nimport styles from './HeaderTitle.module.css';\n\nexport function UserMenu() {\n const { user } = useUser();\n\n return (\n <Menu>\n <MenuButton\n className={clsx(\n 'ml-auto flex items-center gap-1 self-start',\n styles.menuButton\n )}\n data-cy=\"userMenu-button\"\n aria-label=\"User menu toggle\"\n >\n <div\n className={clsx(\n styles.menuIcon,\n 'icon-badge mr-1 !p-2 text-lg',\n 'text-gray-8',\n 'th-dark:text-gray-warm-7'\n )}\n >\n <User className=\"lucide\" />\n </div>\n {user && <span>{user.Username}</span>}\n <ChevronDown className={styles.arrowDown} />\n </MenuButton>\n\n <MenuList\n className={styles.menuList}\n aria-label=\"User Menu\"\n data-cy=\"userMenu\"\n >\n <MenuLink\n to=\"portainer.account\"\n label=\"My account\"\n data-cy=\"userMenu-myAccount\"\n />\n\n <MenuLink\n to=\"portainer.logout\"\n label=\"Log out\"\n data-cy=\"userMenu-logOut\"\n />\n </MenuList>\n </Menu>\n );\n}\n\ninterface MenuLinkProps extends AutomationTestingProps, UISrefProps {\n label: string;\n}\n\nfunction MenuLink({\n to,\n label,\n params,\n options,\n 'data-cy': dataCy,\n}: MenuLinkProps) {\n const anchorProps = useSref(to, params, options);\n\n return (\n <ReachMenuLink\n href={anchorProps.href}\n onClick={(e) => {\n queryClient.clear();\n anchorProps.onClick(e);\n }}\n className={styles.menuLink}\n aria-label={label}\n data-cy={dataCy}\n >\n {label}\n </ReachMenuLink>\n );\n}\n","import { PropsWithChildren } from 'react';\n\nimport { ContextHelp } from '@@/PageHeader/ContextHelp';\n\nimport { useHeaderContext } from './HeaderContainer';\nimport { NotificationsMenu } from './NotificationsMenu';\nimport { UserMenu } from './UserMenu';\n\ninterface Props {\n title: string;\n}\n\nexport function HeaderTitle({ title, children }: PropsWithChildren<Props>) {\n useHeaderContext();\n\n return (\n <div className=\"flex justify-between whitespace-normal pt-3\">\n <div className=\"flex items-center gap-2\">\n <div className=\"text-2xl font-medium text-gray-11 th-highcontrast:text-white th-dark:text-white\">\n {title}\n </div>\n {children && <span>{children}</span>}\n </div>\n <div className=\"flex items-end\">\n <NotificationsMenu />\n <ContextHelp />\n {!window.ddExtension && <UserMenu />}\n </div>\n </div>\n );\n}\n","import { useRouter } from '@uirouter/react';\nimport { RefreshCw } from 'lucide-react';\n\nimport { Button } from '../buttons';\n\nimport { Breadcrumbs } from './Breadcrumbs';\nimport { Crumb } from './Breadcrumbs/Breadcrumbs';\nimport { HeaderContainer } from './HeaderContainer';\nimport { HeaderTitle } from './HeaderTitle';\n\ninterface Props {\n id?: string;\n reload?: boolean;\n loading?: boolean;\n onReload?(): Promise<void> | void;\n breadcrumbs?: (Crumb | string)[] | string;\n title: string;\n}\n\nexport function PageHeader({\n id,\n title,\n breadcrumbs = [],\n reload,\n loading,\n onReload,\n}: Props) {\n const router = useRouter();\n\n function onClickedRefresh() {\n return onReload ? onReload() : router.stateService.reload();\n }\n\n return (\n <HeaderContainer id={id}>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n\n <HeaderTitle title={title}>\n {reload && (\n <Button\n color=\"none\"\n size=\"large\"\n onClick={onClickedRefresh}\n className=\"m-0 p-0 focus:text-inherit\"\n disabled={loading}\n >\n <RefreshCw className=\"icon\" />\n </Button>\n )}\n </HeaderTitle>\n </HeaderContainer>\n );\n}\n","interface Props {\n value: number;\n onChange(value: number): void;\n showAll?: boolean;\n}\n\nexport function ItemsPerPageSelector({ value, onChange, showAll }: Props) {\n return (\n <span className=\"limitSelector\">\n <span className=\"space-right\">Items per page</span>\n <select\n className=\"form-control\"\n value={value}\n onChange={(e) => onChange(Number(e.target.value))}\n data-cy=\"paginationSelect\"\n >\n {showAll ? <option value={Number.MAX_SAFE_INTEGER}>All</option> : null}\n {[10, 25, 50, 100].map((v) => (\n <option value={v} key={v}>\n {v}\n </option>\n ))}\n </select>\n </span>\n );\n}\n","/**\n * Given the position in the sequence of pagination links, figure out what page number corresponds to that position.\n *\n * @param position\n * @param currentPage\n * @param paginationRange\n * @param totalPages\n */\nexport function calculatePageNumber(\n position: number,\n currentPage: number,\n paginationRange: number,\n totalPages: number\n) {\n const halfWay = Math.ceil(paginationRange / 2);\n if (position === paginationRange) {\n return totalPages;\n }\n\n if (position === 1) {\n return position;\n }\n\n if (paginationRange < totalPages) {\n if (totalPages - halfWay < currentPage) {\n return totalPages - paginationRange + position;\n }\n\n if (halfWay < currentPage) {\n return currentPage - halfWay + position;\n }\n\n return position;\n }\n\n return position;\n}\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\n\ninterface Props {\n active?: boolean;\n children: ReactNode;\n disabled?: boolean;\n onPageChange(page: number): void;\n page: number | '...';\n}\n\nexport function PageButton({\n children,\n page,\n disabled,\n active,\n onPageChange,\n}: Props) {\n return (\n <li className={clsx({ disabled, active })}>\n <button\n type=\"button\"\n onClick={() => typeof page === 'number' && onPageChange(page)}\n disabled={disabled}\n >\n {children}\n </button>\n </li>\n );\n}\n","import { useFormik } from 'formik';\nimport { ChangeEvent, KeyboardEvent } from 'react';\nimport { object, number } from 'yup';\n\nimport { Button } from '@@/buttons';\nimport { Input } from '@@/form-components/Input';\n\ninterface Values {\n page: number | '';\n}\n\ninterface Props {\n onChange(page: number): void;\n totalPages: number;\n}\n\nexport function PageInput({ onChange, totalPages }: Props) {\n const { handleSubmit, setFieldValue, values, isValid } = useFormik<Values>({\n initialValues: { page: '' },\n onSubmit: async ({ page }) => page && onChange(page),\n validateOnMount: true,\n validationSchema: () =>\n object({ page: number().required().max(totalPages).min(1) }),\n });\n\n return (\n <form className=\"mx-3\" onSubmit={handleSubmit}>\n <label className=\"small m-0 mr-2 font-normal\" htmlFor=\"go-to-page-input\">\n Go to page\n </label>\n <Input\n id=\"go-to-page-input\"\n className=\"!w-32\"\n type=\"number\"\n value={values.page}\n max={totalPages}\n min={1}\n step={1}\n onChange={handleChange}\n onKeyPress={preventNotNumber}\n />\n <Button type=\"submit\" disabled={!isValid}>\n Go\n </Button>\n </form>\n );\n\n function preventNotNumber(e: KeyboardEvent<HTMLInputElement>) {\n if (e.key.match(/^\\D$/)) {\n e.preventDefault();\n }\n }\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const value = parseInt(e.target.value, 10);\n setFieldValue('page', Number.isNaN(value) ? '' : value);\n }\n}\n","import './pagination-controls.css';\n\nimport { generatePagesArray } from './generatePagesArray';\nimport { PageButton } from './PageButton';\nimport { PageInput } from './PageInput';\n\ninterface Props {\n boundaryLinks?: boolean;\n currentPage: number;\n directionLinks?: boolean;\n onPageChange(page: number): void;\n pageCount: number;\n maxSize: number;\n isInputVisible?: boolean;\n}\n\nexport function PageSelector({\n currentPage,\n pageCount,\n onPageChange,\n maxSize = 5,\n directionLinks = true,\n boundaryLinks = false,\n isInputVisible = false,\n}: Props) {\n const pages = generatePagesArray(currentPage, pageCount, maxSize);\n const last = pages[pages.length - 1];\n\n if (pages.length <= 1) {\n return null;\n }\n\n return (\n <>\n {isInputVisible && (\n <PageInput\n onChange={(page) => onPageChange(page)}\n totalPages={pageCount}\n />\n )}\n <ul className=\"pagination\">\n {boundaryLinks ? (\n <PageButton\n onPageChange={onPageChange}\n page={1}\n disabled={currentPage === 1}\n >\n «\n </PageButton>\n ) : null}\n {directionLinks ? (\n <PageButton\n onPageChange={onPageChange}\n page={currentPage - 1}\n disabled={currentPage === 1}\n >\n ‹\n </PageButton>\n ) : null}\n {pages.map((pageNumber, index) => (\n <PageButton\n onPageChange={onPageChange}\n page={pageNumber}\n disabled={pageNumber === '...'}\n active={currentPage === pageNumber}\n key={index}\n >\n {pageNumber}\n </PageButton>\n ))}\n\n {directionLinks ? (\n <PageButton\n onPageChange={onPageChange}\n page={currentPage + 1}\n disabled={currentPage === last}\n >\n ›\n </PageButton>\n ) : null}\n {boundaryLinks ? (\n <PageButton\n disabled={currentPage === last}\n onPageChange={onPageChange}\n page={last}\n >\n »\n </PageButton>\n ) : null}\n </ul>\n </>\n );\n}\n","import { calculatePageNumber } from './calculatePageNumber';\n\nexport /**\n * Generate an array of page numbers (or the '...' string) which is used in an ng-repeat to generate the\n * links used in pagination\n *\n * @param currentPage\n * @param rowsPerPage\n * @param paginationRange\n * @param collectionLength\n * @returns {Array}\n */\nfunction generatePagesArray(\n currentPage: number,\n totalPages: number,\n paginationRange: number\n): (number | '...')[] {\n const pages: (number | '...')[] = [];\n const halfWay = Math.ceil(paginationRange / 2);\n\n let position;\n if (currentPage <= halfWay) {\n position = 'start';\n } else if (totalPages - halfWay < currentPage) {\n position = 'end';\n } else {\n position = 'middle';\n }\n\n const ellipsesNeeded = paginationRange < totalPages;\n\n for (let i = 1; i <= totalPages && i <= paginationRange; i += 1) {\n const pageNumber = calculatePageNumber(\n i,\n currentPage,\n paginationRange,\n totalPages\n );\n\n const openingEllipsesNeeded =\n i === 2 && (position === 'middle' || position === 'end');\n const closingEllipsesNeeded =\n i === paginationRange - 1 &&\n (position === 'middle' || position === 'start');\n if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\n pages.push('...');\n } else {\n pages.push(pageNumber);\n }\n }\n\n return pages;\n}\n","import clsx from 'clsx';\n\nimport { ItemsPerPageSelector } from './ItemsPerPageSelector';\nimport { PageSelector } from './PageSelector';\n\ninterface Props {\n onPageChange(page: number): void;\n onPageLimitChange(value: number): void;\n page: number;\n pageLimit: number;\n showAll?: boolean;\n pageCount: number;\n isPageInputVisible?: boolean;\n className?: string;\n}\n\nexport function PaginationControls({\n pageLimit,\n page,\n onPageLimitChange,\n showAll,\n onPageChange,\n pageCount,\n isPageInputVisible,\n className,\n}: Props) {\n return (\n <div className={clsx('paginationControls', className)}>\n <div className=\"form-inline flex\">\n <ItemsPerPageSelector\n value={pageLimit}\n onChange={handlePageLimitChange}\n showAll={showAll}\n />\n\n {pageLimit !== 0 && (\n <PageSelector\n maxSize={5}\n onPageChange={onPageChange}\n currentPage={page}\n pageCount={pageCount}\n isInputVisible={isPageInputVisible}\n />\n )}\n </div>\n </div>\n );\n\n function handlePageLimitChange(value: number) {\n onPageLimitChange(value);\n onPageChange(1);\n }\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\n\nimport { Icon, IconProps } from '@/react/components/Icon';\n\ninterface Props extends IconProps {\n value: string | number;\n icon: IconProps['icon'];\n iconClass?: string;\n}\n\nexport function StatsItem({\n value,\n icon,\n children,\n iconClass,\n}: PropsWithChildren<Props>) {\n return (\n <span className=\"flex items-center gap-1\">\n <Icon className={clsx('icon icon-sm', iconClass)} icon={icon} />\n <span>{value}</span>\n {children && (\n <span className=\"ml-1 flex items-center gap-2\">{children}</span>\n )}\n </span>\n );\n}\n","import { FormikErrors } from 'formik';\nimport { SchemaOf, boolean, object } from 'yup';\n\nimport { file, withFileSize } from '@@/form-components/yup-file-validation';\nimport { FileUploadField } from '@@/form-components/FileUpload';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { FormControl } from '@@/form-components/FormControl';\n\nimport { TLSConfig } from './types';\n\ninterface Props {\n values: TLSConfig;\n onChange: (value: Partial<TLSConfig>) => void;\n errors?: FormikErrors<TLSConfig>;\n}\n\nexport function TLSFieldset({ values, onChange, errors }: Props) {\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"TLS\"\n labelClass=\"col-sm-3 col-lg-2\"\n checked={values.tls}\n onChange={(checked) => handleChange({ tls: checked })}\n />\n </div>\n </div>\n\n {values.tls && (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Skip Certification Verification\"\n checked={!!values.skipVerify}\n onChange={(checked) => handleChange({ skipVerify: checked })}\n labelClass=\"col-sm-3 col-lg-2\"\n />\n </div>\n </div>\n\n {!values.skipVerify && (\n <>\n <FormControl\n label=\"TLS CA certificate\"\n inputId=\"ca-cert-field\"\n errors={errors?.caCertFile}\n >\n <FileUploadField\n inputId=\"ca-cert-field\"\n onChange={(file) => handleChange({ caCertFile: file })}\n value={values.caCertFile}\n />\n </FormControl>\n <FormControl\n label=\"TLS certificate\"\n inputId=\"cert-field\"\n errors={errors?.certFile}\n >\n <FileUploadField\n inputId=\"cert-field\"\n onChange={(file) => handleChange({ certFile: file })}\n value={values.certFile}\n />\n </FormControl>\n <FormControl\n label=\"TLS key\"\n inputId=\"tls-key-field\"\n errors={errors?.keyFile}\n >\n <FileUploadField\n inputId=\"tls-key-field\"\n onChange={(file) => handleChange({ keyFile: file })}\n value={values.keyFile}\n />\n </FormControl>\n </>\n )}\n </>\n )}\n </>\n );\n\n function handleChange(partialValue: Partial<TLSConfig>) {\n onChange(partialValue);\n }\n}\n\nconst MAX_FILE_SIZE = 5_242_880; // 5MB\n\nfunction certValidation(optional?: boolean) {\n return withFileSize(file(), MAX_FILE_SIZE).when(['tls', 'skipVerify'], {\n is: (tls: boolean, skipVerify: boolean) => tls && !skipVerify && !optional,\n then: (schema) => schema.required('File is required'),\n });\n}\n\nexport function tlsConfigValidation({\n optionalCert,\n}: { optionalCert?: boolean } = {}): SchemaOf<TLSConfig> {\n return object({\n tls: boolean().default(false),\n skipVerify: boolean().default(false),\n caCertFile: certValidation(optionalCert),\n certFile: certValidation(optionalCert),\n keyFile: certValidation(optionalCert),\n });\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"removeTagBtn\":\"app-react-components-TagButton-TagButton-module__remove-tag-btn\"};","import clsx from 'clsx';\nimport { Trash2 } from 'lucide-react';\n\nimport { Icon } from '@/react/components/Icon';\n\nimport styles from './TagButton.module.css';\n\ninterface Props {\n value: number;\n label: string;\n title: string;\n onRemove(): void;\n}\n\nexport function TagButton({ value, label, title, onRemove }: Props) {\n return (\n <button\n type=\"button\"\n title={title}\n className={clsx(\n styles.removeTagBtn,\n 'space-left',\n 'tag',\n 'vertical-center'\n )}\n onClick={() => onRemove()}\n key={value}\n >\n {label}\n <Icon icon={Trash2} />\n </button>\n );\n}\n","import _ from 'lodash';\n\nimport { TagId } from '@/portainer/tags/types';\nimport { useCreateTagMutation, useTags } from '@/portainer/tags/queries';\n\nimport { Creatable, Select } from '@@/form-components/ReactSelect';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Link } from '@@/Link';\n\nimport { TagButton } from '../TagButton';\n\ninterface Props {\n value: TagId[];\n allowCreate?: boolean;\n onChange(value: TagId[]): void;\n}\n\ninterface Option {\n value: TagId;\n label: string;\n}\n\nexport function TagSelector({ value, allowCreate = false, onChange }: Props) {\n // change the struct because react-select has a bug with Creatable (https://github.com/JedWatson/react-select/issues/3417#issuecomment-461868989)\n const tagsQuery = useTags({\n select: (tags) => tags?.map((opt) => ({ label: opt.Name, value: opt.ID })),\n });\n\n const createTagMutation = useCreateTagMutation();\n\n if (!tagsQuery.data) {\n return null;\n }\n\n const { data: tags } = tagsQuery;\n\n const selectedTags = _.compact(\n value.map((id) => tags.find((tag) => tag.value === id))\n );\n\n const SelectComponent = allowCreate ? Creatable : Select;\n\n if (!tags.length && !allowCreate) {\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12 small text-muted\">\n No tags available. Head over to the\n <Link to=\"portainer.tags\" className=\"space-right space-left\">\n Tags view\n </Link>\n to add tags\n </div>\n </div>\n );\n }\n\n return (\n <>\n {value.length > 0 && (\n <FormControl label=\"Selected tags\">\n {selectedTags.map((tag) => (\n <TagButton\n key={tag.value}\n title=\"Remove tag\"\n value={tag.value}\n label={tag.label}\n onRemove={() => handleRemove(tag.value)}\n />\n ))}\n </FormControl>\n )}\n\n <FormControl label=\"Tags\" inputId=\"tags-selector\">\n <SelectComponent\n inputId=\"tags-selector\"\n value={[] as { label: string; value: number }[]}\n hideSelectedOptions\n options={tags.filter((tag) => !value.includes(tag.value))}\n closeMenuOnSelect={false}\n onChange={handleAdd}\n noOptionsMessage={() => 'No tags available'}\n formatCreateLabel={(inputValue) => `Create \"${inputValue}\"`}\n onCreateOption={handleCreateOption}\n aria-label=\"Tags\"\n />\n </FormControl>\n </>\n );\n\n function handleAdd(tag?: Option | null) {\n if (!tag) {\n return;\n }\n onChange([...value, tag.value]);\n }\n\n function handleRemove(tagId: TagId) {\n onChange(value.filter((id) => id !== tagId));\n }\n\n function handleCreateOption(inputValue: string) {\n if (!allowCreate) {\n return;\n }\n\n // Prevent the new tag composed of space from being added\n if (!inputValue.replace(/\\s/g, '').length) {\n return;\n }\n\n createTagMutation.mutate(inputValue, {\n onSuccess(tag) {\n handleAdd({ label: tag.Name, value: tag.ID });\n },\n });\n }\n}\n","import { Team, TeamId } from '@/react/portainer/users/teams/types';\n\nimport { PortainerSelect } from '@@/form-components/PortainerSelect';\n\ninterface Props {\n name?: string;\n value: TeamId[] | readonly TeamId[];\n onChange(value: readonly TeamId[]): void;\n teams: Team[];\n dataCy?: string;\n inputId?: string;\n placeholder?: string;\n disabled?: boolean;\n}\n\nexport function TeamsSelector({\n name,\n value,\n onChange,\n teams,\n dataCy,\n inputId,\n placeholder,\n disabled,\n}: Props) {\n const options = teams.map((team) => ({ label: team.Name, value: team.Id }));\n\n return (\n <PortainerSelect<number>\n name={name}\n isMulti\n options={options}\n value={value}\n onChange={(value) => onChange(value)}\n data-cy={dataCy}\n inputId={inputId}\n placeholder={placeholder}\n disabled={disabled}\n />\n );\n}\n","import { PropsWithChildren } from 'react';\nimport { AlertCircle } from 'lucide-react';\nimport clsx from 'clsx';\n\nimport { Icon, IconMode } from '@@/Icon';\n\ntype Color = 'orange' | 'blue' | 'red' | 'green';\n\nexport interface Props {\n icon?: React.ReactNode;\n color?: Color;\n className?: string;\n childrenWrapperClassName?: string;\n inline?: boolean;\n}\n\nexport function TextTip({\n color = 'orange',\n icon = AlertCircle,\n inline = true,\n className,\n children,\n childrenWrapperClassName = 'text-muted',\n}: PropsWithChildren<Props>) {\n return (\n <div\n className={clsx(\n className,\n 'small gap-1 align-top text-xs',\n inline ? 'inline-flex' : 'flex'\n )}\n >\n <Icon icon={icon} mode={getMode(color)} className=\"!mt-0.5 flex-none\" />\n\n <span className={childrenWrapperClassName}>{children}</span>\n </div>\n );\n}\n\nfunction getMode(color: Color): IconMode {\n switch (color) {\n case 'blue':\n return 'primary';\n case 'red':\n return 'danger';\n case 'green':\n return 'success';\n case 'orange':\n default:\n return 'warning';\n }\n}\n","import { HelpCircle } from 'lucide-react';\nimport { ReactNode, useMemo } from 'react';\nimport sanitize from 'sanitize-html';\nimport clsx from 'clsx';\n\nimport { TooltipWithChildren, Position } from '../TooltipWithChildren';\n\ntype Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nconst sizeClasses: Record<Size, string> = {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n};\n\nexport interface Props {\n position?: Position;\n message: ReactNode;\n className?: string;\n setHtmlMessage?: boolean;\n size?: Size;\n}\n\nexport function Tooltip({\n message,\n position = 'bottom',\n className,\n setHtmlMessage,\n size = 'md',\n}: Props) {\n // allow angular views to set html messages for the tooltip\n const htmlMessage = useMemo(() => {\n if (setHtmlMessage && typeof message === 'string') {\n // eslint-disable-next-line react/no-danger\n return <div dangerouslySetInnerHTML={{ __html: sanitize(message) }} />;\n }\n return null;\n }, [setHtmlMessage, message]);\n\n return (\n <span className={clsx('ml-1 inline-flex items-center', sizeClasses[size])}>\n <TooltipWithChildren\n message={htmlMessage || message}\n position={position}\n className={className}\n >\n <HelpCircle className=\"lucide\" aria-hidden=\"true\" />\n </TooltipWithChildren>\n </span>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"tooltip\":\"app-react-components-Tip-TooltipWithChildren-TooltipWithChildren-module__tooltip\",\"tooltipContainer\":\"app-react-components-Tip-TooltipWithChildren-TooltipWithChildren-module__tooltip-container\",\"tooltipMessage\":\"app-react-components-Tip-TooltipWithChildren-TooltipWithChildren-module__tooltip-message\",\"tooltipHeading\":\"app-react-components-Tip-TooltipWithChildren-TooltipWithChildren-module__tooltip-heading\",\"tooltipBeteaser\":\"app-react-components-Tip-TooltipWithChildren-TooltipWithChildren-module__tooltip-beteaser\"};","import React, { MouseEvent } from 'react';\nimport Tippy from '@tippyjs/react';\nimport clsx from 'clsx';\nimport _ from 'lodash';\n\nimport 'tippy.js/dist/tippy.css';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { getFeatureDetails } from '@@/BEFeatureIndicator/utils';\n\nimport styles from './TooltipWithChildren.module.css';\n\nexport type Position = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface Props {\n position?: Position;\n message: React.ReactNode;\n className?: string;\n children: React.ReactElement;\n heading?: string;\n BEFeatureID?: FeatureId;\n}\n\nexport function TooltipWithChildren({\n message,\n position = 'bottom',\n className,\n children,\n heading,\n BEFeatureID,\n}: Props) {\n const id = _.uniqueId('tooltip-');\n\n const { url, limitedToBE } = BEFeatureID\n ? getFeatureDetails(BEFeatureID)\n : { url: '', limitedToBE: false };\n\n const messageHTML = (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div className={styles.tooltipContainer} onClick={onClickHandler}>\n {(heading || (BEFeatureID && limitedToBE)) && (\n <div className=\"mb-3 inline-flex w-full justify-between\">\n <span>{heading}</span>\n {BEFeatureID && limitedToBE && (\n <a\n href={url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={styles.tooltipBeteaser}\n >\n Business Feature\n </a>\n )}\n </div>\n )}\n <div className={styles.tooltipMessage}>{message}</div>\n </div>\n );\n\n return (\n <Tippy\n className={clsx(id, styles.tooltip, className)}\n content={messageHTML}\n delay={[50, 500]} // 50ms to open, 500ms to hide\n zIndex={1000}\n placement={position}\n maxWidth={400}\n arrow\n allowHTML\n interactive\n disabled={!message}\n >\n {children}\n </Tippy>\n );\n}\n\n// Preventing click bubbling to the parent as it is affecting\n// mainly toggles when full row is clickable.\nfunction onClickHandler(e: MouseEvent) {\n const target = e.target as HTMLInputElement;\n if (target.tagName.toLowerCase() === 'a') {\n const url = target.getAttribute('href');\n if (url) {\n window.open(url, '_blank');\n }\n }\n e.preventDefault();\n}\n","import { User, UserId } from '@/portainer/users/types';\n\nimport { Select } from '@@/form-components/ReactSelect';\n\ninterface Props {\n name?: string;\n value: UserId[];\n onChange(value: UserId[]): void;\n users: User[];\n dataCy?: string;\n inputId?: string;\n placeholder?: string;\n disabled?: boolean;\n}\n\nexport function UsersSelector({\n name,\n value,\n onChange,\n users,\n dataCy,\n inputId,\n placeholder,\n disabled,\n}: Props) {\n return (\n <Select\n isMulti\n name={name}\n getOptionLabel={(user) => user.Username}\n getOptionValue={(user) => `${user.Id}`}\n options={users}\n value={users.filter((user) => value.includes(user.Id))}\n closeMenuOnSelect={false}\n onChange={(selectedUsers) =>\n onChange(selectedUsers.map((user) => user.Id))\n }\n data-cy={dataCy}\n inputId={inputId}\n placeholder={placeholder}\n isDisabled={disabled}\n />\n );\n}\n","export function Loading() {\n return (\n <div className=\"loading\">\n <div className=\"double-bounce1\" />\n <div className=\"double-bounce2\" />\n </div>\n );\n}\n","import { createContext, PropsWithChildren, useContext } from 'react';\n\nconst Context = createContext<null | boolean>(null);\nContext.displayName = 'WidgetContext';\n\nexport function useWidgetContext() {\n const context = useContext(Context);\n\n if (context == null) {\n throw new Error('Should be inside a Widget component');\n }\n}\n\nexport function Widget({ children }: PropsWithChildren<unknown>) {\n return (\n <Context.Provider value>\n <div className=\"widget\">{children}</div>\n </Context.Provider>\n );\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\n\nimport { useWidgetContext } from './Widget';\nimport { Loading } from './Loading';\n\ninterface Props {\n loading?: boolean;\n className?: string;\n}\n\nexport function WidgetBody({\n loading,\n className,\n children,\n}: PropsWithChildren<Props>) {\n useWidgetContext();\n\n return (\n <div className={clsx(className, 'widget-body')}>\n {loading ? <Loading /> : <div className=\"widget-content\">{children}</div>}\n </div>\n );\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren, ReactNode } from 'react';\n\nimport { Icon } from '@/react/components/Icon';\n\nimport { useWidgetContext } from './Widget';\n\ninterface Props {\n title: ReactNode;\n icon: ReactNode;\n className?: string;\n}\n\nexport function WidgetTitle({\n title,\n icon,\n className,\n children,\n}: PropsWithChildren<Props>) {\n useWidgetContext();\n\n return (\n <div className=\"widget-header\">\n <div className=\"row\">\n <span className={clsx('pull-left vertical-center', className)}>\n <div className=\"widget-icon\">\n <Icon icon={icon} className=\"space-right\" />\n </div>\n <span>{title}</span>\n </span>\n <span className={clsx('pull-right', className)}>{children}</span>\n </div>\n </div>\n );\n}\n","import { Widget as MainComponent } from './Widget';\nimport { WidgetBody } from './WidgetBody';\nimport { WidgetFooter } from './WidgetFooter';\nimport { WidgetTitle } from './WidgetTitle';\nimport { WidgetTaskbar } from './WidgetTaskbar';\nimport { Loading } from './Loading';\n\ninterface WithSubcomponents {\n Body: typeof WidgetBody;\n Footer: typeof WidgetFooter;\n Title: typeof WidgetTitle;\n Taskbar: typeof WidgetTaskbar;\n Loading: typeof Loading;\n}\n\nconst Widget = MainComponent as typeof MainComponent & WithSubcomponents;\n\nWidget.Body = WidgetBody;\nWidget.Footer = WidgetFooter;\nWidget.Title = WidgetTitle;\nWidget.Taskbar = WidgetTaskbar;\nWidget.Loading = Loading;\n\nexport {\n Widget,\n WidgetBody,\n WidgetFooter,\n WidgetTitle,\n WidgetTaskbar,\n Loading,\n};\n","import { PropsWithChildren } from 'react';\n\nimport { useWidgetContext } from './Widget';\n\nexport function WidgetFooter({ children }: PropsWithChildren<unknown>) {\n useWidgetContext();\n\n return <div className=\"widget-footer\">{children}</div>;\n}\n","import { PropsWithChildren } from 'react';\n\nimport { useWidgetContext } from './Widget';\n\ninterface Props {\n className?: string;\n}\n\nexport function WidgetTaskbar({\n children,\n className,\n}: PropsWithChildren<Props>) {\n useWidgetContext();\n\n return (\n <div className=\"widget-header\">\n <div className=\"row\">\n <div className={className}>{children}</div>\n </div>\n </div>\n );\n}\n","import {\n AriaAttributes,\n ComponentType,\n forwardRef,\n MouseEventHandler,\n PropsWithChildren,\n ReactNode,\n} from 'react';\nimport clsx from 'clsx';\n\nimport { AutomationTestingProps } from '@/types';\n\nimport { Icon } from '@@/Icon';\nimport './Button.css';\n\ntype Type = 'submit' | 'button' | 'reset';\ntype Color =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'danger'\n | 'link'\n | 'light'\n | 'dangerlight'\n | 'warninglight'\n | 'warning'\n | 'none';\ntype Size = 'xsmall' | 'small' | 'medium' | 'large';\n\nexport interface Props<TasProps = unknown>\n extends AriaAttributes,\n AutomationTestingProps {\n icon?: ReactNode | ComponentType<unknown>;\n\n color?: Color;\n size?: Size;\n disabled?: boolean;\n title?: string;\n className?: string;\n type?: Type;\n as?: ComponentType<TasProps> | string;\n onClick?: MouseEventHandler<HTMLButtonElement>;\n mRef?: React.ForwardedRef<HTMLButtonElement>;\n props?: TasProps;\n}\n\nexport const ButtonWithRef = forwardRef<HTMLButtonElement, Omit<Props, 'mRef'>>(\n (props, ref) => (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Button {...props} mRef={ref} />\n )\n);\n\nexport function Button<TasProps = unknown>({\n type = 'button',\n color = 'primary',\n size = 'small',\n disabled = false,\n className,\n onClick,\n title,\n icon,\n children,\n as = 'button',\n props,\n mRef,\n ...ariaProps\n}: PropsWithChildren<Props<TasProps>>) {\n const Component = as as 'button';\n return (\n <Component\n ref={mRef}\n /* eslint-disable-next-line react/button-has-type */\n type={type}\n disabled={disabled}\n className={clsx(`btn btn-${color}`, sizeClass(size), className, {\n disabled,\n })}\n onClick={(e) => {\n if (!disabled) {\n onClick?.(e);\n }\n }}\n title={title}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...ariaProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n {icon && <Icon icon={icon} size={getIconSize(size)} />}\n {children}\n </Component>\n );\n}\n\nfunction getIconSize(size: Size) {\n switch (size) {\n case 'xsmall':\n return 'xs';\n case 'medium':\n return 'md';\n case 'large':\n return 'lg';\n case 'small':\n default:\n return 'sm';\n }\n}\n\nfunction sizeClass(size?: Size) {\n switch (size) {\n case 'large':\n return 'btn-lg';\n case 'medium':\n return 'btn-md';\n case 'xsmall':\n return 'btn-xs';\n default:\n return 'btn-sm';\n }\n}\n","import { PropsWithChildren } from 'react';\nimport clsx from 'clsx';\n\nexport type Size = 'xsmall' | 'small' | 'large';\nexport interface Props {\n size?: Size;\n className?: string;\n}\n\nexport function ButtonGroup({\n size = 'small',\n children,\n className,\n}: PropsWithChildren<Props>) {\n return (\n <div className={clsx('btn-group', sizeClass(size), className)} role=\"group\">\n {children}\n </div>\n );\n}\n\nfunction sizeClass(size: Size | undefined) {\n switch (size) {\n case 'small':\n return 'btn-group-sm';\n case 'xsmall':\n return 'btn-group-xs';\n case 'large':\n return 'btn-group-lg';\n default:\n return '';\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"fadeout\":\"app-react-components-buttons-CopyButton-CopyButton-module__fadeout\",\"fadeOut\":\"app-react-components-buttons-CopyButton-CopyButton-module__fadeOut\",\"container\":\"app-react-components-buttons-CopyButton-CopyButton-module__container\",\"copyButton\":\"app-react-components-buttons-CopyButton-CopyButton-module__copy-button\"};","import { ComponentProps, PropsWithChildren } from 'react';\nimport clsx from 'clsx';\nimport { Check, Copy } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\n\nimport { Button } from '../Button';\n\nimport styles from './CopyButton.module.css';\nimport { useCopy } from './useCopy';\n\nexport interface Props {\n copyText: string;\n fadeDelay?: number;\n displayText?: string;\n className?: string;\n color?: ComponentProps<typeof Button>['color'];\n indicatorPosition?: 'left' | 'right';\n}\n\nexport function CopyButton({\n copyText,\n fadeDelay = 1000,\n displayText = 'copied',\n className,\n color,\n indicatorPosition = 'right',\n children,\n}: PropsWithChildren<Props>) {\n const { handleCopy, copiedSuccessfully } = useCopy(copyText, fadeDelay);\n\n function copiedIndicator() {\n return (\n <span\n className={clsx(\n copiedSuccessfully && styles.fadeout,\n styles.copyButton,\n 'mx-1',\n 'vertical-center'\n )}\n >\n <Icon icon={Check} />\n {displayText && <span className=\"space-left\">{displayText}</span>}\n </span>\n );\n }\n\n return (\n <div className={styles.container}>\n {indicatorPosition === 'left' && copiedIndicator()}\n <Button\n className={className}\n color={color}\n size=\"small\"\n onClick={handleCopy}\n title=\"Copy Value\"\n type=\"button\"\n icon={Copy}\n disabled={!copyText}\n >\n {children}\n </Button>\n {indicatorPosition === 'right' && copiedIndicator()}\n </div>\n );\n}\n","import { useEffect, useState } from 'react';\n\nexport type CopyTextType = string | (() => string);\n\nexport function useCopy(\n copyText: CopyTextType,\n fadeDelay = 1000,\n context: HTMLElement = document.body\n) {\n const [copiedSuccessfully, setCopiedSuccessfully] = useState(false);\n\n useEffect(() => {\n const fadeoutTime = setTimeout(\n () => setCopiedSuccessfully(false),\n fadeDelay\n );\n // clear timeout when component unmounts\n return () => {\n clearTimeout(fadeoutTime);\n };\n }, [copiedSuccessfully, fadeDelay]);\n\n function handleCopy() {\n const text = typeof copyText === 'function' ? copyText() : copyText;\n\n if (!text) {\n return;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard\n // https://caniuse.com/?search=clipboard\n if (navigator.clipboard) {\n navigator.clipboard.writeText(text);\n } else {\n // https://stackoverflow.com/a/57192718\n const inputEl = document.createElement('textarea');\n inputEl.value = text;\n context.appendChild(inputEl);\n inputEl.select();\n document.execCommand('copy');\n inputEl.hidden = true;\n context.removeChild(inputEl);\n }\n setCopiedSuccessfully(true);\n }\n\n return { handleCopy, copiedSuccessfully };\n}\n","import { PropsWithChildren, ReactNode } from 'react';\nimport { Loader2 } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\n\nimport { type Props as ButtonProps, Button } from './Button';\n\ninterface Props extends ButtonProps {\n loadingText: string;\n isLoading: boolean;\n}\n\nexport function LoadingButton({\n loadingText,\n isLoading,\n disabled,\n type = 'submit',\n children,\n icon,\n ...buttonProps\n}: PropsWithChildren<Props>) {\n return (\n <Button\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...buttonProps}\n type={type}\n disabled={disabled || isLoading}\n icon={loadingButtonIcon(isLoading, icon)}\n >\n {isLoading ? loadingText : children}\n </Button>\n );\n}\n\nfunction loadingButtonIcon(isLoading: boolean, defaultIcon: ReactNode) {\n if (!isLoading) {\n return defaultIcon;\n }\n return (\n <Icon\n icon={Loader2}\n className=\"ml-1 animate-spin-slow\"\n aria-label=\"loading\"\n />\n );\n}\n","import _ from 'lodash';\nimport clsx from 'clsx';\nimport { Menu, MenuButton, MenuList } from '@reach/menu-button';\nimport { Columns } from 'lucide-react';\nimport { Column } from '@tanstack/react-table';\n\nimport { Checkbox } from '@@/form-components/Checkbox';\n\ninterface Props<D extends object> {\n columns: Column<D>[];\n onChange: (value: string[]) => void;\n value: string[];\n}\n\nexport function ColumnVisibilityMenu<D extends object>({\n columns,\n onChange,\n value,\n}: Props<D>) {\n return (\n <Menu className=\"setting\">\n {({ isExpanded }) => (\n <>\n <MenuButton\n className={clsx('table-setting-menu-btn', {\n 'setting-active': isExpanded,\n })}\n >\n <Columns\n size=\"13\"\n className=\"space-right\"\n strokeWidth=\"3px\"\n aria-hidden=\"true\"\n aria-label=\"Columns\"\n />\n </MenuButton>\n <MenuList>\n <div className=\"tableMenu\">\n <div className=\"menuHeader\">Show / Hide Columns</div>\n <div className=\"menuContent\">\n {columns.map((column) => (\n <div key={column.id}>\n <Checkbox\n checked={column.getIsVisible()}\n label={\n typeof column.columnDef.header === 'string'\n ? column.columnDef.header\n : _.capitalize(column.columnDef.id)\n }\n id={`visibility_${column.id}`}\n onChange={(e) =>\n handleChangeColumnVisibility(\n column.id,\n e.target.checked\n )\n }\n />\n </div>\n ))}\n </div>\n </div>\n </MenuList>\n </>\n )}\n </Menu>\n );\n\n function handleChangeColumnVisibility(colId: string, visible: boolean) {\n if (visible) {\n onChange(value.filter((id) => id !== colId));\n return;\n }\n\n onChange([...value, colId]);\n }\n}\n","import { ReactNode } from 'react';\n\nimport { IconProps } from '@@/Icon';\n\nimport { SearchBar } from './SearchBar';\nimport { Table } from './Table';\n\ntype Props = {\n title?: string;\n titleIcon?: IconProps['icon'];\n searchValue: string;\n onSearchChange(value: string): void;\n renderTableSettings?(): ReactNode;\n renderTableActions?(): ReactNode;\n description?: ReactNode;\n};\n\nexport function DatatableHeader({\n onSearchChange,\n renderTableActions,\n renderTableSettings,\n searchValue,\n title,\n titleIcon,\n description,\n}: Props) {\n if (!title) {\n return null;\n }\n\n return (\n <Table.Title label={title} icon={titleIcon} description={description}>\n <SearchBar value={searchValue} onChange={onSearchChange} />\n {renderTableActions && (\n <Table.Actions>{renderTableActions()}</Table.Actions>\n )}\n <Table.TitleActions>\n {!!renderTableSettings && renderTableSettings()}\n </Table.TitleActions>\n </Table.Title>\n );\n}\n","interface SelectedRowsCountProps {\n value: number;\n}\n\nexport function SelectedRowsCount({ value }: SelectedRowsCountProps) {\n return value !== 0 ? (\n <div className=\"infoBar\">{value} item(s) selected</div>\n ) : null;\n}\n","import { PaginationControls } from '@@/PaginationControls';\n\nimport { Table } from './Table';\nimport { SelectedRowsCount } from './SelectedRowsCount';\n\ninterface Props {\n totalSelected: number;\n pageSize: number;\n page: number;\n onPageChange(page: number): void;\n pageCount: number;\n onPageSizeChange(pageSize: number): void;\n}\n\nexport function DatatableFooter({\n totalSelected,\n pageSize,\n page,\n onPageChange,\n pageCount,\n onPageSizeChange,\n}: Props) {\n return (\n <Table.Footer>\n <SelectedRowsCount value={totalSelected} />\n <PaginationControls\n showAll\n pageLimit={pageSize}\n page={page + 1}\n onPageChange={(page) => onPageChange(page - 1)}\n pageCount={pageCount}\n onPageLimitChange={onPageSizeChange}\n />\n </Table.Footer>\n );\n}\n","import {\n Table as TableInstance,\n TableState,\n useReactTable,\n Row,\n Column,\n getCoreRowModel,\n getPaginationRowModel,\n getFilteredRowModel,\n getSortedRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFacetedMinMaxValues,\n getExpandedRowModel,\n TableOptions,\n TableMeta,\n} from '@tanstack/react-table';\nimport { ReactNode, useMemo } from 'react';\nimport clsx from 'clsx';\nimport _ from 'lodash';\n\nimport { AutomationTestingProps } from '@/types';\n\nimport { IconProps } from '@@/Icon';\n\nimport { DatatableHeader } from './DatatableHeader';\nimport { DatatableFooter } from './DatatableFooter';\nimport { defaultGetRowId } from './defaultGetRowId';\nimport { Table } from './Table';\nimport { useGoToHighlightedRow } from './useGoToHighlightedRow';\nimport { BasicTableSettings } from './types';\nimport { DatatableContent } from './DatatableContent';\nimport { createSelectColumn } from './select-column';\nimport { TableRow } from './TableRow';\nimport { type TableState as GlobalTableState } from './useTableState';\n\nexport type PaginationProps =\n | {\n isServerSidePagination?: false;\n totalCount?: never;\n page?: never;\n onPageChange?: never;\n }\n | {\n isServerSidePagination: true;\n totalCount: number;\n page: number;\n onPageChange(page: number): void;\n };\n\nexport interface Props<\n D extends Record<string, unknown>,\n TMeta extends TableMeta<D> = TableMeta<D>\n> extends AutomationTestingProps {\n dataset: D[];\n columns: TableOptions<D>['columns'];\n renderTableSettings?(instance: TableInstance<D>): ReactNode;\n renderTableActions?(selectedRows: D[]): ReactNode;\n disableSelect?: boolean;\n getRowId?(row: D): string;\n isRowSelectable?(row: Row<D>): boolean;\n emptyContentLabel?: string;\n title?: string;\n titleIcon?: IconProps['icon'];\n initialTableState?: Partial<TableState>;\n isLoading?: boolean;\n description?: ReactNode;\n highlightedItemId?: string;\n settingsManager: GlobalTableState<BasicTableSettings>;\n renderRow?(row: Row<D>, highlightedItemId?: string): ReactNode;\n getRowCanExpand?(row: Row<D>): boolean;\n noWidget?: boolean;\n meta?: TMeta;\n}\n\nexport function Datatable<\n D extends Record<string, unknown>,\n TMeta extends TableMeta<D> = TableMeta<D>\n>({\n columns,\n dataset,\n renderTableSettings = () => null,\n renderTableActions = () => null,\n disableSelect,\n getRowId = defaultGetRowId,\n isRowSelectable = () => true,\n title,\n titleIcon,\n emptyContentLabel,\n initialTableState = {},\n isLoading,\n description,\n settingsManager: settings,\n renderRow = defaultRenderRow,\n highlightedItemId,\n noWidget,\n getRowCanExpand,\n 'data-cy': dataCy,\n meta,\n onPageChange = () => {},\n page,\n totalCount = dataset.length,\n isServerSidePagination = false,\n}: Props<D, TMeta> & PaginationProps) {\n const pageCount = useMemo(\n () => Math.ceil(totalCount / settings.pageSize),\n [settings.pageSize, totalCount]\n );\n\n const enableRowSelection = getIsSelectionEnabled(\n disableSelect,\n isRowSelectable\n );\n\n const allColumns = useMemo(\n () => _.compact([!disableSelect && createSelectColumn<D>(), ...columns]),\n [disableSelect, columns]\n );\n\n const tableInstance = useReactTable<D>({\n columns: allColumns,\n data: dataset,\n initialState: {\n pagination: {\n pageSize: settings.pageSize,\n pageIndex: page || 0,\n },\n sorting: settings.sortBy ? [settings.sortBy] : [],\n globalFilter: settings.search,\n\n ...initialTableState,\n },\n defaultColumn: {\n enableColumnFilter: false,\n enableHiding: true,\n sortingFn: 'alphanumeric',\n },\n enableRowSelection,\n autoResetExpanded: false,\n globalFilterFn,\n getRowId,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getFacetedMinMaxValues: getFacetedMinMaxValues(),\n getExpandedRowModel: getExpandedRowModel(),\n getRowCanExpand,\n getColumnCanGlobalFilter,\n ...(isServerSidePagination\n ? { manualPagination: true, pageCount }\n : {\n getSortedRowModel: getSortedRowModel(),\n }),\n meta,\n });\n\n const tableState = tableInstance.getState();\n\n useGoToHighlightedRow(\n isServerSidePagination,\n tableState.pagination.pageSize,\n tableInstance.getCoreRowModel().rows,\n handlePageChange,\n highlightedItemId\n );\n\n const selectedRowModel = tableInstance.getSelectedRowModel();\n const selectedItems = selectedRowModel.rows.map((row) => row.original);\n\n return (\n <Table.Container noWidget={noWidget}>\n <DatatableHeader\n onSearchChange={handleSearchBarChange}\n searchValue={settings.search}\n title={title}\n titleIcon={titleIcon}\n description={description}\n renderTableActions={() => renderTableActions(selectedItems)}\n renderTableSettings={() => renderTableSettings(tableInstance)}\n />\n\n <DatatableContent<D>\n tableInstance={tableInstance}\n renderRow={(row) => renderRow(row, highlightedItemId)}\n emptyContentLabel={emptyContentLabel}\n isLoading={isLoading}\n onSortChange={handleSortChange}\n data-cy={dataCy}\n />\n\n <DatatableFooter\n onPageChange={handlePageChange}\n onPageSizeChange={handlePageSizeChange}\n page={typeof page === 'number' ? page : tableState.pagination.pageIndex}\n pageSize={tableState.pagination.pageSize}\n pageCount={tableInstance.getPageCount()}\n totalSelected={selectedItems.length}\n />\n </Table.Container>\n );\n\n function handleSearchBarChange(value: string) {\n tableInstance.setGlobalFilter(value);\n settings.setSearch(value);\n }\n\n function handlePageChange(page: number) {\n tableInstance.setPageIndex(page);\n onPageChange(page);\n }\n\n function handleSortChange(colId: string, desc: boolean) {\n settings.setSortBy(colId, desc);\n }\n\n function handlePageSizeChange(pageSize: number) {\n tableInstance.setPageSize(pageSize);\n settings.setPageSize(pageSize);\n }\n}\n\nfunction defaultRenderRow<D extends Record<string, unknown>>(\n row: Row<D>,\n highlightedItemId?: string\n) {\n return (\n <TableRow<D>\n cells={row.getVisibleCells()}\n className={clsx({\n active: highlightedItemId === row.id,\n })}\n />\n );\n}\n\nfunction getIsSelectionEnabled<D extends Record<string, unknown>>(\n disabledSelect?: boolean,\n isRowSelectable?: Props<D>['isRowSelectable']\n) {\n if (disabledSelect) {\n return false;\n }\n\n if (isRowSelectable) {\n return isRowSelectable;\n }\n\n return true;\n}\n\nfunction globalFilterFn<D>(\n row: Row<D>,\n columnId: string,\n filterValue: null | string\n): boolean {\n const value = row.getValue(columnId);\n\n if (filterValue === null || filterValue === '') {\n return true;\n }\n\n if (value == null) {\n return false;\n }\n\n const filterValueLower = filterValue.toLowerCase();\n\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n ) {\n return value.toString().toLowerCase().includes(filterValueLower);\n }\n\n if (Array.isArray(value)) {\n return value.some((item) =>\n item.toString().toLowerCase().includes(filterValueLower)\n );\n }\n\n return false;\n}\n\nfunction getColumnCanGlobalFilter<D>(column: Column<D, unknown>): boolean {\n if (column.id === 'select') {\n return false;\n }\n return true;\n}\n","import { ColumnDef, Row } from '@tanstack/react-table';\n\nimport { Checkbox } from '@@/form-components/Checkbox';\n\nexport function createSelectColumn<T>(): ColumnDef<T> {\n let lastSelectedId = '';\n\n return {\n id: 'select',\n header: ({ table }) => (\n <Checkbox\n id=\"select-all\"\n checked={table.getIsAllRowsSelected()}\n indeterminate={table.getIsSomeRowsSelected()}\n onChange={table.getToggleAllRowsSelectedHandler()}\n disabled={table.getRowModel().rows.every((row) => !row.getCanSelect())}\n onClick={(e) => {\n e.stopPropagation();\n }}\n />\n ),\n cell: ({ row, table }) => (\n <Checkbox\n id={`select-row-${row.id}`}\n checked={row.getIsSelected()}\n indeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n disabled={!row.getCanSelect()}\n onClick={(e) => {\n e.stopPropagation();\n\n if (e.shiftKey) {\n const { rows, rowsById } = table.getRowModel();\n const rowsToToggle = getRowRange(rows, row.id, lastSelectedId);\n const isLastSelected = rowsById[lastSelectedId].getIsSelected();\n rowsToToggle.forEach((row) => row.toggleSelected(isLastSelected));\n }\n\n lastSelectedId = row.id;\n }}\n />\n ),\n enableHiding: false,\n meta: {\n width: 50,\n },\n };\n}\n\nfunction getRowRange<T>(rows: Array<Row<T>>, idA: string, idB: string) {\n const range: Array<Row<T>> = [];\n let foundStart = false;\n let foundEnd = false;\n for (let index = 0; index < rows.length; index += 1) {\n const row = rows[index];\n if (row.id === idA || row.id === idB) {\n if (foundStart) {\n foundEnd = true;\n }\n if (!foundStart) {\n foundStart = true;\n }\n }\n\n if (foundStart) {\n range.push(row);\n }\n\n if (foundEnd) {\n break;\n }\n }\n\n return range;\n}\n","import _ from 'lodash';\nimport { useRef, useLayoutEffect, useEffect } from 'react';\n\nexport function useGoToHighlightedRow<T extends { id: string }>(\n isServerSidePagination: boolean,\n pageSize: number,\n rows: Array<T>,\n goToPage: (page: number) => void,\n highlightedItemId?: string\n) {\n const handlePageChangeRef = useRef(goToPage);\n useLayoutEffect(() => {\n handlePageChangeRef.current = goToPage;\n });\n\n const highlightedItemIdRef = useRef<string>();\n\n useEffect(() => {\n if (\n !isServerSidePagination &&\n highlightedItemId &&\n highlightedItemId !== highlightedItemIdRef.current\n ) {\n const page = getRowPage(highlightedItemId, pageSize, rows);\n if (page) {\n handlePageChangeRef.current(page);\n }\n highlightedItemIdRef.current = highlightedItemId;\n }\n }, [highlightedItemId, isServerSidePagination, rows, pageSize]);\n}\n\nfunction getRowPage<T extends { id: string }>(\n rowID: string,\n pageSize: number,\n rows: Array<T>\n) {\n const totalRows = rows.length;\n\n if (!rowID || pageSize > totalRows) {\n return 0;\n }\n\n const paginatedData = _.chunk(rows, pageSize);\n\n const itemPage = paginatedData.findIndex((sub) =>\n sub.some((row) => row.id === rowID)\n );\n\n return itemPage;\n}\n","import { Row, Table as TableInstance } from '@tanstack/react-table';\n\nimport { AutomationTestingProps } from '@/types';\n\nimport { Table } from './Table';\n\ninterface Props<D extends Record<string, unknown>>\n extends AutomationTestingProps {\n tableInstance: TableInstance<D>;\n renderRow(row: Row<D>): React.ReactNode;\n onSortChange?(colId: string, desc: boolean): void;\n isLoading?: boolean;\n emptyContentLabel?: string;\n}\n\nexport function DatatableContent<D extends Record<string, unknown>>({\n tableInstance,\n renderRow,\n onSortChange,\n isLoading,\n emptyContentLabel,\n 'data-cy': dataCy,\n}: Props<D>) {\n const headerGroups = tableInstance.getHeaderGroups();\n const pageRowModel = tableInstance.getPaginationRowModel();\n\n return (\n <Table data-cy={dataCy}>\n <thead>\n {headerGroups.map((headerGroup) => (\n <Table.HeaderRow<D>\n key={headerGroup.id}\n headers={headerGroup.headers}\n onSortChange={onSortChange}\n />\n ))}\n </thead>\n <tbody>\n <Table.Content<D>\n rows={pageRowModel.rows}\n isLoading={isLoading}\n emptyContent={emptyContentLabel}\n renderRow={renderRow}\n />\n </tbody>\n </Table>\n );\n}\n","import clsx from 'clsx';\nimport { useMemo } from 'react';\nimport { Menu, MenuButton, MenuPopover } from '@reach/menu-button';\nimport { Column } from '@tanstack/react-table';\nimport { Check, Filter } from 'lucide-react';\n\nimport { getValueAsArrayOfStrings } from '@/portainer/helpers/array';\n\nimport { Icon } from '@@/Icon';\n\ninterface MultipleSelectionFilterProps {\n options: string[];\n value: string[];\n filterKey: string;\n onChange: (value: string[]) => void;\n menuTitle?: string;\n}\n\nexport function MultipleSelectionFilter({\n options,\n value = [],\n filterKey,\n onChange,\n menuTitle = 'Filter by state',\n}: MultipleSelectionFilterProps) {\n const enabled = value.length > 0;\n return (\n <div>\n <Menu>\n <MenuButton\n className={clsx('table-filter', { 'filter-active': enabled })}\n >\n <div className=\"flex items-center gap-1\">\n Filter\n <Icon icon={enabled ? Check : Filter} />\n </div>\n </MenuButton>\n <MenuPopover className=\"dropdown-menu\">\n <div className=\"tableMenu\">\n <div className=\"menuHeader\">{menuTitle}</div>\n <div className=\"menuContent\">\n {options.map((option, index) => (\n <div className=\"md-checkbox\" key={index}>\n <input\n id={`filter_${filterKey}_${index}`}\n type=\"checkbox\"\n checked={value.includes(option)}\n onChange={() => handleChange(option)}\n />\n <label htmlFor={`filter_${filterKey}_${index}`}>\n {option}\n </label>\n </div>\n ))}\n </div>\n </div>\n </MenuPopover>\n </Menu>\n </div>\n );\n\n function handleChange(option: string) {\n if (value.includes(option)) {\n onChange(value.filter((o) => o !== option));\n\n return;\n }\n\n onChange([...value, option]);\n }\n}\n\nexport function filterHOC<TData extends Record<string, unknown>>(\n menuTitle: string\n) {\n return function Filter({\n column: { getFilterValue, setFilterValue, getFacetedRowModel, id },\n }: {\n column: Column<TData>;\n }) {\n const { flatRows } = getFacetedRowModel();\n\n const options = useMemo(() => {\n const options = new Set<string>();\n flatRows.forEach(({ getValue }) => {\n const value = getValue<string>(id);\n\n options.add(value);\n });\n return Array.from(options);\n }, [flatRows, id]);\n\n const value = getFilterValue();\n\n const valueAsArray = getValueAsArrayOfStrings(value);\n\n return (\n <MultipleSelectionFilter\n options={options}\n filterKey={id}\n value={valueAsArray}\n onChange={setFilterValue}\n menuTitle={menuTitle}\n />\n );\n };\n}\n","import { ColumnDef, CellContext } from '@tanstack/react-table';\n\nimport { Link } from '@@/Link';\n\nexport function buildNameColumn<T extends Record<string, unknown>>(\n nameKey: keyof T,\n idKey: string,\n path: string,\n idParam = 'id'\n): ColumnDef<T> {\n const cell = createCell<T>();\n\n return {\n header: 'Name',\n accessorKey: nameKey,\n id: 'name',\n cell,\n enableSorting: true,\n enableHiding: false,\n };\n\n function createCell<T extends Record<string, unknown>>() {\n return function NameCell({ renderValue, row }: CellContext<T, unknown>) {\n const name = renderValue() || '';\n\n if (typeof name !== 'string') {\n return null;\n }\n\n return (\n <Link\n to={path}\n params={{ [idParam]: row.original[idKey] }}\n title={name}\n >\n {name}\n </Link>\n );\n };\n }\n}\n","import { createContext, PropsWithChildren, useContext } from 'react';\n\nexport function createRowContext<TContext>() {\n const Context = createContext<TContext | null>(null);\n Context.displayName = 'RowContext';\n\n return { RowProvider, useRowContext };\n\n function RowProvider({\n children,\n context,\n }: PropsWithChildren<{ context: TContext }>) {\n return <Context.Provider value={context}>{children}</Context.Provider>;\n }\n\n function useRowContext() {\n const context = useContext(Context);\n if (!context) {\n throw new Error('should be nested under RowProvider');\n }\n\n return context;\n }\n}\n","import { ReactNode } from 'react';\nimport { Search, X } from 'lucide-react';\nimport clsx from 'clsx';\n\nimport { useLocalStorage } from '@/react/hooks/useLocalStorage';\nimport { AutomationTestingProps } from '@/types';\nimport { useDebounce } from '@/react/hooks/useDebounce';\n\nimport { Button } from '@@/buttons';\n\ninterface Props extends AutomationTestingProps {\n value: string;\n placeholder?: string;\n onChange(value: string): void;\n className?: string;\n children?: ReactNode;\n}\n\nexport function SearchBar({\n value,\n placeholder = 'Search...',\n onChange,\n 'data-cy': dataCy,\n className,\n children,\n}: Props) {\n const [searchValue, setSearchValue] = useDebounce(value, onChange);\n\n function onClear() {\n setSearchValue('');\n }\n\n return (\n <div\n className={clsx('searchBar flex min-w-[90px] items-center', className)}\n >\n <Search className=\"searchIcon lucide shrink-0\" />\n <input\n type=\"text\"\n className=\"searchInput\"\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder={placeholder}\n data-cy={dataCy}\n />\n {children}\n <Button onClick={onClear} icon={X} color=\"none\" disabled={!searchValue} />\n </div>\n );\n}\n\nexport function useSearchBarState(\n key: string\n): [string, (value: string) => void] {\n const filterKey = keyBuilder(key);\n const [value, setValue] = useLocalStorage(filterKey, '', sessionStorage);\n\n return [value, setValue];\n\n function keyBuilder(key: string) {\n return `datatable_text_filter_${key}`;\n }\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\n\nimport { AutomationTestingProps } from '@/types';\n\nimport { TableContainer } from './TableContainer';\nimport { TableActions } from './TableActions';\nimport { TableFooter } from './TableFooter';\nimport { TableTitleActions } from './TableTitleActions';\nimport { TableSettingsMenu } from './TableSettingsMenu';\nimport { TableTitle } from './TableTitle';\nimport { TableContent } from './TableContent';\nimport { TableHeaderCell } from './TableHeaderCell';\nimport { TableHeaderRow } from './TableHeaderRow';\nimport { TableRow } from './TableRow';\n\ninterface Props extends AutomationTestingProps {\n className?: string;\n}\n\nfunction MainComponent({\n children,\n className,\n 'data-cy': dataCy,\n}: PropsWithChildren<Props>) {\n return (\n <div className=\"table-responsive\">\n <table\n data-cy={dataCy}\n className={clsx(\n 'table-hover table-filters nowrap-cells table',\n className\n )}\n >\n {children}\n </table>\n </div>\n );\n}\n\nMainComponent.displayName = 'Table';\n\ninterface SubComponents {\n Container: typeof TableContainer;\n Actions: typeof TableActions;\n TitleActions: typeof TableTitleActions;\n HeaderCell: typeof TableHeaderCell;\n SettingsMenu: typeof TableSettingsMenu;\n Title: typeof TableTitle;\n Row: typeof TableRow;\n HeaderRow: typeof TableHeaderRow;\n Content: typeof TableContent;\n Footer: typeof TableFooter;\n}\n\nexport const Table: typeof MainComponent & SubComponents =\n MainComponent as typeof MainComponent & SubComponents;\n\nTable.Actions = TableActions;\nTable.TitleActions = TableTitleActions;\nTable.Container = TableContainer;\nTable.HeaderCell = TableHeaderCell;\nTable.SettingsMenu = TableSettingsMenu;\nTable.Title = TableTitle;\nTable.Row = TableRow;\nTable.HeaderRow = TableHeaderRow;\nTable.Content = TableContent;\nTable.Footer = TableFooter;\n","import clsx from 'clsx';\nimport { Children, PropsWithChildren } from 'react';\n\ninterface Props {\n className?: string;\n}\n\nexport function TableActions({\n children,\n className,\n}: PropsWithChildren<Props>) {\n if (Children.count(children) === 0) {\n return null;\n }\n\n return <div className={clsx('actionBar', className)}>{children}</div>;\n}\n","import { PropsWithChildren } from 'react';\n\nimport { Widget, WidgetBody } from '@@/Widget';\n\ninterface Props {\n // workaround to remove the widget, ideally we should have a different component to wrap the table with a widget\n noWidget?: boolean;\n}\n\nexport function TableContainer({\n children,\n noWidget = false,\n}: PropsWithChildren<Props>) {\n if (noWidget) {\n return <div className=\"datatable\">{children}</div>;\n }\n\n return (\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <div className=\"datatable\">\n <Widget>\n <WidgetBody className=\"no-padding\">{children}</WidgetBody>\n </Widget>\n </div>\n </div>\n </div>\n );\n}\n","import { Fragment, PropsWithChildren } from 'react';\nimport { Row } from '@tanstack/react-table';\n\ninterface Props<T extends Record<string, unknown> = Record<string, unknown>> {\n isLoading?: boolean;\n rows: Row<T>[];\n emptyContent?: string;\n renderRow(row: Row<T>): React.ReactNode;\n}\n\nexport function TableContent<\n T extends Record<string, unknown> = Record<string, unknown>\n>({\n isLoading = false,\n rows,\n emptyContent = 'No items available',\n renderRow,\n}: Props<T>) {\n if (isLoading) {\n return <TableContentOneColumn>Loading...</TableContentOneColumn>;\n }\n\n if (!rows.length) {\n return <TableContentOneColumn>{emptyContent}</TableContentOneColumn>;\n }\n\n return (\n <>\n {rows.map((row) => (\n <Fragment key={row.id}>{renderRow(row)}</Fragment>\n ))}\n </>\n );\n}\n\nfunction TableContentOneColumn({ children }: PropsWithChildren<unknown>) {\n // using MAX_SAFE_INTEGER to make sure the single column will be the size of the table\n return (\n <tr>\n <td colSpan={Number.MAX_SAFE_INTEGER} className=\"text-muted text-center\">\n {children}\n </td>\n </tr>\n );\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\n\nexport function TableFooter({\n children,\n className,\n}: PropsWithChildren<unknown> & { className?: string }) {\n return <footer className={clsx('footer', className)}>{children}</footer>;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"sortable\":\"app-react-components-datatables-TableHeaderCell-module__sortable\",\"sortingActive\":\"app-react-components-datatables-TableHeaderCell-module__sortingActive\"};","import clsx from 'clsx';\nimport { CSSProperties, PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './TableHeaderCell.module.css';\nimport { TableHeaderSortIcons } from './TableHeaderSortIcons';\n\ninterface Props {\n canSort: boolean;\n isSorted: boolean;\n isSortedDesc?: boolean;\n onSortClick: (desc: boolean) => void;\n render: () => ReactNode;\n renderFilter?: () => ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport function TableHeaderCell({\n canSort,\n render,\n onSortClick,\n isSorted,\n isSortedDesc = true,\n\n renderFilter,\n className,\n style,\n}: Props) {\n return (\n <th style={style} className={className}>\n <div className=\"flex h-full flex-row flex-nowrap items-center gap-1\">\n <SortWrapper\n canSort={canSort}\n onClick={onSortClick}\n isSorted={isSorted}\n isSortedDesc={isSortedDesc}\n >\n {render()}\n </SortWrapper>\n {renderFilter ? renderFilter() : null}\n </div>\n </th>\n );\n}\n\ninterface SortWrapperProps {\n canSort: boolean;\n isSorted: boolean;\n isSortedDesc?: boolean;\n onClick?: (desc: boolean) => void;\n}\n\nfunction SortWrapper({\n canSort,\n children,\n onClick = () => {},\n isSorted,\n isSortedDesc = true,\n}: PropsWithChildren<SortWrapperProps>) {\n if (!canSort) {\n return <>{children}</>;\n }\n\n return (\n <button\n type=\"button\"\n onClick={() => onClick(!isSortedDesc)}\n className={clsx(\n '!ml-0 h-full border-none !bg-transparent !px-0 focus:border-none',\n styles.sortable,\n isSorted && styles.sortingActive\n )}\n >\n <div className=\"flex h-full w-full flex-row items-center justify-start\">\n {children}\n <TableHeaderSortIcons\n sorted={isSorted}\n descending={isSorted && !!isSortedDesc}\n />\n </div>\n </button>\n );\n}\n\ninterface TableColumnHeaderAngularProps {\n colTitle: string;\n canSort: boolean;\n isSorted?: boolean;\n isSortedDesc?: boolean;\n}\n\nexport function TableColumnHeaderAngular({\n canSort,\n isSorted,\n colTitle,\n isSortedDesc = true,\n}: TableColumnHeaderAngularProps) {\n return (\n <div className=\"flex h-full flex-row flex-nowrap\">\n <SortWrapper\n canSort={canSort}\n isSorted={!!isSorted}\n isSortedDesc={isSortedDesc}\n >\n {colTitle}\n </SortWrapper>\n </div>\n );\n}\n","import { Header, flexRender } from '@tanstack/react-table';\n\nimport { filterHOC } from './Filter';\nimport { TableHeaderCell } from './TableHeaderCell';\n\ninterface Props<D extends Record<string, unknown> = Record<string, unknown>> {\n headers: Header<D, unknown>[];\n onSortChange?(colId: string, desc: boolean): void;\n}\n\nexport function TableHeaderRow<\n D extends Record<string, unknown> = Record<string, unknown>\n>({ headers, onSortChange }: Props<D>) {\n return (\n <tr>\n {headers.map((header) => {\n const sortDirection = header.column.getIsSorted();\n const {\n meta: { className, width } = { className: '', width: undefined },\n } = header.column.columnDef;\n\n return (\n <TableHeaderCell\n className={className}\n style={{\n width,\n }}\n key={header.id}\n canSort={header.column.getCanSort()}\n onSortClick={(desc) => {\n header.column.toggleSorting(desc);\n if (onSortChange) {\n onSortChange(header.id, desc);\n }\n }}\n isSorted={!!sortDirection}\n isSortedDesc={sortDirection ? sortDirection === 'desc' : false}\n render={() =>\n flexRender(header.column.columnDef.header, header.getContext())\n }\n renderFilter={\n header.column.getCanFilter()\n ? () =>\n flexRender(\n header.column.columnDef.meta?.filter ||\n filterHOC('Filter'),\n {\n column: header.column,\n }\n )\n : undefined\n }\n />\n );\n })}\n </tr>\n );\n}\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgSortArrowDown = function SvgSortArrowDown(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 8 12\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D0D5DD\",\n d: \"M4.473.727a.593.593 0 1 0-1.186 0h1.186ZM3.88 11.274l-.406.432c.233.22.599.214.826-.013l-.42-.42Zm3.056-2.218a.593.593 0 1 0-.839-.839l.84.84Zm-5.45-.851a.593.593 0 1 0-.814.864l.813-.864Zm1.8-7.478v10.547h1.187V.727H3.287Zm2.811 7.49-2.636 2.637.839.84 2.636-2.638-.839-.839Zm-1.81 2.625L1.485 8.205l-.813.864 2.802 2.637.813-.864Z\"\n })));\n};\nexport default SvgSortArrowDown;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgSortArrowUp = function SvgSortArrowUp(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 8 12\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#D0D5DD\",\n d: \"M3.526 11.273a.593.593 0 0 0 1.187 0H3.526ZM4.12.727l.406-.432A.593.593 0 0 0 3.7.307l.42.42ZM1.063 2.944a.593.593 0 1 0 .84.839l-.84-.84Zm5.451.851a.593.593 0 1 0 .814-.864l-.814.864Zm-1.801 7.478V.727H3.526v10.546h1.187Zm-2.81-7.49 2.636-2.637L3.7.307 1.063 2.944l.84.839Zm1.81-2.624 2.801 2.636.814-.864L4.526.295l-.813.864Z\"\n })));\n};\nexport default SvgSortArrowUp;","// extracted by mini-css-extract-plugin\nexport default {\"sortIcon\":\"app-react-components-datatables-TableHeaderSortIcons-module__sort-icon\",\"activeSortIcon\":\"app-react-components-datatables-TableHeaderSortIcons-module__active-sort-icon\"};","import clsx from 'clsx';\n\nimport SortDownIcon from './sort-arrow-down.svg?c';\nimport SortUpIcon from './sort-arrow-up.svg?c';\nimport styles from './TableHeaderSortIcons.module.css';\n\ninterface Props {\n sorted: boolean;\n descending: boolean;\n className?: string;\n}\n\nexport function TableHeaderSortIcons({ sorted, descending, className }: Props) {\n return (\n <div className=\"no-wrap w-min-max flex flex-row align-middle\">\n <SortDownIcon\n className={clsx(\n className,\n sorted && !descending && styles.activeSortIcon,\n styles.sortIcon\n )}\n aria-hidden=\"true\"\n />\n <SortUpIcon\n className={clsx(\n '-ml-1', // shift closer to SortDownIcon to match the mockup\n sorted && descending && styles.activeSortIcon,\n styles.sortIcon\n )}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","import { Cell, flexRender } from '@tanstack/react-table';\nimport clsx from 'clsx';\n\ninterface Props<D extends Record<string, unknown> = Record<string, unknown>> {\n cells: Cell<D, unknown>[];\n className?: string;\n onClick?: () => void;\n}\n\nexport function TableRow<\n D extends Record<string, unknown> = Record<string, unknown>\n>({ cells, className, onClick }: Props<D>) {\n return (\n <tr\n className={clsx(className, { 'cursor-pointer': !!onClick })}\n onClick={onClick}\n >\n {cells.map((cell) => (\n <td key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n ))}\n </tr>\n );\n}\n","import clsx from 'clsx';\nimport { Menu, MenuButton, MenuList } from '@reach/menu-button';\nimport { PropsWithChildren, ReactNode } from 'react';\nimport { MoreVertical } from 'lucide-react';\n\ninterface Props {\n quickActions?: ReactNode;\n}\n\nexport function TableSettingsMenu({\n quickActions,\n children,\n}: PropsWithChildren<Props>) {\n return (\n <Menu className=\"setting\">\n {({ isExpanded }) => (\n <>\n <MenuButton\n className={clsx('table-setting-menu-btn', {\n 'setting-active': isExpanded,\n })}\n >\n <MoreVertical\n size=\"13\"\n className=\"space-right\"\n strokeWidth=\"3px\"\n aria-hidden=\"true\"\n aria-label=\"Settings\"\n />\n </MenuButton>\n <MenuList>\n <div className=\"tableMenu\">\n <div className=\"menuHeader\">Table settings</div>\n <div className=\"menuContent\">{children}</div>\n {quickActions && (\n <div>\n <div className=\"menuHeader\">Quick actions</div>\n <div className=\"menuContent\">{quickActions}</div>\n </div>\n )}\n </div>\n </MenuList>\n </>\n )}\n </Menu>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"alertVisible\":\"app-react-components-datatables-TableSettingsMenuAutoRefresh-module__alert-visible\",\"alertHidden\":\"app-react-components-datatables-TableSettingsMenuAutoRefresh-module__alert-hidden\"};","import clsx from 'clsx';\nimport { useState } from 'react';\nimport { Check } from 'lucide-react';\n\nimport { Checkbox } from '@@/form-components/Checkbox';\nimport { Icon } from '@@/Icon';\n\nimport styles from './TableSettingsMenuAutoRefresh.module.css';\n\ninterface Props {\n onChange(value: number): void;\n value: number;\n}\n\nexport function TableSettingsMenuAutoRefresh({ onChange, value }: Props) {\n const [isCheckVisible, setIsCheckVisible] = useState(false);\n\n const isEnabled = value > 0;\n\n return (\n <>\n <Checkbox\n id=\"settings-auto-refresh\"\n label=\"Auto refresh\"\n checked={isEnabled}\n onChange={(e) => onChange(e.target.checked ? 10 : 0)}\n />\n\n {isEnabled && (\n <div>\n <label htmlFor=\"settings_refresh_rate\">Refresh rate</label>\n <select\n id=\"settings_refresh_rate\"\n className=\"small-select\"\n value={value}\n onChange={(e) => handleChange(e.target.value)}\n >\n <option value={10}>10s</option>\n <option value={30}>30s</option>\n <option value={60}>1min</option>\n <option value={120}>2min</option>\n <option value={300}>5min</option>\n </select>\n <span\n className={clsx(\n isCheckVisible ? styles.alertVisible : styles.alertHidden,\n styles.check\n )}\n onTransitionEnd={() => setIsCheckVisible(false)}\n >\n <Icon icon={Check} className=\"!ml-1\" mode=\"success\" />\n </span>\n </div>\n )}\n </>\n );\n\n function handleChange(value: string) {\n onChange(Number(value));\n setIsCheckVisible(true);\n }\n}\n","import { ComponentType, PropsWithChildren, ReactNode } from 'react';\nimport clsx from 'clsx';\n\nimport { Icon } from '@@/Icon';\n\ninterface Props {\n icon?: ReactNode | ComponentType<unknown>;\n label: string;\n description?: ReactNode;\n className?: string;\n}\n\nexport function TableTitle({\n icon,\n label,\n children,\n description,\n className,\n}: PropsWithChildren<Props>) {\n return (\n <>\n <div className={clsx('toolBar flex-col', className)}>\n <div className=\"flex w-full items-center gap-1 p-0\">\n <div className=\"toolBarTitle\">\n {icon && (\n <div className=\"widget-icon\">\n <Icon icon={icon} className=\"space-right\" />\n </div>\n )}\n\n {label}\n </div>\n {children}\n </div>\n </div>\n {!!description && <div className=\"toolBar !pt-0\">{description}</div>}\n </>\n );\n}\n","import { Children, PropsWithChildren } from 'react';\n\nexport function TableTitleActions({ children }: PropsWithChildren<unknown>) {\n if (Children.count(children) === 0) {\n return null;\n }\n\n return <div className=\"settings\">{children}</div>;\n}\n","export function defaultGetRowId<D extends Record<string, unknown>>(\n row: D\n): string {\n if (row.id && (typeof row.id === 'string' || typeof row.id === 'number')) {\n return row.id.toString();\n }\n\n if (row.Id && (typeof row.Id === 'string' || typeof row.Id === 'number')) {\n return row.Id.toString();\n }\n\n if (row.ID && (typeof row.ID === 'string' || typeof row.ID === 'number')) {\n return row.ID.toString();\n }\n\n return '';\n}\n","import { createStore } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\nimport { keyBuilder } from '@/react/hooks/useLocalStorage';\n\nexport interface PaginationTableSettings {\n pageSize: number;\n setPageSize: (pageSize: number) => void;\n}\n\nexport type ZustandSetFunc<T> = (\n partial: T | Partial<T> | ((state: T) => T | Partial<T>),\n replace?: boolean | undefined\n) => void;\n\nexport function paginationSettings<T extends PaginationTableSettings>(\n set: ZustandSetFunc<T>\n): PaginationTableSettings {\n return {\n pageSize: 10,\n setPageSize: (pageSize: number) => set((s) => ({ ...s, pageSize })),\n };\n}\n\nexport interface SortableTableSettings {\n sortBy: { id: string; desc: boolean };\n setSortBy: (id: string, desc: boolean) => void;\n}\n\nexport function sortableSettings<T extends SortableTableSettings>(\n set: ZustandSetFunc<T>,\n initialSortBy: string | { id: string; desc: boolean }\n): SortableTableSettings {\n return {\n sortBy:\n typeof initialSortBy === 'string'\n ? { id: initialSortBy, desc: false }\n : initialSortBy,\n setSortBy: (id: string, desc: boolean) =>\n set((s) => ({ ...s, sortBy: { id, desc } })),\n };\n}\n\nexport interface SettableColumnsTableSettings {\n hiddenColumns: string[];\n setHiddenColumns: (hiddenColumns: string[]) => void;\n}\n\nexport function hiddenColumnsSettings<T extends SettableColumnsTableSettings>(\n set: ZustandSetFunc<T>\n): SettableColumnsTableSettings {\n return {\n hiddenColumns: [],\n setHiddenColumns: (hiddenColumns: string[]) =>\n set((s) => ({ ...s, hiddenColumns })),\n };\n}\n\nexport interface RefreshableTableSettings {\n autoRefreshRate: number;\n setAutoRefreshRate: (autoRefreshRate: number) => void;\n}\n\nexport function refreshableSettings<T extends RefreshableTableSettings>(\n set: ZustandSetFunc<T>\n): RefreshableTableSettings {\n return {\n autoRefreshRate: 0,\n setAutoRefreshRate: (autoRefreshRate: number) =>\n set((s) => ({ ...s, autoRefreshRate })),\n };\n}\n\nexport interface BasicTableSettings\n extends SortableTableSettings,\n PaginationTableSettings {}\n\nexport function createPersistedStore<T extends BasicTableSettings>(\n storageKey: string,\n initialSortBy: string | { id: string; desc: boolean } = 'name',\n create: (set: ZustandSetFunc<T>) => Omit<T, keyof BasicTableSettings> = () =>\n ({} as T)\n) {\n return createStore<T>()(\n persist(\n (set) =>\n ({\n ...sortableSettings(\n set as ZustandSetFunc<SortableTableSettings>,\n initialSortBy\n ),\n ...paginationSettings(set as ZustandSetFunc<PaginationTableSettings>),\n ...create(set),\n } as T),\n {\n name: `datatable_settings_${keyBuilder(storageKey)}`,\n }\n )\n );\n}\n\n/** this class is just a dummy class to get return type of createPersistedStore\n * can be fixed after upgrade to ts 4.7+\n * https://stackoverflow.com/a/64919133\n */\nclass Wrapper<T extends BasicTableSettings> {\n // eslint-disable-next-line class-methods-use-this\n wrapped() {\n return createPersistedStore<T>('', '');\n }\n}\n\nexport type CreatePersistedStoreReturn<\n T extends BasicTableSettings = BasicTableSettings\n> = ReturnType<Wrapper<T>['wrapped']>;\n","import { useEffect, useCallback, useState } from 'react';\n\nexport function useRepeater(\n refreshRate: number,\n onRefresh?: () => Promise<void>\n) {\n const [intervalId, setIntervalId] = useState<NodeJS.Timeout | null>(null);\n\n const stopRepeater = useCallback(() => {\n if (!intervalId) {\n return;\n }\n\n clearInterval(intervalId);\n setIntervalId(null);\n }, [intervalId]);\n\n const startRepeater = useCallback(\n (refreshRate) => {\n if (intervalId || !onRefresh) {\n return;\n }\n\n setIntervalId(\n setInterval(async () => {\n await onRefresh();\n }, refreshRate * 1000)\n );\n },\n [intervalId, onRefresh]\n );\n\n useEffect(() => {\n if (!refreshRate || !onRefresh) {\n stopRepeater();\n } else {\n startRepeater(refreshRate);\n }\n\n return stopRepeater;\n }, [refreshRate, startRepeater, stopRepeater, intervalId, onRefresh]);\n}\n","import { useMemo, useState } from 'react';\nimport { useStore } from 'zustand';\n\nimport { useSearchBarState } from './SearchBar';\nimport { BasicTableSettings, CreatePersistedStoreReturn } from './types';\n\nexport type TableState<TSettings extends BasicTableSettings> = TSettings & {\n setSearch: (search: string) => void;\n search: string;\n};\n\nexport function useTableState<\n TSettings extends BasicTableSettings = BasicTableSettings\n>(store: CreatePersistedStoreReturn<TSettings>, storageKey: string) {\n const settings = useStore(store);\n\n const [search, setSearch] = useSearchBarState(storageKey);\n\n return useMemo(\n () => ({ ...settings, setSearch, search }),\n [settings, search, setSearch]\n );\n}\n\nexport function useTableStateWithoutStorage(\n defaultSortKey: string\n): BasicTableSettings & {\n setSearch: (search: string) => void;\n search: string;\n} {\n const [search, setSearch] = useState('');\n const [pageSize, setPageSize] = useState(10);\n const [sortBy, setSortBy] = useState({ id: defaultSortKey, desc: false });\n\n return {\n search,\n setSearch,\n pageSize,\n setPageSize,\n setSortBy: (id: string, desc: boolean) => setSortBy({ id, desc }),\n sortBy,\n };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"group\":\"app-react-components-form-components-ButtonSelector-ButtonSelector-module__group\"};","import clsx from 'clsx';\nimport { PropsWithChildren, ReactNode } from 'react';\n\nimport { ButtonGroup, Size } from '@@/buttons/ButtonGroup';\nimport { Button } from '@@/buttons';\n\nimport styles from './ButtonSelector.module.css';\n\nexport interface Option<T> {\n value: T;\n label?: ReactNode;\n}\n\ninterface Props<T> {\n value: T;\n onChange(value: T): void;\n options: Option<T>[];\n size?: Size;\n disabled?: boolean;\n readOnly?: boolean;\n className?: string;\n}\n\nexport function ButtonSelector<T extends string | number>({\n value,\n onChange,\n size,\n options,\n disabled,\n readOnly,\n className,\n}: Props<T>) {\n return (\n <ButtonGroup size={size} className={clsx(styles.group, className)}>\n {options.map((option) => (\n <OptionItem\n key={option.value}\n selected={value === option.value}\n onChange={() => onChange(option.value)}\n disabled={disabled}\n readOnly={readOnly}\n >\n {option.label || option.value.toString()}\n </OptionItem>\n ))}\n </ButtonGroup>\n );\n}\n\ninterface OptionItemProps {\n selected: boolean;\n onChange(): void;\n disabled?: boolean;\n readOnly?: boolean;\n}\n\nfunction OptionItem({\n selected,\n children,\n onChange,\n disabled,\n readOnly,\n}: PropsWithChildren<OptionItemProps>) {\n return (\n <Button\n color=\"light\"\n as=\"label\"\n disabled={disabled || readOnly}\n className={clsx(\n {\n active: selected,\n },\n '!static !z-auto'\n )}\n >\n {children}\n <input\n type=\"radio\"\n checked={selected}\n onChange={onChange}\n disabled={disabled}\n readOnly={readOnly}\n />\n </Button>\n );\n}\n","import clsx from 'clsx';\nimport {\n forwardRef,\n useRef,\n useEffect,\n MutableRefObject,\n ChangeEventHandler,\n HTMLProps,\n} from 'react';\n\ninterface Props extends HTMLProps<HTMLInputElement> {\n checked?: boolean;\n indeterminate?: boolean;\n title?: string;\n label?: string;\n id: string;\n className?: string;\n role?: string;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n bold?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, Props>(\n (\n {\n indeterminate,\n title,\n label,\n id,\n checked,\n onChange,\n bold = true,\n ...props\n }: Props,\n ref\n ) => {\n const defaultRef = useRef<HTMLInputElement>(null);\n let resolvedRef = ref as MutableRefObject<HTMLInputElement | null>;\n if (!ref) {\n resolvedRef = defaultRef;\n }\n\n useEffect(() => {\n if (resolvedRef === null || resolvedRef.current === null) {\n return;\n }\n\n if (typeof indeterminate !== 'undefined') {\n resolvedRef.current.indeterminate = indeterminate;\n }\n }, [resolvedRef, indeterminate]);\n\n return (\n <div className=\"md-checkbox flex\" title={title || label}>\n <input\n id={id}\n type=\"checkbox\"\n ref={resolvedRef}\n onChange={onChange}\n checked={checked}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n <label htmlFor={id} className={clsx({ '!font-normal': !bold })}>\n {label}\n </label>\n </div>\n );\n }\n);\n","import { List } from 'lucide-react';\n\nimport { CodeEditor } from '@@/CodeEditor';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Button } from '@@/buttons';\n\nimport { convertToArrayOfStrings, parseDotEnvFile } from './utils';\nimport { type Value } from './types';\n\nexport function AdvancedMode({\n value,\n onChange,\n onSimpleModeClick,\n}: {\n value: Value;\n onChange: (value: Value) => void;\n onSimpleModeClick: () => void;\n}) {\n const editorValue = convertToArrayOfStrings(value).join('\\n');\n\n return (\n <>\n <Button\n size=\"small\"\n color=\"link\"\n icon={List}\n className=\"!ml-0 p-0 hover:no-underline\"\n onClick={onSimpleModeClick}\n >\n Simple mode\n </Button>\n\n <TextTip color=\"blue\" inline={false}>\n Switch to simple mode to define variables line by line, or load from\n .env file\n </TextTip>\n\n <CodeEditor\n id=\"environment-variables-editor\"\n value={editorValue}\n onChange={handleEditorChange}\n placeholder=\"e.g. key=value\"\n />\n </>\n );\n\n function handleEditorChange(value: string) {\n onChange(parseDotEnvFile(value));\n }\n}\n","export function readFileAsArrayBuffer(file: File): Promise<ArrayBuffer | null> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = () => {\n if (reader.result instanceof ArrayBuffer) {\n resolve(reader.result);\n }\n };\n reader.onerror = (error) => reject(error);\n });\n}\n\nexport function readFileAsText(file: File): Promise<string | null> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsText(file);\n reader.onload = () => {\n if (typeof reader.result === 'string') {\n resolve(reader.result);\n }\n };\n reader.onerror = (error) => reject(error);\n });\n}\n","import { ComponentProps, InputHTMLAttributes } from 'react';\n\nimport { InputGroup } from '../InputGroup';\n\nexport function InputLabeled({\n label,\n className,\n size,\n id,\n ...props\n}: {\n label: string;\n className?: string;\n size?: ComponentProps<typeof InputGroup>['size'];\n} & Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'children'>) {\n return (\n <InputGroup className={className} size={size}>\n <InputGroup.Addon as=\"label\" htmlFor={id}>\n {label}\n </InputGroup.Addon>\n <InputGroup.Input\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n id={id}\n />\n </InputGroup>\n );\n}\n","import { Edit, Plus } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { readFileAsText } from '@/portainer/services/fileUploadReact';\n\nimport { Button } from '@@/buttons';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { FileUploadField } from '@@/form-components/FileUpload';\nimport { InputList } from '@@/form-components/InputList';\nimport { ArrayError, ItemProps } from '@@/form-components/InputList/InputList';\nimport { InputLabeled } from '@@/form-components/Input/InputLabeled';\n\nimport { FormError } from '../FormError';\n\nimport { type EnvVar, type Value } from './types';\nimport { parseDotEnvFile } from './utils';\n\nexport function SimpleMode({\n value,\n onChange,\n onAdvancedModeClick,\n errors,\n}: {\n value: Value;\n onChange: (value: Value) => void;\n onAdvancedModeClick: () => void;\n errors?: ArrayError<Value>;\n}) {\n return (\n <>\n <Button\n size=\"small\"\n color=\"link\"\n icon={Edit}\n className=\"!ml-0 p-0 hover:no-underline\"\n onClick={onAdvancedModeClick}\n >\n Advanced mode\n </Button>\n\n <TextTip color=\"blue\" inline={false}>\n Switch to advanced mode to copy & paste multiple variables\n </TextTip>\n\n <InputList\n aria-label=\"environment variables list\"\n onChange={onChange}\n value={value}\n isAddButtonHidden\n item={Item}\n errors={errors}\n />\n\n <div className=\"flex gap-2\">\n <Button\n onClick={() => onChange([...value, { name: '', value: '' }])}\n color=\"default\"\n icon={Plus}\n >\n Add an environment variable\n </Button>\n\n <FileEnv onChooseFile={(add) => onChange([...value, ...add])} />\n </div>\n </>\n );\n}\n\nfunction Item({\n item,\n onChange,\n disabled,\n error,\n readOnly,\n index,\n}: ItemProps<EnvVar>) {\n return (\n <div className=\"relative flex w-full flex-col\">\n <div className=\"flex w-full items-center gap-2\">\n <InputLabeled\n className=\"w-1/2\"\n label=\"name\"\n value={item.name}\n onChange={(e) => handleChange({ name: e.target.value })}\n disabled={disabled}\n readOnly={readOnly}\n placeholder=\"e.g. FOO\"\n size=\"small\"\n id={`env-name${index}`}\n />\n <InputLabeled\n className=\"w-1/2\"\n label=\"value\"\n value={item.value}\n onChange={(e) => handleChange({ value: e.target.value })}\n disabled={disabled}\n readOnly={readOnly}\n placeholder=\"e.g. bar\"\n size=\"small\"\n id={`env-value${index}`}\n />\n </div>\n\n {!!error && (\n <div className=\"absolute -bottom-5\">\n <FormError className=\"m-0\">{Object.values(error)[0]}</FormError>\n </div>\n )}\n </div>\n );\n\n function handleChange(partial: Partial<EnvVar>) {\n onChange({ ...item, ...partial });\n }\n}\n\nfunction FileEnv({ onChooseFile }: { onChooseFile: (file: Value) => void }) {\n const [file, setFile] = useState<File | null>(null);\n\n const fileTooBig = file && file.size > 1024 * 1024;\n\n return (\n <>\n <FileUploadField\n inputId=\"env-file-upload\"\n onChange={handleChange}\n title=\"Load variables from .env file\"\n accept=\".env\"\n value={file}\n color=\"default\"\n />\n\n {fileTooBig && (\n <TextTip color=\"orange\" inline>\n File too large! Try uploading a file smaller than 1MB\n </TextTip>\n )}\n </>\n );\n\n async function handleChange(file: File) {\n setFile(file);\n if (!file) {\n return;\n }\n\n const text = await readFileAsText(file);\n if (!text) {\n return;\n }\n\n const parsed = parseDotEnvFile(text);\n onChooseFile(parsed);\n }\n}\n","import { useState } from 'react';\nimport { array, object, SchemaOf, string } from 'yup';\n\nimport { ArrayError } from '../InputList/InputList';\n\nimport { AdvancedMode } from './AdvancedMode';\nimport { SimpleMode } from './SimpleMode';\nimport { Value } from './types';\n\nexport function EnvironmentVariablesFieldset({\n onChange,\n values,\n errors,\n}: {\n values: Value;\n onChange(value: Value): void;\n errors?: ArrayError<Value>;\n}) {\n const [simpleMode, setSimpleMode] = useState(true);\n\n return (\n <div className=\"col-sm-12\">\n {simpleMode ? (\n <SimpleMode\n onAdvancedModeClick={() => setSimpleMode(false)}\n onChange={onChange}\n value={values}\n errors={errors}\n />\n ) : (\n <AdvancedMode\n onSimpleModeClick={() => setSimpleMode(true)}\n onChange={onChange}\n value={values}\n />\n )}\n </div>\n );\n}\n\nexport function envVarValidation(): SchemaOf<Value> {\n return array(\n object({\n name: string().required('Name is required'),\n value: string().default(''),\n })\n );\n}\n","import { FormSection } from '@@/form-components/FormSection';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { ArrayError } from '../InputList/InputList';\n\nimport { Value } from './types';\nimport { EnvironmentVariablesFieldset } from './EnvironmentVariablesFieldset';\n\nexport function EnvironmentVariablesPanel({\n explanation,\n onChange,\n values,\n showHelpMessage,\n errors,\n}: {\n explanation?: string;\n values: Value;\n onChange(value: Value): void;\n showHelpMessage?: boolean;\n errors?: ArrayError<Value>;\n}) {\n return (\n <FormSection title=\"Environment variables\">\n <div className=\"form-group\">\n {!!explanation && (\n <div className=\"col-sm-12 environment-variables-panel--explanation\">\n {explanation}\n </div>\n )}\n\n <EnvironmentVariablesFieldset\n values={values}\n onChange={onChange}\n errors={errors}\n />\n\n {showHelpMessage && (\n <div className=\"col-sm-12\">\n <TextTip color=\"blue\" inline={false}>\n Environment changes will not take effect until redeployment occurs\n manually or via webhook.\n </TextTip>\n </div>\n )}\n </div>\n </FormSection>\n );\n}\n","import _ from 'lodash';\n\nimport { EnvVar } from './types';\n\nexport const KEY_REGEX = /(.+?)/.source;\nexport const VALUE_REGEX = /(.*)?/.source;\n\nconst KEY_VALUE_REGEX = new RegExp(`^(${KEY_REGEX})\\\\s*=(${VALUE_REGEX})$`);\nconst NEWLINES_REGEX = /\\n|\\r|\\r\\n/;\n\nexport function parseDotEnvFile(src: string) {\n return parseArrayOfStrings(\n _.compact(src.split(NEWLINES_REGEX))\n .map((v) => v.trim())\n .filter((v) => !v.startsWith('#') && v !== '')\n );\n}\n\nexport function parseArrayOfStrings(array: Array<string> = []): Array<EnvVar> {\n if (!array) {\n return [];\n }\n\n return _.compact(\n array.map((variableString) => {\n if (!variableString.includes('=')) {\n return { name: variableString };\n }\n\n const parsedKeyValArr = variableString.trim().match(KEY_VALUE_REGEX);\n if (parsedKeyValArr == null || parsedKeyValArr.length < 4) {\n return null;\n }\n\n return {\n name: parsedKeyValArr[1].trim(),\n value: parsedKeyValArr[3].trim() || '',\n };\n })\n );\n}\n\nexport function convertToArrayOfStrings(array: Array<EnvVar>) {\n if (!array) {\n return [];\n }\n\n return array\n .filter((variable) => variable.name)\n .map(({ name, value }) =>\n value || value === '' ? `${name}=${value}` : name\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"fileInput\":\"app-react-components-form-components-FileUpload-FileUploadField-module__file-input\",\"fileButton\":\"app-react-components-form-components-FileUpload-FileUploadField-module__file-button\"};","import { ChangeEvent, ComponentProps, createRef } from 'react';\nimport { Upload, XCircle } from 'lucide-react';\n\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\n\nimport styles from './FileUploadField.module.css';\n\nexport interface Props {\n onChange(value: File): void;\n value?: File | null;\n accept?: string;\n title?: string;\n required?: boolean;\n inputId: string;\n color?: ComponentProps<typeof Button>['color'];\n name?: string;\n}\n\nexport function FileUploadField({\n onChange,\n value,\n accept,\n title = 'Select a file',\n required = false,\n inputId,\n color = 'primary',\n name,\n}: Props) {\n const fileRef = createRef<HTMLInputElement>();\n\n return (\n <div className=\"file-upload-field flex gap-2\">\n <input\n id={inputId}\n ref={fileRef}\n type=\"file\"\n accept={accept}\n required={required}\n className={styles.fileInput}\n onChange={changeHandler}\n aria-label=\"file-input\"\n name={name}\n />\n <Button\n size=\"small\"\n color={color}\n onClick={handleButtonClick}\n className={styles.fileButton}\n icon={Upload}\n >\n {title}\n </Button>\n\n <span className=\"vertical-center\">\n {value ? value.name : required && <Icon icon={XCircle} mode=\"danger\" />}\n </span>\n </div>\n );\n\n function handleButtonClick() {\n if (fileRef && fileRef.current) {\n fileRef.current.click();\n }\n }\n\n function changeHandler(event: ChangeEvent<HTMLInputElement>) {\n if (event.target && event.target.files && event.target.files.length > 0) {\n onChange(event.target.files[0]);\n }\n }\n}\n","import { ComponentProps, PropsWithChildren, ReactNode } from 'react';\nimport clsx from 'clsx';\n\nimport { Tooltip } from '@@/Tip/Tooltip';\n\nimport { FormError } from '../FormError';\n\nexport type Size = 'xsmall' | 'small' | 'medium' | 'large' | 'vertical';\n\nexport interface Props {\n inputId?: string;\n label: ReactNode;\n size?: Size;\n tooltip?: ComponentProps<typeof Tooltip>['message'];\n setTooltipHtmlMessage?: ComponentProps<typeof Tooltip>['setHtmlMessage'];\n children: ReactNode;\n errors?: ReactNode;\n required?: boolean;\n className?: string;\n}\n\nexport function FormControl({\n inputId,\n label,\n size = 'small',\n tooltip = '',\n children,\n errors,\n className,\n required = false,\n setTooltipHtmlMessage,\n}: PropsWithChildren<Props>) {\n return (\n <div\n className={clsx(\n className,\n 'form-group',\n 'after:clear-both after:table after:content-[\"\"]' // to fix issues with float\n )}\n >\n <label\n htmlFor={inputId}\n className={clsx(sizeClassLabel(size), 'control-label', 'text-left')}\n >\n {label}\n\n {required && <span className=\"text-danger\">*</span>}\n\n {tooltip && (\n <Tooltip message={tooltip} setHtmlMessage={setTooltipHtmlMessage} />\n )}\n </label>\n\n <div className={sizeClassChildren(size)}>\n {children}\n {errors && <FormError>{errors}</FormError>}\n </div>\n </div>\n );\n}\n\nfunction sizeClassLabel(size?: Size) {\n switch (size) {\n case 'large':\n return 'col-sm-5 col-lg-4';\n case 'medium':\n return 'col-sm-4 col-lg-3';\n case 'xsmall':\n return 'col-sm-2';\n case 'vertical':\n return '';\n default:\n return 'col-sm-3 col-lg-2';\n }\n}\n\nfunction sizeClassChildren(size?: Size) {\n switch (size) {\n case 'large':\n return 'col-sm-7 col-lg-8';\n case 'medium':\n return 'col-sm-8 col-lg-9';\n case 'xsmall':\n return 'col-sm-10';\n case 'vertical':\n return '';\n default:\n return 'col-sm-9 col-lg-10';\n }\n}\n","import { PropsWithChildren } from 'react';\nimport clsx from 'clsx';\nimport { AlertTriangle } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\n\ninterface Props {\n className?: string;\n}\n\nexport function FormError({ children, className }: PropsWithChildren<Props>) {\n return (\n <div\n className={clsx(\n `text-muted help-block !inline-flex gap-1 !align-top text-xs`,\n className\n )}\n >\n <Icon\n icon={AlertTriangle}\n mode=\"warning\"\n size=\"sm\"\n className=\"flex-none\"\n />\n <div className=\"text-warning\">{children}</div>\n </div>\n );\n}\n","import { PropsWithChildren, ReactNode, useState } from 'react';\nimport { ChevronUp, ChevronRight } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\n\nimport { FormSectionTitle } from '../FormSectionTitle';\n\ninterface Props {\n title: ReactNode;\n titleSize?: 'sm' | 'md' | 'lg';\n isFoldable?: boolean;\n}\n\nexport function FormSection({\n title,\n titleSize = 'md',\n children,\n isFoldable = false,\n}: PropsWithChildren<Props>) {\n const [isExpanded, setIsExpanded] = useState(!isFoldable);\n\n return (\n <>\n <FormSectionTitle\n htmlFor={isFoldable ? `foldingButton${title}` : ''}\n titleSize={titleSize}\n >\n {isFoldable && (\n <button\n id={`foldingButton${title}`}\n type=\"button\"\n onClick={(e) => {\n setIsExpanded(!isExpanded);\n e.stopPropagation();\n e.preventDefault();\n }}\n className=\"mx-2 !ml-0 inline-flex w-2 items-center justify-center border-0 bg-transparent\"\n >\n <Icon\n icon={isExpanded ? ChevronUp : ChevronRight}\n className=\"shrink-0\"\n />\n </button>\n )}\n\n {title}\n </FormSectionTitle>\n\n {isExpanded && children}\n </>\n );\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\n\ninterface Props {\n htmlFor?: string;\n titleSize?: 'sm' | 'md' | 'lg';\n}\n\nconst tailwindTitleSize = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n};\n\nexport function FormSectionTitle({\n children,\n htmlFor,\n titleSize = 'md',\n}: PropsWithChildren<Props>) {\n if (htmlFor) {\n return (\n <label\n htmlFor={htmlFor}\n className={clsx(\n 'col-sm-12 mt-1 mb-2 flex cursor-pointer items-center pl-0 font-medium',\n tailwindTitleSize[titleSize]\n )}\n >\n {children}\n </label>\n );\n }\n return (\n <div\n className={clsx(\n 'col-sm-12 mt-1 mb-2 pl-0 font-medium',\n tailwindTitleSize[titleSize]\n )}\n >\n {children}\n </div>\n );\n}\n","import clsx from 'clsx';\nimport { forwardRef, InputHTMLAttributes, Ref } from 'react';\n\nexport const InputWithRef = forwardRef<\n HTMLInputElement,\n InputHTMLAttributes<HTMLInputElement>\n>(\n // eslint-disable-next-line react/jsx-props-no-spreading\n (props, ref) => <Input {...props} mRef={ref} />\n);\n\nexport function Input({\n className,\n mRef: ref,\n ...props\n}: InputHTMLAttributes<HTMLInputElement> & { mRef?: Ref<HTMLInputElement> }) {\n return (\n <input\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n ref={ref}\n className={clsx('form-control', className)}\n />\n );\n}\n","import clsx from 'clsx';\nimport { SelectHTMLAttributes } from 'react';\n\nexport interface Option<T extends string | number> {\n value: T;\n label: string;\n}\n\ninterface Props<T extends string | number> {\n options: Option<T>[];\n}\n\nexport function Select<T extends number | string>({\n options,\n className,\n ...props\n}: Props<T> & SelectHTMLAttributes<HTMLSelectElement>) {\n return (\n <select\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n className={clsx('form-control', className)}\n >\n {options.map((item) => (\n <option value={item.value} key={item.value}>\n {item.label}\n </option>\n ))}\n </select>\n );\n}\n","import clsx from 'clsx';\nimport { createContext, PropsWithChildren, useContext } from 'react';\n\nconst Context = createContext<null | boolean>(null);\nContext.displayName = 'InputGroupContext';\n\ntype Size = 'small' | 'large';\n\nexport function useInputGroupContext() {\n const context = useContext(Context);\n\n if (context == null) {\n throw new Error('Should be inside a InputGroup component');\n }\n}\n\ninterface Props {\n size?: Size;\n className?: string;\n}\n\nexport function InputGroup({\n children,\n size,\n className,\n}: PropsWithChildren<Props>) {\n return (\n <Context.Provider value>\n <div className={clsx('input-group', sizeClass(size), className)}>\n {children}\n </div>\n </Context.Provider>\n );\n}\n\nfunction sizeClass(size?: Size) {\n switch (size) {\n case 'large':\n return 'input-group-lg';\n case 'small':\n return 'input-group-sm';\n default:\n return '';\n }\n}\n","import { Input } from '../Input';\n\nimport { InputGroup as MainComponent } from './InputGroup';\nimport { InputGroupAddon } from './InputGroupAddon';\nimport { InputGroupButtonWrapper } from './InputGroupButtonWrapper';\n\ninterface InputGroupSubComponents {\n Addon: typeof InputGroupAddon;\n ButtonWrapper: typeof InputGroupButtonWrapper;\n Input: typeof Input;\n className: string | undefined;\n}\n\nconst InputGroup: typeof MainComponent & InputGroupSubComponents =\n MainComponent as typeof MainComponent & InputGroupSubComponents;\n\nInputGroup.Addon = InputGroupAddon;\nInputGroup.ButtonWrapper = InputGroupButtonWrapper;\nInputGroup.Input = Input;\n\nexport { InputGroup };\n","import { ComponentType, PropsWithChildren } from 'react';\nimport clsx from 'clsx';\n\nimport { useInputGroupContext } from './InputGroup';\n\ntype BaseProps<TProps> = {\n as?: ComponentType<TProps> | string;\n required?: boolean;\n};\n\nexport function InputGroupAddon<TProps>({\n children,\n as = 'span',\n required,\n ...props\n}: PropsWithChildren<BaseProps<TProps> & TProps>) {\n useInputGroupContext();\n const Component = as as 'span';\n\n return (\n <Component\n className={clsx('input-group-addon', required && 'required')}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n {children}\n </Component>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport clsx from 'clsx';\n\nimport { useInputGroupContext } from './InputGroup';\n\nexport function InputGroupButtonWrapper({\n children,\n}: PropsWithChildren<unknown>) {\n useInputGroupContext();\n\n return (\n <span\n className={clsx(\n 'input-group-btn [&>button]:!ml-0',\n // the button should be rounded at the end (right) if it's the last child and start (left) if it's the first child\n // if the button is in the middle of the group, it shouldn't be rounded\n '[&>button]:!rounded-none [&:last-child>button]:!rounded-r-[5px] [&:first-child>button]:!rounded-l-[5px]'\n )}\n >\n {children}\n </span>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"items\":\"app-react-components-form-components-InputList-InputList-module__items\",\"label\":\"app-react-components-form-components-InputList-InputList-module__label\",\"itemLine\":\"app-react-components-form-components-InputList-InputList-module__item-line\",\"hasError\":\"app-react-components-form-components-InputList-InputList-module__has-error\",\"defaultItem\":\"app-react-components-form-components-InputList-InputList-module__default-item\"};","import { ComponentType } from 'react';\nimport clsx from 'clsx';\nimport { FormikErrors } from 'formik';\nimport { ArrowDown, ArrowUp, Plus, Trash2 } from 'lucide-react';\n\nimport { Button } from '@@/buttons';\nimport { Tooltip } from '@@/Tip/Tooltip';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { Input } from '../Input';\nimport { FormError } from '../FormError';\n\nimport styles from './InputList.module.css';\nimport { arrayMove } from './utils';\n\ntype ArrElement<ArrType> = ArrType extends readonly (infer ElementType)[]\n ? ElementType\n : never;\n\nexport type ArrayError<T> =\n | FormikErrors<ArrElement<T>>[]\n | string\n | string[]\n | undefined;\nexport type ItemError<T> = FormikErrors<T> | string | undefined;\n\nexport interface ItemProps<T> {\n item: T;\n onChange(value: T): void;\n error?: ItemError<T>;\n disabled?: boolean;\n readOnly?: boolean;\n // eslint-disable-next-line react/no-unused-prop-types\n index: number;\n}\ntype Key = string | number;\ntype ChangeType = 'delete' | 'create' | 'update';\nexport type DefaultType = { value: string };\n\ntype OnChangeEvent<T> =\n | {\n item: T;\n type: ChangeType;\n }\n | {\n type: 'move';\n fromIndex: number;\n to: number;\n };\n\ntype RenderItemFunction<T> = (\n item: T,\n onChange: (value: T) => void,\n index: number,\n error?: ItemError<T>\n) => React.ReactNode;\n\ninterface Props<T> {\n label?: string;\n value: T[];\n onChange(value: T[], e: OnChangeEvent<T>): void;\n itemBuilder?(): T;\n renderItem?: RenderItemFunction<T>;\n item?: ComponentType<ItemProps<T>>;\n tooltip?: string;\n addLabel?: string;\n itemKeyGetter?(item: T, index: number): Key;\n movable?: boolean;\n errors?: ArrayError<T[]>;\n textTip?: string;\n isAddButtonHidden?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n 'aria-label'?: string;\n}\n\nexport function InputList<T = DefaultType>({\n label,\n value,\n onChange,\n itemBuilder = defaultItemBuilder as unknown as () => T,\n renderItem = renderDefaultItem as unknown as RenderItemFunction<T>,\n item: Item,\n tooltip,\n addLabel = 'Add item',\n itemKeyGetter = (item: T, index: number) => index,\n movable,\n errors,\n textTip,\n isAddButtonHidden = false,\n disabled,\n readOnly,\n 'aria-label': ariaLabel,\n}: Props<T>) {\n const isAddButtonVisible = !(isAddButtonHidden || readOnly);\n return (\n <div\n className={clsx('form-group', styles.root)}\n aria-label={ariaLabel || label}\n >\n {label && (\n <div className={clsx('col-sm-12', styles.header)}>\n <span className=\"control-label space-right pt-2 text-left !font-bold\">\n {label}\n {tooltip && <Tooltip message={tooltip} />}\n </span>\n </div>\n )}\n\n {textTip && (\n <div className=\"col-sm-12 mt-5\">\n <TextTip color=\"blue\">{textTip}</TextTip>\n </div>\n )}\n\n {value.length > 0 && (\n <div className=\"col-sm-12 mt-5 flex flex-col gap-y-5\">\n {value.map((item, index) => {\n const key = itemKeyGetter(item, index);\n const error =\n typeof errors === 'object' ? errors[index] : undefined;\n\n return (\n <div\n key={key}\n className={clsx(\n styles.itemLine,\n { [styles.hasError]: !!error },\n 'vertical-center'\n )}\n >\n {Item ? (\n <Item\n item={item}\n onChange={(value: T) => handleChangeItem(key, value)}\n error={error}\n disabled={disabled}\n readOnly={readOnly}\n index={index}\n />\n ) : (\n renderItem(\n item,\n (value: T) => handleChangeItem(key, value),\n index,\n error\n )\n )}\n <div className=\"items-start\">\n {!readOnly && movable && (\n <>\n <Button\n size=\"medium\"\n disabled={disabled || index === 0}\n onClick={() => handleMoveUp(index)}\n className=\"vertical-center btn-only-icon\"\n icon={ArrowUp}\n />\n <Button\n size=\"medium\"\n type=\"button\"\n disabled={disabled || index === value.length - 1}\n onClick={() => handleMoveDown(index)}\n className=\"vertical-center btn-only-icon\"\n icon={ArrowDown}\n />\n </>\n )}\n {!readOnly && (\n <Button\n color=\"dangerlight\"\n size=\"medium\"\n onClick={() => handleRemoveItem(key, item)}\n className=\"vertical-center btn-only-icon\"\n icon={Trash2}\n />\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {isAddButtonVisible && (\n <div className=\"col-sm-12 mt-5\">\n <Button\n onClick={handleAdd}\n disabled={disabled}\n type=\"button\"\n color=\"default\"\n className=\"!ml-0\"\n size=\"small\"\n icon={Plus}\n >\n {addLabel}\n </Button>\n </div>\n )}\n </div>\n );\n\n function handleMoveUp(index: number) {\n if (index <= 0) {\n return;\n }\n handleMove(index, index - 1);\n }\n\n function handleMoveDown(index: number) {\n if (index >= value.length - 1) {\n return;\n }\n handleMove(index, index + 1);\n }\n\n function handleMove(from: number, to: number) {\n if (!movable) {\n return;\n }\n\n onChange(arrayMove(value, from, to), {\n type: 'move',\n fromIndex: from,\n to,\n });\n }\n\n function handleRemoveItem(key: Key, item: T) {\n onChange(\n value.filter((item, index) => {\n const itemKey = itemKeyGetter(item, index);\n return itemKey !== key;\n }),\n { type: 'delete', item }\n );\n }\n\n function handleAdd() {\n const newItem = itemBuilder();\n onChange([...value, newItem], { type: 'create', item: newItem });\n }\n\n function handleChangeItem(key: Key, newItemValue: T) {\n const newItems = value.map((item, index) => {\n const itemKey = itemKeyGetter(item, index);\n if (itemKey !== key) {\n return item;\n }\n return newItemValue;\n });\n onChange(newItems, {\n type: 'update',\n item: newItemValue,\n });\n }\n}\n\nfunction defaultItemBuilder(): DefaultType {\n return { value: '' };\n}\n\nfunction DefaultItem({\n item,\n onChange,\n error,\n disabled,\n readOnly,\n}: ItemProps<DefaultType>) {\n return (\n <>\n <Input\n value={item.value}\n onChange={(e) => onChange({ value: e.target.value })}\n className={styles.defaultItem}\n disabled={disabled}\n readOnly={readOnly}\n />\n {error && <FormError>{error}</FormError>}\n </>\n );\n}\n\nfunction renderDefaultItem(\n item: DefaultType,\n onChange: (value: DefaultType) => void,\n index: number,\n error?: ItemError<DefaultType>\n) {\n return (\n <DefaultItem item={item} onChange={onChange} error={error} index={index} />\n );\n}\n","export function arrayMove<T>(array: Array<T>, from: number, to: number) {\n if (!checkValidIndex(array, from) || !checkValidIndex(array, to)) {\n throw new Error('index is out of bounds');\n }\n\n const item = array[from];\n const { length } = array;\n\n const diff = from - to;\n\n if (diff > 0) {\n // move left\n return [\n ...array.slice(0, to),\n item,\n ...array.slice(to, from),\n ...array.slice(from + 1, length),\n ];\n }\n\n if (diff < 0) {\n // move right\n const targetIndex = to + 1;\n return [\n ...array.slice(0, from),\n ...array.slice(from + 1, targetIndex),\n item,\n ...array.slice(targetIndex, length),\n ];\n }\n\n return [...array];\n\n function checkValidIndex<T>(array: Array<T>, index: number) {\n return index >= 0 && index <= array.length;\n }\n}\n","import {\n GroupBase,\n OptionsOrGroups,\n SelectComponentsConfig,\n} from 'react-select';\nimport _ from 'lodash';\n\nimport { AutomationTestingProps } from '@/types';\n\nimport { Select as ReactSelect } from '@@/form-components/ReactSelect';\n\nexport interface Option<TValue> {\n value: TValue;\n label: string;\n}\n\ntype Options<TValue> = OptionsOrGroups<\n Option<TValue>,\n GroupBase<Option<TValue>>\n>;\n\ninterface SharedProps extends AutomationTestingProps {\n name?: string;\n inputId?: string;\n placeholder?: string;\n disabled?: boolean;\n isClearable?: boolean;\n bindToBody?: boolean;\n}\n\ninterface MultiProps<TValue> extends SharedProps {\n value: readonly TValue[];\n onChange(value: readonly TValue[]): void;\n options: Options<TValue>;\n isMulti: true;\n components?: SelectComponentsConfig<\n Option<TValue>,\n true,\n GroupBase<Option<TValue>>\n >;\n}\n\ninterface SingleProps<TValue> extends SharedProps {\n value: TValue;\n onChange(value: TValue | null): void;\n options: Options<TValue>;\n isMulti?: never;\n components?: SelectComponentsConfig<\n Option<TValue>,\n false,\n GroupBase<Option<TValue>>\n >;\n}\n\ntype Props<TValue> = MultiProps<TValue> | SingleProps<TValue>;\n\nexport function PortainerSelect<TValue = string>(props: Props<TValue>) {\n return isMultiProps(props) ? (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <MultiSelect {...props} />\n ) : (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <SingleSelect {...props} />\n );\n}\n\nfunction isMultiProps<TValue>(\n props: Props<TValue>\n): props is MultiProps<TValue> {\n return 'isMulti' in props && !!props.isMulti;\n}\n\nexport function SingleSelect<TValue = string>({\n name,\n options,\n onChange,\n value,\n 'data-cy': dataCy,\n disabled,\n inputId,\n placeholder,\n isClearable,\n bindToBody,\n components,\n}: SingleProps<TValue>) {\n const selectedValue =\n value || (typeof value === 'number' && value === 0)\n ? _.first(findSelectedOptions<TValue>(options, value))\n : null;\n\n return (\n <ReactSelect<Option<TValue>>\n name={name}\n isClearable={isClearable}\n getOptionLabel={(option) => option.label}\n getOptionValue={(option) => String(option.value)}\n options={options}\n value={selectedValue}\n onChange={(option) => onChange(option ? option.value : null)}\n data-cy={dataCy}\n inputId={inputId}\n placeholder={placeholder}\n isDisabled={disabled}\n menuPortalTarget={bindToBody ? document.body : undefined}\n components={components}\n />\n );\n}\n\nfunction findSelectedOptions<TValue>(\n options: Options<TValue>,\n value: TValue | readonly TValue[]\n) {\n const valueArr = Array.isArray(value) ? value : [value];\n\n const values = _.compact(\n options.flatMap((option) => {\n if (isGroup(option)) {\n return option.options.find((option) => valueArr.includes(option.value));\n }\n\n if (valueArr.includes(option.value)) {\n return option;\n }\n\n return null;\n })\n );\n\n return values;\n}\n\nexport function MultiSelect<TValue = string>({\n name,\n value,\n onChange,\n options,\n 'data-cy': dataCy,\n inputId,\n placeholder,\n disabled,\n isClearable,\n bindToBody,\n components,\n}: Omit<MultiProps<TValue>, 'isMulti'>) {\n const selectedOptions = findSelectedOptions(options, value);\n return (\n <ReactSelect\n name={name}\n isMulti\n isClearable={isClearable}\n getOptionLabel={(option) => option.label}\n getOptionValue={(option) => String(option.value)}\n options={options}\n value={selectedOptions}\n closeMenuOnSelect={false}\n onChange={(newValue) => onChange(newValue.map((option) => option.value))}\n data-cy={dataCy}\n inputId={inputId}\n placeholder={placeholder}\n isDisabled={disabled}\n menuPortalTarget={bindToBody ? document.body : undefined}\n components={components}\n />\n );\n}\n\nfunction isGroup<TValue>(\n option: Option<TValue> | GroupBase<Option<TValue>>\n): option is GroupBase<Option<TValue>> {\n return 'options' in option;\n}\n","import ReactSelectCreatable, {\n CreatableProps as ReactSelectCreatableProps,\n} from 'react-select/creatable';\nimport ReactSelect, {\n GroupBase,\n Props as ReactSelectProps,\n} from 'react-select';\nimport clsx from 'clsx';\nimport { RefAttributes } from 'react';\nimport ReactSelectType from 'react-select/dist/declarations/src/Select';\n\nimport './ReactSelect.css';\n\ninterface DefaultOption {\n value: string;\n label: string;\n}\n\ntype RegularProps<\n Option = DefaultOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>\n> = { isCreatable?: false; size?: 'sm' | 'md' } & ReactSelectProps<\n Option,\n IsMulti,\n Group\n> &\n RefAttributes<ReactSelectType<Option, IsMulti, Group>>;\n\ntype CreatableProps<\n Option = DefaultOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>\n> = { isCreatable: true; size?: 'sm' | 'md' } & ReactSelectCreatableProps<\n Option,\n IsMulti,\n Group\n>;\n\ntype Props<\n Option = DefaultOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>\n> =\n | CreatableProps<Option, IsMulti, Group>\n | RegularProps<Option, IsMulti, Group>;\n\nexport function Select<\n Option = DefaultOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>\n>({\n className,\n isCreatable = false,\n size = 'md',\n ...props\n}: Props<Option, IsMulti, Group>) {\n const Component = isCreatable ? ReactSelectCreatable : ReactSelect;\n\n return (\n <Component\n className={clsx(className, 'portainer-selector-root', size)}\n classNamePrefix=\"portainer-selector\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n\nexport function Creatable<\n Option = DefaultOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>\n>({ className, ...props }: ReactSelectCreatableProps<Option, IsMulti, Group>) {\n return (\n <ReactSelectCreatable\n className={clsx(className, 'portainer-selector-root')}\n classNamePrefix=\"portainer-selector\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-components-form-components-SwitchField-Switch-module__root\"};","import clsx from 'clsx';\n\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { BEFeatureIndicator } from '@@/BEFeatureIndicator';\n\nimport './Switch.css';\n\nimport styles from './Switch.module.css';\n\nexport interface Props {\n checked: boolean;\n id: string;\n name: string;\n onChange(checked: boolean, index?: number): void;\n\n index?: number;\n className?: string;\n dataCy?: string;\n disabled?: boolean;\n featureId?: FeatureId;\n}\n\nexport function Switch({\n name,\n checked,\n id,\n disabled,\n dataCy,\n onChange,\n index,\n featureId,\n className,\n}: Props) {\n const limitedToBE = isLimitedToBE(featureId);\n\n return (\n <>\n <label\n className={clsx('switch', className, styles.root, {\n business: limitedToBE,\n limited: limitedToBE,\n })}\n >\n <input\n type=\"checkbox\"\n name={name}\n id={id}\n checked={checked}\n disabled={disabled || limitedToBE}\n onChange={({ target: { checked } }) => onChange(checked, index)}\n />\n <span className=\"slider round before:content-['']\" data-cy={dataCy} />\n </label>\n {limitedToBE && <BEFeatureIndicator featureId={featureId} />}\n </>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-components-form-components-SwitchField-SwitchField-module__root\"};","import clsx from 'clsx';\nimport { ComponentProps } from 'react';\nimport uuid from 'uuid';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { Tooltip } from '@@/Tip/Tooltip';\n\nimport styles from './SwitchField.module.css';\nimport { Switch } from './Switch';\n\nexport interface Props {\n label: string;\n checked: boolean;\n onChange(value: boolean, index?: number): void;\n\n index?: number;\n name?: string;\n tooltip?: ComponentProps<typeof Tooltip>['message'];\n setTooltipHtmlMessage?: ComponentProps<typeof Tooltip>['setHtmlMessage'];\n labelClass?: string;\n switchClass?: string;\n fieldClass?: string;\n dataCy?: string;\n disabled?: boolean;\n featureId?: FeatureId;\n}\n\nexport function SwitchField({\n tooltip,\n checked,\n label,\n index,\n name = uuid(),\n labelClass,\n fieldClass,\n dataCy,\n disabled,\n onChange,\n featureId,\n switchClass,\n setTooltipHtmlMessage,\n}: Props) {\n const toggleName = name ? `toggle_${name}` : '';\n\n return (\n <div className={clsx(styles.root, fieldClass)}>\n <label\n className={clsx('space-right control-label !p-0 text-left', labelClass)}\n htmlFor={toggleName}\n >\n {label}\n {tooltip && (\n <Tooltip message={tooltip} setHtmlMessage={setTooltipHtmlMessage} />\n )}\n </label>\n <Switch\n className={clsx('space-right', switchClass)}\n name={toggleName}\n id={toggleName}\n checked={checked}\n disabled={disabled}\n onChange={onChange}\n index={index}\n featureId={featureId}\n dataCy={dataCy}\n />\n </div>\n );\n}\n","import { useRef } from 'react';\nimport { TestContext, TestFunction } from 'yup';\n\nfunction cacheTest<T, TContext>(\n asyncValidate: TestFunction<T, TContext>\n): TestFunction<T, TContext> {\n let valid = true;\n let value: T | undefined;\n\n return async (newValue: T, context: TestContext<TContext>) => {\n if (newValue !== value) {\n value = newValue;\n\n const response = await asyncValidate.call(context, newValue, context);\n valid = !!response;\n }\n return valid;\n };\n}\n\nexport function useCachedValidation<T, TContext>(\n test: TestFunction<T, TContext>\n) {\n const ref = useRef(cacheTest(test));\n\n return ref.current;\n}\n","import { yupToFormErrors } from 'formik';\nimport { SchemaOf } from 'yup';\n\nexport async function validateForm<T>(\n schemaBuilder: () => SchemaOf<T>,\n formValues: T\n) {\n const validationSchema = schemaBuilder();\n\n try {\n await validationSchema.validate(formValues, {\n strict: true,\n abortEarly: false,\n });\n return undefined;\n } catch (error) {\n return yupToFormErrors<T>(error);\n }\n}\n","import { mixed } from 'yup';\nimport { MixedSchema } from 'yup/lib/mixed';\n\ntype FileSchema = MixedSchema<File | undefined>;\n\nexport function file(): FileSchema {\n return mixed();\n}\n\nexport function withFileSize(fileValidation: FileSchema, maxSize: number) {\n return fileValidation.test(\n 'fileSize',\n 'Selected file is too big.',\n validateFileSize\n );\n\n function validateFileSize(file?: File) {\n if (!file) {\n return true;\n }\n\n return file.size <= maxSize;\n }\n}\n\nexport function withFileExtension(\n fileValidation: FileSchema,\n allowedExtensions: string[]\n) {\n return fileValidation.test(\n 'fileExtension',\n 'Selected file has invalid extension.',\n validateFileExtension\n );\n\n function validateFileExtension(file?: File) {\n if (!file) {\n return true;\n }\n\n const fileExtension = file.name.split('.').pop();\n\n return allowedExtensions.includes(fileExtension || '');\n }\n}\n","import { ReactNode, useEffect, useState, useRef } from 'react';\n\nimport { Button } from '@@/buttons';\n\nimport { ButtonOptions, ModalType } from './types';\nimport { openModal } from './open-modal';\nimport { Modal, OnSubmit } from './Modal';\n\nexport interface DialogOptions<T> {\n title?: ReactNode;\n message: ReactNode;\n modalType?: ModalType;\n buttons: Array<ButtonOptions<T>>;\n}\n\ninterface Props<T> extends DialogOptions<T> {\n onSubmit: OnSubmit<T>;\n}\n\nexport function Dialog<T>({\n buttons,\n message,\n title,\n onSubmit,\n modalType,\n}: Props<T>) {\n const ariaLabel = requireString(title) || requireString(message) || 'Dialog';\n\n const [count, setCount] = useState<number>(0);\n const countRef = useRef(count);\n countRef.current = count;\n\n useEffect(() => {\n let retFn;\n\n // only countdown the first button with non-zero timeout\n for (let i = 0; i < buttons.length; i++) {\n const button = buttons[i];\n if (button.timeout) {\n setCount(button.timeout as number);\n\n const intervalID = setInterval(() => {\n const count = countRef.current;\n\n setCount(count - 1);\n if (count === 1) {\n onSubmit(button.value);\n }\n }, 1000);\n\n retFn = () => clearInterval(intervalID);\n\n break;\n }\n }\n\n return retFn;\n }, [buttons, onSubmit]);\n\n return (\n <Modal onDismiss={() => onSubmit()} aria-label={ariaLabel}>\n {title && <Modal.Header title={title} modalType={modalType} />}\n <Modal.Body>{message}</Modal.Body>\n <Modal.Footer>\n {buttons.map((button, index) => (\n <Button\n onClick={() => onSubmit(button.value)}\n className={button.className}\n color={button.color}\n key={index}\n size=\"medium\"\n >\n {button.label} {button.timeout && count ? `(${count})` : null}\n </Button>\n ))}\n </Modal.Footer>\n </Modal>\n );\n}\n\nfunction requireString(value: ReactNode) {\n return typeof value === 'string' ? value : undefined;\n}\n\nexport async function openDialog<T>(options: DialogOptions<T>) {\n return openModal<DialogOptions<T>, T>(Dialog, options);\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"close\":\"app-react-components-modals-Modal-CloseButton-module__close\"};","import clsx from 'clsx';\n\nimport styles from './CloseButton.module.css';\n\nexport function CloseButton({\n onClose,\n className,\n}: {\n onClose: () => void;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n className={clsx(\n styles.close,\n className,\n 'close-button absolute top-4 right-5'\n )}\n onClick={() => onClose()}\n >\n ×\n </button>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"overlay\":\"app-react-components-modals-Modal-Modal-module__overlay\",\"modalDialog\":\"app-react-components-modals-Modal-Modal-module__modal-dialog\",\"modalContent\":\"app-react-components-modals-Modal-Modal-module__modal-content\"};","import { DialogContent, DialogOverlay } from '@reach/dialog';\nimport clsx from 'clsx';\nimport { createContext, PropsWithChildren, useContext } from 'react';\n\nimport { CloseButton } from './CloseButton';\nimport styles from './Modal.module.css';\n\nconst Context = createContext<boolean | null>(null);\nContext.displayName = 'ModalContext';\n\nexport function useModalContext() {\n const context = useContext(Context);\n if (!context) {\n throw new Error('should be nested under Modal');\n }\n\n return context;\n}\n\ninterface Props {\n onDismiss?(): void;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n size?: 'md' | 'lg';\n className?: string;\n}\n\nexport function Modal({\n children,\n onDismiss,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n size = 'md',\n className,\n}: PropsWithChildren<Props>) {\n return (\n <Context.Provider value>\n <DialogOverlay\n isOpen\n className={clsx(\n styles.overlay,\n 'z-50 flex items-center justify-center'\n )}\n onDismiss={onDismiss}\n role=\"dialog\"\n >\n <DialogContent\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n className={clsx(styles.modalDialog, 'bg-transparent p-0', {\n 'w-[450px]': size === 'md',\n 'w-[700px]': size === 'lg',\n })}\n >\n <div className={clsx(styles.modalContent, 'relative', className)}>\n {children}\n {onDismiss && <CloseButton onClose={onDismiss} />}\n </div>\n </DialogContent>\n </DialogOverlay>\n </Context.Provider>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"modalBody\":\"app-react-components-modals-Modal-ModalBody-module__modal-body\"};","import { Modal as MainComponent } from './Modal';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalBody } from './ModalBody';\nimport { ModalFooter } from './ModalFooter';\n\nexport { ModalType, type OnSubmit } from './types';\n\ninterface WithSubComponents {\n Header: typeof ModalHeader;\n Body: typeof ModalBody;\n Footer: typeof ModalFooter;\n}\n\nconst Modal = MainComponent as typeof MainComponent & WithSubComponents;\n\nModal.Header = ModalHeader;\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\n\nexport { Modal };\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\n\nimport { ModalType } from './types';\nimport { useModalContext } from './Modal';\nimport styles from './ModalHeader.module.css';\n\ninterface Props {\n title: ReactNode;\n modalType?: ModalType;\n}\n\nexport function ModalHeader({ title, modalType }: Props) {\n useModalContext();\n\n return (\n <div className={styles.modalHeader}>\n {modalType && (\n <div\n className={clsx({\n [styles.backgroundError]: modalType === ModalType.Destructive,\n [styles.backgroundWarning]: modalType === ModalType.Warn,\n })}\n />\n )}\n {typeof title === 'string' ? (\n <h5 className=\"m-0 font-bold\">{title}</h5>\n ) : (\n title\n )}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"modalHeader\":\"app-react-components-modals-Modal-ModalHeader-module__modal-header\",\"backgroundError\":\"app-react-components-modals-Modal-ModalHeader-module__background-error\",\"backgroundWarning\":\"app-react-components-modals-Modal-ModalHeader-module__background-warning\"};","import { PropsWithChildren } from 'react';\n\nimport { useModalContext } from './Modal';\nimport styles from './ModalBody.module.css';\n\nexport function ModalBody({ children }: PropsWithChildren<unknown>) {\n useModalContext();\n return <div className={styles.modalBody}>{children}</div>;\n}\n","import { PropsWithChildren } from 'react';\n\nimport { useModalContext } from './Modal';\n\nexport function ModalFooter({ children }: PropsWithChildren<unknown>) {\n useModalContext();\n\n return (\n <div className=\"flex justify-end gap-3 pt-3 [&>*]:flex-1\">{children}</div>\n );\n}\n","export type OnSubmit<TResult> = (result?: TResult) => void;\n\nexport enum ModalType {\n Warn = 'warning',\n Destructive = 'error',\n}\n","import { ReactNode, useState } from 'react';\n\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nimport { ModalType, type ButtonOptions } from './types';\nimport { openModal } from './open-modal';\nimport { OnSubmit } from './Modal/types';\nimport { Dialog } from './Dialog';\nimport { buildCancelButton, buildConfirmButton } from './utils';\n\nfunction SwitchPrompt({\n onSubmit,\n title,\n confirmButton = buildConfirmButton('OK'),\n switchLabel,\n modalType,\n message,\n defaultValue = false,\n}: {\n onSubmit: OnSubmit<{ value: boolean }>;\n title: string;\n switchLabel: string;\n confirmButton?: ButtonOptions<true>;\n modalType?: ModalType;\n message?: ReactNode;\n defaultValue?: boolean;\n}) {\n const [value, setValue] = useState(defaultValue);\n\n return (\n <Dialog\n modalType={modalType}\n title={title}\n message={\n <>\n {message && <div className=\"mb-3\">{message}</div>}\n <SwitchField\n name=\"value\"\n label={switchLabel}\n checked={value}\n onChange={setValue}\n />\n </>\n }\n onSubmit={(confirm) => onSubmit(confirm ? { value } : undefined)}\n buttons={[buildCancelButton(), confirmButton]}\n />\n );\n}\n\nexport async function openSwitchPrompt(\n title: string,\n switchLabel: string,\n {\n confirmButton,\n modalType,\n message,\n defaultValue,\n }: {\n confirmButton?: ButtonOptions<true>;\n modalType?: ModalType;\n message?: ReactNode;\n defaultValue?: boolean;\n } = {}\n) {\n return openModal(SwitchPrompt, {\n confirmButton,\n title,\n switchLabel,\n modalType,\n message,\n defaultValue,\n });\n}\n","import { ReactNode } from 'react';\n\nimport { openDialog, DialogOptions } from './Dialog';\nimport { OnSubmit, ModalType } from './Modal';\nimport { ButtonOptions } from './types';\nimport { buildCancelButton, buildConfirmButton } from './utils';\n\nexport type ConfirmCallback = OnSubmit<boolean>;\n\nexport interface ConfirmOptions\n extends Omit<DialogOptions<boolean>, 'title' | 'buttons'> {\n title: string;\n confirmButton?: ButtonOptions<true>;\n cancelButtonLabel?: string;\n}\n\nexport async function openConfirm({\n confirmButton = buildConfirmButton(),\n cancelButtonLabel,\n ...options\n}: ConfirmOptions) {\n const result = await openDialog({\n ...options,\n buttons: [buildCancelButton(cancelButtonLabel), confirmButton],\n });\n return !!result;\n}\n\nexport function confirm(options: ConfirmOptions) {\n return openConfirm(options);\n}\n\nexport function confirmDestructive(options: Omit<ConfirmOptions, 'modalType'>) {\n return openConfirm({\n ...options,\n modalType: ModalType.Destructive,\n });\n}\n\nexport function confirmWebEditorDiscard() {\n return openConfirm({\n modalType: ModalType.Warn,\n title: 'Are you sure?',\n message:\n 'You currently have unsaved changes in the editor. Are you sure you want to leave?',\n confirmButton: buildConfirmButton('Yes', 'danger'),\n });\n}\n\nexport function confirmDelete(message: ReactNode) {\n return confirmDestructive({\n title: 'Are you sure?',\n message,\n confirmButton: buildConfirmButton('Remove', 'danger'),\n });\n}\n\nexport async function confirmUpdate(\n message: string,\n callback: ConfirmCallback\n) {\n const result = await openConfirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n message,\n confirmButton: buildConfirmButton('Update'),\n });\n\n callback(result);\n\n return result;\n}\n\nexport function confirmChangePassword() {\n return openConfirm({\n modalType: ModalType.Warn,\n title: 'Are you sure?',\n message:\n 'You will be logged out after the password change. Do you want to change your password?',\n confirmButton: buildConfirmButton('Change'),\n });\n}\n","import { ComponentProps } from 'react';\n\nimport { Button } from '@@/buttons';\n\nexport interface ButtonOptions<TValue = undefined> {\n label: string;\n className?: string;\n color?: ComponentProps<typeof Button>['color'];\n value?: TValue;\n timeout?: number;\n}\n\nexport interface ButtonsOptions<T> {\n confirm: ButtonOptions<T>;\n cancel?: ButtonOptions<T>;\n}\n\nexport enum ModalType {\n Warn = 'warning',\n Destructive = 'error',\n}\n","import { ComponentType } from 'react';\nimport { render, unmountComponentAtNode } from 'react-dom';\n\nimport '@reach/dialog/styles.css';\nimport { OnSubmit } from './Modal/types';\n\nlet counter = 0;\nexport async function openModal<TProps, TResult>(\n Modal: ComponentType<\n { onSubmit: OnSubmit<TResult> } & Omit<TProps, 'onSubmit'>\n >,\n props: TProps = {} as TProps\n) {\n const modal = document.createElement('div');\n counter += 1;\n modal.id = `dialog-${counter}`;\n document.body.appendChild(modal);\n\n const result = await new Promise<TResult | undefined>((resolve) => {\n render(\n // eslint-disable-next-line react/jsx-props-no-spreading\n <Modal {...props} onSubmit={(result) => resolve(result)} />,\n modal\n );\n });\n\n unmountComponentAtNode(modal);\n document.body.removeChild(modal);\n\n return result;\n}\n","import { ComponentProps } from 'react';\n\nimport { Button } from '@@/buttons';\n\nimport { ButtonOptions } from './types';\n\nexport function buildConfirmButton(\n label = 'Confirm',\n color: ComponentProps<typeof Button>['color'] = 'primary',\n timeout = 0\n): ButtonOptions<true> {\n return { label, color, value: true, timeout };\n}\n\nexport function buildCancelButton(label = 'Cancel'): ButtonOptions<false> {\n return {\n label,\n color: 'default',\n value: false,\n };\n}\n","export const STACK_NAME_VALIDATION_REGEX = '^[-_a-z0-9]+$';\n\nexport const BROWSER_OS_PLATFORM = getOs();\n\nfunction getOs() {\n const { userAgent } = navigator;\n\n if (userAgent.includes('Windows')) {\n return 'win';\n }\n\n return userAgent.includes('Mac') ? 'mac' : 'lin';\n}\n","import { ModalType } from '@@/modals';\nimport { openSwitchPrompt } from '@@/modals/SwitchPrompt';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport async function confirmContainerDeletion(title: string) {\n const result = await openSwitchPrompt(\n title,\n 'Automatically remove non-persistent volumes',\n {\n confirmButton: buildConfirmButton('Remove', 'danger'),\n modalType: ModalType.Destructive,\n }\n );\n\n return result ? { removeVolumes: result.value } : undefined;\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\nimport PortainerError from '@/portainer/error';\nimport axios from '@/portainer/services/axios';\nimport { genericHandler } from '@/docker/rest/response/handlers';\n\nimport { ContainerId, DockerContainer } from './types';\n\nexport async function startContainer(\n endpointId: EnvironmentId,\n id: ContainerId\n) {\n await axios.post<void>(\n urlBuilder(endpointId, id, 'start'),\n {},\n { transformResponse: genericHandler }\n );\n}\n\nexport async function stopContainer(\n endpointId: EnvironmentId,\n id: ContainerId\n) {\n await axios.post<void>(urlBuilder(endpointId, id, 'stop'), {});\n}\n\nexport async function recreateContainer(\n endpointId: EnvironmentId,\n id: ContainerId,\n pullImage: boolean\n) {\n await axios.post<void>(`/docker/${endpointId}/containers/${id}/recreate`, {\n PullImage: pullImage,\n });\n}\n\nexport async function restartContainer(\n endpointId: EnvironmentId,\n id: ContainerId\n) {\n await axios.post<void>(urlBuilder(endpointId, id, 'restart'), {});\n}\n\nexport async function killContainer(\n endpointId: EnvironmentId,\n id: ContainerId\n) {\n await axios.post<void>(urlBuilder(endpointId, id, 'kill'), {});\n}\n\nexport async function pauseContainer(\n endpointId: EnvironmentId,\n id: ContainerId\n) {\n await axios.post<void>(urlBuilder(endpointId, id, 'pause'), {});\n}\n\nexport async function resumeContainer(\n endpointId: EnvironmentId,\n id: ContainerId\n) {\n await axios.post<void>(urlBuilder(endpointId, id, 'unpause'), {});\n}\n\nexport async function renameContainer(\n endpointId: EnvironmentId,\n id: ContainerId,\n name: string\n) {\n await axios.post<void>(\n urlBuilder(endpointId, id, 'rename'),\n {},\n { params: { name }, transformResponse: genericHandler }\n );\n}\n\nexport async function removeContainer(\n endpointId: EnvironmentId,\n container: DockerContainer,\n removeVolumes: boolean\n) {\n try {\n const { data } = await axios.delete<null | { message: string }>(\n urlBuilder(endpointId, container.Id),\n {\n params: { v: removeVolumes ? 1 : 0, force: true },\n transformResponse: genericHandler,\n }\n );\n\n if (data && data.message) {\n throw new PortainerError(data.message);\n }\n } catch (e) {\n throw new PortainerError('Unable to remove container', e as Error);\n }\n}\n\nexport function urlBuilder(\n endpointId: EnvironmentId,\n id?: ContainerId,\n action?: string\n) {\n let url = `/endpoints/${endpointId}/docker/containers`;\n\n if (id) {\n url += `/${id}`;\n }\n\n if (action) {\n url += `/${action}`;\n }\n\n return url;\n}\n","import { ModalType } from '@@/modals';\nimport { ConfirmCallback, openConfirm } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport async function confirmImageExport(callback: ConfirmCallback) {\n const result = await openConfirm({\n modalType: ModalType.Warn,\n title: 'Caution',\n message:\n 'The export may take several minutes, do not navigate away whilst the export is in progress.',\n confirmButton: buildConfirmButton('Continue'),\n });\n\n callback(result);\n}\n","import _ from 'lodash';\n\nimport { trimSHA } from '@/docker/filters/utils';\nimport {\n Registry,\n RegistryTypes,\n} from '@/react/portainer/registries/types/registry';\n\nimport { DockerImage } from './types';\nimport { DockerImageResponse } from './types/response';\n\nexport function parseViewModel(response: DockerImageResponse): DockerImage {\n return {\n ...response,\n Used: false,\n RepoTags:\n response.RepoTags ??\n response.RepoDigests.map((digest) => `${trimSHA(digest)}:<none>`),\n };\n}\n\nexport function getUniqueTagListFromImages(\n images: Array<{ RepoTags?: string[] }>\n) {\n return _.uniq(\n images.flatMap((image) =>\n image.RepoTags\n ? image.RepoTags.filter((item) => !item.includes('<none>'))\n : []\n )\n );\n}\n\nexport function imageContainsURL(image: string) {\n const split = image.split('/');\n const url = split[0];\n if (split.length > 1) {\n return url.includes('.') || url.includes(':');\n }\n return false;\n}\n\nexport function buildImageFullURIFromModel(imageModel: {\n UseRegistry: boolean;\n Registry?: Registry;\n Image: string;\n}) {\n const registry = imageModel.UseRegistry ? imageModel.Registry : undefined;\n return buildImageFullURI(imageModel.Image, registry);\n}\n\n/**\n * builds the complete uri for an image based on its registry\n */\nexport function buildImageFullURI(image: string, registry?: Registry) {\n if (!registry) {\n return ensureTag(image);\n }\n\n const imageName = buildImageFullURIWithRegistry(image, registry);\n\n return ensureTag(imageName);\n\n function ensureTag(image: string, defaultTag = 'latest') {\n return image.includes(':') ? image : `${image}:${defaultTag}`;\n }\n}\n\nfunction buildImageFullURIWithRegistry(image: string, registry: Registry) {\n switch (registry.Type) {\n case RegistryTypes.GITHUB:\n return buildImageURIForGithub(image, registry);\n case RegistryTypes.GITLAB:\n return buildImageURIForGitLab(image, registry);\n case RegistryTypes.QUAY:\n return buildImageURIForQuay(image, registry);\n case RegistryTypes.ANONYMOUS:\n return image;\n default:\n return buildImageURIForOtherRegistry(image, registry);\n }\n\n function buildImageURIForGithub(image: string, registry: Registry) {\n const imageName = image.split('/').pop();\n\n const namespace = registry.Github.UseOrganisation\n ? registry.Github.OrganisationName\n : registry.Username;\n return `${registry.URL}/${namespace}/${imageName}`;\n }\n\n function buildImageURIForGitLab(image: string, registry: Registry) {\n const slash = image.startsWith(':') ? '' : '/';\n return `${registry.URL}/${registry.Gitlab.ProjectPath}${slash}${image}`;\n }\n\n function buildImageURIForQuay(image: string, registry: Registry) {\n const name = registry.Quay.UseOrganisation\n ? registry.Quay.OrganisationName\n : registry.Username;\n const url = registry.URL ? `${registry.URL}/` : '';\n return `${url}${name}/${image}`;\n }\n\n function buildImageURIForOtherRegistry(image: string, registry: Registry) {\n const url = registry.URL ? `${registry.URL}/` : '';\n return url + image;\n }\n}\n","import { openSwitchPrompt } from '@@/modals/SwitchPrompt';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport async function confirmServiceForceUpdate(message: string) {\n const result = await openSwitchPrompt('Are you sure?', 'Re-pull image', {\n message,\n confirmButton: buildConfirmButton('Update'),\n modalType: ModalType.Warn,\n });\n\n return result ? { pullLatest: result.value } : undefined;\n}\n","import { number, object, SchemaOf } from 'yup';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Select } from '@@/form-components/Input';\n\nimport { Options, useIntervalOptions } from './useIntervalOptions';\n\nexport const EDGE_ASYNC_INTERVAL_USE_DEFAULT = -1;\n\nexport interface EdgeAsyncIntervalsValues {\n PingInterval: number;\n SnapshotInterval: number;\n CommandInterval: number;\n}\n\nexport const options: Options = [\n { label: 'Use default interval', value: -1, isDefault: true },\n {\n value: 0,\n label: 'disabled',\n },\n {\n value: 60,\n label: '1 minute',\n },\n {\n value: 60 * 60,\n label: '1 hour',\n },\n {\n value: 24 * 60 * 60,\n label: '1 day',\n },\n {\n value: 7 * 24 * 60 * 60,\n label: '1 week',\n },\n];\n\nconst defaultFieldSettings = {\n ping: {\n label: 'Ping interval',\n tooltip:\n 'Interval used by this Edge agent to check in with the Portainer instance',\n },\n snapshot: {\n label: 'Snapshot interval',\n tooltip: 'Interval used by this Edge agent to snapshot the agent state',\n },\n command: {\n label: 'Command interval',\n tooltip:\n 'Interval used by this Edge agent to fetch commands from the Portainer instance',\n },\n};\n\ninterface Props {\n values: EdgeAsyncIntervalsValues;\n isDefaultHidden?: boolean;\n readonly?: boolean;\n fieldSettings?: typeof defaultFieldSettings;\n onChange(value: EdgeAsyncIntervalsValues): void;\n}\n\nexport function EdgeAsyncIntervalsForm({\n onChange,\n values,\n isDefaultHidden = false,\n readonly = false,\n fieldSettings = defaultFieldSettings,\n}: Props) {\n const pingIntervalOptions = useIntervalOptions(\n 'Edge.PingInterval',\n options,\n isDefaultHidden\n );\n\n const snapshotIntervalOptions = useIntervalOptions(\n 'Edge.SnapshotInterval',\n options,\n isDefaultHidden\n );\n\n const commandIntervalOptions = useIntervalOptions(\n 'Edge.CommandInterval',\n options,\n isDefaultHidden\n );\n\n return (\n <>\n <FormControl\n inputId=\"edge_checkin_ping\"\n label={fieldSettings.ping.label}\n tooltip={fieldSettings.ping.tooltip}\n >\n <Select\n value={values.PingInterval}\n name=\"PingInterval\"\n onChange={handleChange}\n options={pingIntervalOptions}\n disabled={readonly}\n />\n </FormControl>\n\n <FormControl\n inputId=\"edge_checkin_snapshot\"\n label={fieldSettings.snapshot.label}\n tooltip={fieldSettings.snapshot.tooltip}\n >\n <Select\n value={values.SnapshotInterval}\n name=\"SnapshotInterval\"\n onChange={handleChange}\n options={snapshotIntervalOptions}\n disabled={readonly}\n />\n </FormControl>\n\n <FormControl\n inputId=\"edge_checkin_command\"\n label={fieldSettings.command.label}\n tooltip={fieldSettings.command.tooltip}\n >\n <Select\n value={values.CommandInterval}\n name=\"CommandInterval\"\n onChange={handleChange}\n options={commandIntervalOptions}\n disabled={readonly}\n />\n </FormControl>\n </>\n );\n\n function handleChange(e: React.ChangeEvent<HTMLSelectElement>) {\n onChange({ ...values, [e.target.name]: parseInt(e.target.value, 10) });\n }\n}\n\nconst intervals = options.map((option) => option.value);\n\nexport function edgeAsyncIntervalsValidation(): SchemaOf<EdgeAsyncIntervalsValues> {\n return object({\n PingInterval: number().required('This field is required.').oneOf(intervals),\n SnapshotInterval: number()\n .required('This field is required.')\n .oneOf(intervals),\n CommandInterval: number()\n .required('This field is required.')\n .oneOf(intervals),\n });\n}\n","import { FormControl, Size } from '@@/form-components/FormControl';\nimport { Select } from '@@/form-components/Input';\n\nimport { Options, useIntervalOptions } from './useIntervalOptions';\n\ninterface Props {\n value: number;\n onChange(value: number): void;\n isDefaultHidden?: boolean;\n label?: string;\n tooltip?: string;\n readonly?: boolean;\n size?: Size;\n}\n\nexport const checkinIntervalOptions: Options = [\n { label: 'Use default interval', value: 0, isDefault: true },\n {\n label: '5 seconds',\n value: 5,\n },\n {\n label: '10 seconds',\n value: 10,\n },\n {\n label: '30 seconds',\n value: 30,\n },\n { label: '5 minutes', value: 300 },\n { label: '1 hour', value: 3600 },\n { label: '1 day', value: 86400 },\n];\n\nexport function EdgeCheckinIntervalField({\n value,\n readonly,\n onChange,\n isDefaultHidden = false,\n label = 'Poll frequency',\n tooltip = 'Interval used by this Edge agent to check in with the Portainer instance. Affects Edge environment management and Edge compute features.',\n size = 'small',\n}: Props) {\n const options = useIntervalOptions(\n 'EdgeAgentCheckinInterval',\n checkinIntervalOptions,\n isDefaultHidden\n );\n\n return (\n <FormControl\n inputId=\"edge_checkin\"\n label={label}\n tooltip={tooltip}\n size={size}\n >\n <Select\n value={value}\n onChange={(e) => {\n onChange(parseInt(e.currentTarget.value, 10));\n }}\n options={options}\n disabled={readonly}\n id=\"edge_checkin\"\n />\n </FormControl>\n );\n}\n","import { LayoutGrid } from 'lucide-react';\n\nimport Linux from '@/assets/ico/linux.svg?c';\n\nimport { ButtonSelector } from '@@/form-components/ButtonSelector/ButtonSelector';\nimport { Icon } from '@@/Icon';\n\nimport { OS } from './types';\n\ninterface Props {\n value: OS;\n onChange(value: OS): void;\n}\n\nexport function OsSelector({ onChange, value }: Props) {\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <ButtonSelector\n size=\"small\"\n value={value}\n onChange={(os: OS) => onChange(os)}\n options={[\n {\n value: 'linux',\n label: (\n <>\n <Icon icon={Linux} className=\"mr-1\" />\n Linux\n </>\n ),\n },\n {\n value: 'win',\n label: (\n <>\n <Icon icon={LayoutGrid} className=\"mr-1\" />\n Windows\n </>\n ),\n },\n ]}\n />\n </div>\n </div>\n );\n}\n","import { useEffect } from 'react';\n\nimport { useAgentDetails } from '@/react/portainer/environments/queries/useAgentDetails';\n\nimport { Code } from '@@/Code';\nimport { CopyButton } from '@@/buttons/CopyButton';\nimport { NavTabs } from '@@/NavTabs';\n\nimport { ScriptFormValues, Platform } from './types';\nimport { CommandTab } from './scripts';\n\ninterface Props {\n values: ScriptFormValues;\n edgeKey: string;\n edgeId?: string;\n commands: CommandTab[];\n platform?: Platform;\n onPlatformChange?(platform: Platform): void;\n asyncMode?: boolean;\n}\n\nexport function ScriptTabs({\n values,\n edgeKey,\n edgeId,\n commands,\n platform,\n asyncMode = false,\n onPlatformChange = () => {},\n}: Props) {\n const agentDetails = useAgentDetails();\n\n useEffect(() => {\n if (commands.length > 0 && commands.every((p) => p.id !== platform)) {\n onPlatformChange(commands[0].id);\n }\n }, [platform, onPlatformChange, commands]);\n\n if (!agentDetails) {\n return null;\n }\n\n const { agentSecret, agentVersion } = agentDetails;\n\n const options = commands.map((c) => {\n const cmd = c.command(\n agentVersion,\n edgeKey,\n values,\n asyncMode,\n edgeId,\n agentSecret\n );\n\n return {\n id: c.id,\n label: c.label,\n children: (\n <>\n <Code>{cmd}</Code>\n <div className=\"mt-2\">\n <CopyButton copyText={cmd}>Copy</CopyButton>\n </div>\n </>\n ),\n };\n });\n\n return (\n <NavTabs\n selectedId={platform}\n options={options}\n onSelect={(id: Platform) => onPlatformChange(id)}\n />\n );\n}\n","import { Field, useFormikContext } from 'formik';\nimport { string, boolean } from 'yup';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { Input } from '@@/form-components/Input';\n\nimport { ScriptFormValues } from './types';\n\nexport function NomadTokenField() {\n const { values, setFieldValue, errors } =\n useFormikContext<ScriptFormValues>();\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n checked={values.authEnabled}\n onChange={(value) => {\n if (!value) {\n setFieldValue('nomadToken', '');\n }\n setFieldValue('authEnabled', value);\n }}\n label=\"Nomad Authentication Enabled\"\n tooltip=\"Nomad authentication is only required if you have ACL enabled\"\n />\n </div>\n </div>\n\n {values.authEnabled && (\n <FormControl\n label=\"Nomad Token\"\n inputId=\"nomad-token-input\"\n errors={errors.nomadToken}\n >\n <Field name=\"nomadToken\" as={Input} id=\"nomad-token-input\" />\n </FormControl>\n )}\n </>\n );\n}\n\nexport function validation() {\n return {\n nomadToken: string().when('authEnabled', {\n is: true,\n then: string().required('Token is required'),\n }),\n authEnabled: boolean(),\n };\n}\n","import { useFormikContext, Field } from 'formik';\n\nimport { GroupField } from '@/react/portainer/environments/wizard/EnvironmentsCreationView/shared/MetadataFieldset/GroupsField';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { TagSelector } from '@@/TagSelector';\n\nimport { EdgeGroupsSelector } from '../../edge-stacks/components/EdgeGroupsSelector';\n\nimport { NomadTokenField } from './NomadTokenField';\nimport { ScriptFormValues } from './types';\n\ninterface Props {\n isNomadTokenVisible?: boolean;\n hideIdGetter?: boolean;\n showMetaFields?: boolean;\n}\n\nexport function EdgeScriptSettingsFieldset({\n isNomadTokenVisible,\n hideIdGetter,\n showMetaFields,\n}: Props) {\n const { values, setFieldValue } = useFormikContext<ScriptFormValues>();\n\n return (\n <>\n {showMetaFields && (\n <>\n <GroupField name=\"group\" />\n\n <EdgeGroupsSelector\n value={values.edgeGroupsIds}\n onChange={(value) => setFieldValue('edgeGroupsIds', value)}\n isGroupVisible={(group) => !group.Dynamic}\n horizontal\n />\n\n <TagSelector\n value={values.tagsIds}\n onChange={(value) => setFieldValue('tagsIds', value)}\n />\n </>\n )}\n\n {!hideIdGetter && (\n <>\n <FormControl\n label=\"Edge ID Generator\"\n tooltip=\"A bash script one liner that will generate the edge id and will be assigned to the PORTAINER_EDGE_ID environment variable\"\n inputId=\"edge-id-generator-input\"\n >\n <Input\n type=\"text\"\n name=\"edgeIdGenerator\"\n value={values.edgeIdGenerator}\n id=\"edge-id-generator-input\"\n onChange={(e) => setFieldValue(e.target.name, e.target.value)}\n />\n </FormControl>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <TextTip color=\"blue\">\n <code>PORTAINER_EDGE_ID</code> environment variable is required\n to successfully connect the edge agent to Portainer\n </TextTip>\n </div>\n </div>\n </>\n )}\n\n {isNomadTokenVisible && (\n <>\n <NomadTokenField />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"TLS\"\n labelClass=\"col-sm-3 col-lg-2\"\n checked={values.tlsEnabled}\n onChange={(checked) => setFieldValue('tlsEnabled', checked)}\n />\n </div>\n </div>\n </>\n )}\n\n <FormControl\n label=\"Environment variables\"\n tooltip=\"Comma separated list of environment variables that will be sourced from the host where the agent is deployed.\"\n inputId=\"env-variables-input\"\n >\n <Field\n name=\"envVars\"\n as={Input}\n placeholder=\"foo=bar,myvar\"\n id=\"env-variables-input\"\n />\n </FormControl>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n checked={values.allowSelfSignedCertificates}\n onChange={(value) =>\n setFieldValue('allowSelfSignedCertificates', value)\n }\n label=\"Allow self-signed certs\"\n labelClass=\"col-sm-3 col-lg-2\"\n tooltip=\"When allowing self-signed certificates the edge agent will ignore the domain validation when connecting to Portainer via HTTPS\"\n />\n </div>\n </div>\n </>\n );\n}\n","import { Formik } from 'formik';\nimport { PropsWithChildren } from 'react';\n\nimport { OsSelector } from './OsSelector';\nimport { CommandTab } from './scripts';\nimport { ScriptTabs } from './ScriptTabs';\nimport { EdgeScriptSettingsFieldset } from './EdgeScriptSettingsFieldset';\nimport { validationSchema } from './EdgeScriptForm.validation';\nimport { ScriptFormValues, OS, Platform, EdgeInfo } from './types';\n\nconst edgePropertiesFormInitialValues: ScriptFormValues = {\n allowSelfSignedCertificates: true,\n envVars: '',\n os: 'linux' as OS,\n platform: 'k8s' as Platform,\n nomadToken: '',\n authEnabled: true,\n tlsEnabled: false,\n edgeGroupsIds: [],\n group: 0,\n tagsIds: [],\n};\n\ninterface Props {\n edgeInfo: EdgeInfo;\n commands: CommandTab[] | Partial<Record<OS, CommandTab[]>>;\n isNomadTokenVisible?: boolean;\n asyncMode?: boolean;\n showMetaFields?: boolean;\n}\n\nexport function EdgeScriptForm({\n edgeInfo,\n commands,\n isNomadTokenVisible,\n asyncMode,\n showMetaFields,\n children,\n}: PropsWithChildren<Props>) {\n const showOsSelector = !(commands instanceof Array);\n\n return (\n <div className=\"form-horizontal\">\n <Formik\n initialValues={edgePropertiesFormInitialValues}\n validationSchema={() => validationSchema(isNomadTokenVisible)}\n onSubmit={() => {}}\n >\n {({ values, setFieldValue }) => (\n <>\n {children}\n\n <EdgeScriptSettingsFieldset\n isNomadTokenVisible={\n isNomadTokenVisible && values.platform === 'nomad'\n }\n hideIdGetter={edgeInfo.id !== undefined}\n showMetaFields={showMetaFields}\n />\n <div className=\"mt-8\">\n {showOsSelector && (\n <OsSelector\n value={values.os}\n onChange={(value) => setFieldValue('os', value)}\n />\n )}\n <ScriptTabs\n edgeId={edgeInfo.id}\n edgeKey={edgeInfo.key}\n values={values}\n commands={showOsSelector ? commands[values.os] || [] : commands}\n platform={values.platform}\n onPlatformChange={(platform) =>\n setFieldValue('platform', platform)\n }\n asyncMode={asyncMode}\n />\n </div>\n </>\n )}\n </Formik>\n </div>\n );\n}\n","import { object, boolean, string } from 'yup';\n\nimport { validation as nomadTokenValidation } from './NomadTokenField';\n\nexport function validationSchema(isNomadTokenVisible?: boolean) {\n return object().shape({\n allowSelfSignedCertificates: boolean(),\n envVars: string(),\n ...nomadValidation(isNomadTokenVisible),\n });\n}\n\nfunction nomadValidation(isNomadTokenVisible?: boolean) {\n if (!isNomadTokenVisible) {\n return {};\n }\n\n return {\n tlsEnabled: boolean().default(false),\n ...nomadTokenValidation(),\n };\n}\n","import _ from 'lodash';\n\nimport { getAgentShortVersion } from '@/portainer/views/endpoints/helpers';\n\nimport { ScriptFormValues, Platform } from './types';\n\ntype CommandGenerator = (\n agentVersion: string,\n edgeKey: string,\n properties: ScriptFormValues,\n useAsyncMode: boolean,\n edgeId?: string,\n agentSecret?: string\n) => string;\n\nexport type CommandTab = {\n id: Platform;\n label: string;\n command: CommandGenerator;\n};\n\nexport const commandsTabs: Record<string, CommandTab> = {\n k8sLinux: {\n id: 'k8s',\n label: 'Kubernetes',\n command: buildLinuxKubernetesCommand,\n },\n swarmLinux: {\n id: 'swarm',\n label: 'Docker Swarm',\n command: buildLinuxSwarmCommand,\n },\n standaloneLinux: {\n id: 'standalone',\n label: 'Docker Standalone',\n command: buildLinuxStandaloneCommand,\n },\n nomadLinux: {\n id: 'nomad',\n label: 'Nomad',\n command: buildLinuxNomadCommand,\n },\n swarmWindows: {\n id: 'swarm',\n label: 'Docker Swarm',\n command: buildWindowsSwarmCommand,\n },\n standaloneWindow: {\n id: 'standalone',\n label: 'Docker Standalone',\n command: buildWindowsStandaloneCommand,\n },\n} as const;\n\nexport function buildLinuxStandaloneCommand(\n agentVersion: string,\n edgeKey: string,\n properties: ScriptFormValues,\n useAsyncMode: boolean,\n edgeId?: string,\n agentSecret?: string\n) {\n const { allowSelfSignedCertificates, edgeIdGenerator, envVars } = properties;\n\n const env = buildDockerEnvVars(envVars, [\n ...buildDefaultDockerEnvVars(\n edgeKey,\n allowSelfSignedCertificates,\n !edgeIdGenerator ? edgeId : undefined,\n agentSecret,\n useAsyncMode\n ),\n ...metaEnvVars(properties),\n ]);\n\n return `${\n edgeIdGenerator ? `PORTAINER_EDGE_ID=$(${edgeIdGenerator}) \\n\\n` : ''\n }\\\ndocker run -d \\\\\n -v /var/run/docker.sock:/var/run/docker.sock \\\\\n -v /var/lib/docker/volumes:/var/lib/docker/volumes \\\\\n -v /:/host \\\\\n -v portainer_agent_data:/data \\\\\n --restart always \\\\\n ${env} \\\\\n --name portainer_edge_agent \\\\\n portainer/agent:${agentVersion}\n `;\n}\n\nexport function buildWindowsStandaloneCommand(\n agentVersion: string,\n edgeKey: string,\n properties: ScriptFormValues,\n useAsyncMode: boolean,\n edgeId?: string,\n agentSecret?: string\n) {\n const { allowSelfSignedCertificates, edgeIdGenerator, envVars } = properties;\n\n const env = buildDockerEnvVars(envVars, [\n ...buildDefaultDockerEnvVars(\n edgeKey,\n allowSelfSignedCertificates,\n edgeIdGenerator ? '$Env:PORTAINER_EDGE_ID' : edgeId,\n agentSecret,\n useAsyncMode\n ),\n ...metaEnvVars(properties),\n ]);\n\n return `${\n edgeIdGenerator\n ? `$Env:PORTAINER_EDGE_ID = \"@(${edgeIdGenerator})\" \\n\\n`\n : ''\n }\\\ndocker run -d \\\\\n --mount type=npipe,src=\\\\\\\\.\\\\pipe\\\\docker_engine,dst=\\\\\\\\.\\\\pipe\\\\docker_engine \\\\\n --mount type=bind,src=C:\\\\ProgramData\\\\docker\\\\volumes,dst=C:\\\\ProgramData\\\\docker\\\\volumes \\\\\n --mount type=volume,src=portainer_agent_data,dst=C:\\\\data \\\\\n --restart always \\\\\n ${env} \\\\\n --name portainer_edge_agent \\\\\n portainer/agent:${agentVersion}\n `;\n}\n\nexport function buildLinuxSwarmCommand(\n agentVersion: string,\n edgeKey: string,\n properties: ScriptFormValues,\n useAsyncMode: boolean,\n edgeId?: string,\n agentSecret?: string\n) {\n const { allowSelfSignedCertificates, edgeIdGenerator, envVars } = properties;\n\n const env = buildDockerEnvVars(envVars, [\n ...buildDefaultDockerEnvVars(\n edgeKey,\n allowSelfSignedCertificates,\n !edgeIdGenerator ? edgeId : undefined,\n agentSecret,\n useAsyncMode\n ),\n 'AGENT_CLUSTER_ADDR=tasks.portainer_edge_agent',\n ...metaEnvVars(properties),\n ]);\n\n return `${\n edgeIdGenerator ? `PORTAINER_EDGE_ID=$(${edgeIdGenerator}) \\n\\n` : ''\n }\\\ndocker network create \\\\\n --driver overlay \\\\\n portainer_agent_network;\n\ndocker service create \\\\\n --name portainer_edge_agent \\\\\n --network portainer_agent_network \\\\\n ${env} \\\\\n --mode global \\\\\n --constraint 'node.platform.os == linux' \\\\\n --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \\\\\n --mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \\\\\n --mount type=bind,src=//,dst=/host \\\\\n --mount type=volume,src=portainer_agent_data,dst=/data \\\\\n portainer/agent:${agentVersion}\n`;\n}\n\nexport function buildWindowsSwarmCommand(\n agentVersion: string,\n edgeKey: string,\n properties: ScriptFormValues,\n useAsyncMode: boolean,\n edgeId?: string,\n agentSecret?: string\n) {\n const { allowSelfSignedCertificates, edgeIdGenerator, envVars } = properties;\n\n const env = buildDockerEnvVars(envVars, [\n ...buildDefaultDockerEnvVars(\n edgeKey,\n allowSelfSignedCertificates,\n edgeIdGenerator ? '$Env:PORTAINER_EDGE_ID' : edgeId,\n agentSecret,\n useAsyncMode\n ),\n 'AGENT_CLUSTER_ADDR=tasks.portainer_edge_agent',\n ...metaEnvVars(properties),\n ]);\n\n return `${\n edgeIdGenerator\n ? `$Env:PORTAINER_EDGE_ID = \"@(${edgeIdGenerator})\" \\n\\n`\n : ''\n }\\\ndocker network create \\\\\n --driver overlay \\\\\n portainer_agent_network;\n\ndocker service create \\\\\n --name portainer_edge_agent \\\\\n --network portainer_agent_network \\\\\n ${env} \\\\\n --mode global \\\\\n --constraint 'node.platform.os == windows' \\\\\n --mount type=npipe,src=\\\\\\\\.\\\\pipe\\\\docker_engine,dst=\\\\\\\\.\\\\pipe\\\\docker_engine \\\\\n --mount type=bind,src=C:\\\\ProgramData\\\\docker\\\\volumes,dst=C:\\\\ProgramData\\\\docker\\\\volumes \\\\\n --mount type=volume,src=portainer_agent_data,dst=C:\\\\data \\\\\n portainer/agent:${agentVersion}\n`;\n}\n\nexport function buildLinuxKubernetesCommand(\n agentVersion: string,\n edgeKey: string,\n properties: ScriptFormValues,\n useAsyncMode: boolean,\n edgeId?: string,\n agentSecret?: string\n) {\n const { allowSelfSignedCertificates, edgeIdGenerator, envVars } = properties;\n\n const agentShortVersion = getAgentShortVersion(agentVersion);\n const allEnvVars = buildEnvVars(\n envVars,\n _.compact([useAsyncMode && 'EDGE_ASYNC=1', ...metaEnvVars(properties)])\n );\n\n const idEnvVar = edgeIdGenerator\n ? `PORTAINER_EDGE_ID=$(${edgeIdGenerator}) \\n\\n`\n : '';\n const edgeIdVar = !edgeIdGenerator && edgeId ? edgeId : '$PORTAINER_EDGE_ID';\n const selfSigned = allowSelfSignedCertificates ? '1' : '0';\n\n return `${idEnvVar}curl https://downloads.portainer.io/ee${agentShortVersion}/portainer-edge-agent-setup.sh | bash -s -- \"${edgeIdVar}\" \"${edgeKey}\" \"${selfSigned}\" \"${agentSecret}\" \"${allEnvVars}\"`;\n}\n\nexport function buildLinuxNomadCommand(\n agentVersion: string,\n edgeKey: string,\n properties: ScriptFormValues,\n useAsyncMode: boolean,\n edgeId?: string,\n agentSecret?: string\n) {\n const {\n allowSelfSignedCertificates,\n edgeIdGenerator,\n envVars,\n nomadToken = '',\n tlsEnabled,\n } = properties;\n\n const agentShortVersion = getAgentShortVersion(agentVersion);\n\n const allEnvVars = buildEnvVars(\n envVars,\n _.compact([useAsyncMode && 'EDGE_ASYNC=1', ...metaEnvVars(properties)])\n );\n\n const selfSigned = allowSelfSignedCertificates ? '1' : '0';\n const idEnvVar = edgeIdGenerator\n ? `PORTAINER_EDGE_ID=$(${edgeIdGenerator}) \\n\\n`\n : '';\n const edgeIdVar = !edgeIdGenerator && edgeId ? edgeId : '$PORTAINER_EDGE_ID';\n\n return `${idEnvVar}curl https://downloads.portainer.io/ee${agentShortVersion}/portainer-edge-agent-nomad-setup.sh | bash -s -- \"${nomadToken}\" \"${edgeIdVar}\" \"${edgeKey}\" \"${selfSigned}\" \"${allEnvVars}\" \"${agentSecret}\" \"${tlsEnabled}\"`;\n}\n\nfunction buildDockerEnvVars(envVars: string, moreVars: string[]) {\n const vars = moreVars.concat(envVars.split(',').filter((s) => s.length > 0));\n\n return vars.map((s) => `-e ${s}`).join(' \\\\\\n ');\n}\n\nfunction buildDefaultDockerEnvVars(\n edgeKey: string,\n allowSelfSignedCerts: boolean,\n edgeId = '$PORTAINER_EDGE_ID',\n agentSecret = '',\n useAsyncMode = false\n) {\n return _.compact([\n 'EDGE=1',\n `EDGE_ID=${edgeId}`,\n `EDGE_KEY=${edgeKey}`,\n `EDGE_INSECURE_POLL=${allowSelfSignedCerts ? 1 : 0}`,\n agentSecret ? `AGENT_SECRET=${agentSecret}` : ``,\n useAsyncMode ? 'EDGE_ASYNC=1' : '',\n ]);\n}\n\nconst ENV_VAR_SEPARATOR = ',';\nconst VAR_LIST_SEPARATOR = ':';\nfunction buildEnvVars(envVars: string, moreVars: string[]) {\n return _.compact([envVars.trim(), ...moreVars]).join(ENV_VAR_SEPARATOR);\n}\n\nfunction metaEnvVars({\n edgeGroupsIds,\n group,\n tagsIds,\n}: Pick<ScriptFormValues, 'edgeGroupsIds' | 'tagsIds' | 'group'>) {\n return _.compact([\n edgeGroupsIds.length &&\n `EDGE_GROUPS=${edgeGroupsIds.join(VAR_LIST_SEPARATOR)}`,\n group && `PORTAINER_GROUP=${group}`,\n tagsIds.length && `PORTAINER_TAGS=${tagsIds.join(VAR_LIST_SEPARATOR)}`,\n ]);\n}\n","import _ from 'lodash';\nimport { useState, useEffect } from 'react';\n\nimport { useSettings } from '@/react/portainer/settings/queries';\n\ntype Option = {\n label: string;\n value: number;\n};\n\ntype DefaultOption = Option & { isDefault: true };\n\nexport type Options = [DefaultOption, ...Option[]];\n\nexport function useIntervalOptions(\n fieldName:\n | 'Edge.PingInterval'\n | 'Edge.SnapshotInterval'\n | 'Edge.CommandInterval'\n | 'EdgeAgentCheckinInterval',\n initialOptions: Options,\n isDefaultHidden: boolean\n) {\n const [{ value: defaultValue }] = initialOptions;\n const [options, setOptions] = useState<Option[]>(initialOptions);\n\n const settingsQuery = useSettings(\n (settings) => _.get(settings, fieldName, 0) as number,\n !isDefaultHidden\n );\n\n useEffect(() => {\n if (isDefaultHidden) {\n setOptions(initialOptions.slice(1));\n }\n\n if (\n !isDefaultHidden &&\n typeof settingsQuery.data !== 'undefined' &&\n settingsQuery.data !== defaultValue\n ) {\n setOptions((options) => {\n let label = `${settingsQuery.data} seconds`;\n const option = options.find((o) => o.value === settingsQuery.data);\n if (option) {\n label = option.label;\n }\n\n return [\n {\n value: defaultValue,\n label: `Use default interval (${label})`,\n },\n ...options.slice(1),\n ];\n });\n }\n }, [\n settingsQuery.data,\n setOptions,\n isDefaultHidden,\n initialOptions,\n defaultValue,\n ]);\n\n return options;\n}\n","export function buildUrl() {\n return '/edge_groups';\n}\n","export const queryKeys = {\n base: () => ['edge', 'groups'] as const,\n};\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentType } from '@/react/portainer/environments/types';\n\nimport { EdgeGroup } from '../types';\n\nimport { queryKeys } from './query-keys';\nimport { buildUrl } from './build-url';\n\ninterface EdgeGroupListItemResponse extends EdgeGroup {\n EndpointTypes: Array<EnvironmentType>;\n}\n\nasync function getEdgeGroups() {\n try {\n const { data } = await axios.get<EdgeGroupListItemResponse[]>(buildUrl());\n return data;\n } catch (err) {\n throw parseAxiosError(err as Error, 'Failed fetching edge groups');\n }\n}\n\nexport function useEdgeGroups<T = EdgeGroupListItemResponse[]>({\n select,\n}: {\n select?: (groups: EdgeGroupListItemResponse[]) => T;\n} = {}) {\n return useQuery(queryKeys.base(), getEdgeGroups, { select });\n}\n","import _ from 'lodash';\n\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\n\nimport { Select } from '@@/form-components/ReactSelect';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { FormError } from '@@/form-components/FormError';\nimport { Link } from '@@/Link';\nimport { FormControl } from '@@/form-components/FormControl';\n\nimport { useEdgeGroups } from '../../edge-groups/queries/useEdgeGroups';\n\ntype SingleValue = EdgeGroup['Id'];\n\ninterface Props {\n value: SingleValue[];\n onChange: (value: SingleValue[]) => void;\n error?: string | string[];\n horizontal?: boolean;\n isGroupVisible?(group: EdgeGroup): boolean;\n}\n\nexport function EdgeGroupsSelector({\n value,\n onChange,\n error,\n horizontal,\n isGroupVisible = () => true,\n}: Props) {\n const selector = (\n <InnerSelector\n value={value}\n onChange={onChange}\n isGroupVisible={isGroupVisible}\n />\n );\n\n return horizontal ? (\n <FormControl errors={error} label=\"Edge Groups\">\n {selector}\n </FormControl>\n ) : (\n <FormSection title=\"Edge Groups\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">{selector} </div>\n {error && (\n <div className=\"col-sm-12\">\n <FormError>{error}</FormError>\n </div>\n )}\n </div>\n </FormSection>\n );\n}\n\nfunction InnerSelector({\n value,\n onChange,\n isGroupVisible,\n}: {\n isGroupVisible(group: EdgeGroup): boolean;\n value: SingleValue[];\n onChange: (value: SingleValue[]) => void;\n}) {\n const edgeGroupsQuery = useEdgeGroups();\n\n const items = (edgeGroupsQuery.data || []).filter(isGroupVisible);\n\n const valueGroups = _.compact(\n value.map((id) => items.find((item) => item.Id === id))\n );\n\n return items.length ? (\n <Select\n aria-label=\"Edge groups\"\n options={items}\n isMulti\n getOptionLabel={(item) => item.Name}\n getOptionValue={(item) => String(item.Id)}\n value={valueGroups}\n onChange={(value) => {\n onChange(value.map((item) => item.Id));\n }}\n placeholder=\"Select one or multiple group(s)\"\n closeMenuOnSelect={false}\n />\n ) : (\n <div className=\"small text-muted\">\n No Edge groups are available. Head over to the{' '}\n <Link to=\"edge.groups\">Edge groups view</Link> to create one.\n </div>\n );\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\nimport {\n AutoUpdateResponse,\n RepoConfigResponse,\n} from '@/react/portainer/gitops/types';\nimport { RegistryId } from '@/react/portainer/registries/types';\n\nimport { EnvVar } from '@@/form-components/EnvironmentVariablesFieldset/types';\n\nimport { EdgeGroup } from '../edge-groups/types';\n\nexport enum StatusType {\n /** Pending represents a pending edge stack */\n Pending,\n /** DeploymentReceived represents an edge environment which received the edge stack deployment */\n DeploymentReceived,\n /** Error represents an edge environment which failed to deploy its edge stack */\n Error,\n /** Acknowledged represents an acknowledged edge stack */\n Acknowledged,\n /** Removed represents a removed edge stack */\n Removed,\n /** StatusRemoteUpdateSuccess represents a successfully updated edge stack */\n RemoteUpdateSuccess,\n /** ImagesPulled represents a successfully images-pulling */\n ImagesPulled,\n /** Running represents a running Edge stack */\n Running,\n /** Deploying represents an Edge stack which is being deployed */\n Deploying,\n /** Removing represents an Edge stack which is being removed */\n Removing,\n /** PausedDeploying represents an Edge stack which is paused for deployment */\n PausedDeploying,\n /** PausedRemoving represents an Edge stack which is being rolled back */\n RollingBack,\n /** PausedRemoving represents an Edge stack which has been rolled back */\n RolledBack,\n}\n\nexport interface DeploymentStatus {\n Type: StatusType;\n Error: string;\n Time: number;\n}\n\ninterface EdgeStackDeploymentInfo {\n FileVersion: number;\n ConfigHash: string;\n}\n\nexport interface EdgeStackStatus {\n Status: Array<DeploymentStatus>;\n EndpointID: EnvironmentId;\n DeploymentInfo?: EdgeStackDeploymentInfo;\n}\n\nexport enum DeploymentType {\n /** represent an edge stack deployed using a compose file */\n Compose,\n /** represent an edge stack deployed using a kubernetes manifest file */\n Kubernetes,\n /** represent an edge stack deployed using a nomad hcl job file */\n Nomad,\n}\n\nexport type EdgeStack = {\n Id: number;\n Name: string;\n Status: { [key: EnvironmentId]: EdgeStackStatus };\n CreationDate: number;\n EdgeGroups: Array<EdgeGroup['Id']>;\n Registries: RegistryId[];\n ProjectPath: string;\n EntryPoint: string;\n Version: number;\n NumDeployments: number;\n ManifestPath: string;\n DeploymentType: DeploymentType;\n EdgeUpdateID: number;\n ScheduledTime: string;\n UseManifestNamespaces: boolean;\n PrePullImage: boolean;\n RePullImage: boolean;\n AutoUpdate?: AutoUpdateResponse;\n GitConfig?: RepoConfigResponse;\n Prune: boolean;\n RetryDeploy: boolean;\n Webhook?: string;\n StackFileVersion?: number;\n EnvVars?: EnvVar[];\n};\n\nexport enum EditorType {\n Compose,\n Kubernetes,\n Nomad,\n}\n","import _ from 'lodash';\nimport { useState, useRef, useCallback, useEffect } from 'react';\n\nexport function useDebounce(value: string, onChange: (value: string) => void) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n const onChangeDebounces = useRef(_.debounce(onChange, 300));\n\n const handleChange = useCallback(\n (value: string) => {\n setDebouncedValue(value);\n onChangeDebounces.current(value);\n },\n [onChangeDebounces, setDebouncedValue]\n );\n\n useEffect(() => {\n setDebouncedValue(value);\n }, [value]);\n\n return [debouncedValue, handleChange] as const;\n}\n","import { useCurrentStateAndParams } from '@uirouter/react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport function useEnvironmentId(force = true): EnvironmentId {\n const {\n params: { endpointId: environmentId },\n } = useCurrentStateAndParams();\n\n if (!environmentId) {\n if (!force) {\n return 0;\n }\n\n throw new Error('endpointId url param is required');\n }\n\n return parseInt(environmentId, 10);\n}\n","import { useRouter } from '@uirouter/react';\nimport { ComponentType } from 'react';\n\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nexport function useLimitToBE(defaultPath = 'portainer.home') {\n const router = useRouter();\n if (!isBE) {\n router.stateService.go(defaultPath);\n return true;\n }\n\n return false;\n}\n\nexport function withLimitToBE<T>(\n WrappedComponent: ComponentType<T>,\n defaultPath = 'portainer.home'\n): ComponentType<T> {\n // Try to create a nice displayName for React Dev Tools.\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n function WrapperComponent(props: T & JSX.IntrinsicAttributes) {\n const isLimitedToBE = useLimitToBE(defaultPath);\n\n if (isLimitedToBE) {\n return null;\n }\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <WrappedComponent {...props} />;\n }\n\n WrapperComponent.displayName = `withLimitToBE(${displayName})`;\n\n return WrapperComponent;\n}\n","import { useState, useCallback, useMemo } from 'react';\n\nconst localStoragePrefix = 'portainer';\n\nexport function keyBuilder(key: string) {\n return `${localStoragePrefix}.${key}`;\n}\n\nexport function useLocalStorage<T>(\n key: string,\n defaultValue: T,\n storage = localStorage\n): [T, (value: T) => void] {\n const [value, setValue] = useState(get<T>(key, defaultValue, storage));\n\n const handleChange = useCallback(\n (value) => {\n setValue(value);\n set<T>(key, value, storage);\n },\n [key, storage]\n );\n\n return useMemo(() => [value, handleChange], [value, handleChange]);\n}\n\nexport function get<T>(\n key: string,\n defaultValue: T,\n storage = localStorage\n): T {\n const value = storage.getItem(keyBuilder(key));\n if (!value) {\n return defaultValue;\n }\n\n try {\n return JSON.parse(value);\n } catch (e) {\n return defaultValue;\n }\n}\n\nexport function set<T>(key: string, value: T, storage = localStorage) {\n storage.setItem(keyBuilder(key), JSON.stringify(value));\n}\n","import { useState, useCallback, useEffect } from 'react';\n\nexport function useStateWrapper<T>(value: T, onChange: (value: T) => void) {\n const [inputValue, setInputValue] = useState(value);\n\n const updateInputValue = useCallback(\n (value: T) => {\n setInputValue(value);\n onChange(value);\n },\n [onChange, setInputValue]\n );\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n return [inputValue, updateInputValue] as const;\n}\n","import jwtDecode from 'jwt-decode';\nimport { useCurrentStateAndParams } from '@uirouter/react';\nimport {\n createContext,\n ReactNode,\n useContext,\n useMemo,\n PropsWithChildren,\n} from 'react';\n\nimport { isAdmin } from '@/portainer/users/user.helpers';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { User } from '@/portainer/users/types';\nimport { useUser as useLoadUser } from '@/portainer/users/queries/useUser';\n\nimport { useLocalStorage } from './useLocalStorage';\n\ninterface State {\n user?: User;\n}\n\nexport const UserContext = createContext<State | null>(null);\nUserContext.displayName = 'UserContext';\n\n/**\n * @deprecated use `useCurrentUser` instead\n */\nexport const useUser = useCurrentUser;\n\nexport function useCurrentUser() {\n const context = useContext(UserContext);\n\n if (context === null) {\n throw new Error('should be nested under UserProvider');\n }\n\n const { user } = context;\n if (typeof user === 'undefined') {\n throw new Error('should be authenticated');\n }\n\n return useMemo(\n () => ({\n user,\n isAdmin: isAdmin(user),\n }),\n [user]\n );\n}\n\nexport function useAuthorizations(\n authorizations: string | string[],\n forceEnvironmentId?: EnvironmentId,\n adminOnlyCE = false\n) {\n const { user } = useUser();\n const {\n params: { endpointId },\n } = useCurrentStateAndParams();\n\n if (!user) {\n return false;\n }\n\n return hasAuthorizations(\n user,\n authorizations,\n forceEnvironmentId || endpointId,\n adminOnlyCE\n );\n}\n\nexport function isEnvironmentAdmin(\n user: User,\n environmentId: EnvironmentId,\n adminOnlyCE = true\n) {\n return hasAuthorizations(\n user,\n ['EndpointResourcesAccess'],\n environmentId,\n adminOnlyCE\n );\n}\n\nexport function hasAuthorizations(\n user: User,\n authorizations: string | string[],\n environmentId?: EnvironmentId,\n adminOnlyCE = false\n) {\n const authorizationsArray =\n typeof authorizations === 'string' ? [authorizations] : authorizations;\n\n if (authorizationsArray.length === 0) {\n return true;\n }\n\n if (process.env.PORTAINER_EDITION === 'CE') {\n return !adminOnlyCE || isAdmin(user);\n }\n\n if (!environmentId) {\n return false;\n }\n\n if (isAdmin(user)) {\n return true;\n }\n\n if (\n !user.EndpointAuthorizations ||\n !user.EndpointAuthorizations[environmentId]\n ) {\n return false;\n }\n\n const userEndpointAuthorizations = user.EndpointAuthorizations[environmentId];\n return authorizationsArray.some(\n (authorization) => userEndpointAuthorizations[authorization]\n );\n}\n\ninterface AuthorizedProps {\n authorizations: string | string[];\n environmentId?: EnvironmentId;\n adminOnlyCE?: boolean;\n childrenUnauthorized?: ReactNode;\n}\n\nexport function Authorized({\n authorizations,\n environmentId,\n adminOnlyCE = false,\n children,\n childrenUnauthorized = null,\n}: PropsWithChildren<AuthorizedProps>) {\n const isAllowed = useAuthorizations(\n authorizations,\n environmentId,\n adminOnlyCE\n );\n\n return isAllowed ? <>{children}</> : <>{childrenUnauthorized}</>;\n}\n\ninterface UserProviderProps {\n children: ReactNode;\n}\n\nexport function UserProvider({ children }: UserProviderProps) {\n const [jwt] = useLocalStorage('JWT', '');\n\n const tokenPayload = useMemo(() => jwtDecode(jwt) as { id: number }, [jwt]);\n\n const userQuery = useLoadUser(tokenPayload.id, {\n staleTime: Infinity, // should reload te user details only on page load\n });\n\n const providerState = useMemo(\n () => ({ user: userQuery.data }),\n [userQuery.data]\n );\n\n if (jwt === '' || !providerState.user) {\n return null;\n }\n\n return (\n <UserContext.Provider value={providerState}>\n {children}\n </UserContext.Provider>\n );\n}\n","import { FormikErrors } from 'formik';\n\nimport { Ingress } from '@/react/kubernetes/ingresses/types';\n\nimport { ServiceFormValues, ServicePort } from './types';\n\nexport function isErrorType<T>(\n error: string | FormikErrors<T> | undefined\n): error is FormikErrors<T> {\n return error !== undefined && typeof error !== 'string';\n}\n\nexport function newPort(serviceName?: string) {\n return {\n port: undefined,\n targetPort: undefined,\n name: '',\n protocol: 'TCP',\n nodePort: undefined,\n serviceName,\n };\n}\n\nfunction generateIndexedName(appName: string, index: number) {\n return index === 0 ? appName : `${appName}-${index}`;\n}\n\nfunction isNameUnique(name: string, services: ServiceFormValues[]) {\n return !services.find((service) => service.Name === name);\n}\n\nexport function generateUniqueName(\n appName: string,\n index: number,\n services: ServiceFormValues[]\n) {\n let initialIndex = index;\n let uniqueName = appName;\n\n while (!isNameUnique(uniqueName, services)) {\n uniqueName = generateIndexedName(appName, initialIndex);\n initialIndex++;\n }\n\n return uniqueName;\n}\n\nexport const serviceFormDefaultValues: ServiceFormValues = {\n Headless: false,\n Namespace: '',\n Name: '',\n StackName: '',\n Ports: [],\n Type: 1, // clusterip type as default\n ClusterIP: '',\n ApplicationName: '',\n ApplicationOwner: '',\n Note: '',\n Ingress: false,\n Selector: {},\n};\n\n/**\n * Generates new Ingress objects from form path data\n * @param {Ingress[]} oldIngresses - The old Ingress objects\n * @param {ServicePort[]} newServicesPorts - The new ServicePort objects from the form\n * @param {ServicePort[]} oldServicesPorts - The old ServicePort objects\n * @returns {Ingress[]} The new Ingress objects\n */\nexport function generateNewIngressesFromFormPaths(\n oldIngresses?: Ingress[],\n newServicesPorts?: ServicePort[],\n oldServicesPorts?: ServicePort[]\n): Ingress[] {\n // filter the ports to only the ones that have an ingress\n const oldIngressPaths = oldServicesPorts\n ?.flatMap((port) => port.ingressPaths)\n .filter((ingressPath) => ingressPath?.IngressName);\n const newPortsWithIngress = newServicesPorts?.filter(\n (port) => port.ingressPaths?.length\n );\n // return early if possible\n if (!oldIngresses && !newPortsWithIngress) {\n return [];\n }\n\n // remove the old paths from the newIngresses copy\n const newIngresses = structuredClone(oldIngresses) ?? [];\n oldIngressPaths?.forEach((oldIngressPath) => {\n if (!oldIngressPath?.Path) return;\n const newMatchingIng = newIngresses?.find(\n (ingress) => ingress.Name === oldIngressPath.IngressName\n );\n if (!newMatchingIng) return;\n\n // remove the old path from the new ingress\n const oldPathIndex = newMatchingIng?.Paths?.findIndex(\n (path) =>\n path.Path === prependWithSlash(oldIngressPath.Path) &&\n path.Host === oldIngressPath.Host\n );\n if (oldPathIndex === -1 || oldPathIndex === undefined) return;\n if (newMatchingIng.Paths) {\n newMatchingIng.Paths = [\n ...newMatchingIng.Paths.slice(0, oldPathIndex),\n ...newMatchingIng.Paths.slice(oldPathIndex + 1),\n ];\n }\n\n // update the new ingresses with the newMatchingIng\n const newIngIndex = newIngresses.findIndex(\n (ingress) => ingress.Name === newMatchingIng.Name\n );\n newIngresses[newIngIndex] = newMatchingIng;\n });\n\n // and add the new paths to return the updated ingresses\n newPortsWithIngress?.forEach(\n ({ ingressPaths: newIngresspaths, ...servicePort }) => {\n newIngresspaths?.forEach((newIngressPath) => {\n if (!newIngressPath?.Path) return;\n const newMatchingIng = newIngresses.find(\n (ingress) => ingress.Name === newIngressPath?.IngressName\n );\n if (!newMatchingIng) return;\n\n // add the new path to the new ingress\n if (\n newIngressPath.Host &&\n newIngressPath.IngressName &&\n servicePort.serviceName &&\n servicePort.port\n ) {\n newMatchingIng.Paths = [\n ...(newMatchingIng.Paths ?? []),\n {\n Path: prependWithSlash(newIngressPath.Path),\n Host: newIngressPath.Host,\n IngressName: newIngressPath.IngressName,\n ServiceName: servicePort.serviceName,\n Port: servicePort.port,\n PathType: 'Prefix',\n },\n ];\n }\n // update the new ingresses with the newMatchingIng\n const newIngIndex = newIngresses.findIndex(\n (ingress) => ingress.Name === newMatchingIng.Name\n );\n newIngresses[newIngIndex] = newMatchingIng;\n });\n }\n );\n return newIngresses;\n}\n\n/** prependWithSlash puts a '/' in front of a string if there isn't one there already. If the string is empty, it stays empty */\nexport function prependWithSlash(path?: string) {\n if (!path) return '';\n return path.startsWith('/') ? path : `/${path}`;\n}\n","import PortainerError from '@/portainer/error';\nimport axios from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport async function getIsRBACEnabled(environmentId: EnvironmentId) {\n try {\n const { data } = await axios.get<boolean>(\n `kubernetes/${environmentId}/rbac_enabled`\n );\n return data;\n } catch (e) {\n throw new PortainerError('Unable to check if RBAC is enabled.', e as Error);\n }\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\nimport PortainerError from '@/portainer/error';\nimport axios from '@/portainer/services/axios';\n\nimport { IngressControllerClassMap } from '../types';\n\n// get all supported ingress classes and controllers for the cluster\n// allowedOnly set to true will hide globally disallowed ingresscontrollers\nexport async function getIngressControllerClassMap({\n environmentId,\n namespace,\n allowedOnly,\n}: {\n environmentId: EnvironmentId;\n namespace?: string;\n allowedOnly?: boolean;\n}) {\n try {\n const { data: controllerMaps } = await axios.get<\n IngressControllerClassMap[]\n >(\n buildUrl(environmentId, namespace),\n allowedOnly ? { params: { allowedOnly: true } } : undefined\n );\n return controllerMaps;\n } catch (e) {\n throw new PortainerError('Unable to get ingress controllers.', e as Error);\n }\n}\n\n// get all supported ingress classes and controllers for the cluster\nexport async function updateIngressControllerClassMap(\n environmentId: EnvironmentId,\n ingressControllerClassMap: IngressControllerClassMap[],\n namespace?: string\n) {\n try {\n const { data: controllerMaps } = await axios.put<\n IngressControllerClassMap[]\n >(buildUrl(environmentId, namespace), ingressControllerClassMap);\n return controllerMaps;\n } catch (e) {\n throw new PortainerError(\n 'Unable to update ingress controllers.',\n e as Error\n );\n }\n}\n\nfunction buildUrl(environmentId: EnvironmentId, namespace?: string) {\n let url = `kubernetes/${environmentId}/`;\n if (namespace) {\n url += `namespaces/${namespace}/`;\n }\n url += 'ingresscontrollers';\n return url;\n}\n","import { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\nimport { FileCode, Lock } from 'lucide-react';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport const typeOptions: ReadonlyArray<BoxSelectorOption<number>> = [\n {\n id: 'type_basic',\n value: KubernetesConfigurationKinds.CONFIGMAP,\n icon: FileCode,\n iconType: 'badge',\n label: 'ConfigMap',\n description: 'This kind holds non-sensitive information',\n },\n {\n id: 'type_secret',\n value: KubernetesConfigurationKinds.SECRET,\n icon: Lock,\n iconType: 'badge',\n label: 'Secret',\n description: 'This kind holds sensitive information',\n },\n] as const;\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Ingress, DeleteIngressesRequest, IngressController } from './types';\n\nexport async function getIngress(\n environmentId: EnvironmentId,\n namespace: string,\n ingressName: string\n) {\n try {\n const { data: ingress } = await axios.get<Ingress[]>(\n buildUrl(environmentId, namespace, ingressName)\n );\n return ingress[0];\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve the ingress');\n }\n}\n\nexport async function getIngresses(\n environmentId: EnvironmentId,\n namespace: string\n) {\n try {\n const { data: ingresses } = await axios.get<Ingress[]>(\n buildUrl(environmentId, namespace)\n );\n return ingresses;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve ingresses');\n }\n}\n\nexport async function getIngressControllers(\n environmentId: EnvironmentId,\n namespace: string\n) {\n try {\n const { data: ingresscontrollers } = await axios.get<IngressController[]>(\n `kubernetes/${environmentId}/namespaces/${namespace}/ingresscontrollers`\n );\n return ingresscontrollers;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve ingresses');\n }\n}\n\nexport async function createIngress(\n environmentId: EnvironmentId,\n ingress: Ingress\n) {\n try {\n return await axios.post(\n buildUrl(environmentId, ingress.Namespace),\n ingress\n );\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to create an ingress');\n }\n}\n\nexport async function updateIngress(\n environmentId: EnvironmentId,\n ingress: Ingress\n) {\n try {\n return await axios.put(buildUrl(environmentId, ingress.Namespace), ingress);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update an ingress');\n }\n}\n\nexport async function deleteIngresses(\n environmentId: EnvironmentId,\n data: DeleteIngressesRequest\n) {\n try {\n return await axios.post(\n `kubernetes/${environmentId}/ingresses/delete`,\n data\n );\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to delete ingresses');\n }\n}\n\nfunction buildUrl(\n environmentId: EnvironmentId,\n namespace: string,\n ingressName?: string\n) {\n let url = `kubernetes/${environmentId}/namespaces/${namespace}/ingresses`;\n\n if (ingressName) {\n url += `/${ingressName}`;\n }\n\n return url;\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Service } from './types';\n\nexport async function getServices(\n environmentId: EnvironmentId,\n namespace: string\n) {\n try {\n const { data: services } = await axios.get<Service[]>(\n buildUrl(environmentId, namespace)\n );\n return services;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve services');\n }\n}\n\nfunction buildUrl(environmentId: EnvironmentId, namespace: string) {\n const url = `kubernetes/${environmentId}/namespaces/${namespace}/services`;\n return url;\n}\n","import { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { compact } from 'lodash';\nimport { ServiceList } from 'kubernetes-types/core/v1';\n\nimport { withError } from '@/react-tools/react-query';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { isFulfilled } from '@/portainer/helpers/promise-utils';\nimport {\n NodeMetrics,\n NodeMetric,\n Service,\n} from '@/react/kubernetes/services/types';\n\nexport const queryKeys = {\n clusterServices: (environmentId: EnvironmentId) =>\n ['environments', environmentId, 'kubernetes', 'services'] as const,\n};\n\nexport function useServicesForCluster(\n environmentId: EnvironmentId,\n namespaceNames?: string[],\n options?: { autoRefreshRate?: number }\n) {\n return useQuery(\n queryKeys.clusterServices(environmentId),\n async () => {\n if (!namespaceNames?.length) {\n return [];\n }\n const settledServicesPromise = await Promise.allSettled(\n namespaceNames.map((namespace) =>\n getServices(environmentId, namespace, true)\n )\n );\n return compact(\n settledServicesPromise.filter(isFulfilled).flatMap((i) => i.value)\n );\n },\n {\n ...withError('Unable to get services.'),\n refetchInterval() {\n return options?.autoRefreshRate ?? false;\n },\n enabled: !!namespaceNames?.length,\n }\n );\n}\n\nexport function useMutationDeleteServices(environmentId: EnvironmentId) {\n const queryClient = useQueryClient();\n return useMutation(deleteServices, {\n onSuccess: () =>\n queryClient.invalidateQueries(queryKeys.clusterServices(environmentId)),\n ...withError('Unable to delete service(s)'),\n });\n}\n\n// get a list of services for a specific namespace from the Portainer API\nasync function getServices(\n environmentId: EnvironmentId,\n namespace: string,\n lookupApps: boolean\n) {\n try {\n const { data: services } = await axios.get<Array<Service>>(\n `kubernetes/${environmentId}/namespaces/${namespace}/services`,\n {\n params: {\n lookupapplications: lookupApps,\n },\n }\n );\n return services;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve services');\n }\n}\n\n// getNamespaceServices is used to get a list of services for a specific namespace directly from the Kubernetes API\nexport async function getNamespaceServices(\n environmentId: EnvironmentId,\n namespace: string,\n queryParams?: Record<string, string>\n) {\n const { data: services } = await axios.get<ServiceList>(\n `/endpoints/${environmentId}/kubernetes/api/v1/namespaces/${namespace}/services`,\n {\n params: queryParams,\n }\n );\n return services.items;\n}\n\nexport async function deleteServices({\n environmentId,\n data,\n}: {\n environmentId: EnvironmentId;\n data: Record<string, string[]>;\n}) {\n try {\n return await axios.post(\n `kubernetes/${environmentId}/services/delete`,\n data\n );\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to delete service(s)');\n }\n}\n\nexport async function getMetricsForAllNodes(environmentId: EnvironmentId) {\n try {\n const { data: nodes } = await axios.get<NodeMetrics>(\n `kubernetes/${environmentId}/metrics/nodes`,\n {}\n );\n return nodes;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve metrics for all nodes'\n );\n }\n}\n\nexport async function getMetricsForNode(\n environmentId: EnvironmentId,\n nodeName: string\n) {\n try {\n const { data: node } = await axios.get<NodeMetric>(\n `kubernetes/${environmentId}/metrics/nodes/${nodeName}`,\n {}\n );\n return node;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve metrics for node');\n }\n}\n\nexport async function getMetricsForAllPods(\n environmentId: EnvironmentId,\n namespace: string\n) {\n try {\n const { data: pods } = await axios.get(\n `kubernetes/${environmentId}/metrics/pods/namespace/${namespace}`,\n {}\n );\n return pods;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve metrics for all pods'\n );\n }\n}\n\nexport async function getMetricsForPod(\n environmentId: EnvironmentId,\n namespace: string,\n podName: string\n) {\n try {\n const { data: pod } = await axios.get(\n `kubernetes/${environmentId}/metrics/pods/namespace/${namespace}/${podName}`,\n {}\n );\n return pod;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve metrics for pod');\n }\n}\n","import { components, OptionProps } from 'react-select';\n\nimport { useLocalStorage } from '@/react/hooks/useLocalStorage';\n\nimport {\n type Option as OptionType,\n PortainerSelect,\n} from '@@/form-components/PortainerSelect';\n\ninterface Props<TValue = number> {\n filterOptions?: OptionType<TValue>[];\n onChange: (value: TValue[]) => void;\n placeHolder: string;\n value: TValue[];\n}\n\nfunction Option<TValue = number>(props: OptionProps<OptionType<TValue>, true>) {\n const { isSelected, label } = props;\n return (\n <div>\n <components.Option\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <input type=\"checkbox\" checked={isSelected} onChange={() => null} />\n <label className=\"whitespace-nowrap\">{label}</label>\n </div>\n </components.Option>\n </div>\n );\n}\n\nexport function HomepageFilter<TValue = number>({\n filterOptions = [],\n onChange,\n placeHolder,\n value,\n}: Props<TValue>) {\n return (\n <PortainerSelect<TValue>\n placeholder={placeHolder}\n options={filterOptions}\n value={value}\n isMulti\n components={{ Option }}\n onChange={(option) => onChange([...option])}\n bindToBody\n />\n );\n}\n\nexport function useHomePageFilter<T>(\n key: string,\n defaultValue: T\n): [T, (value: T) => void] {\n const filterKey = keyBuilder(key);\n return useLocalStorage(filterKey, defaultValue, sessionStorage);\n}\n\nfunction keyBuilder(key: string) {\n return `datatable_home_filter_type_${key}`;\n}\n","import { object, string, array, number } from 'yup';\n\nimport { ResourceControlOwnership } from '../types';\n\nexport function validationSchema(isAdmin: boolean) {\n return object()\n .shape({\n ownership: string()\n .oneOf(Object.values(ResourceControlOwnership))\n .required(),\n authorizedUsers: array(number()),\n authorizedTeams: array(number()),\n })\n .test(\n 'user-and-team',\n isAdmin\n ? 'You must specify at least one team or user.'\n : 'You must specify at least one team.',\n ({ ownership, authorizedTeams, authorizedUsers }) => {\n if (ownership !== ResourceControlOwnership.RESTRICTED) {\n return true;\n }\n\n if (!isAdmin) {\n return !!authorizedTeams && authorizedTeams.length > 0;\n }\n\n return (\n !!authorizedTeams &&\n !!authorizedUsers &&\n (authorizedTeams.length > 0 || authorizedUsers.length > 0)\n );\n }\n );\n}\n","import { FormikErrors } from 'formik';\n\nimport { useUser } from '@/react/hooks/useUser';\n\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nimport { EditDetails } from '../EditDetails';\nimport { ResourceControlOwnership, AccessControlFormData } from '../types';\n\nexport interface Props {\n values: AccessControlFormData;\n onChange(values: AccessControlFormData): void;\n hideTitle?: boolean;\n formNamespace?: string;\n errors?: FormikErrors<AccessControlFormData>;\n}\n\nexport function AccessControlForm({\n values,\n onChange,\n hideTitle,\n formNamespace,\n errors,\n}: Props) {\n const { isAdmin } = useUser();\n\n const accessControlEnabled =\n values.ownership !== ResourceControlOwnership.PUBLIC;\n return (\n <>\n {!hideTitle && <FormSectionTitle>Access control</FormSectionTitle>}\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n checked={accessControlEnabled}\n name={withNamespace('accessControlEnabled')}\n label=\"Enable access control\"\n tooltip=\"When enabled, you can restrict the access and management of this resource.\"\n onChange={handleToggleEnable}\n dataCy=\"portainer-accessMgmtToggle\"\n />\n </div>\n </div>\n\n {accessControlEnabled && (\n <EditDetails\n onChange={onChange}\n values={values}\n errors={errors}\n formNamespace={formNamespace}\n />\n )}\n </>\n );\n\n function withNamespace(name: string) {\n return formNamespace ? `${formNamespace}.${name}` : name;\n }\n\n function handleToggleEnable(accessControlEnabled: boolean) {\n let ownership = ResourceControlOwnership.PUBLIC;\n if (accessControlEnabled) {\n ownership = isAdmin\n ? ResourceControlOwnership.ADMINISTRATORS\n : ResourceControlOwnership.PRIVATE;\n }\n onChange({ ...values, ownership });\n }\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\nimport _ from 'lodash';\nimport { Info } from 'lucide-react';\n\nimport { ownershipIcon, truncate } from '@/portainer/filters/filters';\nimport { UserId } from '@/portainer/users/types';\nimport { TeamId } from '@/react/portainer/users/teams/types';\nimport { useTeams } from '@/react/portainer/users/teams/queries';\nimport { useUsers } from '@/portainer/users/queries';\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { Link } from '@@/Link';\nimport { Tooltip } from '@@/Tip/Tooltip';\nimport { Icon } from '@@/Icon';\n\nimport {\n ResourceControlOwnership,\n ResourceControlType,\n ResourceId,\n} from '../types';\nimport { ResourceControlViewModel } from '../models/ResourceControlViewModel';\n\ninterface Props {\n resourceControl?: ResourceControlViewModel;\n resourceType: ResourceControlType;\n isAuthorisedToFetchUsers?: boolean;\n}\n\nexport function AccessControlPanelDetails({\n resourceControl,\n resourceType,\n isAuthorisedToFetchUsers = false,\n}: Props) {\n const inheritanceMessage = getInheritanceMessage(\n resourceType,\n resourceControl\n );\n\n const {\n Ownership: ownership = ResourceControlOwnership.ADMINISTRATORS,\n UserAccesses: restrictedToUsers = [],\n TeamAccesses: restrictedToTeams = [],\n } = resourceControl || {};\n\n const users = useAuthorizedUsers(\n restrictedToUsers.map((ra) => ra.UserId),\n isAuthorisedToFetchUsers\n );\n const teams = useAuthorizedTeams(restrictedToTeams.map((ra) => ra.TeamId));\n\n const teamsLength = teams.data ? teams.data.length : 0;\n const unauthoisedTeams = restrictedToTeams.length - teamsLength;\n\n let teamsMessage = teams.data && teams.data.join(', ');\n if (unauthoisedTeams > 0 && teams.isFetched) {\n teamsMessage += teamsLength > 0 ? ' and' : '';\n teamsMessage += ` ${unauthoisedTeams} ${pluralize(\n unauthoisedTeams,\n 'team'\n )} you are not part of`;\n }\n\n const userMessage = users.data\n ? users.data.join(', ')\n : `${restrictedToUsers.length} ${pluralize(\n restrictedToUsers.length,\n 'user'\n )}`;\n\n return (\n <table className=\"table\">\n <tbody>\n <tr data-cy=\"access-ownership\">\n <td className=\"w-1/5\">Ownership</td>\n <td>\n <i\n className={clsx(ownershipIcon(ownership), 'space-right')}\n aria-hidden=\"true\"\n aria-label=\"ownership-icon\"\n />\n <span aria-label=\"ownership\">{ownership}</span>\n <Tooltip message={getOwnershipTooltip(ownership)} />\n </td>\n </tr>\n {inheritanceMessage}\n {restrictedToUsers.length > 0 && (\n <tr data-cy=\"access-authorisedUsers\">\n <td>Authorized users</td>\n <td aria-label=\"authorized-users\">{userMessage}</td>\n </tr>\n )}\n {restrictedToTeams.length > 0 && (\n <tr data-cy=\"access-authorisedTeams\">\n <td>Authorized teams</td>\n <td aria-label=\"authorized-teams\">{teamsMessage}</td>\n </tr>\n )}\n </tbody>\n </table>\n );\n}\n\nfunction getOwnershipTooltip(ownership: ResourceControlOwnership) {\n switch (ownership) {\n case ResourceControlOwnership.PRIVATE:\n return 'Management of this resource is restricted to a single user.';\n case ResourceControlOwnership.RESTRICTED:\n return 'This resource can be managed by a restricted set of users and/or teams.';\n case ResourceControlOwnership.PUBLIC:\n return 'This resource can be managed by any user with access to this environment.';\n case ResourceControlOwnership.ADMINISTRATORS:\n default:\n return 'This resource can only be managed by administrators.';\n }\n}\n\nfunction getInheritanceMessage(\n resourceType: ResourceControlType,\n resourceControl?: ResourceControlViewModel\n) {\n if (!resourceControl || resourceControl.Type === resourceType) {\n return null;\n }\n\n const parentType = resourceControl.Type;\n const resourceId = resourceControl.ResourceId;\n\n if (\n resourceType === ResourceControlType.Container &&\n parentType === ResourceControlType.Service\n ) {\n return (\n <InheritanceMessage tooltip=\"Access control applied on a service is also applied on each container of that service.\">\n Access control on this resource is inherited from the following service:\n <Link to=\"docker.services.service\" params={{ id: resourceId }}>\n {truncate(resourceId)}\n </Link>\n </InheritanceMessage>\n );\n }\n\n if (\n resourceType === ResourceControlType.Volume &&\n parentType === ResourceControlType.Container\n ) {\n return (\n <InheritanceMessage tooltip=\"Access control applied on a container created using a template is also applied on each volume associated to the container.\">\n Access control on this resource is inherited from the following\n container:\n <Link to=\"docker.containers.container\" params={{ id: resourceId }}>\n {truncate(resourceId)}\n </Link>\n </InheritanceMessage>\n );\n }\n\n if (parentType === ResourceControlType.Stack) {\n return (\n <InheritanceMessage tooltip=\"Access control applied on a stack is also applied on each resource in the stack.\">\n <span className=\"space-right\">\n Access control on this resource is inherited from the following stack:\n </span>\n {removeEndpointIdFromStackResourceId(resourceId)}\n </InheritanceMessage>\n );\n }\n\n return null;\n}\n\nfunction removeEndpointIdFromStackResourceId(stackName: ResourceId) {\n if (!stackName || typeof stackName !== 'string') {\n return stackName;\n }\n\n const firstUnderlineIndex = stackName.indexOf('_');\n if (firstUnderlineIndex < 0) {\n return stackName;\n }\n return stackName.substring(firstUnderlineIndex + 1);\n}\n\ninterface InheritanceMessageProps {\n tooltip: string;\n}\n\nfunction InheritanceMessage({\n children,\n tooltip,\n}: PropsWithChildren<InheritanceMessageProps>) {\n return (\n <tr>\n <td colSpan={2} aria-label=\"inheritance-message\">\n <Icon icon={Info} mode=\"primary\" className=\"mr-1\" />\n {children}\n <Tooltip message={tooltip} />\n </td>\n </tr>\n );\n}\n\nfunction useAuthorizedTeams(authorizedTeamIds: TeamId[]) {\n return useTeams(false, 0, {\n enabled: authorizedTeamIds.length > 0,\n select: (teams) => {\n if (authorizedTeamIds.length === 0) {\n return [];\n }\n\n return _.compact(\n authorizedTeamIds.map((id) => {\n const team = teams.find((u) => u.Id === id);\n return team?.Name;\n })\n );\n },\n });\n}\n\nfunction useAuthorizedUsers(authorizedUserIds: UserId[], enabled = true) {\n return useUsers(\n false,\n 0,\n authorizedUserIds.length > 0 && enabled,\n (users) => {\n if (authorizedUserIds.length === 0) {\n return [];\n }\n\n return _.compact(\n authorizedUserIds.map((id) => {\n const user = users.find((u) => u.Id === id);\n return user?.Username;\n })\n );\n }\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"form\":\"app-react-portainer-access-control-AccessControlPanel-AccessControlPanelForm-module__form\"};","import { Form, Formik } from 'formik';\nimport clsx from 'clsx';\nimport { useMutation } from 'react-query';\nimport { object } from 'yup';\n\nimport { useCurrentUser } from '@/react/hooks/useUser';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { confirm } from '@@/modals/confirm';\nimport { Button } from '@@/buttons';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { ModalType } from '@@/modals';\n\nimport { EditDetails } from '../EditDetails';\nimport { parseAccessControlFormData } from '../utils';\nimport { validationSchema } from '../AccessControlForm/AccessControlForm.validation';\nimport { applyResourceControlChange } from '../access-control.service';\nimport {\n ResourceControlType,\n ResourceId,\n AccessControlFormData,\n} from '../types';\nimport { ResourceControlViewModel } from '../models/ResourceControlViewModel';\n\nimport styles from './AccessControlPanelForm.module.css';\n\ninterface Props {\n resourceType: ResourceControlType;\n resourceId: ResourceId;\n resourceControl?: ResourceControlViewModel;\n environmentId?: EnvironmentId;\n onCancelClick(): void;\n onUpdateSuccess(): Promise<void>;\n}\n\nexport function AccessControlPanelForm({\n resourceId,\n resourceType,\n resourceControl,\n environmentId,\n onCancelClick,\n onUpdateSuccess,\n}: Props) {\n const { isAdmin, user } = useCurrentUser();\n\n const updateAccess = useMutation(\n (variables: AccessControlFormData) =>\n applyResourceControlChange(\n resourceType,\n resourceId,\n variables,\n resourceControl\n ),\n {\n meta: {\n error: { title: 'Failure', message: 'Unable to update access control' },\n },\n onSuccess() {\n return onUpdateSuccess();\n },\n }\n );\n\n const initialValues = {\n accessControl: parseAccessControlFormData(\n isAdmin,\n user.Id,\n resourceControl\n ),\n };\n\n return (\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validateOnMount\n validateOnChange\n validationSchema={() =>\n object({ accessControl: validationSchema(isAdmin) })\n }\n >\n {({ setFieldValue, values, isSubmitting, isValid, errors }) => (\n <Form className={clsx('form-horizontal', styles.form)}>\n <EditDetails\n onChange={(accessControl) =>\n setFieldValue('accessControl', accessControl)\n }\n values={values.accessControl}\n isPublicVisible\n errors={errors.accessControl}\n environmentId={environmentId}\n />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <Button size=\"small\" color=\"default\" onClick={onCancelClick}>\n Cancel\n </Button>\n <LoadingButton\n size=\"small\"\n color=\"primary\"\n type=\"submit\"\n isLoading={isSubmitting}\n disabled={!isValid}\n loadingText=\"Updating Ownership\"\n >\n Update Ownership\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n\n async function handleSubmit({\n accessControl,\n }: {\n accessControl: AccessControlFormData;\n }) {\n const confirmed = await confirmAccessControlUpdate();\n if (!confirmed) {\n return;\n }\n\n updateAccess.mutate(accessControl, {\n onSuccess() {\n notifySuccess('Success', 'Access control successfully updated');\n },\n });\n }\n}\n\nfunction confirmAccessControlUpdate() {\n return confirm({\n modalType: ModalType.Warn,\n title: 'Are you sure?',\n message:\n 'Changing the ownership of this resource will potentially restrict its management to some users.',\n confirmButton: buildConfirmButton('Change ownership'),\n });\n}\n","import { useReducer } from 'react';\nimport { Edit, Eye } from 'lucide-react';\n\nimport { useUser } from '@/react/hooks/useUser';\nimport { Icon } from '@/react/components/Icon';\nimport { TeamMembership, TeamRole } from '@/react/portainer/users/teams/types';\nimport { useIsTeamLeader, useUserMembership } from '@/portainer/users/queries';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { TableContainer, TableTitle } from '@@/datatables';\nimport { Button } from '@@/buttons';\n\nimport { ResourceControlType, ResourceId } from '../types';\nimport { ResourceControlViewModel } from '../models/ResourceControlViewModel';\n\nimport { AccessControlPanelDetails } from './AccessControlPanelDetails';\nimport { AccessControlPanelForm } from './AccessControlPanelForm';\n\ninterface Props {\n resourceControl?: ResourceControlViewModel;\n resourceType: ResourceControlType;\n resourceId: ResourceId;\n environmentId: EnvironmentId;\n disableOwnershipChange?: boolean;\n onUpdateSuccess(): Promise<void>;\n}\n\nexport function AccessControlPanel({\n resourceControl,\n resourceType,\n disableOwnershipChange,\n resourceId,\n environmentId,\n onUpdateSuccess,\n}: Props) {\n const [isEditMode, toggleEditMode] = useReducer((state) => !state, false);\n const { user, isAdmin } = useUser();\n\n const isInherited = checkIfInherited();\n\n const { isPartOfRestrictedUsers, isLeaderOfAnyRestrictedTeams } =\n useRestrictions(resourceControl);\n\n const isEditDisabled =\n disableOwnershipChange ||\n isInherited ||\n (!isAdmin && !isPartOfRestrictedUsers && !isLeaderOfAnyRestrictedTeams);\n\n const isTeamLeader = useIsTeamLeader(user) as boolean;\n\n return (\n <TableContainer>\n <TableTitle label=\"Access control\" icon={Eye} />\n <AccessControlPanelDetails\n resourceType={resourceType}\n resourceControl={resourceControl}\n isAuthorisedToFetchUsers={isAdmin || isTeamLeader}\n />\n\n {!isEditDisabled && !isEditMode && (\n <div className=\"row\">\n <div>\n <Button color=\"link\" onClick={toggleEditMode}>\n <Icon icon={Edit} className=\"space-right\" />\n Change ownership\n </Button>\n </div>\n </div>\n )}\n\n {isEditMode && (\n <AccessControlPanelForm\n resourceControl={resourceControl}\n onCancelClick={() => toggleEditMode()}\n resourceId={resourceId}\n resourceType={resourceType}\n environmentId={environmentId}\n onUpdateSuccess={handleUpdateSuccess}\n />\n )}\n </TableContainer>\n );\n\n async function handleUpdateSuccess() {\n await onUpdateSuccess();\n toggleEditMode();\n }\n\n function checkIfInherited() {\n if (!resourceControl) {\n return false;\n }\n\n const inheritedVolume =\n resourceControl.Type === ResourceControlType.Container &&\n resourceType === ResourceControlType.Volume;\n const inheritedContainer =\n resourceControl.Type === ResourceControlType.Service &&\n resourceType === ResourceControlType.Container;\n const inheritedFromStack =\n resourceControl.Type === ResourceControlType.Stack &&\n resourceType !== ResourceControlType.Stack;\n\n return inheritedVolume || inheritedContainer || inheritedFromStack;\n }\n}\n\nfunction useRestrictions(resourceControl?: ResourceControlViewModel) {\n const { user, isAdmin } = useUser();\n\n const memberships = useUserMembership(user.Id);\n\n if (!resourceControl || isAdmin) {\n return {\n isPartOfRestrictedUsers: false,\n isLeaderOfAnyRestrictedTeams: false,\n };\n }\n\n if (resourceControl.UserAccesses.some((ua) => ua.UserId === user.Id)) {\n return {\n isPartOfRestrictedUsers: true,\n isLeaderOfAnyRestrictedTeams: false,\n };\n }\n\n const isTeamLeader =\n memberships.isSuccess &&\n isLeaderOfAnyRestrictedTeams(memberships.data, resourceControl);\n\n return {\n isPartOfRestrictedUsers: false,\n isLeaderOfAnyRestrictedTeams: isTeamLeader,\n };\n}\n\n// returns true if user is a team leader and resource is limited to this team\nfunction isLeaderOfAnyRestrictedTeams(\n userMemberships: TeamMembership[],\n resourceControl: ResourceControlViewModel\n) {\n return userMemberships.some(\n (membership) =>\n membership.Role === TeamRole.Leader &&\n resourceControl.TeamAccesses.some((ta) => ta.TeamId === membership.TeamID)\n );\n}\n","import _ from 'lodash';\nimport { useEffect, useState } from 'react';\n\nimport { buildOption } from '@/portainer/components/BoxSelector';\nimport { ownershipIcon } from '@/portainer/filters/filters';\nimport { Team } from '@/react/portainer/users/teams/types';\n\nimport { BoxSelectorOption } from '@@/BoxSelector/types';\nimport { BadgeIcon } from '@@/BadgeIcon';\n\nimport { ResourceControlOwnership } from '../types';\n\nconst publicOption: BoxSelectorOption<ResourceControlOwnership> = {\n value: ResourceControlOwnership.PUBLIC,\n label: 'Public',\n id: 'access_public',\n description:\n 'I want any user with access to this environment to be able to manage this resource',\n icon: <BadgeIcon icon={ownershipIcon('public')} />,\n};\n\nexport function useOptions(\n isAdmin: boolean,\n teams?: Team[],\n isPublicVisible = false\n) {\n const [options, setOptions] = useState<\n Array<BoxSelectorOption<ResourceControlOwnership>>\n >([]);\n\n useEffect(() => {\n const options = isAdmin ? adminOptions() : nonAdminOptions(teams);\n\n setOptions(isPublicVisible ? [...options, publicOption] : options);\n }, [isAdmin, teams, isPublicVisible]);\n\n return options;\n}\n\nfunction adminOptions() {\n return [\n buildOption(\n 'access_administrators',\n <BadgeIcon icon={ownershipIcon('administrators')} />,\n 'Administrators',\n 'I want to restrict the management of this resource to administrators only',\n ResourceControlOwnership.ADMINISTRATORS\n ),\n buildOption(\n 'access_restricted',\n <BadgeIcon icon={ownershipIcon('restricted')} />,\n 'Restricted',\n 'I want to restrict the management of this resource to a set of users and/or teams',\n ResourceControlOwnership.RESTRICTED\n ),\n ];\n}\nfunction nonAdminOptions(teams?: Team[]) {\n return _.compact([\n buildOption(\n 'access_private',\n <BadgeIcon icon={ownershipIcon('private')} />,\n 'Private',\n 'I want to restrict this resource to be manageable by myself only',\n ResourceControlOwnership.PRIVATE\n ),\n teams &&\n teams.length > 0 &&\n buildOption(\n 'access_restricted',\n <BadgeIcon icon={ownershipIcon('restricted')} />,\n 'Restricted',\n teams.length === 1 ? (\n <>\n I want any member of my team (<b>{teams[0].Name}</b>) to be able to\n manage this resource\n </>\n ) : (\n <>\n I want to restrict the management of this resource to one or more of\n my teams\n </>\n ),\n ResourceControlOwnership.RESTRICTED\n ),\n ]);\n}\n","import { BoxSelector } from '@@/BoxSelector';\n\nimport { Team } from '../../users/teams/types';\nimport { ResourceControlOwnership } from '../types';\n\nimport { useOptions } from './useOptions';\n\nexport function AccessTypeSelector({\n name,\n isAdmin,\n isPublicVisible,\n teams,\n value,\n onChange,\n}: {\n name: string;\n isAdmin: boolean;\n teams: Team[];\n isPublicVisible: boolean;\n value: ResourceControlOwnership;\n onChange(value: ResourceControlOwnership): void;\n}) {\n const options = useOptions(isAdmin, teams, isPublicVisible);\n\n return (\n <BoxSelector\n slim\n radioName={name}\n value={value}\n options={options}\n onChange={onChange}\n />\n );\n}\n","import { User } from '@/portainer/users/types';\n\nimport { UsersSelector } from '@@/UsersSelector';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Link } from '@@/Link';\n\ninterface Props {\n name: string;\n users: User[];\n value: number[];\n onChange(value: number[]): void;\n errors?: string | string[];\n}\n\nexport function UsersField({ name, users, value, onChange, errors }: Props) {\n return (\n <FormControl\n label=\"Authorized users\"\n tooltip={\n users.length > 0\n ? 'You can select which user(s) will be able to manage this resource.'\n : undefined\n }\n inputId=\"users-selector\"\n errors={errors}\n >\n {users.length > 0 ? (\n <UsersSelector\n name={name}\n users={users}\n onChange={onChange}\n value={value}\n inputId=\"users-selector\"\n />\n ) : (\n <span className=\"small text-muted\">\n You have not yet created any users. Head over to the\n <Link to=\"portainer.users\">Users view</Link> to manage users.\n </span>\n )}\n </FormControl>\n );\n}\n","import { Team } from '@/react/portainer/users/teams/types';\n\nimport { TeamsSelector } from '@@/TeamsSelector';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Link } from '@@/Link';\n\ninterface Props {\n name: string;\n teams: Team[];\n value: number[];\n overrideTooltip?: string;\n onChange(value: number[]): void;\n errors?: string | string[];\n}\n\nexport function TeamsField({\n name,\n teams,\n value,\n overrideTooltip,\n onChange,\n errors,\n}: Props) {\n return (\n <FormControl\n label=\"Authorized teams\"\n tooltip={\n teams.length > 0\n ? overrideTooltip ||\n 'You can select which team(s) will be able to manage this resource.'\n : undefined\n }\n inputId=\"teams-selector\"\n errors={errors}\n >\n {teams.length > 0 ? (\n <TeamsSelector\n name={name}\n teams={teams}\n onChange={onChange}\n value={value}\n inputId=\"teams-selector\"\n />\n ) : (\n <span className=\"small text-muted\">\n You have not yet created any teams. Head over to the\n <Link to=\"portainer.teams\">Teams view</Link> to manage teams.\n </span>\n )}\n </FormControl>\n );\n}\n","import { useCallback } from 'react';\nimport { FormikErrors } from 'formik';\n\nimport { useUser } from '@/react/hooks/useUser';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { FormError } from '@@/form-components/FormError';\n\nimport { ResourceControlOwnership, AccessControlFormData } from '../types';\n\nimport { UsersField } from './UsersField';\nimport { TeamsField } from './TeamsField';\nimport { useLoadState } from './useLoadState';\nimport { AccessTypeSelector } from './AccessTypeSelector';\n\ninterface Props {\n values: AccessControlFormData;\n onChange(values: AccessControlFormData): void;\n isPublicVisible?: boolean;\n errors?: FormikErrors<AccessControlFormData>;\n formNamespace?: string;\n environmentId?: EnvironmentId;\n}\n\nexport function EditDetails({\n values,\n onChange,\n isPublicVisible = false,\n errors,\n formNamespace,\n environmentId,\n}: Props) {\n const { user, isAdmin } = useUser();\n\n const { users, teams, isLoading } = useLoadState(environmentId, isAdmin);\n const handleChange = useCallback(\n (partialValues: Partial<typeof values>) => {\n onChange({ ...values, ...partialValues });\n },\n\n [values, onChange]\n );\n\n if (isLoading || !teams || (isAdmin && !users) || !values.authorizedUsers) {\n return null;\n }\n\n return (\n <>\n <AccessTypeSelector\n onChange={handleChangeOwnership}\n name={withNamespace('ownership')}\n value={values.ownership}\n isAdmin={isAdmin}\n isPublicVisible={isPublicVisible}\n teams={teams}\n />\n\n {values.ownership === ResourceControlOwnership.RESTRICTED && (\n <div aria-label=\"extra-options\">\n {isAdmin && (\n <UsersField\n name={withNamespace('authorizedUsers')}\n users={users || []}\n onChange={(authorizedUsers) => handleChange({ authorizedUsers })}\n value={values.authorizedUsers}\n errors={errors?.authorizedUsers}\n />\n )}\n\n {(isAdmin || teams.length > 1) && (\n <TeamsField\n name={withNamespace('authorizedTeams')}\n teams={teams}\n overrideTooltip={\n !isAdmin && teams.length > 1\n ? 'As you are a member of multiple teams, you can select which teams(s) will be able to manage this resource.'\n : undefined\n }\n onChange={(authorizedTeams) => handleChange({ authorizedTeams })}\n value={values.authorizedTeams}\n errors={errors?.authorizedTeams}\n />\n )}\n\n {typeof errors === 'string' && (\n <div className=\"form-group col-md-12\">\n <FormError>{errors}</FormError>\n </div>\n )}\n </div>\n )}\n </>\n );\n\n function withNamespace(name: string) {\n return formNamespace ? `${formNamespace}.${name}` : name;\n }\n\n function handleChangeOwnership(ownership: ResourceControlOwnership) {\n let { authorizedTeams, authorizedUsers } = values;\n\n if (ownership === ResourceControlOwnership.PRIVATE && user) {\n authorizedUsers = [user.Id];\n authorizedTeams = [];\n }\n\n if (ownership === ResourceControlOwnership.RESTRICTED) {\n authorizedUsers = [];\n authorizedTeams = [];\n // Non admin team leaders/members under only one team can\n // automatically grant the resource access to all members\n // under the team\n if (!isAdmin && teams && teams.length === 1) {\n authorizedTeams = teams.map((team) => team.Id);\n }\n }\n\n handleChange({ ownership, authorizedTeams, authorizedUsers });\n }\n}\n","import { useTeams } from '@/react/portainer/users/teams/queries';\nimport { useUsers } from '@/portainer/users/queries';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport function useLoadState(environmentId?: EnvironmentId, enabled = true) {\n const teams = useTeams(false, environmentId);\n const users = useUsers(false, environmentId, enabled);\n\n return {\n teams: teams.data,\n users: users.data,\n isLoading: teams.isLoading || users.isLoading,\n };\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport {\n AccessControlFormData,\n OwnershipParameters,\n ResourceControlId,\n ResourceControlResponse,\n ResourceControlType,\n ResourceId,\n} from './types';\nimport { ResourceControlViewModel } from './models/ResourceControlViewModel';\nimport { parseOwnershipParameters } from './utils';\n\n/**\n * Update an existing ResourceControl or create a new one on existing resource without RC\n * @param resourceType Type of ResourceControl\n * @param resourceId ID of involved Resource\n * @param resourceControl Previous ResourceControl (can be undefined)\n * @param formValues View data generated by AccessControlPanel\n */\nexport function applyResourceControlChange(\n resourceType: ResourceControlType,\n resourceId: ResourceId,\n formValues: AccessControlFormData,\n resourceControl?: ResourceControlViewModel\n) {\n const ownershipParameters = parseOwnershipParameters(formValues);\n if (resourceControl) {\n return updateResourceControl(resourceControl.Id, ownershipParameters);\n }\n return createResourceControl(resourceType, resourceId, ownershipParameters);\n}\n\n/**\n * Apply a ResourceControl after Resource creation\n * @param accessControlData ResourceControl to apply\n * @param resourceControl ResourceControl to update\n * @param subResourcesIds SubResources managed by the ResourceControl\n */\nexport function applyResourceControl(\n accessControlData: AccessControlFormData,\n resourceControl: ResourceControlResponse,\n subResourcesIds: (number | string)[] = []\n) {\n const ownershipParameters = parseOwnershipParameters(\n accessControlData,\n subResourcesIds\n );\n return updateResourceControl(resourceControl.Id, ownershipParameters);\n}\n\n/**\n * Update a ResourceControl\n * @param resourceControlId ID of involved resource\n * @param ownershipParameters\n */\nasync function updateResourceControl(\n resourceControlId: ResourceControlId,\n ownershipParameters: OwnershipParameters\n) {\n try {\n await axios.put(buildUrl(resourceControlId), ownershipParameters);\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\n/**\n * Create a ResourceControl\n * @param resourceType Type of ResourceControl\n * @param resourceId ID of involved resource\n * @param ownershipParameters Transient type from view data to payload\n */\nasync function createResourceControl(\n resourceType: ResourceControlType,\n resourceId: ResourceId,\n ownershipParameters: OwnershipParameters\n) {\n try {\n await axios.post(buildUrl(), {\n ...ownershipParameters,\n type: resourceType,\n resourceId,\n });\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\nfunction buildUrl(id?: ResourceControlId) {\n let url = '/resource_controls';\n\n if (id) {\n url += `/${id}`;\n }\n\n return url;\n}\n","import {\n ResourceControlId,\n ResourceControlOwnership,\n ResourceControlResponse,\n ResourceControlType,\n ResourceId,\n TeamResourceAccess,\n UserResourceAccess,\n} from '../types';\n\nexport class ResourceControlViewModel {\n Id: ResourceControlId;\n\n Type: ResourceControlType;\n\n ResourceId: ResourceId;\n\n UserAccesses: UserResourceAccess[];\n\n TeamAccesses: TeamResourceAccess[];\n\n Public: boolean;\n\n System: boolean;\n\n Ownership: ResourceControlOwnership;\n\n constructor(data: ResourceControlResponse) {\n this.Id = data.Id;\n this.Type = data.Type;\n this.ResourceId = data.ResourceId;\n this.UserAccesses = data.UserAccesses;\n this.TeamAccesses = data.TeamAccesses;\n this.Public = data.Public;\n this.System = data.System;\n this.Ownership = determineOwnership(data);\n }\n}\n\nexport function determineOwnership(resourceControl: ResourceControlResponse) {\n if (resourceControl.Public) {\n return ResourceControlOwnership.PUBLIC;\n }\n\n if (\n resourceControl.UserAccesses.length === 1 &&\n resourceControl.TeamAccesses.length === 0\n ) {\n return ResourceControlOwnership.PRIVATE;\n }\n\n if (\n resourceControl.UserAccesses.length > 1 ||\n resourceControl.TeamAccesses.length > 0\n ) {\n return ResourceControlOwnership.RESTRICTED;\n }\n\n return ResourceControlOwnership.ADMINISTRATORS;\n}\n","import { TeamId } from '@/react/portainer/users/teams/types';\nimport { UserId } from '@/portainer/users/types/user-id';\n\nexport type ResourceControlId = number;\n\nexport type ResourceId = number | string;\n\nexport enum ResourceControlOwnership {\n PUBLIC = 'public',\n PRIVATE = 'private',\n RESTRICTED = 'restricted',\n ADMINISTRATORS = 'administrators',\n}\n\n/**\n * Transient type from view data to payload\n */\nexport interface OwnershipParameters {\n administratorsOnly: boolean;\n public: boolean;\n users: UserId[];\n teams: TeamId[];\n subResourcesIds: ResourceId[];\n}\n\nexport enum ResourceControlType {\n // Container represents a resource control associated to a Docker container\n Container = 1,\n // Service represents a resource control associated to a Docker service\n Service,\n // Volume represents a resource control associated to a Docker volume\n Volume,\n // Network represents a resource control associated to a Docker network\n Network,\n // Secret represents a resource control associated to a Docker secret\n Secret,\n // Stack represents a resource control associated to a stack composed of Docker services\n Stack,\n // Config represents a resource control associated to a Docker config\n Config,\n // CustomTemplate represents a resource control associated to a custom template\n CustomTemplate,\n // ContainerGroup represents a resource control associated to an Azure container group\n ContainerGroup,\n}\n\nenum ResourceAccessLevel {\n ReadWriteAccessLevel = 1,\n}\n\nexport interface UserResourceAccess {\n UserId: UserId;\n AccessLevel: ResourceAccessLevel;\n}\n\nexport interface TeamResourceAccess {\n TeamId: TeamId;\n AccessLevel: ResourceAccessLevel;\n}\n\nexport interface ResourceControlResponse {\n Id: number;\n Type: ResourceControlType;\n ResourceId: ResourceId;\n UserAccesses: UserResourceAccess[];\n TeamAccesses: TeamResourceAccess[];\n Public: boolean;\n AdministratorsOnly: boolean;\n System: boolean;\n}\n\nexport interface AccessControlFormData {\n ownership: ResourceControlOwnership;\n authorizedUsers: UserId[];\n authorizedTeams: TeamId[];\n}\n","import { TeamId } from '@/react/portainer/users/teams/types';\nimport { UserId } from '@/portainer/users/types';\n\nimport {\n AccessControlFormData,\n OwnershipParameters,\n ResourceControlOwnership,\n ResourceId,\n} from './types';\nimport { ResourceControlViewModel } from './models/ResourceControlViewModel';\n\n/**\n * Transform AccessControlFormData to ResourceControlOwnershipParameters\n * @param {int} userId ID of user performing the operation\n * @param {AccessControlFormData} formValues Form data (generated by AccessControlForm)\n * @param {int[]} subResources Sub Resources restricted by the ResourceControl\n */\nexport function parseOwnershipParameters(\n formValues: AccessControlFormData,\n subResourcesIds: ResourceId[] = []\n): OwnershipParameters {\n const { ownership, authorizedTeams, authorizedUsers } = formValues;\n\n const adminOnly = ownership === ResourceControlOwnership.ADMINISTRATORS;\n const publicOnly = ownership === ResourceControlOwnership.PUBLIC;\n\n let users = authorizedUsers;\n let teams = authorizedTeams;\n if (\n [\n ResourceControlOwnership.ADMINISTRATORS,\n ResourceControlOwnership.PUBLIC,\n ].includes(ownership)\n ) {\n users = [];\n teams = [];\n }\n\n return {\n administratorsOnly: adminOnly,\n public: publicOnly,\n users,\n teams,\n subResourcesIds,\n };\n}\n\nexport function defaultValues(\n isAdmin: boolean,\n currentUserId: UserId\n): AccessControlFormData {\n if (!isAdmin) {\n return {\n ownership: ResourceControlOwnership.PRIVATE,\n authorizedTeams: [],\n authorizedUsers: [currentUserId],\n };\n }\n\n return {\n ownership: ResourceControlOwnership.ADMINISTRATORS,\n authorizedTeams: [],\n authorizedUsers: [],\n };\n}\n\nexport function parseAccessControlFormData(\n isAdmin: boolean,\n currentUserId: UserId,\n resourceControl?: ResourceControlViewModel\n): AccessControlFormData {\n if (!resourceControl) {\n return defaultValues(isAdmin, currentUserId);\n }\n\n let ownership = resourceControl.Ownership;\n if (isAdmin && ownership === ResourceControlOwnership.PRIVATE) {\n ownership = ResourceControlOwnership.RESTRICTED;\n }\n\n let authorizedTeams: TeamId[] = [];\n let authorizedUsers: UserId[] = [];\n if (\n [\n ResourceControlOwnership.PRIVATE,\n ResourceControlOwnership.RESTRICTED,\n ].includes(ownership)\n ) {\n authorizedTeams = resourceControl.TeamAccesses.map((ra) => ra.TeamId);\n authorizedUsers = resourceControl.UserAccesses.map((ra) => ra.UserId);\n }\n\n return { ownership, authorizedUsers, authorizedTeams };\n}\n","import { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { success as notifySuccess } from '@/portainer/services/notifications';\n\nimport {\n CreateGitCredentialPayload,\n GitCredential,\n UpdateGitCredentialPayload,\n} from './types';\n\nexport async function createGitCredential(\n gitCredential: CreateGitCredentialPayload\n) {\n try {\n const { data } = await axios.post<{ gitCredential: GitCredential }>(\n buildGitUrl(gitCredential.userId),\n gitCredential\n );\n return data.gitCredential;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to create git credential');\n }\n}\n\nexport async function getGitCredentials(userId: number) {\n try {\n const { data } = await axios.get<GitCredential[]>(buildGitUrl(userId));\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to get git credentials');\n }\n}\n\nexport async function getGitCredential(userId: number, id: number) {\n try {\n const { data } = await axios.get<GitCredential>(buildGitUrl(userId, id));\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to get git credential');\n }\n}\n\nexport async function deleteGitCredential(credential: GitCredential) {\n try {\n await axios.delete<GitCredential[]>(\n buildGitUrl(credential.userId, credential.id)\n );\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to delete git credential');\n }\n}\n\nexport async function updateGitCredential(\n credential: Partial<UpdateGitCredentialPayload>,\n userId: number,\n id: number\n) {\n try {\n const { data } = await axios.put(buildGitUrl(userId, id), credential);\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update credential');\n }\n}\n\nexport function useUpdateGitCredentialMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n ({\n credential,\n userId,\n id,\n }: {\n credential: UpdateGitCredentialPayload;\n userId: number;\n id: number;\n }) => updateGitCredential(credential, userId, id),\n {\n onSuccess: (_, data) => {\n notifySuccess(\n 'Git credential updated successfully',\n data.credential.name\n );\n return queryClient.invalidateQueries(['gitcredentials']);\n },\n meta: {\n error: {\n title: 'Failure',\n message: 'Unable to update credential',\n },\n },\n }\n );\n}\n\nexport function useDeleteGitCredentialMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(deleteGitCredential, {\n onSuccess: (_, credential) => {\n notifySuccess('Git Credential deleted successfully', credential.name);\n return queryClient.invalidateQueries(['gitcredentials']);\n },\n meta: {\n error: {\n title: 'Failure',\n message: 'Unable to delete git credential',\n },\n },\n });\n}\n\nexport function useGitCredentials(userId: number) {\n return useQuery('gitcredentials', () => getGitCredentials(userId), {\n staleTime: 20,\n meta: {\n error: {\n title: 'Failure',\n message: 'Unable to retrieve git credentials',\n },\n },\n });\n}\n\nexport function useGitCredential(userId: number, id: number) {\n return useQuery(['gitcredentials', id], () => getGitCredential(userId, id), {\n meta: {\n error: {\n title: 'Failure',\n message: 'Unable to retrieve git credential',\n },\n },\n });\n}\n\nexport function useCreateGitCredentialMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(createGitCredential, {\n onSuccess: (_, payload) => {\n notifySuccess('Credentials created successfully', payload.name);\n return queryClient.invalidateQueries(['gitcredentials']);\n },\n meta: {\n error: {\n title: 'Failure',\n message: 'Unable to create credential',\n },\n },\n });\n}\n\nfunction buildGitUrl(userId: number, credentialId?: number) {\n return credentialId\n ? `/users/${userId}/gitcredentials/${credentialId}`\n : `/users/${userId}/gitcredentials`;\n}\n","import _ from 'lodash';\nimport Mustache from 'mustache';\n\nimport { VariableDefinition } from './CustomTemplatesVariablesDefinitionField/CustomTemplatesVariablesDefinitionField';\n\nexport function getTemplateVariables(templateStr: string) {\n const template = validateAndParse(templateStr);\n\n if (!template) {\n return null;\n }\n\n return template\n .filter(([type, value]) => type === 'name' && value)\n .map(([, value]) => ({\n name: value,\n label: '',\n defaultValue: '',\n description: '',\n }));\n}\n\nfunction validateAndParse(templateStr: string) {\n if (!templateStr) {\n return [];\n }\n\n try {\n return Mustache.parse(templateStr);\n } catch (e) {\n return null;\n }\n}\n\nexport function intersectVariables(\n oldVariables: VariableDefinition[] = [],\n newVariables: VariableDefinition[] = []\n) {\n const oldVariablesWithLabel = oldVariables.filter((v) => !!v.label);\n\n return _.uniqBy(\n [\n ...oldVariablesWithLabel,\n ...newVariables.filter(\n (v) => !oldVariablesWithLabel.find(({ name }) => name === v.name)\n ),\n ],\n 'name'\n );\n}\n\nexport function renderTemplate(\n template: string,\n variables: Record<string, string>,\n definitions: VariableDefinition[]\n) {\n const state = Object.fromEntries(\n _.compact(\n Object.entries(variables).map(([name, value]) => {\n if (value) {\n return [name, value];\n }\n\n const definition = definitions.find((def) => def.name === name);\n if (!definition) {\n return null;\n }\n\n return [name, definition.defaultValue || `{{ ${definition.name} }}`];\n })\n )\n );\n\n return Mustache.render(template, state, undefined, { escape: (t) => t });\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { buildUrl } from './queries/build-url';\nimport { EnvironmentGroup, EnvironmentGroupId } from './types';\n\nexport async function getGroup(id: EnvironmentGroupId) {\n try {\n const { data: group } = await axios.get<EnvironmentGroup>(buildUrl(id));\n return group;\n } catch (e) {\n throw parseAxiosError(e as Error, '');\n }\n}\n\nexport async function getGroups() {\n try {\n const { data: groups } = await axios.get<EnvironmentGroup[]>(buildUrl());\n return groups;\n } catch (e) {\n throw parseAxiosError(e as Error, '');\n }\n}\n","import { useQuery } from 'react-query';\n\nimport { error as notifyError } from '@/portainer/services/notifications';\n\nimport { EnvironmentGroup, EnvironmentGroupId } from './types';\nimport { getGroup, getGroups } from './environment-groups.service';\nimport { queryKeys } from './queries/query-keys';\n\nexport function useGroups<T = EnvironmentGroup[]>({\n select,\n enabled = true,\n}: { select?: (group: EnvironmentGroup[]) => T; enabled?: boolean } = {}) {\n return useQuery(queryKeys.base(), getGroups, {\n select,\n enabled,\n });\n}\n\nexport function useGroup<T = EnvironmentGroup>(\n groupId: EnvironmentGroupId,\n select?: (group: EnvironmentGroup) => T\n) {\n const { data } = useQuery(queryKeys.group(groupId), () => getGroup(groupId), {\n staleTime: 50,\n select,\n onError(error) {\n notifyError('Failed loading group', error as Error);\n },\n });\n\n return data;\n}\n","import { EnvironmentGroupId } from '../types';\n\nexport function buildUrl(id?: EnvironmentGroupId, action?: string) {\n let url = '/endpoint_groups';\n\n if (id) {\n url += `/${id}`;\n }\n\n if (action) {\n url += `/${action}`;\n }\n\n return url;\n}\n","import { EnvironmentGroupId } from '../types';\n\nexport const queryKeys = {\n base: () => ['environment-groups'] as const,\n group: (id: EnvironmentGroupId) => [...queryKeys.base(), id] as const,\n};\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { type EnvironmentGroupId } from '@/react/portainer/environments/environment-groups/types';\nimport { type TagId } from '@/portainer/tags/types';\nimport { UserId } from '@/portainer/users/types';\nimport { TeamId } from '@/react/portainer/users/teams/types';\nimport {\n EdgeStack,\n StatusType as EdgeStackStatusType,\n} from '@/react/edge/edge-stacks/types';\n\nimport type {\n Environment,\n EnvironmentId,\n EnvironmentType,\n EnvironmentSecuritySettings,\n EnvironmentStatus,\n} from '../types';\n\nimport { buildUrl } from './utils';\n\nexport type EdgeStackEnvironmentsQueryParams =\n | {\n edgeStackId?: EdgeStack['Id'];\n }\n | {\n edgeStackId: EdgeStack['Id'];\n edgeStackStatus?: EdgeStackStatusType;\n };\n\nexport interface BaseEnvironmentsQueryParams {\n search?: string;\n types?: EnvironmentType[] | readonly EnvironmentType[];\n tagIds?: TagId[];\n endpointIds?: EnvironmentId[];\n excludeIds?: EnvironmentId[];\n tagsPartialMatch?: boolean;\n groupIds?: EnvironmentGroupId[];\n status?: EnvironmentStatus[];\n edgeAsync?: boolean;\n edgeDeviceUntrusted?: boolean;\n excludeSnapshots?: boolean;\n provisioned?: boolean;\n name?: string;\n agentVersions?: string[];\n updateInformation?: boolean;\n edgeCheckInPassedSeconds?: number;\n}\n\nexport type EnvironmentsQueryParams = BaseEnvironmentsQueryParams &\n EdgeStackEnvironmentsQueryParams;\n\nexport interface GetEnvironmentsOptions {\n start?: number;\n limit?: number;\n sort?: { by?: string; order?: 'asc' | 'desc' };\n query?: EnvironmentsQueryParams;\n}\n\nexport async function getEnvironments(\n {\n start,\n limit,\n sort = { by: '', order: 'asc' },\n query = {},\n }: GetEnvironmentsOptions = { query: {} }\n) {\n if (\n (query.tagIds && query.tagIds.length === 0) ||\n (query.endpointIds && query.endpointIds.length === 0)\n ) {\n return {\n totalCount: 0,\n value: <Environment[]>[],\n totalAvailable: 0,\n updateAvailable: false,\n };\n }\n\n const url = buildUrl();\n\n const params: Record<string, unknown> = {\n start,\n limit,\n sort: sort.by,\n order: sort.order,\n ...query,\n };\n\n try {\n const response = await axios.get<Environment[]>(url, { params });\n const totalCount = response.headers['x-total-count'];\n const totalAvailable = response.headers['x-total-available'];\n const updateAvailable = response.headers['x-update-available'] === 'true';\n\n return {\n totalCount: parseInt(totalCount, 10),\n value: response.data,\n totalAvailable: parseInt(totalAvailable, 10),\n updateAvailable,\n };\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function getAgentVersions() {\n try {\n const response = await axios.get<string[]>(\n buildUrl(undefined, 'agent_versions')\n );\n return response.data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function getEndpoint(id: EnvironmentId) {\n try {\n const { data: endpoint } = await axios.get<Environment>(buildUrl(id));\n return endpoint;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function snapshotEndpoints() {\n try {\n await axios.post<void>(buildUrl(undefined, 'snapshot'));\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function snapshotEndpoint(id: EnvironmentId) {\n try {\n await axios.post<void>(buildUrl(id, 'snapshot'));\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function endpointsByGroup(\n groupId: EnvironmentGroupId,\n start: number,\n limit: number,\n query: Omit<EnvironmentsQueryParams, 'groupIds'>\n) {\n return getEnvironments({\n start,\n limit,\n query: { groupIds: [groupId], ...query },\n });\n}\n\nexport async function disassociateEndpoint(id: EnvironmentId) {\n try {\n await axios.delete(buildUrl(id, 'association'));\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function deleteEndpoint(id: EnvironmentId) {\n try {\n await axios.delete(buildUrl(id));\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function updatePoolAccess(\n id: EnvironmentId,\n resourcePool: string,\n usersToAdd: UserId[],\n teamsToAdd: TeamId[],\n usersToRemove: UserId[],\n teamsToRemove: TeamId[]\n) {\n try {\n await axios.put<void>(`${buildUrl(id, 'pools')}/${resourcePool}/access`, {\n usersToAdd,\n teamsToAdd,\n usersToRemove,\n teamsToRemove,\n });\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function forceUpdateService(\n id: EnvironmentId,\n serviceID: string,\n pullImage: boolean\n) {\n try {\n await axios.put(buildUrl(id, 'forceupdateservice'), {\n serviceID,\n pullImage,\n });\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function updateSettings(\n id: EnvironmentId,\n settings: EnvironmentSecuritySettings\n) {\n try {\n await axios.put(buildUrl(id, 'settings'), settings);\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import { EnvironmentId } from '../types';\n\nexport function buildUrl(id?: EnvironmentId, action?: string) {\n let baseUrl = 'endpoints';\n if (id) {\n baseUrl += `/${id}`;\n }\n\n if (action) {\n baseUrl += `/${action}`;\n }\n\n return baseUrl;\n}\n\nexport function arrayToJson<T>(arr?: Array<T>) {\n if (!arr) {\n return '';\n }\n\n return JSON.stringify(arr);\n}\n\nexport function json2formData(json: Record<string, unknown>) {\n const formData = new FormData();\n\n Object.entries(json).forEach(([key, value]) => {\n if (typeof value === 'undefined' || value === null) {\n return;\n }\n\n formData.append(key, value as string);\n });\n\n return formData;\n}\n","import { EnvironmentId } from '../types';\n\nexport const queryKeys = {\n base: () => ['environments'] as const,\n item: (id: EnvironmentId) => [...queryKeys.base(), id] as const,\n registries: (environmentId: EnvironmentId) =>\n [...queryKeys.base(), environmentId, 'registries'] as const,\n};\n","import { useSettings } from '@/react/portainer/settings/queries';\nimport { useSystemStatus } from '@/react/portainer/system/useSystemStatus';\n\nexport function useAgentDetails() {\n const settingsQuery = useSettings();\n\n const versionQuery = useSystemStatus({ select: (status) => status.Version });\n\n if (!versionQuery.isSuccess || !settingsQuery.isSuccess) {\n return null;\n }\n\n const agentVersion = versionQuery.data;\n\n return {\n agentVersion,\n agentSecret: settingsQuery.data.AgentSecret,\n };\n}\n","import { useQuery } from 'react-query';\n\nimport { getEndpoint } from '@/react/portainer/environments/environment.service';\nimport {\n Environment,\n EnvironmentId,\n} from '@/react/portainer/environments/types';\nimport { withError } from '@/react-tools/react-query';\n\nimport { queryKeys } from './query-keys';\n\nexport function useEnvironment<T = Environment | null>(\n id?: EnvironmentId,\n select?: (environment: Environment | null) => T\n) {\n return useQuery(\n id ? queryKeys.item(id) : [],\n () => (id ? getEndpoint(id) : null),\n {\n select,\n ...withError('Failed loading environment'),\n staleTime: 50,\n enabled: !!id,\n }\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { withError } from '@/react-tools/react-query';\n\nimport { EnvironmentStatus } from '../types';\nimport {\n EnvironmentsQueryParams,\n getEnvironments,\n} from '../environment.service';\n\nimport { queryKeys } from './query-keys';\n\nexport const ENVIRONMENTS_POLLING_INTERVAL = 30000; // in ms\n\nexport const SortOptions = ['Name', 'Group', 'Status'] as const;\nexport type SortType = (typeof SortOptions)[number];\nexport function isSortType(value: string): value is SortType {\n return SortOptions.includes(value as SortType);\n}\n\nexport type Query = EnvironmentsQueryParams & {\n page?: number;\n pageLimit?: number;\n sort?: SortType;\n order?: 'asc' | 'desc';\n};\n\ntype GetEndpointsResponse = Awaited<ReturnType<typeof getEnvironments>>;\n\nexport function refetchIfAnyOffline(data?: GetEndpointsResponse) {\n if (!data) {\n return false;\n }\n\n const hasOfflineEnvironment = data.value.some(\n (env) => env.Status === EnvironmentStatus.Down\n );\n\n if (!hasOfflineEnvironment) {\n return false;\n }\n\n return ENVIRONMENTS_POLLING_INTERVAL;\n}\n\nexport function useEnvironmentList(\n { page = 1, pageLimit = 100, sort, order, ...query }: Query = {},\n {\n enabled,\n refetchInterval,\n staleTime,\n }: {\n refetchInterval?:\n | number\n | false\n | ((data?: GetEndpointsResponse) => false | number);\n staleTime?: number;\n enabled?: boolean;\n } = {}\n) {\n const { isLoading, data } = useQuery(\n [\n ...queryKeys.base(),\n {\n page,\n pageLimit,\n sort,\n order,\n ...query,\n },\n ],\n async () => {\n const start = (page - 1) * pageLimit + 1;\n return getEnvironments({\n start,\n limit: pageLimit,\n sort: { by: sort, order },\n query,\n });\n },\n {\n staleTime,\n keepPreviousData: true,\n refetchInterval,\n enabled,\n ...withError('Failure retrieving environments'),\n }\n );\n\n return {\n isLoading,\n environments: data ? data.value : [],\n totalCount: data ? data.totalCount : 0,\n totalAvailable: data ? data.totalAvailable : 0,\n updateAvailable: data ? data.updateAvailable : false,\n };\n}\n","import { TagId } from '@/portainer/tags/types';\nimport { EnvironmentGroupId } from '@/react/portainer/environments/environment-groups/types';\nimport { Job } from '@/react/nomad/types';\nimport { DockerSnapshot } from '@/react/docker/snapshots/types';\n\nexport type EnvironmentId = number;\n\nexport enum EnvironmentType {\n // Docker represents an environment(endpoint) connected to a Docker environment(endpoint)\n Docker = 1,\n // AgentOnDocker represents an environment(endpoint) connected to a Portainer agent deployed on a Docker environment(endpoint)\n AgentOnDocker,\n // Azure represents an environment(endpoint) connected to an Azure environment(endpoint)\n Azure,\n // EdgeAgentOnDocker represents an environment(endpoint) connected to an Edge agent deployed on a Docker environment(endpoint)\n EdgeAgentOnDocker,\n // KubernetesLocal represents an environment(endpoint) connected to a local Kubernetes environment(endpoint)\n KubernetesLocal,\n // AgentOnKubernetes represents an environment(endpoint) connected to a Portainer agent deployed on a Kubernetes environment(endpoint)\n AgentOnKubernetes,\n // EdgeAgentOnKubernetes represents an environment(endpoint) connected to an Edge agent deployed on a Kubernetes environment(endpoint)\n EdgeAgentOnKubernetes,\n // EdgeAgentOnNomad represents an environment(endpoint) connected to an Edge agent deployed on a Nomad environment(endpoint)\n EdgeAgentOnNomad,\n}\n\nexport const EdgeTypes = [\n EnvironmentType.EdgeAgentOnDocker,\n EnvironmentType.EdgeAgentOnKubernetes,\n EnvironmentType.EdgeAgentOnNomad,\n] as const;\n\nexport enum EnvironmentStatus {\n Up = 1,\n Down,\n Provisioning,\n Error,\n}\n\nexport interface KubernetesSnapshot {\n KubernetesVersion: string;\n TotalCPU: number;\n TotalMemory: number;\n Time: number;\n NodeCount: number;\n}\n\nexport type IngressClass = {\n Name: string;\n Type: string;\n};\n\ninterface StorageClass {\n Name: string;\n AccessModes: string[];\n AllowVolumeExpansion: boolean;\n Provisioner: string;\n}\n\nexport interface KubernetesConfiguration {\n UseLoadBalancer?: boolean;\n StorageClasses?: StorageClass[];\n UseServerMetrics?: boolean;\n EnableResourceOverCommit?: boolean;\n ResourceOverCommitPercentage?: number;\n RestrictDefaultNamespace?: boolean;\n RestrictStandardUserIngressW?: boolean;\n IngressClasses: IngressClass[];\n IngressAvailabilityPerNamespace: boolean;\n AllowNoneIngressClass: boolean;\n}\n\nexport interface KubernetesSettings {\n Snapshots?: KubernetesSnapshot[] | null;\n Configuration: KubernetesConfiguration;\n}\n\nexport interface NomadSnapshot {\n JobCount: number;\n GroupCount: number;\n TaskCount: number;\n RunningTaskCount: number;\n NodeCount: number;\n Time: number;\n Jobs: Job[];\n}\n\nexport interface NomadSettings {\n Snapshots: NomadSnapshot[];\n}\n\nexport type EnvironmentEdge = {\n AsyncMode: boolean;\n PingInterval: number;\n SnapshotInterval: number;\n CommandInterval: number;\n};\n\nexport interface EnvironmentSecuritySettings {\n // Whether non-administrator should be able to use bind mounts when creating containers\n allowBindMountsForRegularUsers: boolean;\n // Whether non-administrator should be able to use privileged mode when creating containers\n allowPrivilegedModeForRegularUsers: boolean;\n // Whether non-administrator should be able to browse volumes\n allowVolumeBrowserForRegularUsers: boolean;\n // Whether non-administrator should be able to use the host pid\n allowHostNamespaceForRegularUsers: boolean;\n // Whether non-administrator should be able to use device mapping\n allowDeviceMappingForRegularUsers: boolean;\n // Whether non-administrator should be able to manage stacks\n allowStackManagementForRegularUsers: boolean;\n // Whether non-administrator should be able to use container capabilities\n allowContainerCapabilitiesForRegularUsers: boolean;\n // Whether non-administrator should be able to use sysctl settings\n allowSysctlSettingForRegularUsers: boolean;\n // Whether host management features are enabled\n enableHostManagementFeatures: boolean;\n}\n\nexport type DeploymentOptions = {\n overrideGlobalOptions: boolean;\n hideAddWithForm: boolean;\n hideWebEditor: boolean;\n hideFileUpload: boolean;\n};\n\n/**\n * EndpointChangeWindow determine when GitOps stack/app updates may occur\n */\ninterface EndpointChangeWindow {\n Enabled: boolean;\n StartTime: string;\n EndTime: string;\n}\nexport interface EnvironmentStatusMessage {\n summary: string;\n detail: string;\n}\n\nexport type Environment = {\n Agent: { Version: string };\n Id: EnvironmentId;\n Type: EnvironmentType;\n TagIds: TagId[];\n GroupId: EnvironmentGroupId;\n DeploymentOptions: DeploymentOptions | null;\n EnableGPUManagement: boolean;\n EdgeID?: string;\n EdgeKey: string;\n EdgeCheckinInterval?: number;\n QueryDate?: number;\n Heartbeat?: boolean;\n LastCheckInDate?: number;\n Name: string;\n Status: EnvironmentStatus;\n URL: string;\n Snapshots: DockerSnapshot[];\n Kubernetes: KubernetesSettings;\n Nomad: NomadSettings;\n PublicURL?: string;\n UserTrusted: boolean;\n AMTDeviceGUID?: string;\n Edge: EnvironmentEdge;\n SecuritySettings: EnvironmentSecuritySettings;\n Gpus: { name: string; value: string }[];\n EnableImageNotification: boolean;\n LocalTimeZone?: string;\n\n /** GitOps update change window restriction for stacks and apps */\n ChangeWindow: EndpointChangeWindow;\n /**\n * A message that describes the status. Should be included for Status Provisioning or Error.\n */\n StatusMessage?: EnvironmentStatusMessage;\n};\n\n/**\n * TS reference of endpoint_create.go#EndpointCreationType iota\n */\nexport enum EnvironmentCreationTypes {\n LocalDockerEnvironment = 1,\n AgentEnvironment,\n AzureEnvironment,\n EdgeAgentEnvironment,\n LocalKubernetesEnvironment,\n KubeConfigEnvironment,\n}\n\nexport enum PlatformType {\n Docker,\n Kubernetes,\n Azure,\n Nomad,\n}\n","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgBeta = function SvgBeta(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 8 16\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.4,\n d: \"M1 14.322V3.498a2.498 2.498 0 1 1 2.498 2.498h.416A2.914 2.914 0 1 1 1 8.91\"\n })));\n};\nexport default SvgBeta;","import { ReactNode } from 'react';\n\nimport betaIcon from '@/assets/ico/beta.svg?c';\n\nimport { TextTip } from '@@/Tip/TextTip';\n\ninterface Props {\n message: ReactNode;\n className?: string;\n isHtml?: boolean;\n}\n\nexport function BetaAlert({ message, className, isHtml }: Props) {\n return (\n <TextTip icon={betaIcon} className={className}>\n <div className=\"text-warning\">\n {isHtml && typeof message === 'string' ? (\n // eslint-disable-next-line react/no-danger\n <span dangerouslySetInnerHTML={{ __html: message }} />\n ) : (\n message\n )}\n </div>\n </TextTip>\n );\n}\n","import { Environment, EnvironmentType, PlatformType } from '../types';\n\nexport function getPlatformType(envType: EnvironmentType) {\n switch (envType) {\n case EnvironmentType.KubernetesLocal:\n case EnvironmentType.AgentOnKubernetes:\n case EnvironmentType.EdgeAgentOnKubernetes:\n return PlatformType.Kubernetes;\n case EnvironmentType.Docker:\n case EnvironmentType.AgentOnDocker:\n case EnvironmentType.EdgeAgentOnDocker:\n return PlatformType.Docker;\n case EnvironmentType.Azure:\n return PlatformType.Azure;\n case EnvironmentType.EdgeAgentOnNomad:\n return PlatformType.Nomad;\n default:\n throw new Error(`Environment Type ${envType} is not supported`);\n }\n}\n\nexport function isDockerEnvironment(envType: EnvironmentType) {\n return getPlatformType(envType) === PlatformType.Docker;\n}\n\nexport function isKubernetesEnvironment(envType: EnvironmentType) {\n return getPlatformType(envType) === PlatformType.Kubernetes;\n}\n\nexport function getPlatformTypeName(envType: EnvironmentType): string {\n return PlatformType[getPlatformType(envType)];\n}\n\nexport function isNomadEnvironment(envType: EnvironmentType) {\n return getPlatformType(envType) === PlatformType.Nomad;\n}\n\nexport function isAgentEnvironment(envType: EnvironmentType) {\n return (\n isEdgeEnvironment(envType) ||\n [EnvironmentType.AgentOnDocker, EnvironmentType.AgentOnKubernetes].includes(\n envType\n )\n );\n}\n\nexport function isEdgeEnvironment(envType: EnvironmentType) {\n return [\n EnvironmentType.EdgeAgentOnDocker,\n EnvironmentType.EdgeAgentOnKubernetes,\n ].includes(envType);\n}\n\nexport function isEdgeAsync(env?: Environment | null) {\n return !!env && env.Edge.AsyncMode;\n}\n\nexport function isUnassociatedEdgeEnvironment(env: Environment) {\n return isEdgeEnvironment(env.Type) && !env.EdgeID;\n}\n\nexport function isLocalEnvironment(environment: Environment) {\n return (\n environment.URL.includes('unix://') ||\n environment.URL.includes('npipe://') ||\n environment.Type === EnvironmentType.KubernetesLocal\n );\n}\n\nexport function isDockerAPIEnvironment(environment: Environment) {\n return (\n environment.URL.startsWith('tcp://') &&\n environment.Type === EnvironmentType.Docker\n );\n}\n\nexport function getDashboardRoute(environment: Environment) {\n if (isEdgeEnvironment(environment.Type)) {\n if (!environment.EdgeID) {\n return {\n to: 'portainer.endpoints.endpoint',\n params: { id: environment.Id },\n };\n }\n\n if (isEdgeAsync(environment)) {\n return {\n to: 'edge.browse.dashboard',\n params: { environmentId: environment.Id },\n };\n }\n }\n\n const params = { endpointId: environment.Id };\n const to = getPlatformRoute();\n\n return { to, params };\n\n function getPlatformRoute() {\n const platform = getPlatformType(environment.Type);\n switch (platform) {\n case PlatformType.Azure:\n return 'azure.dashboard';\n case PlatformType.Docker:\n return 'docker.dashboard';\n case PlatformType.Kubernetes:\n return 'kubernetes.dashboard';\n case PlatformType.Nomad:\n return 'nomad.dashboard';\n default:\n throw new Error(`Unsupported platform ${platform}`);\n }\n }\n}\n","import { useField } from 'formik';\n\nimport { useGroups } from '@/react/portainer/environments/environment-groups/queries';\nimport { EnvironmentGroupId } from '@/react/portainer/environments/environment-groups/types';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Select } from '@@/form-components/Input';\n\nexport function GroupField({ name = 'meta.groupId' }: { name?: string }) {\n const [fieldProps, metaProps, helpers] = useField<EnvironmentGroupId>(name);\n\n const groupsQuery = useGroups();\n if (!groupsQuery.data) {\n return null;\n }\n\n const options = groupsQuery.data.map((group) => ({\n value: group.Id,\n label: group.Name,\n }));\n\n return (\n <FormControl label=\"Group\" errors={metaProps.error}>\n <Select\n name={name}\n options={options}\n value={fieldProps.value}\n onChange={(e) => handleChange(e.target.value)}\n />\n </FormControl>\n );\n\n function handleChange(value: string) {\n helpers.setValue(value ? parseInt(value, 10) : 1);\n }\n}\n","export enum Edition {\n CE,\n BE,\n}\n\nexport enum FeatureState {\n HIDDEN,\n VISIBLE,\n LIMITED_BE,\n}\n\nexport enum FeatureId {\n K8S_RESOURCE_POOL_LB_QUOTA = 'k8s-resourcepool-Ibquota',\n K8S_RESOURCE_POOL_STORAGE_QUOTA = 'k8s-resourcepool-storagequota',\n K8S_CREATE_FROM_KUBECONFIG = 'k8s-create-from-kubeconfig',\n K8S_EDIT_YAML = 'k8s-edit-yaml',\n KAAS_PROVISIONING = 'kaas-provisioning',\n NOMAD = 'nomad',\n RBAC_ROLES = 'rbac-roles',\n REGISTRY_MANAGEMENT = 'registry-management',\n K8S_SETUP_DEFAULT = 'k8s-setup-default',\n S3_BACKUP_SETTING = 's3-backup-setting',\n S3_RESTORE = 'restore-s3-form',\n HIDE_INTERNAL_AUTHENTICATION_PROMPT = 'hide-internal-authentication-prompt',\n TEAM_MEMBERSHIP = 'team-membership',\n HIDE_INTERNAL_AUTH = 'hide-internal-auth',\n EXTERNAL_AUTH_LDAP = 'external-auth-ldap',\n ACTIVITY_AUDIT = 'activity-audit',\n FORCE_REDEPLOYMENT = 'force-redeployment',\n HIDE_AUTO_UPDATE_WINDOW = 'hide-auto-update-window',\n IMAGE_UP_TO_DATE_INDICATOR = 'image-up-to-date-indicator',\n STACK_PULL_IMAGE = 'stack-pull-image',\n STACK_WEBHOOK = 'stack-webhook',\n CONTAINER_WEBHOOK = 'container-webhook',\n POD_SECURITY_POLICY_CONSTRAINT = 'pod-security-policy-constraint',\n HIDE_DOCKER_HUB_ANONYMOUS = 'hide-docker-hub-anonymous',\n CUSTOM_LOGIN_BANNER = 'custom-login-banner',\n ENFORCE_DEPLOYMENT_OPTIONS = 'k8s-enforce-deployment-options',\n K8S_ADM_ONLY_USR_INGRESS_DEPLY = 'k8s-admin-only-ingress-deploy',\n K8S_ROLLING_RESTART = 'k8s-rolling-restart',\n K8SINSTALL = 'k8s-install',\n K8S_ANNOTATIONS = 'k8s-annotations',\n CA_FILE = 'ca-file',\n K8S_REQUIRE_NOTE_ON_APPLICATIONS = 'k8s-note-on-applications',\n}\n","import { Edition, FeatureId, FeatureState } from './enums';\n\nexport const isBE = process.env.PORTAINER_EDITION === 'BE';\ninterface ServiceState {\n currentEdition: Edition;\n features: Record<FeatureId, Edition>;\n}\n\nconst state: ServiceState = {\n currentEdition: Edition.CE,\n features: <Record<FeatureId, Edition>>{},\n};\n\nexport async function init(edition: Edition) {\n // will be loaded on runtime\n const currentEdition = edition;\n const features = {\n [FeatureId.K8S_RESOURCE_POOL_LB_QUOTA]: Edition.BE,\n [FeatureId.K8S_RESOURCE_POOL_STORAGE_QUOTA]: Edition.BE,\n [FeatureId.K8S_CREATE_FROM_KUBECONFIG]: Edition.BE,\n [FeatureId.KAAS_PROVISIONING]: Edition.BE,\n [FeatureId.K8SINSTALL]: Edition.BE,\n [FeatureId.NOMAD]: Edition.BE,\n [FeatureId.ACTIVITY_AUDIT]: Edition.BE,\n [FeatureId.EXTERNAL_AUTH_LDAP]: Edition.BE,\n [FeatureId.HIDE_INTERNAL_AUTH]: Edition.BE,\n [FeatureId.HIDE_INTERNAL_AUTHENTICATION_PROMPT]: Edition.BE,\n [FeatureId.K8S_SETUP_DEFAULT]: Edition.BE,\n [FeatureId.RBAC_ROLES]: Edition.BE,\n [FeatureId.REGISTRY_MANAGEMENT]: Edition.BE,\n [FeatureId.S3_BACKUP_SETTING]: Edition.BE,\n [FeatureId.S3_RESTORE]: Edition.BE,\n [FeatureId.TEAM_MEMBERSHIP]: Edition.BE,\n [FeatureId.FORCE_REDEPLOYMENT]: Edition.BE,\n [FeatureId.HIDE_AUTO_UPDATE_WINDOW]: Edition.BE,\n [FeatureId.IMAGE_UP_TO_DATE_INDICATOR]: Edition.BE,\n [FeatureId.STACK_PULL_IMAGE]: Edition.BE,\n [FeatureId.STACK_WEBHOOK]: Edition.BE,\n [FeatureId.CONTAINER_WEBHOOK]: Edition.BE,\n [FeatureId.POD_SECURITY_POLICY_CONSTRAINT]: Edition.BE,\n [FeatureId.HIDE_DOCKER_HUB_ANONYMOUS]: Edition.BE,\n [FeatureId.CUSTOM_LOGIN_BANNER]: Edition.BE,\n [FeatureId.K8S_EDIT_YAML]: Edition.BE,\n [FeatureId.ENFORCE_DEPLOYMENT_OPTIONS]: Edition.BE,\n [FeatureId.K8S_ADM_ONLY_USR_INGRESS_DEPLY]: Edition.BE,\n [FeatureId.K8S_ROLLING_RESTART]: Edition.BE,\n [FeatureId.K8S_ANNOTATIONS]: Edition.BE,\n [FeatureId.CA_FILE]: Edition.BE,\n [FeatureId.K8S_REQUIRE_NOTE_ON_APPLICATIONS]: Edition.BE,\n };\n\n state.currentEdition = currentEdition;\n state.features = features;\n}\n\nexport function selectShow(featureId?: FeatureId) {\n if (!featureId) {\n return FeatureState.VISIBLE;\n }\n\n if (!state.features[featureId]) {\n return FeatureState.HIDDEN;\n }\n\n if (state.features[featureId] <= state.currentEdition) {\n return FeatureState.VISIBLE;\n }\n\n if (state.features[featureId] === Edition.BE) {\n return FeatureState.LIMITED_BE;\n }\n\n return FeatureState.HIDDEN;\n}\n\nexport function isLimitedToBE(featureId?: FeatureId) {\n return selectShow(featureId) === FeatureState.LIMITED_BE;\n}\n","import { ComponentType } from 'react';\n\nexport function withEdition<T>(\n WrappedComponent: ComponentType<T>,\n edition: 'BE' | 'CE'\n): ComponentType<T> {\n // Try to create a nice displayName for React Dev Tools.\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n function WrapperComponent(props: T & JSX.IntrinsicAttributes) {\n if (process.env.PORTAINER_EDITION !== edition) {\n return null;\n }\n\n return <WrappedComponent {...props} />;\n }\n\n WrapperComponent.displayName = `with${edition}Edition(${displayName})`;\n\n return WrapperComponent;\n}\n","import { GitCredential } from '@/react/portainer/account/git-credentials/types';\nimport { useGitCredentials } from '@/react/portainer/account/git-credentials/git-credentials.service';\nimport { useUser } from '@/react/hooks/useUser';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Select } from '@@/form-components/ReactSelect';\n\nexport function CredentialSelector({\n value,\n onChange,\n error,\n}: {\n value?: number;\n onChange(gitCredential?: GitCredential | null): void;\n error?: string;\n}) {\n const { user } = useUser();\n\n const gitCredentialsQuery = useGitCredentials(user.Id);\n\n const gitCredentials = gitCredentialsQuery.data ?? [];\n\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <FormControl\n label=\"Git Credentials\"\n inputId=\"git-creds-selector\"\n errors={error}\n >\n <Select\n placeholder=\"select git credential or fill in below\"\n value={gitCredentials.find(\n (gitCredential) => gitCredential.id === value\n )}\n options={gitCredentials}\n getOptionLabel={(gitCredential) => gitCredential.name}\n getOptionValue={(gitCredential) => gitCredential.id.toString()}\n onChange={onChange}\n isClearable\n noOptionsMessage={() => 'no saved credentials'}\n inputId=\"git-creds-selector\"\n />\n </FormControl>\n </div>\n </div>\n );\n}\n","import { FormikErrors } from 'formik';\n\nimport { Checkbox } from '@@/form-components/Checkbox';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { GitAuthModel } from '../types';\n\nexport function NewCredentialForm({\n value,\n onChange,\n errors,\n}: {\n value: GitAuthModel;\n onChange: (value: Partial<GitAuthModel>) => void;\n errors?: FormikErrors<GitAuthModel>;\n}) {\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <FormControl label=\"\">\n <div className=\"flex items-center gap-2\">\n <Checkbox\n id=\"repository-save-credential\"\n label=\"save credential\"\n checked={value.SaveCredential}\n className=\"[&+label]:mb-0\"\n onChange={(e) => onChange({ SaveCredential: e.target.checked })}\n />\n <Input\n value={value.NewCredentialName}\n name=\"new_credential_name\"\n placeholder=\"credential name\"\n className=\"ml-4 w-48\"\n onChange={(e) => onChange({ NewCredentialName: e.target.value })}\n disabled={!value.SaveCredential}\n />\n {errors?.NewCredentialName && (\n <div className=\"small text-danger\">\n {errors.NewCredentialName}\n </div>\n )}\n\n {value.SaveCredential && (\n <TextTip color=\"blue\">\n This git credential can be managed through your account page\n </TextTip>\n )}\n </div>\n </FormControl>\n </div>\n </div>\n );\n}\n","import { FormikErrors } from 'formik';\nimport { boolean, number, object, SchemaOf, string } from 'yup';\n\nimport { GitAuthModel } from '@/react/portainer/gitops/types';\nimport { useDebounce } from '@/react/hooks/useDebounce';\nimport { GitCredential } from '@/react/portainer/account/git-credentials/types';\n\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { Input } from '@@/form-components/Input';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { isBE } from '../../feature-flags/feature-flags.service';\n\nimport { CredentialSelector } from './CredentialSelector';\nimport { NewCredentialForm } from './NewCredentialForm';\n\ninterface Props {\n value: GitAuthModel;\n onChange: (value: Partial<GitAuthModel>) => void;\n isAuthExplanationVisible?: boolean;\n errors?: FormikErrors<GitAuthModel>;\n}\n\nexport function AuthFieldset({\n value,\n onChange,\n isAuthExplanationVisible,\n errors,\n}: Props) {\n const [username, setUsername] = useDebounce(\n value.RepositoryUsername || '',\n (username) => handleChange({ RepositoryUsername: username })\n );\n const [password, setPassword] = useDebounce(\n value.RepositoryPassword || '',\n (password) => handleChange({ RepositoryPassword: password })\n );\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Authentication\"\n labelClass=\"col-sm-3 col-lg-2\"\n name=\"authentication\"\n checked={value.RepositoryAuthentication}\n onChange={(value) =>\n handleChange({ RepositoryAuthentication: value })\n }\n data-cy=\"component-gitAuthToggle\"\n />\n </div>\n </div>\n\n {value.RepositoryAuthentication && (\n <>\n {isAuthExplanationVisible && (\n <TextTip color=\"orange\" className=\"mb-2\">\n Enabling authentication will store the credentials and it is\n advisable to use a git service account\n </TextTip>\n )}\n\n {isBE && (\n <CredentialSelector\n onChange={handleChangeGitCredential}\n value={value.RepositoryGitCredentialID}\n />\n )}\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <FormControl label=\"Username\" errors={errors?.RepositoryUsername}>\n <Input\n value={username}\n name=\"repository_username\"\n placeholder={\n value.RepositoryGitCredentialID ? '' : 'git username'\n }\n onChange={(e) => setUsername(e.target.value)}\n data-cy=\"component-gitUsernameInput\"\n readOnly={!!value.RepositoryGitCredentialID}\n />\n </FormControl>\n </div>\n </div>\n <div className=\"form-group !mb-0\">\n <div className=\"col-sm-12\">\n <FormControl\n label=\"Personal Access Token\"\n tooltip=\"Provide a personal access token or password\"\n errors={errors?.RepositoryPassword}\n >\n <Input\n type=\"password\"\n value={password}\n name=\"repository_password\"\n placeholder=\"*******\"\n onChange={(e) => setPassword(e.target.value)}\n data-cy=\"component-gitPasswordInput\"\n readOnly={!!value.RepositoryGitCredentialID}\n />\n </FormControl>\n </div>\n </div>\n {!value.RepositoryGitCredentialID &&\n value.RepositoryPassword &&\n isBE && (\n <NewCredentialForm\n value={value}\n onChange={handleChange}\n errors={errors}\n />\n )}\n </>\n )}\n </>\n );\n\n function handleChangeGitCredential(gitCredential?: GitCredential | null) {\n handleChange(\n gitCredential\n ? {\n RepositoryGitCredentialID: gitCredential.id,\n RepositoryUsername: gitCredential?.username,\n RepositoryPassword: '',\n SaveCredential: false,\n NewCredentialName: '',\n }\n : {\n RepositoryGitCredentialID: 0,\n RepositoryUsername: '',\n RepositoryPassword: '',\n }\n );\n }\n\n function handleChange(partialValue: Partial<GitAuthModel>) {\n onChange(partialValue);\n }\n}\n\nexport function gitAuthValidation(\n gitCredentials: Array<GitCredential>,\n isAuthEdit: boolean\n): SchemaOf<GitAuthModel> {\n return object({\n RepositoryAuthentication: boolean().default(false),\n RepositoryGitCredentialID: number().default(0),\n RepositoryUsername: string()\n .when(['RepositoryAuthentication', 'RepositoryGitCredentialID'], {\n is: (auth: boolean, id: number) => auth && !id,\n then: string().required('Username is required'),\n })\n .default(''),\n RepositoryPassword: string()\n .when(['RepositoryAuthentication', 'RepositoryGitCredentialID'], {\n is: (auth: boolean, id: number) => auth && !id && !isAuthEdit,\n then: string().required('Password is required'),\n })\n .default(''),\n SaveCredential: boolean().default(false),\n NewCredentialName: string()\n .default('')\n .when(['RepositoryAuthentication', 'SaveCredential'], {\n is: true,\n then: string()\n .required('Name is required')\n .test(\n 'is-unique',\n 'This name is already been used, please try another one',\n (name) => !!name && !gitCredentials.find((x) => x.name === name)\n )\n .matches(\n /^[-_a-z0-9]+$/,\n \"This field must consist of lower case alphanumeric characters, '_' or '-' (e.g. 'my-name', or 'abc-123').\"\n ),\n }),\n });\n}\n","import { string } from 'yup';\nimport parse from 'parse-duration';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { useCaretPosition } from '@@/form-components/useCaretPosition';\n\nexport function IntervalField({\n onChange,\n value,\n errors,\n}: {\n value: string;\n onChange: (value: string) => void;\n errors?: string;\n}) {\n const { ref, updateCaret } = useCaretPosition();\n\n return (\n <FormControl\n label=\"Fetch interval\"\n inputId=\"repository_fetch_interval\"\n tooltip=\"Specify how frequently polling occurs using syntax such as, 5m = 5 minutes, 24h = 24 hours, 6h40m = 6 hours and 40 minutes.\"\n required\n errors={errors}\n >\n <Input\n mRef={ref}\n id=\"repository_fetch_interval\"\n name=\"repository_fetch_interval\"\n placeholder=\"5m\"\n required\n value={value}\n onChange={(e) => {\n onChange(e.target.value);\n updateCaret();\n }}\n />\n </FormControl>\n );\n}\n\nexport function intervalValidation() {\n return (\n string()\n .required('This field is required.')\n // TODO: find a regex that validates time.Duration\n // .matches(\n // // validate golang time.Duration format\n // // https://cs.opensource.google/go/go/+/master:src/time/format.go;l=1590\n // /[-+]?([0-9]*(\\.[0-9]*)?[a-z]+)+/g,\n // 'Please enter a valid time interval.'\n // )\n .test(\n 'minimumInterval',\n 'Minimum interval is 1m',\n (value) => !!value && parse(value, 'minute') >= 1\n )\n );\n}\n","import { useRef, useState, useCallback, useEffect } from 'react';\n\nexport function useCaretPosition<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement\n>() {\n const node = useRef<T>(null);\n const [start, setStart] = useState(0);\n const [end, setEnd] = useState(0);\n\n const updateCaret = useCallback(() => {\n if (node.current) {\n const { selectionStart, selectionEnd } = node.current;\n\n setStart(selectionStart || 0);\n setEnd(selectionEnd || 0);\n }\n }, []);\n\n useEffect(() => {\n if (node.current) {\n node.current.setSelectionRange(start, end);\n }\n });\n\n return { start, end, ref: node, updateCaret };\n}\n","import { truncateLeftRight } from '@/portainer/filters/filters';\n\nimport { CopyButton } from '@@/buttons';\nimport { FormControl } from '@@/form-components/FormControl';\n\nexport function WebhookSettings({\n value,\n baseUrl,\n docsLink,\n}: {\n docsLink?: string;\n value: string;\n baseUrl: string;\n}) {\n const url = `${baseUrl}/${value}`;\n\n return (\n <FormControl\n label=\"Webhook\"\n tooltip={\n !!docsLink && (\n <>\n See{' '}\n <a href={docsLink} target=\"_blank\" rel=\"noreferrer\">\n Portainer documentation on webhook usage\n </a>\n .\n </>\n )\n }\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted\">{truncateLeftRight(url)}</span>\n <CopyButton copyText={url} color=\"light\">\n Copy link\n </CopyButton>\n </div>\n </FormControl>\n );\n}\n","import { ReactNode } from 'react';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nexport function ForceDeploymentSwitch({\n checked,\n onChange,\n tooltip = '',\n label = 'Force redeployment',\n}: {\n checked: boolean;\n onChange: (value: boolean) => void;\n tooltip?: ReactNode;\n label?: string;\n}) {\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n name=\"forceUpdate\"\n featureId={FeatureId.FORCE_REDEPLOYMENT}\n checked={checked}\n label={label}\n tooltip={tooltip}\n labelClass=\"col-sm-3 col-lg-2\"\n onChange={onChange}\n />\n </div>\n </div>\n );\n}\n","import { FormikErrors } from 'formik';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { type AutoUpdateModel } from '@/react/portainer/gitops/types';\n\nimport { ButtonSelector } from '@@/form-components/ButtonSelector/ButtonSelector';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { ForceDeploymentSwitch } from './ForceDeploymentSwitch';\nimport { IntervalField } from './IntervalField';\nimport { WebhookSettings } from './WebhookSettings';\n\nexport function AutoUpdateSettings({\n value,\n onChange,\n environmentType,\n showForcePullImage,\n errors,\n baseWebhookUrl,\n webhookId,\n webhookDocs,\n}: {\n value: AutoUpdateModel;\n onChange: (value: Partial<AutoUpdateModel>) => void;\n environmentType?: 'DOCKER' | 'KUBERNETES';\n showForcePullImage: boolean;\n errors?: FormikErrors<AutoUpdateModel>;\n baseWebhookUrl: string;\n webhookId: string;\n webhookDocs?: string;\n}) {\n return (\n <>\n <TextTip color=\"orange\" className=\"mb-2\">\n Any changes to this stack or application that have been made locally via\n Portainer or directly in the cluster will be overwritten by the git\n repository content, which may cause service interruption.\n </TextTip>\n\n <FormControl label=\"Mechanism\">\n <ButtonSelector\n size=\"small\"\n options={[\n { value: 'Interval', label: 'Polling' },\n { value: 'Webhook', label: 'Webhook' },\n ]}\n value={value.RepositoryMechanism || 'Interval'}\n onChange={(value) => onChange({ RepositoryMechanism: value })}\n />\n </FormControl>\n\n {value.RepositoryMechanism === 'Webhook' && (\n <WebhookSettings\n baseUrl={baseWebhookUrl}\n value={webhookId}\n docsLink={webhookDocs}\n />\n )}\n\n {value.RepositoryMechanism === 'Interval' && (\n <IntervalField\n value={value.RepositoryFetchInterval || ''}\n onChange={(value) => onChange({ RepositoryFetchInterval: value })}\n errors={errors?.RepositoryFetchInterval}\n />\n )}\n\n {showForcePullImage && (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n name=\"forcePullImage\"\n featureId={FeatureId.STACK_PULL_IMAGE}\n checked={value.ForcePullImage || false}\n label=\"Re-pull image\"\n labelClass=\"col-sm-3 col-lg-2\"\n tooltip=\"If enabled, then when redeploy is triggered via the webhook or polling, if there's a newer image with the tag that you've specified (e.g. changeable development builds), it's pulled and redeployed. If you haven't specified a tag, or have specified 'latest' as the tag, then the image with the tag 'latest' is pulled and redeployed.\"\n onChange={(value) => onChange({ ForcePullImage: value })}\n />\n </div>\n </div>\n )}\n\n <ForceDeploymentSwitch\n checked={value.RepositoryAutomaticUpdatesForce || false}\n onChange={(value) =>\n onChange({ RepositoryAutomaticUpdatesForce: value })\n }\n label={\n environmentType === 'KUBERNETES' ? 'Always apply manifest' : undefined\n }\n tooltip={\n environmentType === 'KUBERNETES' ? (\n <>\n <p>\n If enabled, then when redeploy is triggered via the webhook or\n polling, kubectl apply is always performed, even if Portainer\n detects no difference between the git repo and what was stored\n locally on last git pull.\n </p>\n <p>\n This is useful if you want your git repo to be the source of\n truth and are fine with changes made directly to resources in\n the cluster being overwritten.\n </p>\n </>\n ) : undefined\n }\n />\n </>\n );\n}\n","import { FormikErrors } from 'formik';\n\nimport { AutoUpdateModel } from '@/react/portainer/gitops/types';\n\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { InsightsBox } from '@@/InsightsBox';\n\nimport { AutoUpdateSettings } from './AutoUpdateSettings';\n\nexport function AutoUpdateFieldset({\n value,\n onChange,\n environmentType,\n isForcePullVisible = true,\n errors,\n baseWebhookUrl,\n webhookId,\n webhooksDocs,\n}: {\n value: AutoUpdateModel;\n onChange: (value: AutoUpdateModel) => void;\n environmentType?: 'DOCKER' | 'KUBERNETES';\n isForcePullVisible?: boolean;\n errors?: FormikErrors<AutoUpdateModel>;\n baseWebhookUrl: string;\n webhookId: string;\n webhooksDocs?: string;\n}) {\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n name=\"autoUpdate\"\n checked={value.RepositoryAutomaticUpdates}\n label=\"GitOps updates\"\n tooltip=\"When enabled, at each polling interval or webhook invocation, if the\n git repo differs from what was stored locally on the last git pull,\n the changes are deployed.\"\n labelClass=\"col-sm-3 col-lg-2\"\n onChange={(value) =>\n handleChange({ RepositoryAutomaticUpdates: value })\n }\n />\n </div>\n </div>\n\n <InsightsBox\n content={\n <p>\n We've renamed "Automatic updates" to better align with\n industry terminology and clarify its purpose for all users.\n Originally chosen during the early emergence of GitOps, the name has\n changed, but the functionality remains unchanged. GitOps has rapidly\n emerged as a revolutionary approach to managing infrastructure and\n application changes, and we want to ensure our platform reflects the\n latest advancements in the industry.\n </p>\n }\n header=\"Meet ‘GitOps updates’ : Formerly known as Automatic updates\"\n insightCloseId=\"rename-gitops-updates\"\n className=\"mb-3\"\n />\n\n {value.RepositoryAutomaticUpdates && (\n <AutoUpdateSettings\n webhookId={webhookId}\n baseWebhookUrl={baseWebhookUrl}\n value={value}\n onChange={handleChange}\n environmentType={environmentType}\n showForcePullImage={isForcePullVisible}\n errors={errors}\n webhookDocs={webhooksDocs}\n />\n )}\n </>\n );\n\n function handleChange(newValues: Partial<AutoUpdateModel>) {\n onChange({ ...value, ...newValues });\n }\n}\n","import { AutoUpdateResponse, AutoUpdateModel } from '../types';\n\nexport function parseAutoUpdateResponse(\n response?: AutoUpdateResponse\n): AutoUpdateModel {\n if (!response || (!response?.Interval && !response?.Webhook)) {\n return {\n RepositoryAutomaticUpdates: false,\n RepositoryAutomaticUpdatesForce: false,\n RepositoryMechanism: 'Interval',\n RepositoryFetchInterval: '5m',\n ForcePullImage: false,\n };\n }\n\n return {\n RepositoryAutomaticUpdates: true,\n RepositoryMechanism: response.Interval ? 'Interval' : 'Webhook',\n RepositoryFetchInterval: response.Interval || '',\n RepositoryAutomaticUpdatesForce: response.ForceUpdate,\n ForcePullImage: response.ForcePullImage,\n };\n}\n\nexport function transformAutoUpdateViewModel(\n viewModel?: AutoUpdateModel,\n webhookId?: string\n): AutoUpdateResponse | null {\n if (!viewModel || !viewModel.RepositoryAutomaticUpdates) {\n return null;\n }\n\n if (viewModel.RepositoryMechanism === 'Webhook' && !webhookId) {\n throw new Error('Webhook ID is required');\n }\n\n return {\n Interval:\n viewModel.RepositoryMechanism === 'Interval'\n ? viewModel.RepositoryFetchInterval\n : '',\n Webhook:\n viewModel.RepositoryMechanism === 'Webhook' && webhookId ? webhookId : '',\n ForceUpdate: viewModel.RepositoryAutomaticUpdatesForce,\n ForcePullImage: viewModel.ForcePullImage,\n };\n}\n","import { string, boolean, object, SchemaOf, mixed } from 'yup';\n\nimport { AutoUpdateMechanism, AutoUpdateModel } from '../types';\n\nimport { intervalValidation } from './IntervalField';\n\nexport function autoUpdateValidation(): SchemaOf<AutoUpdateModel> {\n return object({\n RepositoryAutomaticUpdates: boolean().default(false),\n RepositoryAutomaticUpdatesForce: boolean().default(false),\n RepositoryMechanism: mixed<AutoUpdateMechanism>()\n .oneOf(['Interval', 'Webhook'])\n .when('RepositoryAutomaticUpdates', {\n is: true,\n then: string().required(),\n })\n .default('Interval'),\n RepositoryFetchInterval: string()\n .default('')\n .when(['RepositoryAutomaticUpdates', 'RepositoryMechanism'], {\n is: (autoUpdates: boolean, mechanism: AutoUpdateMechanism) =>\n autoUpdates && mechanism === 'Interval',\n then: intervalValidation(),\n }),\n RepositoryWebhookId: string().default(''),\n ForcePullImage: boolean().default(false),\n });\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\ninterface SearchPayload {\n repository: string;\n keyword: string;\n reference?: string;\n username?: string;\n password?: string;\n tlsSkipVerify?: boolean;\n}\n\nexport function useSearch(payload: SearchPayload, enabled: boolean) {\n return useQuery(\n ['git_repo_search_results', { payload }],\n () => searchRepo(payload),\n {\n enabled,\n retry: false,\n cacheTime: 0,\n }\n );\n}\n\nexport async function searchRepo(payload: SearchPayload) {\n try {\n const { data } = await axios.post<string[] | null>(\n '/gitops/repo/files/search',\n payload\n );\n return data;\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-portainer-gitops-ComposePathField-PathSelector-module__root\"};","import {\n Combobox,\n ComboboxInput,\n ComboboxList,\n ComboboxOption,\n ComboboxPopover,\n} from '@reach/combobox';\nimport '@reach/combobox/styles.css';\nimport { ChangeEvent } from 'react';\nimport clsx from 'clsx';\n\nimport { useSearch } from '@/react/portainer/gitops/queries/useSearch';\nimport { useDebounce } from '@/react/hooks/useDebounce';\n\nimport { getAuthentication } from '../utils';\nimport { GitFormModel } from '../types';\n\nimport styles from './PathSelector.module.css';\n\nexport function PathSelector({\n value,\n onChange,\n placeholder,\n model,\n}: {\n value: string;\n onChange(value: string): void;\n placeholder: string;\n model: GitFormModel;\n}) {\n const [searchTerm, setSearchTerm] = useDebounce(value, onChange);\n\n const creds = getAuthentication(model);\n const payload = {\n repository: model.RepositoryURL,\n keyword: searchTerm,\n reference: model.RepositoryReferenceName,\n tlsSkipVerify: model.TLSSkipVerify,\n ...creds,\n };\n const enabled = Boolean(\n model.RepositoryURL && model.RepositoryURLValid && searchTerm\n );\n const { data: searchResults } = useSearch(payload, enabled);\n\n return (\n <Combobox\n className={styles.root}\n aria-label=\"compose\"\n onSelect={onSelect}\n data-cy=\"component-gitComposeInput\"\n >\n <ComboboxInput\n className=\"form-control\"\n onChange={handleChange}\n placeholder={placeholder}\n value={searchTerm}\n />\n {searchResults && searchResults.length > 0 && (\n <ComboboxPopover>\n <ComboboxList>\n {searchResults.map((result: string, index: number) => (\n <ComboboxOption\n key={index}\n value={result}\n className={clsx(\n `[&[aria-selected=\"true\"]]:th-highcontrast:!bg-black [&[aria-selected=\"true\"]]:th-dark:!bg-black`,\n `hover:th-highcontrast:!bg-black hover:th-dark:!bg-black`,\n 'th-highcontrast:bg-gray-10 th-dark:bg-gray-10 '\n )}\n />\n ))}\n </ComboboxList>\n </ComboboxPopover>\n )}\n </Combobox>\n );\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n setSearchTerm(e.target.value);\n }\n\n function onSelect(value: string) {\n onChange(value);\n }\n}\n","import { useStateWrapper } from '@/react/hooks/useStateWrapper';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Input } from '@@/form-components/Input';\n\nimport { GitFormModel } from '../types';\nimport { isBE } from '../../feature-flags/feature-flags.service';\n\nimport { PathSelector } from './PathSelector';\n\ninterface Props {\n errors?: string;\n value: string;\n onChange(value: string): void;\n isCompose: boolean;\n model: GitFormModel;\n isDockerStandalone: boolean;\n}\n\nexport function ComposePathField({\n value,\n onChange,\n isCompose,\n model,\n isDockerStandalone,\n errors,\n}: Props) {\n const [inputValue, updateInputValue] = useStateWrapper(value, onChange);\n\n return (\n <div className=\"form-group\">\n <span className=\"col-sm-12\">\n <TextTip color=\"blue\" className=\"mb-2\">\n <span>\n Indicate the path to the {isCompose ? 'Compose' : 'Manifest'} file\n from the root of your repository (requires a yaml, yml, json, or hcl\n file extension).\n </span>\n {isDockerStandalone && (\n <span className=\"ml-2\">\n To enable rebuilding of an image if already present on Docker\n standalone environments, include\n <code>pull_policy: build</code> in your compose file as per{' '}\n <a href=\"https://docs.docker.com/compose/compose-file/#pull_policy\">\n Docker documentation\n </a>\n .\n </span>\n )}\n </TextTip>\n </span>\n <div className=\"col-sm-12\">\n <FormControl\n label={isCompose ? 'Compose path' : 'Manifest path'}\n inputId=\"stack_repository_path\"\n required\n errors={errors}\n >\n {isBE ? (\n <PathSelector\n value={value}\n onChange={onChange}\n placeholder={isCompose ? 'docker-compose.yml' : 'manifest.yml'}\n model={model}\n />\n ) : (\n <Input\n value={inputValue}\n onChange={(e) => {\n updateInputValue(e.target.value);\n }}\n placeholder={isCompose ? 'docker-compose.yml' : 'manifest.yml'}\n />\n )}\n </FormControl>\n </div>\n </div>\n );\n}\n","import { AxiosError } from 'axios';\nimport { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\ninterface Creds {\n username?: string;\n password?: string;\n gitCredentialId?: number;\n}\ninterface CheckRepoOptions {\n creds?: Creds;\n force?: boolean;\n tlsSkipVerify?: boolean;\n}\n\nexport function useCheckRepo(\n url: string,\n options: CheckRepoOptions,\n {\n enabled,\n onSettled,\n }: { enabled?: boolean; onSettled?(isValid?: boolean): void } = {}\n) {\n return useQuery(\n ['git_repo_valid', url, options],\n () => checkRepo(url, options),\n {\n enabled: !!url && enabled,\n onSettled,\n retry: false,\n }\n );\n}\n\nexport async function checkRepo(\n repository: string,\n { force, ...options }: CheckRepoOptions\n): Promise<boolean> {\n try {\n await axios.post<string[]>(\n '/gitops/repo/refs',\n { repository, tlsSkipVerify: options.tlsSkipVerify, ...options.creds },\n force ? { params: { force } } : {}\n );\n return true;\n } catch (error) {\n throw parseAxiosError(error as Error, '', (axiosError: AxiosError) => {\n let details = axiosError.response?.data.details;\n\n const { creds = {} } = options;\n // If no credentials were provided alter error from git to indicate repository is not found or is private\n if (\n (!(creds.username && creds.password) || !creds.gitCredentialId) &&\n details ===\n 'authentication failed, please ensure that the git credentials are correct'\n ) {\n details =\n 'Git repository could not be found or is private, please ensure that the URL is correct or credentials are provided.';\n }\n\n const error = new Error(details);\n return { error, details };\n });\n }\n}\n","import { ChangeEvent, useState } from 'react';\nimport { RefreshCcw } from 'lucide-react';\nimport { useQueryClient } from 'react-query';\nimport { string, StringSchema } from 'yup';\n\nimport {\n checkRepo,\n useCheckRepo,\n} from '@/react/portainer/gitops/queries/useCheckRepo';\nimport { useDebounce } from '@/react/hooks/useDebounce';\nimport { isPortainerError } from '@/portainer/error';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Button } from '@@/buttons';\nimport { useCachedValidation } from '@@/form-components/useCachedTest';\n\nimport { isBE } from '../feature-flags/feature-flags.service';\n\nimport { GitFormModel } from './types';\nimport { getAuthentication } from './utils';\n\ninterface Props {\n value: string;\n onChange(value: string): void;\n onChangeRepositoryValid(value: boolean): void;\n model: GitFormModel;\n errors?: string;\n}\n\nexport function GitFormUrlField({\n value,\n onChange,\n onChangeRepositoryValid,\n model,\n errors,\n}: Props) {\n const queryClient = useQueryClient();\n\n const creds = getAuthentication(model);\n const [force, setForce] = useState(false);\n const repoStatusQuery = useCheckRepo(\n value,\n { creds, force, tlsSkipVerify: model.TLSSkipVerify },\n {\n onSettled(isValid) {\n onChangeRepositoryValid(!!isValid);\n setForce(false);\n },\n // disabled check on CE since it's not supported\n enabled: isBE,\n }\n );\n\n const [debouncedValue, debouncedOnChange] = useDebounce(value, onChange);\n\n const errorMessage = isPortainerError(repoStatusQuery.error)\n ? repoStatusQuery.error.message\n : undefined;\n\n return (\n <div className=\"form-group\">\n <span className=\"col-sm-12\">\n <TextTip color=\"blue\">You can use the URL of a git repository.</TextTip>\n </span>\n <div className=\"col-sm-12\">\n <FormControl\n label=\"Repository URL\"\n inputId=\"stack_repository_url\"\n errors={errorMessage || errors}\n required\n >\n <span className=\"flex\">\n <Input\n value={debouncedValue}\n type=\"text\"\n name=\"repoUrlField\"\n className=\"form-control\"\n placeholder=\"https://github.com/portainer/portainer-compose\"\n data-cy=\"component-gitUrlInput\"\n required\n onChange={handleChange}\n />\n\n <Button\n onClick={onRefresh}\n size=\"medium\"\n className=\"vertical-center\"\n color=\"light\"\n icon={RefreshCcw}\n title=\"refreshGitRepo\"\n disabled={!model.RepositoryURLValid}\n />\n </span>\n </FormControl>\n </div>\n </div>\n );\n\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n debouncedOnChange(e.target.value);\n }\n\n function onRefresh() {\n setForce(true);\n queryClient.invalidateQueries(['git_repo_refs', 'git_repo_search_results']);\n }\n}\n\n// Todo: once git form is used only in react, it should be used for validation instead of L40-52\nexport function useUrlValidation(force: boolean) {\n const existenceTest = useCachedValidation<string, GitFormModel>(\n (url, context) => {\n if (!url) {\n return Promise.resolve(true);\n }\n\n const model = context.parent as GitFormModel;\n\n const creds = getAuthentication(model);\n return checkRepo(url, { creds, force });\n }\n );\n\n return (string() as StringSchema<string, GitFormModel>)\n .url('Invalid Url')\n .required('Repository URL is required')\n .test('repo-exists', 'Repository does not exist', existenceTest);\n}\n","import { FormikErrors } from 'formik';\n\nimport { useStateWrapper } from '@/react/hooks/useStateWrapper';\n\nimport { FormError } from '@@/form-components/FormError';\nimport { InputGroup } from '@@/form-components/InputGroup';\nimport { InputList, ItemProps } from '@@/form-components/InputList';\n\ninterface Props {\n value: Array<string>;\n onChange: (value: Array<string>) => void;\n errors?: FormikErrors<string>[] | string | string[];\n}\n\nexport function AdditionalFileField({ onChange, value, errors }: Props) {\n return (\n <InputList\n errors={errors}\n label=\"Additional paths\"\n onChange={onChange}\n value={value}\n addLabel=\"Add file\"\n item={Item}\n itemBuilder={() => ''}\n />\n );\n}\n\nfunction Item({\n item,\n onChange,\n disabled,\n error,\n readOnly,\n}: ItemProps<string>) {\n const [inputValue, updateInputValue] = useStateWrapper(item, onChange);\n\n return (\n <div className=\"relative flex flex-col\">\n <InputGroup size=\"small\">\n <InputGroup.Addon>path</InputGroup.Addon>\n <InputGroup.Input\n required\n disabled={disabled}\n readOnly={readOnly}\n value={inputValue}\n onChange={(e) => {\n updateInputValue(e.target.value);\n }}\n />\n </InputGroup>\n {error && (\n <div className=\"absolute -bottom-7\">\n <FormError>{error}</FormError>\n </div>\n )}\n </div>\n );\n}\n","import { array, boolean, object, SchemaOf, string } from 'yup';\nimport { FormikErrors } from 'formik';\n\nimport { ComposePathField } from '@/react/portainer/gitops/ComposePathField';\nimport { RefField } from '@/react/portainer/gitops/RefField';\nimport { GitFormUrlField } from '@/react/portainer/gitops/GitFormUrlField';\nimport { GitFormModel } from '@/react/portainer/gitops/types';\nimport { TimeWindowDisplay } from '@/react/portainer/gitops/TimeWindowDisplay';\n\nimport { FormSection } from '@@/form-components/FormSection';\nimport { validateForm } from '@@/form-components/validate-form';\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nimport { GitCredential } from '../account/git-credentials/types';\n\nimport { AdditionalFileField } from './AdditionalFilesField';\nimport { gitAuthValidation, AuthFieldset } from './AuthFieldset';\nimport { AutoUpdateFieldset } from './AutoUpdateFieldset';\nimport { autoUpdateValidation } from './AutoUpdateFieldset/validation';\nimport { refFieldValidation } from './RefField/RefField';\n\ninterface Props {\n value: GitFormModel;\n onChange: (value: Partial<GitFormModel>) => void;\n environmentType?: 'DOCKER' | 'KUBERNETES' | undefined;\n deployMethod?: 'compose' | 'nomad' | 'manifest';\n isDockerStandalone?: boolean;\n isAdditionalFilesFieldVisible?: boolean;\n isForcePullVisible?: boolean;\n isAuthExplanationVisible?: boolean;\n errors: FormikErrors<GitFormModel>;\n baseWebhookUrl: string;\n webhookId: string;\n webhooksDocs?: string;\n}\n\nexport function GitForm({\n value,\n onChange,\n environmentType = 'DOCKER',\n deployMethod = 'compose',\n isDockerStandalone = false,\n isAdditionalFilesFieldVisible,\n isForcePullVisible,\n isAuthExplanationVisible,\n errors = {},\n baseWebhookUrl,\n webhookId,\n webhooksDocs,\n}: Props) {\n return (\n <FormSection title=\"Git repository\">\n <AuthFieldset\n value={value}\n onChange={handleChange}\n isAuthExplanationVisible={isAuthExplanationVisible}\n errors={errors}\n />\n\n <GitFormUrlField\n value={value.RepositoryURL}\n onChange={(value) => handleChange({ RepositoryURL: value })}\n onChangeRepositoryValid={(value) =>\n handleChange({ RepositoryURLValid: value })\n }\n model={value}\n errors={errors.RepositoryURL}\n />\n\n <RefField\n value={value.RepositoryReferenceName || ''}\n onChange={(value) => handleChange({ RepositoryReferenceName: value })}\n model={value}\n error={errors.RepositoryReferenceName}\n isUrlValid={value.RepositoryURLValid}\n />\n\n <ComposePathField\n value={value.ComposeFilePathInRepository}\n onChange={(value) =>\n handleChange({ ComposeFilePathInRepository: value })\n }\n isCompose={deployMethod === 'compose'}\n model={value}\n isDockerStandalone={isDockerStandalone}\n errors={errors.ComposeFilePathInRepository}\n />\n\n {isAdditionalFilesFieldVisible && (\n <AdditionalFileField\n value={value.AdditionalFiles}\n onChange={(value) => handleChange({ AdditionalFiles: value })}\n errors={errors.AdditionalFiles}\n />\n )}\n\n {value.AutoUpdate && (\n <AutoUpdateFieldset\n environmentType={environmentType}\n webhookId={webhookId}\n baseWebhookUrl={baseWebhookUrl}\n value={value.AutoUpdate}\n onChange={(value) => handleChange({ AutoUpdate: value })}\n isForcePullVisible={isForcePullVisible}\n errors={errors.AutoUpdate as FormikErrors<GitFormModel['AutoUpdate']>}\n webhooksDocs={webhooksDocs}\n />\n )}\n\n <TimeWindowDisplay />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Skip TLS Verification\"\n checked={value.TLSSkipVerify}\n onChange={(value) => handleChange({ TLSSkipVerify: value })}\n name=\"TLSSkipVerify\"\n tooltip=\"Enabling this will allow skipping TLS validation for any self-signed certificate.\"\n labelClass=\"col-sm-3 col-lg-2\"\n />\n </div>\n </div>\n </FormSection>\n );\n\n function handleChange(partialValue: Partial<GitFormModel>) {\n onChange(partialValue);\n }\n}\n\nexport async function validateGitForm(\n gitCredentials: Array<GitCredential>,\n formValues: GitFormModel\n) {\n return validateForm<GitFormModel>(\n () => buildGitValidationSchema(gitCredentials),\n formValues\n );\n}\n\nexport function buildGitValidationSchema(\n gitCredentials: Array<GitCredential>\n): SchemaOf<GitFormModel> {\n return object({\n RepositoryURL: string()\n .test('valid URL', 'The URL must be a valid URL', (value) => {\n if (!value) {\n return true;\n }\n\n try {\n const url = new URL(value);\n return !!url.hostname;\n } catch {\n return false;\n }\n })\n .required('Repository URL is required'),\n RepositoryReferenceName: refFieldValidation(),\n ComposeFilePathInRepository: string().required(\n 'Compose file path is required'\n ),\n AdditionalFiles: array(string().required('Path is required')).default([]),\n RepositoryURLValid: boolean().default(false),\n AutoUpdate: autoUpdateValidation().nullable(),\n TLSSkipVerify: boolean().default(false),\n }).concat(gitAuthValidation(gitCredentials, false));\n}\n","import clsx from 'clsx';\n\ninterface Props {\n url: string;\n configFilePath: string;\n additionalFiles?: string[];\n className: string;\n type: string;\n}\n\nexport function InfoPanel({\n url,\n configFilePath,\n additionalFiles = [],\n className,\n type,\n}: Props) {\n return (\n <div className={clsx('form-group', className)}>\n <div className=\"col-sm-12\">\n <p>\n This {type} was deployed from the git repository <code>{url}</code>.\n </p>\n <p>\n Update\n <code>{[configFilePath, ...additionalFiles].join(', ')}</code>\n in git and pull from here to update the {type}.\n </p>\n </div>\n </div>\n );\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\ninterface RefsPayload {\n repository: string;\n username?: string;\n password?: string;\n tlsSkipVerify?: boolean;\n}\n\nexport function useGitRefs<T = string[]>(\n payload: RefsPayload,\n {\n enabled,\n select,\n onSuccess,\n }: {\n enabled?: boolean;\n select?: (data: string[]) => T;\n onSuccess?(data: T): void;\n } = {}\n) {\n return useQuery(['git_repo_refs', { payload }], () => listRefs(payload), {\n enabled,\n retry: false,\n cacheTime: 0,\n select,\n onSuccess,\n });\n}\n\nexport async function listRefs(payload: RefsPayload) {\n try {\n const { data } = await axios.post<string[]>('/gitops/repo/refs', payload);\n return data;\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n","import { StackId } from '@/react/common/stacks/types';\nimport { useGitRefs } from '@/react/portainer/gitops/queries/useGitRefs';\n\nimport { Select } from '@@/form-components/Input';\n\nimport { getAuthentication } from '../utils';\n\nimport { RefFieldModel } from './types';\n\nexport function RefSelector({\n model,\n value,\n onChange,\n isUrlValid,\n stackId,\n}: {\n model: RefFieldModel;\n value: string;\n stackId?: StackId;\n onChange: (value: string) => void;\n isUrlValid: boolean;\n}) {\n const creds = getAuthentication(model);\n const payload = {\n repository: model.RepositoryURL,\n stackId,\n tlsSkipVerify: model.TLSSkipVerify,\n ...creds,\n };\n\n const { data: refs } = useGitRefs<Array<{ label: string; value: string }>>(\n payload,\n {\n enabled: !!(model.RepositoryURL && isUrlValid),\n select: (refs) => {\n if (refs.length === 0) {\n return [{ value: 'refs/heads/main', label: 'refs/heads/main' }];\n }\n\n // put refs/heads/main first if it is present in repository\n if (refs.includes('refs/heads/main')) {\n refs.splice(refs.indexOf('refs/heads/main'), 1);\n refs.unshift('refs/heads/main');\n }\n\n return refs.map((t: string) => ({\n value: t,\n label: t,\n }));\n },\n\n onSuccess(refs) {\n if (refs && !refs.some((ref) => ref.value === value)) {\n onChange(refs[0].value);\n }\n },\n }\n );\n\n return (\n <Select\n value={value}\n options={refs || [{ value: 'refs/heads/main', label: 'refs/heads/main' }]}\n onChange={(e) => onChange(e.target.value)}\n data-cy=\"component-gitRefInput\"\n required\n />\n );\n}\n","import { PropsWithChildren, ReactNode } from 'react';\nimport { SchemaOf, string } from 'yup';\n\nimport { StackId } from '@/react/common/stacks/types';\nimport { useStateWrapper } from '@/react/hooks/useStateWrapper';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { isBE } from '../../feature-flags/feature-flags.service';\n\nimport { RefSelector } from './RefSelector';\nimport { RefFieldModel } from './types';\n\ninterface Props {\n value: string;\n onChange(value: string): void;\n model: RefFieldModel;\n error?: string;\n isUrlValid: boolean;\n stackId?: StackId;\n}\n\nexport function RefField({\n value,\n onChange,\n model,\n error,\n isUrlValid,\n stackId,\n}: Props) {\n const [inputValue, updateInputValue] = useStateWrapper(value, onChange);\n\n return isBE ? (\n <Wrapper\n errors={error}\n tip={\n <>\n Specify a reference of the repository using the following syntax:\n branches with <code>refs/heads/branch_name</code> or tags with{' '}\n <code>refs/tags/tag_name</code>.\n </>\n }\n >\n <RefSelector\n value={value}\n onChange={onChange}\n model={model}\n isUrlValid={isUrlValid}\n stackId={stackId}\n />\n </Wrapper>\n ) : (\n <Wrapper\n errors={error}\n tip={\n <>\n Specify a reference of the repository using the following syntax:\n branches with <code>refs/heads/branch_name</code> or tags with{' '}\n <code>refs/tags/tag_name</code>. If not specified, will use the\n default <code>HEAD</code> reference normally the <code>main</code>{' '}\n branch.\n </>\n }\n >\n <Input\n value={inputValue}\n onChange={(e) => updateInputValue(e.target.value)}\n placeholder=\"refs/heads/main\"\n />\n </Wrapper>\n );\n}\n\nfunction Wrapper({\n tip,\n children,\n errors,\n}: PropsWithChildren<{ tip: ReactNode; errors?: string }>) {\n return (\n <div className=\"form-group\">\n <span className=\"col-sm-12 mb-2\">\n <TextTip color=\"blue\">{tip}</TextTip>\n </span>\n <div className=\"col-sm-12\">\n <FormControl\n label=\"Repository reference\"\n inputId=\"stack_repository_reference_name\"\n required\n errors={errors}\n >\n {children}\n </FormControl>\n </div>\n </div>\n );\n}\n\nexport function refFieldValidation(): SchemaOf<string> {\n return string()\n .when({\n is: isBE,\n then: string().required('Repository reference name is required'),\n })\n .default('');\n}\n","import moment from 'moment';\nimport 'moment-timezone';\n\nimport { useCurrentEnvironment } from '@/react/hooks/useCurrentEnvironment';\n\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { withEdition } from '../feature-flags/withEdition';\n\nconst TimeWindowDisplayWrapper = withEdition(TimeWindowDisplay, 'BE');\n\nexport { TimeWindowDisplayWrapper as TimeWindowDisplay };\n\nfunction TimeWindowDisplay() {\n const currentEnvQuery = useCurrentEnvironment(false);\n\n if (!currentEnvQuery.data) {\n return null;\n }\n\n const { ChangeWindow } = currentEnvQuery.data;\n\n if (!ChangeWindow.Enabled) {\n return null;\n }\n const timezone = moment.tz.guess();\n const isDST = moment().isDST();\n const { startTime: startTimeLocal, endTime: endTimeLocal } = utcToTime(\n { startTime: ChangeWindow.StartTime, endTime: ChangeWindow.EndTime },\n timezone\n );\n\n const { startTime: startTimeUtc, endTime: endTimeUtc } = parseInterval(\n ChangeWindow.StartTime,\n ChangeWindow.EndTime\n );\n\n return (\n <TextTip color=\"orange\" className=\"mb-2\">\n A change window is enabled, GitOps updates will not occur outside of{' '}\n <span className=\"font-bold\">\n {shortTime(startTimeUtc)} - {shortTime(endTimeUtc)} UTC (\n {shortTime(startTimeLocal)} -{shortTime(endTimeLocal)}{' '}\n {isDST ? 'DST' : ''} {timezone})\n </span>\n .\n </TextTip>\n );\n}\n\nfunction utcToTime(\n utcTime: { startTime: string; endTime: string },\n timezone: string\n) {\n const startTime = moment\n .tz(utcTime.startTime, 'HH:mm', 'GMT')\n .tz(timezone)\n .format('HH:mm');\n const endTime = moment\n .tz(utcTime.endTime, 'HH:mm', 'GMT')\n .tz(timezone)\n .format('HH:mm');\n\n return parseInterval(startTime, endTime);\n}\n\nfunction parseTime(originalTime: string) {\n const [startHour, startMin] = originalTime.split(':');\n\n const time = new Date();\n\n time.setHours(parseInt(startHour, 10));\n time.setMinutes(parseInt(startMin, 10));\n\n return time;\n}\n\nfunction parseInterval(startTime: string, endTime: string) {\n return {\n startTime: parseTime(startTime),\n endTime: parseTime(endTime),\n };\n}\n\nfunction shortTime(time: Date) {\n return moment(time).format('h:mm a');\n}\n","import { useEnvironment } from '@/react/portainer/environments/queries';\n\nimport { useEnvironmentId } from './useEnvironmentId';\n\nexport function useCurrentEnvironment(force = true) {\n const id = useEnvironmentId(force);\n return useEnvironment(id);\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\n\ninterface PreviewPayload {\n repository: string;\n targetFile: string;\n reference?: string;\n username?: string;\n password?: string;\n tlsSkipVerify?: boolean;\n}\n\ninterface PreviewResponse {\n FileContent: string;\n}\n\nexport async function getFilePreview(payload: PreviewPayload) {\n try {\n const {\n data: { FileContent },\n } = await axios.post<PreviewResponse>('/gitops/repo/file/preview', payload);\n return FileContent;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to fetch file from git');\n }\n}\n","import { confirm } from '@@/modals/confirm';\n\nimport { GitFormModel } from './types';\n\nexport function getAuthentication(\n model: Pick<\n GitFormModel,\n | 'RepositoryAuthentication'\n | 'RepositoryPassword'\n | 'RepositoryUsername'\n | 'RepositoryGitCredentialID'\n >\n) {\n if (!model.RepositoryAuthentication) {\n return undefined;\n }\n\n if (model.RepositoryGitCredentialID) {\n return { gitCredentialId: model.RepositoryGitCredentialID };\n }\n\n return {\n username: model.RepositoryUsername,\n password: model.RepositoryPassword,\n };\n}\n\nexport function confirmEnableTLSVerify() {\n return confirm({\n title: 'Enable TLS Verification?',\n message:\n 'Enabling the verification of TLS certificates without ensuring the correct configuration of your Certificate Authority (CA) for self-signed certificates can result in deployment failures.',\n });\n}\n","// matches https://github.com/portainer/liblicense/blob/develop/liblicense.go#L66-L74\nexport enum Edition {\n CE = 1,\n BE,\n EE,\n}\n\n// matches https://github.com/portainer/liblicense/blob/develop/liblicense.go#L64-L69\n\nexport enum LicenseType {\n Trial = 1,\n Subscription,\n /**\n * Essentials is the free 5-node license type\n */\n Essentials,\n}\n\n// matches https://github.com/portainer/liblicense/blob/develop/liblicense.go#L35-L50\nexport interface License {\n id: string;\n company: string;\n created: number;\n email: string;\n expiresAfter: number;\n licenseKey: string;\n nodes: number;\n productEdition: Edition;\n revoked: boolean;\n revokedAt: number;\n type: LicenseType;\n version: number;\n reference: string;\n expiresAt: number;\n}\n\n// matches https://github.com/portainer/portainer-ee/blob/c4575bf528583fe1682267db4ee40a11a905f611/api/portainer.go#L588-L597\nexport interface LicenseInfo {\n productEdition: Edition;\n company: string;\n email: string;\n createdAt: number;\n expiresAt: number;\n nodes: number;\n type: LicenseType;\n valid: boolean;\n enforcedAt: number;\n enforced: boolean;\n}\n","import _ from 'lodash';\nimport { AxiosError } from 'axios';\n\nimport axios from '@/portainer/services/axios';\n\nimport { License, LicenseInfo } from './types';\n\ntype Listener = (info: LicenseInfo) => void;\n\ninterface Store {\n data?: LicenseInfo;\n lastLoaded?: number;\n invalidated: boolean;\n listeners: Listener[];\n}\n\nconst store: Store = {\n listeners: [],\n invalidated: true,\n};\n\nexport async function getLicenses() {\n try {\n const { data } = await axios.get<License[]>(buildUrl());\n\n return data;\n } catch (e) {\n const axiosError = e as AxiosError;\n throw new Error(axiosError.response?.data.message);\n }\n}\n\ninterface AttachResponse {\n licenses: License[];\n failedKeys: Record<string, string>;\n}\n\nexport async function attachLicense(licenseKeys: string[]) {\n try {\n const { data } = await axios.post<AttachResponse>(buildUrl(), {\n licenseKeys,\n });\n\n if (Object.keys(data.failedKeys).length === licenseKeys.length) {\n return data;\n }\n\n store.invalidated = true;\n getLicenseInfo();\n return data;\n } catch (e) {\n const axiosError = e as AxiosError;\n if (axiosError.response?.status === 401) {\n throw new Error(\n 'Your session has expired, please refresh the browser and log in again.'\n );\n }\n throw new Error(axiosError.response?.data.message);\n }\n}\n\ninterface RemoveResponse {\n failedKeys: Record<string, string>;\n}\n\nexport async function removeLicense(licenseKeys: string[]) {\n try {\n const { data } = await axios.post<RemoveResponse>(buildUrl('remove'), {\n licenseKeys,\n });\n if (Object.keys(data.failedKeys).length === licenseKeys.length) {\n return data;\n }\n\n store.invalidated = true;\n getLicenseInfo();\n return data;\n } catch (e) {\n const axiosError = e as AxiosError;\n throw new Error(axiosError.response?.data.message);\n }\n}\n\nexport function resetState() {\n store.invalidated = true;\n store.data = undefined;\n}\n\nexport async function getLicenseInfo() {\n try {\n if (\n store.data &&\n !store.invalidated &&\n store.lastLoaded &&\n Math.abs(store.lastLoaded - Date.now()) < 1000 * 30\n ) {\n return store.data;\n }\n\n const { data: info } = await axios.get<LicenseInfo>(buildUrl('info'));\n store.data = info;\n store.lastLoaded = Date.now();\n store.invalidated = false;\n store.listeners.forEach((listener) => listener(info));\n\n return info;\n } catch (e) {\n const axiosError = e as AxiosError;\n throw new Error(axiosError.response?.data.message);\n }\n}\n\nexport function subscribe(listener: Listener) {\n store.listeners.push(listener);\n}\n\nexport function unsubscribe(listener: Listener) {\n _.remove<Listener>(store.listeners, listener);\n}\n\nfunction buildUrl(action = '') {\n let url = 'licenses';\n\n if (action) {\n url += `/${action}`;\n }\n return url;\n}\n","import { useQuery } from 'react-query';\n\nimport { error as notifyError } from '@/portainer/services/notifications';\nimport { useNodesCount } from '@/react/portainer/system/useNodesCount';\n\nimport { getLicenseInfo } from './license.service';\nimport { LicenseInfo, LicenseType } from './types';\n\nexport function useLicenseInfo() {\n const { isLoading, data: info } = useQuery<LicenseInfo, Error>(\n 'licenseInfo',\n () => getLicenseInfo(),\n {\n onError(error) {\n notifyError('Failure', error as Error, 'Failed to get license info');\n },\n }\n );\n\n return { isLoading, info };\n}\n\nexport function useIntegratedLicenseInfo() {\n const { isLoading: isLoadingNodes, data: nodesCount = 0 } = useNodesCount();\n\n const { isLoading: isLoadingLicense, info } = useLicenseInfo();\n if (\n isLoadingLicense ||\n isLoadingNodes ||\n !info ||\n info.type === LicenseType.Trial\n ) {\n return null;\n }\n\n return { licenseInfo: info as LicenseInfo, usedNodes: nodesCount };\n}\n","import create from 'zustand/vanilla';\nimport { persist } from 'zustand/middleware';\n\nimport { keyBuilder } from '@/react/hooks/useLocalStorage';\nimport { UserId } from '@/portainer/users/types';\n\nimport { ToastNotification } from './types';\n\ninterface NotificationsState {\n userNotifications: Record<UserId, ToastNotification[]>;\n addNotification: (userId: number, notification: ToastNotification) => void;\n removeNotification: (userId: number, notificationId: string) => void;\n removeNotifications: (userId: number, notifications: string[]) => void;\n clearUserNotifications: (userId: number) => void;\n}\n\nexport const notificationsStore = create<NotificationsState>()(\n persist(\n (set) => ({\n userNotifications: {},\n addNotification: (userId: number, notification: ToastNotification) => {\n set((state) => {\n // keep the new notification at the start of the list, so sorting by newest time isn't required\n const newUserNotifications = [\n notification,\n ...(state.userNotifications[userId] || []),\n ];\n return {\n userNotifications: {\n ...state.userNotifications,\n [userId]: newUserNotifications,\n },\n };\n });\n },\n removeNotification: (userId: number, notificationId: string) => {\n set((state) => ({\n userNotifications: {\n ...state.userNotifications,\n [userId]: state.userNotifications[userId].filter(\n (notif) => notif.id !== notificationId\n ),\n },\n }));\n },\n removeNotifications: (userId: number, notificationIds: string[]) => {\n set((state) => ({\n userNotifications: {\n ...state.userNotifications,\n [userId]: state.userNotifications[userId].filter(\n (notification) => !notificationIds.includes(notification.id)\n ),\n },\n }));\n },\n clearUserNotifications: (userId: number) => {\n set((state) => ({\n userNotifications: {\n ...state.userNotifications,\n [userId]: [],\n },\n }));\n },\n }),\n {\n name: keyBuilder('notifications'),\n }\n )\n);\n","import { TeamId } from '@/react/portainer/users/teams/types';\nimport { UserId } from '@/portainer/users/types';\n\nexport type Catalog = {\n repositories: string[];\n};\n\nexport type Repository = {\n name: string;\n tags: string[];\n};\n\nexport enum RegistryTypes {\n ANONYMOUS,\n QUAY,\n AZURE,\n CUSTOM,\n GITLAB,\n PROGET,\n DOCKERHUB,\n ECR,\n GITHUB,\n}\n\nexport type RoleId = number;\ninterface AccessPolicy {\n RoleId: RoleId;\n}\n\ntype UserAccessPolicies = Record<UserId, AccessPolicy>; // map[UserID]AccessPolicy\ntype TeamAccessPolicies = Record<TeamId, AccessPolicy>;\n\nexport interface RegistryAccess {\n UserAccessPolicies: UserAccessPolicies;\n TeamAccessPolicies: TeamAccessPolicies;\n Namespaces: string[];\n}\n\nexport interface RegistryAccesses {\n [key: string]: RegistryAccess;\n}\n\nexport interface Gitlab {\n ProjectId: number;\n InstanceURL: string;\n ProjectPath: string;\n}\n\nexport interface Quay {\n UseOrganisation: boolean;\n OrganisationName: string;\n}\n\nexport interface Github {\n UseOrganisation: boolean;\n OrganisationName: string;\n}\n\nexport interface Ecr {\n Region: string;\n}\n\nexport type RegistryId = number;\nexport interface Registry {\n Id: RegistryId;\n Type: number;\n Name: string;\n URL: string;\n BaseURL: string;\n Authentication: boolean;\n Username: string;\n Password: string;\n RegistryAccesses: RegistryAccesses;\n Checked: boolean;\n Gitlab: Gitlab;\n Quay: Quay;\n Github: Github;\n Ecr: Ecr;\n}\n","export const queryKeys = {\n base: () => ['settings'] as const,\n public: () => [...queryKeys.base(), 'public'] as const,\n experimental: () => [...queryKeys.base(), 'experimental'] as const,\n};\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { PublicSettingsResponse, DefaultRegistry, Settings } from './types';\n\nexport async function getPublicSettings() {\n try {\n const { data } = await axios.get<PublicSettingsResponse>(\n buildUrl('public')\n );\n return data;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve application settings'\n );\n }\n}\n\nexport async function getGlobalDeploymentOptions() {\n const publicSettings = await getPublicSettings();\n return publicSettings.GlobalDeploymentOptions;\n}\n\nexport async function getSettings() {\n try {\n const { data } = await axios.get<Settings>(buildUrl());\n return data;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve application settings'\n );\n }\n}\n\ntype OptionalSettings = Omit<Partial<Settings>, 'Edge'> & {\n Edge?: Partial<Settings['Edge']>;\n};\n\nexport async function updateSettings(settings: OptionalSettings) {\n try {\n const { data } = await axios.put<Settings>(buildUrl(), settings);\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update application settings');\n }\n}\n\nexport async function updateDefaultRegistry(\n defaultRegistry: Partial<DefaultRegistry>\n) {\n try {\n await axios.put(buildUrl('default_registry'), defaultRegistry);\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to update default registry settings'\n );\n }\n}\n\nexport function buildUrl(subResource?: string, action?: string) {\n let url = 'settings';\n if (subResource) {\n url += `/${subResource}`;\n }\n\n if (action) {\n url += `/${action}`;\n }\n\n return url;\n}\n","import { useQuery, useMutation, useQueryClient } from 'react-query';\n\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\n\nimport {\n updateSettings,\n getSettings,\n updateDefaultRegistry,\n} from '../settings.service';\nimport { DefaultRegistry, Settings } from '../types';\n\nimport { queryKeys } from './queryKeys';\n\nexport function useSettings<T = Settings>(\n select?: (settings: Settings) => T,\n enabled = true\n) {\n return useQuery(queryKeys.base(), getSettings, {\n select,\n enabled,\n staleTime: 50,\n ...withError('Unable to retrieve settings'),\n });\n}\n\nexport function useUpdateSettingsMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n updateSettings,\n mutationOptions(\n withInvalidate(queryClient, [queryKeys.base(), ['cloud']]),\n withError('Unable to update settings')\n )\n );\n}\n\nexport function useUpdateDefaultRegistrySettingsMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n (payload: Partial<DefaultRegistry>) => updateDefaultRegistry(payload),\n mutationOptions(\n withInvalidate(queryClient, [queryKeys.base()]),\n withError('Unable to update default registry settings')\n )\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { withError } from '@/react-tools/react-query';\n\nimport { getPublicSettings } from '../settings.service';\nimport { PublicSettingsResponse } from '../types';\n\nimport { queryKeys } from './queryKeys';\n\nexport function usePublicSettings<T = PublicSettingsResponse>({\n enabled,\n select,\n onSuccess,\n}: {\n select?: (settings: PublicSettingsResponse) => T;\n enabled?: boolean;\n onSuccess?: (data: T) => void;\n} = {}) {\n return useQuery(queryKeys.public(), getPublicSettings, {\n select,\n ...withError('Unable to retrieve public settings'),\n enabled,\n onSuccess,\n });\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { ExperimentalFeatures } from '../types';\nimport { buildUrl } from '../settings.service';\n\nimport { queryKeys } from './queryKeys';\n\ntype ExperimentalFeaturesSettings = {\n experimentalFeatures: ExperimentalFeatures;\n};\n\nexport function useExperimentalSettings<T = ExperimentalFeaturesSettings>(\n select?: (settings: ExperimentalFeaturesSettings) => T,\n enabled = true\n) {\n return useQuery(queryKeys.experimental(), getExperimentalSettings, {\n select,\n enabled,\n staleTime: 50,\n ...withError('Unable to retrieve experimental settings'),\n });\n}\n\nasync function getExperimentalSettings() {\n try {\n const { data } = await axios.get<ExperimentalFeaturesSettings>(\n buildUrl('experimental')\n );\n return data;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve experimental settings'\n );\n }\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\n\nimport { ExperimentalFeatures } from '../types';\nimport { buildUrl } from '../settings.service';\n\nimport { queryKeys } from './queryKeys';\n\nexport function useUpdateExperimentalSettingsMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n updateExperimentalSettings,\n mutationOptions(\n withInvalidate(queryClient, [queryKeys.base()]),\n withError('Unable to update experimental settings')\n )\n );\n}\n\nasync function updateExperimentalSettings(\n settings: Partial<ExperimentalFeatures>\n) {\n try {\n await axios.put(buildUrl('experimental'), settings);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update experimental settings');\n }\n}\n","export function buildUrl(action?: string) {\n let url = '/system';\n\n if (action) {\n url += `/${action}`;\n }\n\n return url;\n}\n","export const queryKeys = {\n base: () => ['system'] as const,\n};\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { buildUrl } from './build-url';\nimport { queryKeys } from './query-keys';\n\nexport const queryKey = [...queryKeys.base(), 'nodes'] as const;\n\nexport interface NodesCountResponse {\n nodes: number;\n}\n\nasync function getNodesCount() {\n try {\n const { data } = await axios.get<NodesCountResponse>(buildUrl('nodes'));\n return data.nodes;\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\nexport function useNodesCount() {\n return useQuery(queryKey, getNodesCount, {\n ...withError('Unable to retrieve nodes count'),\n });\n}\n","import { useQuery } from 'react-query';\nimport { RetryValue } from 'react-query/types/core/retryer';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { UserId } from '@/portainer/users/types';\n\nimport { isBE } from '../feature-flags/feature-flags.service';\nimport { EnvironmentId } from '../environments/types';\n\nimport { buildUrl } from './build-url';\nimport { queryKeys } from './query-keys';\n\nexport const queryKey = [...queryKeys.base(), 'status'] as const;\n\nexport interface StatusResponse {\n Edition: string;\n Version: string;\n InstanceID: string;\n DemoEnvironment: {\n Enabled: boolean;\n Users: Array<UserId>;\n Environments: Array<EnvironmentId>;\n };\n}\n\nexport async function getSystemStatus() {\n try {\n const { data } = await axios.get<StatusResponse>(buildUrl('status'));\n\n data.Edition = isBE ? 'Business Edition' : 'Community Edition';\n\n return data;\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\nexport function useSystemStatus<T = StatusResponse>({\n select,\n enabled,\n retry,\n onSuccess,\n}: {\n select?: (status: StatusResponse) => T;\n enabled?: boolean;\n retry?: RetryValue<unknown>;\n onSuccess?: (data: T) => void;\n} = {}) {\n return useQuery(queryKey, () => getSystemStatus(), {\n select,\n enabled,\n retry,\n retryDelay: 1000,\n onSuccess,\n });\n}\n\nexport function useIsDemo() {\n return useSystemStatus({\n select: (status) => status.DemoEnvironment.Enabled,\n });\n}\n","import { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport { notifyError } from '@/portainer/services/notifications';\nimport { UserId } from '@/portainer/users/types';\n\nimport {\n createTeamMembership,\n deleteTeamMembership,\n updateTeamMembership,\n} from './team-membership.service';\nimport { getTeam, getTeamMemberships, getTeams } from './teams.service';\nimport { Team, TeamId, TeamMembership, TeamRole } from './types';\n\nexport function useTeams<T = Team[]>(\n onlyLedTeams = false,\n environmentId = 0,\n {\n enabled = true,\n select = (data) => data as unknown as T,\n }: {\n enabled?: boolean;\n select?: (data: Team[]) => T;\n } = {}\n) {\n const teams = useQuery(\n ['teams', { onlyLedTeams, environmentId }],\n () => getTeams(onlyLedTeams, environmentId),\n {\n meta: {\n error: { title: 'Failure', message: 'Unable to load teams' },\n },\n enabled,\n select,\n }\n );\n\n return teams;\n}\n\nexport function useTeam(id: TeamId, onError?: (error: unknown) => void) {\n return useQuery(['teams', id], () => getTeam(id), {\n meta: {\n error: { title: 'Failure', message: 'Unable to load team' },\n },\n onError,\n });\n}\n\nexport function useTeamMemberships(id: TeamId) {\n return useQuery(['teams', id, 'memberships'], () => getTeamMemberships(id), {\n meta: {\n error: { title: 'Failure', message: 'Unable to load team memberships' },\n },\n });\n}\n\nexport function useAddMemberMutation(teamId: TeamId) {\n const queryClient = useQueryClient();\n\n return useMutation(\n (userIds: UserId[]) =>\n promiseSequence(\n userIds.map(\n (userId) => () =>\n createTeamMembership(userId, teamId, TeamRole.Member)\n )\n ),\n {\n onError(error) {\n notifyError('Failure', error as Error, 'Failure to add membership');\n },\n onSuccess() {\n return queryClient.invalidateQueries(['teams', teamId, 'memberships']);\n },\n }\n );\n}\n\nexport function useRemoveMemberMutation(\n teamId: TeamId,\n teamMemberships: TeamMembership[] = []\n) {\n const queryClient = useQueryClient();\n\n return useMutation(\n (userIds: UserId[]) =>\n promiseSequence(\n userIds.map((userId) => () => {\n const membership = teamMemberships.find(\n (membership) => membership.UserID === userId\n );\n if (!membership) {\n throw new Error('Membership not found');\n }\n return deleteTeamMembership(membership.Id);\n })\n ),\n {\n onError(error) {\n notifyError('Failure', error as Error, 'Failure to add membership');\n },\n onSuccess() {\n queryClient.invalidateQueries(['teams', teamId, 'memberships']);\n },\n }\n );\n}\n\nexport function useUpdateRoleMutation(\n teamId: TeamId,\n teamMemberships: TeamMembership[] = []\n) {\n const queryClient = useQueryClient();\n\n return useMutation(\n ({ userId, role }: { userId: UserId; role: TeamRole }) => {\n const membership = teamMemberships.find(\n (membership) => membership.UserID === userId\n );\n if (!membership) {\n throw new Error('Membership not found');\n }\n return updateTeamMembership(membership.Id, userId, teamId, role);\n },\n {\n onError(error) {\n notifyError('Failure', error as Error, 'Failure to update membership');\n },\n onSuccess() {\n queryClient.invalidateQueries(['teams', teamId, 'memberships']);\n },\n }\n );\n}\n","import { UserId } from '@/portainer/users/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { TeamId, TeamRole, TeamMembershipId } from './types';\n\nexport async function createTeamMembership(\n userId: UserId,\n teamId: TeamId,\n role: TeamRole\n) {\n try {\n await axios.post(buildUrl(), { userId, teamId, role });\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to create team membership');\n }\n}\n\nexport async function deleteTeamMembership(id: TeamMembershipId) {\n try {\n await axios.delete(buildUrl(id));\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to delete team membership');\n }\n}\n\nexport async function updateTeamMembership(\n id: TeamMembershipId,\n userId: UserId,\n teamId: TeamId,\n role: TeamRole\n) {\n try {\n await axios.put(buildUrl(id), { userId, teamId, role });\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update team membership');\n }\n}\n\nfunction buildUrl(id?: TeamMembershipId) {\n let url = '/team_memberships';\n\n if (id) {\n url += `/${id}`;\n }\n\n return url;\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { type UserId } from '@/portainer/users/types';\n\nimport { createTeamMembership } from './team-membership.service';\nimport { Team, TeamId, TeamMembership, TeamRole } from './types';\n\nexport async function getTeams(onlyLedTeams = false, environmentId = 0) {\n try {\n const { data } = await axios.get<Team[]>(buildUrl(), {\n params: { onlyLedTeams, environmentId },\n });\n return data;\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\nexport async function getTeam(id: TeamId) {\n try {\n const { data } = await axios.get<Team>(buildUrl(id));\n return data;\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\nexport async function deleteTeam(id: TeamId) {\n try {\n await axios.delete(buildUrl(id));\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\nexport async function createTeam(name: string, leaders: UserId[]) {\n try {\n const { data: team } = await axios.post(buildUrl(), { name });\n await Promise.all(\n leaders.map((leaderId) =>\n createTeamMembership(leaderId, team.Id, TeamRole.Leader)\n )\n );\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to create team');\n }\n}\n\nexport async function getTeamMemberships(teamId: TeamId) {\n try {\n const { data } = await axios.get<TeamMembership[]>(\n buildUrl(teamId, 'memberships')\n );\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to get team memberships');\n }\n}\n\nfunction buildUrl(id?: TeamId, action?: string) {\n let url = '/teams';\n\n if (id) {\n url += `/${id}`;\n }\n\n if (action) {\n url += `/${action}`;\n }\n\n return url;\n}\n","import { type UserId } from '@/portainer/users/types';\n\nexport type TeamId = number;\n\nexport enum TeamRole {\n Leader = 1,\n Member,\n}\n\nexport type Team = {\n Id: TeamId;\n Name: string;\n};\n\nexport type TeamMembershipId = number;\n\nexport interface TeamMembership {\n Id: TeamMembershipId;\n Role: TeamRole;\n UserID: UserId;\n TeamID: TeamId;\n}\n","module.exports = 'test-file-stub';\n","module.exports = {};\n","export default 'SvgrURL';\nexport const ReactComponent = 'div';\n","import _ from 'lodash-es';\nimport { confirmDelete } from '@@/modals/confirm';\n\nconst ROOT_PATH = '/host';\n\nexport class HostBrowserController {\n /* @ngInject */\n constructor($async, HostBrowserService, Notifications, FileSaver) {\n Object.assign(this, { $async, HostBrowserService, Notifications, FileSaver });\n\n this.state = {\n path: ROOT_PATH,\n };\n\n this.goToParent = this.goToParent.bind(this);\n this.browse = this.browse.bind(this);\n this.confirmDeleteFile = this.confirmDeleteFile.bind(this);\n this.isRoot = this.isRoot.bind(this);\n this.getRelativePath = this.getRelativePath.bind(this);\n this.getFilesForPath = this.getFilesForPath.bind(this);\n this.getFilesForPathAsync = this.getFilesForPathAsync.bind(this);\n this.downloadFile = this.downloadFile.bind(this);\n this.downloadFileAsync = this.downloadFileAsync.bind(this);\n this.renameFile = this.renameFile.bind(this);\n this.renameFileAsync = this.renameFileAsync.bind(this);\n this.deleteFile = this.deleteFile.bind(this);\n this.deleteFileAsync = this.deleteFileAsync.bind(this);\n this.onFileSelectedForUpload = this.onFileSelectedForUpload.bind(this);\n this.onFileSelectedForUploadAsync = this.onFileSelectedForUploadAsync.bind(this);\n }\n\n getRelativePath(path) {\n path = path || this.state.path;\n const rootPathRegex = new RegExp(`^${ROOT_PATH}/?`);\n const relativePath = path.replace(rootPathRegex, '/');\n return relativePath;\n }\n\n goToParent() {\n this.getFilesForPath(this.parentPath(this.state.path));\n }\n\n isRoot() {\n return this.state.path === ROOT_PATH;\n }\n\n browse(folder) {\n this.getFilesForPath(this.buildPath(this.state.path, folder));\n }\n\n getFilesForPath(path) {\n return this.$async(this.getFilesForPathAsync, path);\n }\n async getFilesForPathAsync(path) {\n try {\n const files = await this.HostBrowserService.ls(this.endpointId, path);\n this.state.path = path;\n this.files = files;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to browse');\n }\n }\n\n renameFile(name, newName) {\n return this.$async(this.renameFileAsync, name, newName);\n }\n async renameFileAsync(name, newName) {\n const filePath = this.buildPath(this.state.path, name);\n const newFilePath = this.buildPath(this.state.path, newName);\n try {\n await this.HostBrowserService.rename(this.endpointId, filePath, newFilePath);\n this.Notifications.success('File successfully renamed', this.getRelativePath(newFilePath));\n const files = await this.HostBrowserService.ls(this.endpointId, this.state.path);\n this.files = files;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to rename file');\n }\n }\n\n downloadFile(fileName) {\n return this.$async(this.downloadFileAsync, fileName);\n }\n async downloadFileAsync(fileName) {\n const filePath = this.buildPath(this.state.path, fileName);\n try {\n const { file } = await this.HostBrowserService.get(this.endpointId, filePath);\n const downloadData = new Blob([file], {\n type: 'text/plain;charset=utf-8',\n });\n this.FileSaver.saveAs(downloadData, fileName);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to download file');\n }\n }\n\n confirmDeleteFile(name) {\n const filePath = this.buildPath(this.state.path, name);\n\n confirmDelete(`Are you sure that you want to delete ${this.getRelativePath(filePath)}?`).then((confirmed) => {\n if (!confirmed) {\n return;\n }\n return this.deleteFile(filePath);\n });\n }\n\n deleteFile(path) {\n this.$async(this.deleteFileAsync, path);\n }\n async deleteFileAsync(path) {\n try {\n await this.HostBrowserService.delete(this.endpointId, path);\n this.Notifications.success('File successfully deleted', this.getRelativePath(path));\n const files = await this.HostBrowserService.ls(this.endpointId, this.state.path);\n this.files = files;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to delete file');\n }\n }\n\n $onInit() {\n this.getFilesForPath(ROOT_PATH);\n }\n\n parentPath(path) {\n if (path === ROOT_PATH) {\n return ROOT_PATH;\n }\n\n const split = _.split(path, '/');\n return _.join(_.slice(split, 0, split.length - 1), '/');\n }\n\n buildPath(parent, file) {\n if (parent.lastIndexOf('/') === parent.length - 1) {\n return parent + file;\n }\n return parent + '/' + file;\n }\n\n onFileSelectedForUpload(file) {\n return this.$async(this.onFileSelectedForUploadAsync, file);\n }\n async onFileSelectedForUploadAsync(file) {\n if (!this.endpointId) {\n throw new Error('missing endpoint id');\n }\n try {\n await this.HostBrowserService.upload(this.endpointId, this.state.path, file);\n this.onFileUploaded();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to upload file');\n }\n }\n\n onFileUploaded() {\n this.refreshList();\n }\n\n refreshList() {\n this.getFilesForPath(this.state.path);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./hostBrowser.html');\n\nimport angular from 'angular';\nimport { HostBrowserController } from './hostBrowserController';\n\nangular.module('portainer.agent').component('hostBrowser', {\n controller: HostBrowserController,\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n endpointId: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./nodeSelector.html');\n\nimport angular from 'angular';\n\nimport { NodeSelectorController } from './nodeSelectorController';\n\nangular.module('portainer.agent').component('nodeSelector', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: NodeSelectorController,\n bindings: {\n model: '=',\n endpointId: '<',\n },\n});\n","export class NodeSelectorController {\n /* @ngInject */\n constructor(AgentService, Notifications) {\n Object.assign(this, { AgentService, Notifications });\n }\n\n async $onInit() {\n try {\n const agents = await this.AgentService.agents(this.endpointId);\n this.agents = agents;\n if (!this.model) {\n this.model = agents[0].NodeName;\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load agents');\n }\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./volumeBrowser.html');\n\nimport angular from 'angular';\n\nimport { VolumeBrowserController } from './volumeBrowserController';\n\nangular.module('portainer.agent').component('volumeBrowser', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: VolumeBrowserController,\n bindings: {\n volumeId: '<',\n nodeName: '<',\n isUploadEnabled: '<',\n endpointId: '<',\n },\n});\n","import _ from 'lodash-es';\nimport { confirmDelete } from '@@/modals/confirm';\n\nexport class VolumeBrowserController {\n /* @ngInject */\n constructor($async, HttpRequestHelper, VolumeBrowserService, FileSaver, Blob, Notifications) {\n Object.assign(this, { $async, HttpRequestHelper, VolumeBrowserService, FileSaver, Blob, Notifications });\n this.state = {\n path: '/',\n };\n\n this.rename = this.rename.bind(this);\n this.renameAsync = this.renameAsync.bind(this);\n this.confirmDelete = this.confirmDelete.bind(this);\n this.download = this.download.bind(this);\n this.downloadAsync = this.downloadAsync.bind(this);\n this.up = this.up.bind(this);\n this.browse = this.browse.bind(this);\n this.deleteFile = this.deleteFile.bind(this);\n this.deleteFileAsync = this.deleteFileAsync.bind(this);\n this.getFilesForPath = this.getFilesForPath.bind(this);\n this.getFilesForPathAsync = this.getFilesForPathAsync.bind(this);\n this.onFileSelectedForUpload = this.onFileSelectedForUpload.bind(this);\n this.onFileSelectedForUploadAsync = this.onFileSelectedForUploadAsync.bind(this);\n this.parentPath = this.parentPath.bind(this);\n this.buildPath = this.buildPath.bind(this);\n this.$onInit = this.$onInit.bind(this);\n this.onFileUploaded = this.onFileUploaded.bind(this);\n this.refreshList = this.refreshList.bind(this);\n }\n\n rename(file, newName) {\n return this.$async(this.renameAsync, file, newName);\n }\n async renameAsync(file, newName) {\n const filePath = this.state.path === '/' ? file : `${this.state.path}/${file}`;\n const newFilePath = this.state.path === '/' ? newName : `${this.state.path}/${newName}`;\n\n try {\n await this.VolumeBrowserService.rename(this.endpointId, this.volumeId, filePath, newFilePath);\n this.Notifications.success('File successfully renamed', newFilePath);\n this.files = await this.VolumeBrowserService.ls(this.endpointId, this.volumeId, this.state.path);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to rename file');\n }\n }\n\n confirmDelete(file) {\n const filePath = this.state.path === '/' ? file : `${this.state.path}/${file}`;\n\n confirmDelete(`Are you sure that you want to delete ${filePath} ?`).then((confirmed) => {\n if (!confirmed) {\n return;\n }\n this.deleteFile(filePath);\n });\n }\n\n download(file) {\n return this.$async(this.downloadAsync, file);\n }\n async downloadAsync(file) {\n const filePath = this.state.path === '/' ? file : `${this.state.path}/${file}`;\n\n try {\n const data = await this.VolumeBrowserService.get(this.endpointId, this.volumeId, filePath);\n const downloadData = new Blob([data.file]);\n this.FileSaver.saveAs(downloadData, file);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to download file');\n }\n }\n\n up() {\n const parentFolder = this.parentPath(this.state.path);\n this.getFilesForPath(parentFolder);\n }\n\n browse(folder) {\n const path = this.buildPath(this.state.path, folder);\n this.getFilesForPath(path);\n }\n\n deleteFile(file) {\n return this.$async(this.deleteFileAsync, file);\n }\n async deleteFileAsync(file) {\n try {\n await this.VolumeBrowserService.delete(this.endpointId, this.volumeId, file);\n this.Notifications.success('File successfully deleted', file);\n this.files = await this.VolumeBrowserService.ls(this.endpointId, this.volumeId, this.state.path);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to delete file');\n }\n }\n\n getFilesForPath(path) {\n return this.$async(this.getFilesForPathAsync, path);\n }\n async getFilesForPathAsync(path) {\n try {\n const files = await this.VolumeBrowserService.ls(this.endpointId, this.volumeId, path);\n this.state.path = path;\n this.files = files;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to browse volume');\n }\n }\n\n onFileSelectedForUpload(file) {\n return this.$async(this.onFileSelectedForUploadAsync, file);\n }\n async onFileSelectedForUploadAsync(file) {\n try {\n await this.VolumeBrowserService.upload(this.endpointId, this.state.path, file, this.volumeId);\n this.onFileUploaded();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to upload file');\n }\n }\n\n parentPath(path) {\n if (path.lastIndexOf('/') === 0) {\n return '/';\n }\n\n const split = _.split(path, '/');\n return _.join(_.slice(split, 0, split.length - 1), '/');\n }\n\n buildPath(parent, file) {\n if (parent === '/') {\n return parent + file;\n }\n return `${parent}/${file}`;\n }\n\n onFileUploaded() {\n this.refreshList();\n }\n\n refreshList() {\n this.getFilesForPath(this.state.path);\n }\n\n async $onInit() {\n this.HttpRequestHelper.setPortainerAgentTargetHeader(this.nodeName);\n try {\n this.files = await this.VolumeBrowserService.ls(this.endpointId, this.volumeId, this.state.path);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to browse volume');\n }\n }\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent', []);\n","export class AgentViewModel {\n constructor(data) {\n this.IPAddress = data.IPAddress;\n this.NodeName = data.NodeName;\n this.NodeRole = data.NodeRole;\n }\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent').factory('Agent', AgentFactory);\n\nfunction AgentFactory($resource, API_ENDPOINT_ENDPOINTS, StateManager) {\n return $resource(\n `${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/v:version/agents`,\n {\n version: StateManager.getAgentApiVersion,\n },\n {\n query: { method: 'GET', isArray: true },\n }\n );\n}\n","import angular from 'angular';\n\nimport { browseGetResponse } from './response/browse';\n\nangular.module('portainer.agent').factory('Browse', BrowseFactory);\n\nfunction BrowseFactory($resource, API_ENDPOINT_ENDPOINTS, StateManager) {\n return $resource(\n `${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/v:version/browse/:action`,\n {\n version: StateManager.getAgentApiVersion,\n },\n {\n ls: {\n method: 'GET',\n isArray: true,\n params: { action: 'ls' },\n },\n get: {\n method: 'GET',\n params: { action: 'get' },\n transformResponse: browseGetResponse,\n responseType: 'arraybuffer',\n },\n delete: {\n method: 'DELETE',\n params: { action: 'delete' },\n },\n rename: {\n method: 'PUT',\n params: { action: 'rename' },\n },\n }\n );\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent').factory('AgentDockerhub', AgentDockerhub);\n\nfunction AgentDockerhub($resource, API_ENDPOINT_ENDPOINTS) {\n return $resource(\n `${API_ENDPOINT_ENDPOINTS}/:endpointId/agent/:endpointType/v2/dockerhub/:registryId`,\n {},\n {\n limits: { method: 'GET', params: { registryId: '@registryId' } },\n }\n );\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent').factory('Host', HostFactory);\n\nfunction HostFactory($resource, API_ENDPOINT_ENDPOINTS, StateManager) {\n return $resource(\n `${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/v:version/host/:action`,\n {\n version: StateManager.getAgentApiVersion,\n },\n {\n info: { method: 'GET', params: { action: 'info' } },\n }\n );\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent').factory('AgentPing', AgentPingFactory);\n\nfunction AgentPingFactory($resource, API_ENDPOINT_ENDPOINTS, $q) {\n return $resource(\n `${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/ping`,\n {},\n {\n ping: {\n method: 'GET',\n interceptor: {\n response: function versionInterceptor(response) {\n const instance = response.resource;\n const version = response.headers('Portainer-Agent-Api-Version') || 1;\n instance.version = Number(version);\n return instance;\n },\n responseError: function versionResponseError(error) {\n // 404 - agent is up - set version to 1\n if (error.status === 404) {\n return { version: 1 };\n }\n return $q.reject(error);\n },\n },\n },\n }\n );\n}\n","// The get action of the Browse service returns a file.\n// ngResource will transform it as an array of chars.\n// This functions simply creates a response object and assign\n// the data to a field.\nexport function browseGetResponse(data) {\n const response = {};\n response.file = data;\n return response;\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent').factory('AgentVersion1', AgentFactory);\n\nfunction AgentFactory($resource, API_ENDPOINT_ENDPOINTS) {\n return $resource(\n `${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/agents`,\n {},\n {\n query: { method: 'GET', isArray: true },\n }\n );\n}\n","import angular from 'angular';\n\nimport { browseGetResponse } from '../response/browse';\n\nangular.module('portainer.agent').factory('BrowseVersion1', BrowseFactory);\n\nfunction BrowseFactory($resource, API_ENDPOINT_ENDPOINTS) {\n return $resource(\n `${API_ENDPOINT_ENDPOINTS}/:endpointId/docker/browse/:volumeID/:action`,\n {},\n {\n ls: {\n method: 'GET',\n isArray: true,\n params: { action: 'ls' },\n },\n get: {\n method: 'GET',\n params: { action: 'get' },\n transformResponse: browseGetResponse,\n responseType: 'arraybuffer',\n },\n delete: {\n method: 'DELETE',\n params: { action: 'delete' },\n },\n rename: {\n method: 'PUT',\n params: { action: 'rename' },\n },\n }\n );\n}\n","import angular from 'angular';\n\nimport { AgentViewModel } from '../models/agent';\n\nangular.module('portainer.agent').factory('AgentService', AgentServiceFactory);\n\nfunction AgentServiceFactory(Agent, AgentVersion1, HttpRequestHelper, Host, StateManager) {\n return {\n agents,\n hostInfo,\n };\n\n function getAgentApiVersion() {\n const state = StateManager.getState();\n return state.endpoint.agentApiVersion;\n }\n\n function hostInfo(endpointId, nodeName) {\n HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n return Host.info({ endpointId }).$promise;\n }\n\n async function agents(endpointId) {\n const agentVersion = getAgentApiVersion();\n const service = agentVersion > 1 ? Agent : AgentVersion1;\n try {\n const agents = await service.query({ version: agentVersion, endpointId }).$promise;\n return agents.map(function (item) {\n return new AgentViewModel(item);\n });\n } catch (err) {\n throw { msg: 'Unable to retrieve agents', err };\n }\n }\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent').factory('HostBrowserService', HostBrowserServiceFactory);\n\n/* @ngInject */\nfunction HostBrowserServiceFactory(Browse, Upload, API_ENDPOINT_ENDPOINTS, StateManager) {\n return { ls, get, delete: deletePath, rename, upload };\n\n function ls(endpointId, path) {\n return Browse.ls({ endpointId, path: path }).$promise;\n }\n\n function get(endpointId, path) {\n return Browse.get({ endpointId, path: path }).$promise;\n }\n\n function deletePath(endpointId, path) {\n return Browse.delete({ endpointId, path: path }).$promise;\n }\n\n function rename(endpointId, path, newPath) {\n const payload = {\n CurrentFilePath: path,\n NewFilePath: newPath,\n };\n return Browse.rename({ endpointId }, payload).$promise;\n }\n\n function upload(endpointId, Path, file, onProgress) {\n const agentVersion = StateManager.getAgentApiVersion();\n const url = `${API_ENDPOINT_ENDPOINTS}/${endpointId}/docker${agentVersion > 1 ? '/v' + agentVersion : ''}/browse/put`;\n\n return new Promise((resolve, reject) => {\n Upload.upload({\n url: url,\n data: { file, Path },\n }).then(resolve, reject, onProgress);\n });\n }\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent').service('AgentPingService', AgentPingService);\n\nfunction AgentPingService(AgentPing) {\n return { ping };\n\n function ping(endpointId) {\n return AgentPing.ping({ endpointId }).$promise;\n }\n}\n","import angular from 'angular';\n\nangular.module('portainer.agent').factory('VolumeBrowserService', VolumeBrowserServiceFactory);\n\n/* @ngInject */\nfunction VolumeBrowserServiceFactory(StateManager, Browse, BrowseVersion1, API_ENDPOINT_ENDPOINTS, Upload) {\n return {\n ls,\n get,\n delete: deletePath,\n rename,\n upload,\n };\n\n function getAgentApiVersion() {\n const state = StateManager.getState();\n return state.endpoint.agentApiVersion;\n }\n\n function getBrowseService() {\n const agentVersion = getAgentApiVersion();\n return agentVersion > 1 ? Browse : BrowseVersion1;\n }\n\n function ls(endpointId, volumeId, path) {\n return getBrowseService().ls({ endpointId, volumeID: volumeId, path, version: getAgentApiVersion() }).$promise;\n }\n\n function get(endpointId, volumeId, path) {\n return getBrowseService().get({ endpointId, volumeID: volumeId, path, version: getAgentApiVersion() }).$promise;\n }\n\n function deletePath(endpointId, volumeId, path) {\n return getBrowseService().delete({ endpointId, volumeID: volumeId, path, version: getAgentApiVersion() }).$promise;\n }\n\n function rename(endpointId, volumeId, path, newPath) {\n const payload = {\n CurrentFilePath: path,\n NewFilePath: newPath,\n };\n return getBrowseService().rename({ endpointId, volumeID: volumeId, version: getAgentApiVersion() }, payload).$promise;\n }\n\n function upload(endpointId, path, file, volumeId, onProgress) {\n const agentVersion = StateManager.getAgentApiVersion();\n if (agentVersion < 2) {\n throw new Error('upload is not supported on this agent version');\n }\n\n const url = `${API_ENDPOINT_ENDPOINTS}/${endpointId}/docker/v${agentVersion}/browse/put?volumeID=${volumeId}`;\n\n return new Promise((resolve, reject) => {\n Upload.upload({\n url: url,\n data: { file, Path: path },\n }).then(resolve, reject, onProgress);\n });\n }\n}\n","import angular from 'angular';\nimport { setPortainerStatus, setUserRole, clearUserRole, setUserEndpointRole, clearUserEndpointRole, push, trackEvent } from './analytics-services';\nconst basePath = 'http://portainer-ce.app';\n\nconst excludedPaths = ['/auth'];\n\n// forked from https://github.com/angulartics/angulartics-piwik/blob/master/src/angulartics-piwik.js\n\n/**\n * @ngdoc overview\n * @name angulartics.piwik\n * Enables analytics support for Piwik/Matomo (http://piwik.org/docs/tracking-api/)\n */\nexport default angular.module('angulartics.matomo', ['angulartics']).config(config).name;\n\n/* @ngInject */\nfunction config($analyticsProvider, $windowProvider) {\n const $window = $windowProvider.$get();\n\n $analyticsProvider.settings.pageTracking.trackRelativePath = true;\n\n $analyticsProvider.api.setPortainerStatus = setPortainerStatus;\n\n $analyticsProvider.api.setUserRole = setUserRole;\n $analyticsProvider.api.clearUserRole = clearUserRole;\n\n $analyticsProvider.api.setUserEndpointRole = setUserEndpointRole;\n $analyticsProvider.api.clearUserEndpointRole = clearUserEndpointRole;\n\n // scope: visit or page. Defaults to 'page'\n $analyticsProvider.api.setCustomVariable = function (varIndex, varName, value, scope = 'page') {\n push('setCustomVariable', varIndex, varName, value, scope);\n };\n\n // scope: visit or page. Defaults to 'page'\n $analyticsProvider.api.deleteCustomVariable = function (varIndex, scope = 'page') {\n push('deleteCustomVariable', varIndex, scope);\n };\n\n // trackSiteSearch(keyword, category, [searchCount])\n $analyticsProvider.api.trackSiteSearch = function (keyword, category, searchCount) {\n // keyword is required\n if (keyword) {\n const params = ['trackSiteSearch', keyword, category || false];\n\n // searchCount is optional\n if (angular.isDefined(searchCount)) {\n params.push(searchCount);\n }\n\n push(params);\n }\n };\n\n // logs a conversion for goal 1. revenue is optional\n // trackGoal(goalID, [revenue]);\n $analyticsProvider.api.trackGoal = function (goalID, revenue) {\n push('trackGoal', goalID, revenue || 0);\n };\n\n // track outlink or download\n // linkType is 'link' or 'download', 'link' by default\n // trackLink(url, [linkType]);\n $analyticsProvider.api.trackLink = function (url, linkType) {\n const type = linkType || 'link';\n push('trackLink', url, type);\n };\n\n // Set default angulartics page and event tracking\n\n $analyticsProvider.registerSetUsername(function (username) {\n push('setUserId', username);\n });\n\n // locationObj is the angular $location object\n $analyticsProvider.registerPageTrack(function (path) {\n if (excludedPaths.includes(path)) {\n return;\n }\n\n push('setDocumentTitle', $window.document.title);\n push('setReferrerUrl', '');\n push('setCustomUrl', basePath + path);\n push('trackPageView');\n });\n\n /**\n * @name eventTrack\n * Track a basic event in Piwik, or send an ecommerce event.\n *\n * @param {string} action A string corresponding to the type of event that needs to be tracked.\n * @param {object} properties The properties that need to be logged with the event.\n */\n $analyticsProvider.registerEventTrack(trackEvent);\n\n /**\n * @name exceptionTrack\n * Sugar on top of the eventTrack method for easily handling errors\n *\n * @param {object} error An Error object to track: error.toString() used for event 'action', error.stack used for event 'label'.\n * @param {object} cause The cause of the error given from $exceptionHandler, not used.\n */\n $analyticsProvider.registerExceptionTrack(function (error) {\n push('trackEvent', 'Exceptions', error.toString(), error.stack, 0);\n });\n}\n","import $ from 'jquery';\n\n/* @ngInject */\nexport function onStartupAngular($rootScope, $state, LocalStorage, cfpLoadingBar, $transitions, HttpRequestHelper) {\n $rootScope.$state = $state;\n\n // Workaround to prevent the loading bar from going backward\n // https://github.com/chieffancypants/angular-loading-bar/issues/273\n const originalSet = cfpLoadingBar.set;\n cfpLoadingBar.set = function overrideSet(n) {\n if (n > cfpLoadingBar.status()) {\n originalSet.apply(cfpLoadingBar, arguments);\n }\n };\n\n $transitions.onBefore({}, () => {\n HttpRequestHelper.resetAgentHeaders();\n });\n\n $(document).ajaxSend((event, jqXhr, jqOpts) => {\n const type = jqOpts.type === 'POST' || jqOpts.type === 'PUT' || jqOpts.type === 'PATCH';\n const hasNoContentType = jqOpts.contentType !== 'application/json' && jqOpts.headers && !jqOpts.headers['Content-Type'];\n if (type && hasNoContentType) {\n jqXhr.setRequestHeader('Content-Type', 'application/json');\n }\n jqXhr.setRequestHeader('Authorization', 'Bearer ' + LocalStorage.getJWT());\n });\n}\n","import colors from './colors.json';\n\nconst element = document.createElement('style');\n\nelement.innerHTML = `:root {\n ${Object.entries(colors)\n .map(([color, hex]) => {\n if (typeof hex === 'string') {\n return `--ui-${color}: ${hex}`;\n }\n\n return Object.entries(hex)\n .map(([key, value]) => `--ui-${color}-${key}: ${value}`)\n .join(';\\n');\n })\n .join(';\\n')}\n}`;\n\ndocument.head.prepend(element);\n","import { Terminal } from 'xterm';\nimport * as fit from 'xterm/lib/addons/fit/fit';\nimport { agentInterceptor } from './portainer/services/axios';\n\n/* @ngInject */\nexport function configApp($urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, $uibTooltipProvider, $compileProvider, cfpLoadingBarProvider) {\n if (process.env.NODE_ENV === 'testing') {\n $compileProvider.debugInfoEnabled(false);\n }\n\n localStorageServiceProvider.setPrefix('portainer');\n\n jwtOptionsProvider.config({\n tokenGetter: /* @ngInject */ function tokenGetter(LocalStorage) {\n return LocalStorage.getJWT();\n },\n whiteListedDomains: ['localhost'],\n });\n\n $httpProvider.interceptors.push('jwtInterceptor');\n\n $httpProvider.defaults.headers.post['Content-Type'] = 'application/json';\n $httpProvider.defaults.headers.put['Content-Type'] = 'application/json';\n $httpProvider.defaults.headers.patch['Content-Type'] = 'application/json';\n\n $httpProvider.interceptors.push(() => ({\n request: agentInterceptor,\n }));\n\n Terminal.applyAddon(fit);\n\n $uibTooltipProvider.setTriggers({\n mouseenter: 'mouseleave',\n click: 'click',\n focus: 'blur',\n outsideClick: 'outsideClick',\n });\n\n cfpLoadingBarProvider.includeSpinner = false;\n cfpLoadingBarProvider.parentSelector = '#loadingbar-placeholder';\n cfpLoadingBarProvider.latencyThreshold = 600;\n\n $urlRouterProvider.otherwise('/auth');\n}\n","import {\n refreshableSettings,\n hiddenColumnsSettings,\n createPersistedStore,\n} from '@@/datatables/types';\n\nimport { QuickAction, TableSettings } from './types';\n\nexport const TRUNCATE_LENGTH = 32;\n\nexport function createStore(storageKey: string) {\n return createPersistedStore<TableSettings>(storageKey, 'name', (set) => ({\n ...hiddenColumnsSettings(set),\n ...refreshableSettings(set),\n truncateContainerName: TRUNCATE_LENGTH,\n setTruncateContainerName(truncateContainerName: number) {\n set({\n truncateContainerName,\n });\n },\n\n hiddenQuickActions: [] as QuickAction[],\n setHiddenQuickActions: (hiddenQuickActions: QuickAction[]) =>\n set({ hiddenQuickActions }),\n }));\n}\n","import { CellContext, ColumnDef } from '@tanstack/react-table';\n\nimport { ownershipIcon } from '@/portainer/filters/filters';\nimport { ResourceControlOwnership } from '@/react/portainer/access-control/types';\n\nimport { Icon } from '@@/Icon';\n\nexport interface IResource {\n ResourceControl?: {\n Ownership: ResourceControlOwnership;\n };\n}\n\nexport function createOwnershipColumn<D extends IResource>(): ColumnDef<\n D,\n ResourceControlOwnership\n> {\n return {\n accessorFn: (row) =>\n row.ResourceControl?.Ownership || ResourceControlOwnership.ADMINISTRATORS,\n header: 'Ownership',\n id: 'ownership',\n cell: OwnershipCell,\n };\n\n function OwnershipCell({\n getValue,\n }: CellContext<D, ResourceControlOwnership>) {\n const value = getValue();\n\n return (\n <span className=\"flex items-center gap-2\">\n <Icon icon={ownershipIcon(value)} className=\"space-right\" />\n {value}\n </span>\n );\n }\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { DockerContainer } from '../../../types';\n\nexport const columnHelper = createColumnHelper<DockerContainer>();\n","import { isoDateFromTimestamp } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor(\n (row) => isoDateFromTimestamp(row.Created),\n {\n header: 'Created',\n id: 'created',\n cell: ({ row }) => isoDateFromTimestamp(row.original.Created),\n }\n);\n","import { columnHelper } from './helper';\n\nexport const host = columnHelper.accessor((row) => row.NodeName || '-', {\n header: 'Host',\n id: 'host',\n});\n","import { CellContext } from '@tanstack/react-table';\nimport { useSref } from '@uirouter/react';\n\nimport type { DockerContainer } from '@/react/docker/containers/types';\n\nimport { columnHelper } from './helper';\n\nexport const image = columnHelper.accessor('Image', {\n header: 'Image',\n id: 'image',\n cell: ImageCell,\n});\n\nfunction ImageCell({ getValue }: CellContext<DockerContainer, string>) {\n const imageName = getValue();\n const linkProps = useSref('docker.images.image', { id: imageName });\n const shortImageName = trimSHASum(imageName);\n\n return (\n <a href={linkProps.href} onClick={linkProps.onClick}>\n {shortImageName}\n </a>\n );\n\n function trimSHASum(imageName: string) {\n if (!imageName) {\n return '';\n }\n\n if (imageName.indexOf('sha256:') === 0) {\n return imageName.substring(7, 19);\n }\n\n return imageName.split('@sha256')[0];\n }\n}\n","import { columnHelper } from './helper';\n\nexport const ip = columnHelper.accessor((row) => row.IP || '-', {\n header: 'IP Address',\n id: 'ip',\n});\n","import { Context, createContext, ReactNode, useContext } from 'react';\nimport { StoreApi, useStore } from 'zustand';\n\nconst TableSettingsContext = createContext<StoreApi<object> | null>(null);\nTableSettingsContext.displayName = 'TableSettingsContext';\n\nexport function useTableSettings<T extends object>() {\n const Context = getContextType<T>();\n\n const context = useContext(Context);\n if (context === null) {\n throw new Error('must be nested under TableSettingsProvider');\n }\n\n return useStore(context);\n}\n\ninterface ProviderProps<T extends object> {\n children: ReactNode;\n settings: StoreApi<T>;\n}\n\nexport function TableSettingsProvider<T extends object>({\n children,\n settings,\n}: ProviderProps<T>) {\n const Context = getContextType<T>();\n\n return <Context.Provider value={settings}>{children}</Context.Provider>;\n}\n\nfunction getContextType<T extends object>() {\n return TableSettingsContext as unknown as Context<StoreApi<T>>;\n}\n","import { CellContext } from '@tanstack/react-table';\nimport _ from 'lodash';\nimport { useSref } from '@uirouter/react';\n\nimport type { DockerContainer } from '@/react/docker/containers/types';\n\nimport { useTableSettings } from '@@/datatables/useTableSettings';\n\nimport { TableSettings } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor((row) => row.Names[0], {\n header: 'Name',\n id: 'name',\n cell: NameCell,\n});\n\nexport function NameCell({\n getValue,\n row: { original: container },\n}: CellContext<DockerContainer, string>) {\n const name = getValue();\n\n const linkProps = useSref('.container', {\n id: container.Id,\n nodeName: container.NodeName,\n });\n\n const settings = useTableSettings<TableSettings>();\n const truncate = settings.truncateContainerName;\n\n let shortName = name;\n if (truncate > 0) {\n shortName = _.truncate(name, { length: truncate });\n }\n\n return (\n <a href={linkProps.href} onClick={linkProps.onClick} title={name}>\n {shortName}\n </a>\n );\n}\n","import { Environment } from '@/react/portainer/environments/types';\n\nimport { createRowContext } from '@@/datatables/RowContext';\n\ninterface RowContextState {\n environment: Environment;\n}\n\nconst { RowProvider, useRowContext } = createRowContext<RowContextState>();\n\nexport { RowProvider, useRowContext };\n","import _ from 'lodash';\nimport { ExternalLink } from 'lucide-react';\nimport { CellContext } from '@tanstack/react-table';\n\nimport type { DockerContainer } from '@/react/docker/containers/types';\n\nimport { Icon } from '@@/Icon';\n\nimport { useRowContext } from '../RowContext';\n\nimport { columnHelper } from './helper';\n\nexport const ports = columnHelper.accessor(\n (row) =>\n _.uniqBy(row.Ports, 'public')\n .map((port) => `${port.public}:${port.private}`)\n .join(','),\n {\n header: 'Published Ports',\n id: 'ports',\n cell: Cell,\n }\n);\n\nfunction Cell({ row }: CellContext<DockerContainer, string>) {\n const ports = row.original.Ports;\n\n const { environment } = useRowContext();\n\n if (ports.length === 0) {\n return '-';\n }\n\n const { PublicURL: publicUrl } = environment;\n\n return _.uniqBy(ports, 'public').map((port) => (\n <a\n key={`${port.host}:${port.public}`}\n className=\"image-tag\"\n href={`http://${publicUrl || port.host}:${port.public}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <Icon icon={ExternalLink} />\n {port.public}:{port.private}\n </a>\n ));\n}\n","import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nimport { DockerContainerResponse } from './types/response';\n\nexport enum ContainerStatus {\n Paused = 'paused',\n Stopped = 'stopped',\n Created = 'created',\n Healthy = 'healthy',\n Unhealthy = 'unhealthy',\n Starting = 'starting',\n Running = 'running',\n Dead = 'dead',\n Exited = 'exited',\n}\n\nexport type QuickAction = 'attach' | 'exec' | 'inspect' | 'logs' | 'stats';\n\nexport interface Port {\n host?: string;\n public: number;\n private: number;\n}\n\nexport type ContainerId = string;\n\ntype DecoratedDockerContainer = {\n NodeName: string;\n ResourceControl?: ResourceControlViewModel;\n IP: string;\n StackName?: string;\n Status: ContainerStatus;\n Ports: Port[];\n StatusText: string;\n Image: string;\n Gpus: string;\n};\n\nexport type DockerContainer = DecoratedDockerContainer &\n Omit<DockerContainerResponse, keyof DecoratedDockerContainer>;\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-docker-containers-components-ContainerQuickActions-ContainerQuickActions-module__root\"};","import clsx from 'clsx';\nimport { BarChart, FileText, Info, Paperclip, Terminal } from 'lucide-react';\n\nimport { ContainerStatus } from '@/react/docker/containers/types';\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { Icon } from '@@/Icon';\nimport { Link } from '@@/Link';\n\nimport styles from './ContainerQuickActions.module.css';\n\ninterface QuickActionsState {\n showQuickActionAttach: boolean;\n showQuickActionExec: boolean;\n showQuickActionInspect: boolean;\n showQuickActionLogs: boolean;\n showQuickActionStats: boolean;\n}\n\ninterface Props {\n taskId?: string;\n containerId?: string;\n nodeName: string;\n state: QuickActionsState;\n status: ContainerStatus;\n}\n\nexport function ContainerQuickActions({\n taskId,\n containerId,\n nodeName,\n state,\n status,\n}: Props) {\n if (taskId) {\n return <TaskQuickActions taskId={taskId} state={state} />;\n }\n\n const isActive = [\n ContainerStatus.Starting,\n ContainerStatus.Running,\n ContainerStatus.Healthy,\n ContainerStatus.Unhealthy,\n ].includes(status);\n\n return (\n <div className={clsx('space-x-1', styles.root)}>\n {state.showQuickActionLogs && (\n <Authorized authorizations=\"DockerContainerLogs\">\n <Link\n to=\"docker.containers.container.logs\"\n params={{ id: containerId, nodeName }}\n title=\"Logs\"\n >\n <Icon icon={FileText} className=\"space-right\" />\n </Link>\n </Authorized>\n )}\n\n {state.showQuickActionInspect && (\n <Authorized authorizations=\"DockerContainerInspect\">\n <Link\n to=\"docker.containers.container.inspect\"\n params={{ id: containerId, nodeName }}\n title=\"Inspect\"\n >\n <Icon icon={Info} className=\"space-right\" />\n </Link>\n </Authorized>\n )}\n\n {state.showQuickActionStats && isActive && (\n <Authorized authorizations=\"DockerContainerStats\">\n <Link\n to=\"docker.containers.container.stats\"\n params={{ id: containerId, nodeName }}\n title=\"Stats\"\n >\n <Icon icon={BarChart} className=\"space-right\" />\n </Link>\n </Authorized>\n )}\n\n {state.showQuickActionExec && isActive && (\n <Authorized authorizations=\"DockerExecStart\">\n <Link\n to=\"docker.containers.container.exec\"\n params={{ id: containerId, nodeName }}\n title=\"Exec Console\"\n >\n <Icon icon={Terminal} className=\"space-right\" />\n </Link>\n </Authorized>\n )}\n\n {state.showQuickActionAttach && isActive && (\n <Authorized authorizations=\"DockerContainerAttach\">\n <Link\n to=\"docker.containers.container.attach\"\n params={{ id: containerId, nodeName }}\n title=\"Attach Console\"\n >\n <Icon icon={Paperclip} className=\"space-right\" />\n </Link>\n </Authorized>\n )}\n </div>\n );\n}\n\ninterface TaskProps {\n taskId: string;\n state: QuickActionsState;\n}\n\nfunction TaskQuickActions({ taskId, state }: TaskProps) {\n return (\n <div className={clsx('space-x-1', styles.root)}>\n {state.showQuickActionLogs && (\n <Authorized authorizations=\"DockerTaskLogs\">\n <Link\n to=\"docker.tasks.task.logs\"\n params={{ id: taskId }}\n title=\"Logs\"\n >\n <Icon icon={FileText} className=\"space-right\" />\n </Link>\n </Authorized>\n )}\n\n {state.showQuickActionInspect && (\n <Authorized authorizations=\"DockerTaskInspect\">\n <Link to=\"docker.tasks.task\" params={{ id: taskId }} title=\"Inspect\">\n <Icon icon={Info} className=\"space-right\" />\n </Link>\n </Authorized>\n )}\n </div>\n );\n}\n","import { CellContext } from '@tanstack/react-table';\n\nimport { useAuthorizations } from '@/react/hooks/useUser';\nimport { ContainerQuickActions } from '@/react/docker/containers/components/ContainerQuickActions';\nimport { DockerContainer } from '@/react/docker/containers/types';\n\nimport { useTableSettings } from '@@/datatables/useTableSettings';\n\nimport { TableSettings } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const quickActions = columnHelper.display({\n header: 'Quick Actions',\n id: 'actions',\n cell: QuickActionsCell,\n});\n\nfunction QuickActionsCell({\n row: { original: container },\n}: CellContext<DockerContainer, unknown>) {\n const settings = useTableSettings<TableSettings>();\n\n const { hiddenQuickActions = [] } = settings;\n\n const wrapperState = {\n showQuickActionAttach: !hiddenQuickActions.includes('attach'),\n showQuickActionExec: !hiddenQuickActions.includes('exec'),\n showQuickActionInspect: !hiddenQuickActions.includes('inspect'),\n showQuickActionLogs: !hiddenQuickActions.includes('logs'),\n showQuickActionStats: !hiddenQuickActions.includes('stats'),\n };\n\n const someOn =\n wrapperState.showQuickActionAttach ||\n wrapperState.showQuickActionExec ||\n wrapperState.showQuickActionInspect ||\n wrapperState.showQuickActionLogs ||\n wrapperState.showQuickActionStats;\n\n const isAuthorized = useAuthorizations([\n 'DockerContainerStats',\n 'DockerContainerLogs',\n 'DockerExecStart',\n 'DockerContainerInspect',\n 'DockerTaskInspect',\n 'DockerTaskLogs',\n ]);\n\n if (!someOn || !isAuthorized) {\n return null;\n }\n\n return (\n <ContainerQuickActions\n containerId={container.Id}\n nodeName={container.NodeName}\n status={container.Status}\n state={wrapperState}\n />\n );\n}\n","import { columnHelper } from './helper';\n\nexport const stack = columnHelper.accessor((row) => row.StackName || '-', {\n header: 'Stack',\n id: 'stack',\n});\n","import clsx from 'clsx';\nimport { CellContext } from '@tanstack/react-table';\n\nimport {\n type DockerContainer,\n ContainerStatus,\n} from '@/react/docker/containers/types';\n\nimport { filterHOC } from '@@/datatables/Filter';\nimport { multiple } from '@@/datatables/filter-types';\n\nimport { columnHelper } from './helper';\n\nexport const state = columnHelper.accessor('Status', {\n header: 'State',\n id: 'state',\n cell: StatusCell,\n enableColumnFilter: true,\n filterFn: multiple,\n meta: {\n filter: filterHOC('Filter by state'),\n },\n});\n\nfunction StatusCell({\n getValue,\n}: CellContext<DockerContainer, ContainerStatus>) {\n const status = getValue();\n\n const hasHealthCheck = [\n ContainerStatus.Starting,\n ContainerStatus.Healthy,\n ContainerStatus.Unhealthy,\n ].includes(status);\n\n const statusClassName = getClassName();\n\n return (\n <span\n className={clsx('label', `label-${statusClassName}`, {\n interactive: hasHealthCheck,\n })}\n title={hasHealthCheck ? 'This container has a health check' : ''}\n >\n {status}\n </span>\n );\n\n function getClassName() {\n switch (status) {\n case ContainerStatus.Paused:\n case ContainerStatus.Starting:\n case ContainerStatus.Unhealthy:\n return 'warning';\n case ContainerStatus.Created:\n return 'info';\n case ContainerStatus.Stopped:\n case ContainerStatus.Dead:\n case ContainerStatus.Exited:\n return 'danger';\n case ContainerStatus.Healthy:\n case ContainerStatus.Running:\n default:\n return 'success';\n }\n }\n}\n","import { Row } from '@tanstack/react-table';\n\nexport function multiple<\n D extends Record<string, unknown> = Record<string, unknown>\n>({ getValue }: Row<D>, columnId: string, filterValue: string[]): boolean {\n if (filterValue.length === 0) {\n return true;\n }\n\n const value = getValue(columnId) as string;\n\n return filterValue.includes(value);\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport const queryKeys = {\n root: (environmentId: EnvironmentId) => ['docker', environmentId] as const,\n};\n","import { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { queryKeys as dockerQueryKeys } from '../../queries/utils';\n\nimport { Filters } from './types';\n\nexport const queryKeys = {\n list: (environmentId: EnvironmentId) =>\n [dockerQueryKeys.root(environmentId), 'containers'] as const,\n\n filters: (\n environmentId: EnvironmentId,\n params: { all?: boolean; filters?: Filters; nodeName?: string } = {}\n ) => [...queryKeys.list(environmentId), params] as const,\n\n container: (environmentId: EnvironmentId, id: string) =>\n [...queryKeys.list(environmentId), id] as const,\n\n gpus: (environmentId: EnvironmentId, id: string) =>\n [...queryKeys.container(environmentId, id), 'gpus'] as const,\n};\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { queryKeys } from './query-keys';\n\nasync function getContainerGpus(\n environmentId: EnvironmentId,\n containerId: string\n) {\n try {\n const { data } = await axios.get<{ gpus: string }>(\n `/docker/${environmentId}/containers/${containerId}/gpus`\n );\n return data.gpus;\n } catch (err) {\n throw parseAxiosError(err as Error);\n }\n}\n\nexport function useContainerGpus(\n environmentId: EnvironmentId,\n containerId: string\n) {\n return useQuery(queryKeys.gpus(environmentId, containerId), () =>\n getContainerGpus(environmentId, containerId)\n );\n}\n","import { CellContext } from '@tanstack/react-table';\n\nimport type { DockerContainer } from '@/react/docker/containers/types';\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport { useContainerGpus } from '@/react/docker/containers/queries/gpus';\n\nimport { columnHelper } from './helper';\n\nexport const gpus = columnHelper.display({\n header: 'GPUs',\n id: 'gpus',\n cell: GpusCell,\n});\n\nfunction GpusCell({\n row: { original: container },\n}: CellContext<DockerContainer, unknown>) {\n const containerId = container.Id;\n const environmentId = useEnvironmentId();\n const gpusQuery = useContainerGpus(environmentId, containerId);\n\n if (!gpusQuery.data) {\n return null;\n }\n\n return <>{gpusQuery.data}</>;\n}\n","import _ from 'lodash';\nimport { useMemo } from 'react';\n\nimport { createOwnershipColumn } from '@/react/docker/components/datatable-helpers/createOwnershipColumn';\nimport { DockerContainer } from '@/react/docker/containers/types';\n\nimport { created } from './created';\nimport { host } from './host';\nimport { image } from './image';\nimport { ip } from './ip';\nimport { name } from './name';\nimport { ports } from './ports';\nimport { quickActions } from './quick-actions';\nimport { stack } from './stack';\nimport { state } from './state';\nimport { gpus } from './gpus';\n\nexport function useColumns(\n isHostColumnVisible: boolean,\n isGPUsColumnVisible: boolean | undefined\n) {\n return useMemo(\n () =>\n _.compact([\n name,\n state,\n quickActions,\n stack,\n image,\n created,\n ip,\n isHostColumnVisible && host,\n isGPUsColumnVisible && gpus,\n ports,\n createOwnershipColumn<DockerContainer>(),\n ]),\n [isHostColumnVisible, isGPUsColumnVisible]\n );\n}\n","import { useRouter } from '@uirouter/react';\nimport {\n Pause,\n Play,\n Plus,\n RefreshCw,\n Slash,\n Square,\n Trash2,\n} from 'lucide-react';\n\nimport * as notifications from '@/portainer/services/notifications';\nimport { useAuthorizations, Authorized } from '@/react/hooks/useUser';\nimport { confirmContainerDeletion } from '@/react/docker/containers/common/confirm-container-delete-modal';\nimport { setPortainerAgentTargetHeader } from '@/portainer/services/http-request.helper';\nimport {\n ContainerId,\n ContainerStatus,\n DockerContainer,\n} from '@/react/docker/containers/types';\nimport {\n killContainer,\n pauseContainer,\n removeContainer,\n restartContainer,\n resumeContainer,\n startContainer,\n stopContainer,\n} from '@/react/docker/containers/containers.service';\nimport type { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Link } from '@@/Link';\nimport { ButtonGroup, Button } from '@@/buttons';\n\ntype ContainerServiceAction = (\n endpointId: EnvironmentId,\n containerId: ContainerId\n) => Promise<void>;\n\ninterface Props {\n selectedItems: DockerContainer[];\n isAddActionVisible: boolean;\n endpointId: EnvironmentId;\n}\n\nexport function ContainersDatatableActions({\n selectedItems,\n isAddActionVisible,\n endpointId,\n}: Props) {\n const selectedItemCount = selectedItems.length;\n const hasPausedItemsSelected = selectedItems.some(\n (item) => item.State === ContainerStatus.Paused\n );\n const hasStoppedItemsSelected = selectedItems.some((item) =>\n [\n ContainerStatus.Stopped,\n ContainerStatus.Created,\n ContainerStatus.Exited,\n ].includes(item.Status)\n );\n const hasRunningItemsSelected = selectedItems.some((item) =>\n [\n ContainerStatus.Running,\n ContainerStatus.Healthy,\n ContainerStatus.Unhealthy,\n ContainerStatus.Starting,\n ].includes(item.Status)\n );\n\n const isAuthorized = useAuthorizations([\n 'DockerContainerStart',\n 'DockerContainerStop',\n 'DockerContainerKill',\n 'DockerContainerRestart',\n 'DockerContainerPause',\n 'DockerContainerUnpause',\n 'DockerContainerDelete',\n 'DockerContainerCreate',\n ]);\n\n const router = useRouter();\n\n if (!isAuthorized) {\n return null;\n }\n\n return (\n <>\n <ButtonGroup>\n <Authorized authorizations=\"DockerContainerStart\">\n <Button\n color=\"light\"\n onClick={() => onStartClick(selectedItems)}\n disabled={selectedItemCount === 0 || !hasStoppedItemsSelected}\n icon={Play}\n >\n Start\n </Button>\n </Authorized>\n\n <Authorized authorizations=\"DockerContainerStop\">\n <Button\n color=\"light\"\n onClick={() => onStopClick(selectedItems)}\n disabled={selectedItemCount === 0 || !hasRunningItemsSelected}\n icon={Square}\n >\n Stop\n </Button>\n </Authorized>\n\n <Authorized authorizations=\"DockerContainerKill\">\n <Button\n color=\"light\"\n onClick={() => onKillClick(selectedItems)}\n disabled={selectedItemCount === 0 || hasStoppedItemsSelected}\n icon={Slash}\n >\n Kill\n </Button>\n </Authorized>\n\n <Authorized authorizations=\"DockerContainerRestart\">\n <Button\n color=\"light\"\n onClick={() => onRestartClick(selectedItems)}\n disabled={selectedItemCount === 0}\n icon={RefreshCw}\n >\n Restart\n </Button>\n </Authorized>\n\n <Authorized authorizations=\"DockerContainerPause\">\n <Button\n color=\"light\"\n onClick={() => onPauseClick(selectedItems)}\n disabled={selectedItemCount === 0 || !hasRunningItemsSelected}\n icon={Pause}\n >\n Pause\n </Button>\n </Authorized>\n\n <Authorized authorizations=\"DockerContainerUnpause\">\n <Button\n color=\"light\"\n onClick={() => onResumeClick(selectedItems)}\n disabled={selectedItemCount === 0 || !hasPausedItemsSelected}\n icon={Play}\n >\n Resume\n </Button>\n </Authorized>\n\n <Authorized authorizations=\"DockerContainerDelete\">\n <Button\n color=\"dangerlight\"\n onClick={() => onRemoveClick(selectedItems)}\n disabled={selectedItemCount === 0}\n icon={Trash2}\n >\n Remove\n </Button>\n </Authorized>\n </ButtonGroup>\n\n {isAddActionVisible && (\n <Authorized authorizations=\"DockerContainerCreate\">\n <Link to=\"docker.containers.new\" className=\"space-left\">\n <Button icon={Plus}>Add container</Button>\n </Link>\n </Authorized>\n )}\n </>\n );\n\n function onStartClick(selectedItems: DockerContainer[]) {\n const successMessage = 'Container successfully started';\n const errorMessage = 'Unable to start container';\n executeActionOnContainerList(\n selectedItems,\n startContainer,\n successMessage,\n errorMessage\n );\n }\n\n function onStopClick(selectedItems: DockerContainer[]) {\n const successMessage = 'Container successfully stopped';\n const errorMessage = 'Unable to stop container';\n executeActionOnContainerList(\n selectedItems,\n stopContainer,\n successMessage,\n errorMessage\n );\n }\n\n function onRestartClick(selectedItems: DockerContainer[]) {\n const successMessage = 'Container successfully restarted';\n const errorMessage = 'Unable to restart container';\n executeActionOnContainerList(\n selectedItems,\n restartContainer,\n successMessage,\n errorMessage\n );\n }\n\n function onKillClick(selectedItems: DockerContainer[]) {\n const successMessage = 'Container successfully killed';\n const errorMessage = 'Unable to kill container';\n executeActionOnContainerList(\n selectedItems,\n killContainer,\n successMessage,\n errorMessage\n );\n }\n\n function onPauseClick(selectedItems: DockerContainer[]) {\n const successMessage = 'Container successfully paused';\n const errorMessage = 'Unable to pause container';\n executeActionOnContainerList(\n selectedItems,\n pauseContainer,\n successMessage,\n errorMessage\n );\n }\n\n function onResumeClick(selectedItems: DockerContainer[]) {\n const successMessage = 'Container successfully resumed';\n const errorMessage = 'Unable to resume container';\n executeActionOnContainerList(\n selectedItems,\n resumeContainer,\n successMessage,\n errorMessage\n );\n }\n\n async function onRemoveClick(selectedItems: DockerContainer[]) {\n const isOneContainerRunning = selectedItems.some(\n (container) => container.State === 'running'\n );\n\n const runningTitle = isOneContainerRunning ? 'running' : '';\n const title = `You are about to remove one or more ${runningTitle} containers.`;\n\n const result = await confirmContainerDeletion(title);\n if (!result) {\n return;\n }\n const { removeVolumes } = result;\n\n removeSelectedContainers(selectedItems, removeVolumes);\n }\n\n async function executeActionOnContainerList(\n containers: DockerContainer[],\n action: ContainerServiceAction,\n successMessage: string,\n errorMessage: string\n ) {\n for (let i = 0; i < containers.length; i += 1) {\n const container = containers[i];\n try {\n setPortainerAgentTargetHeader(container.NodeName);\n await action(endpointId, container.Id);\n notifications.success(successMessage, container.Names[0]);\n } catch (err) {\n notifications.error(\n 'Failure',\n err as Error,\n `${errorMessage}:${container.Names[0]}`\n );\n }\n }\n\n router.stateService.reload();\n }\n\n async function removeSelectedContainers(\n containers: DockerContainer[],\n cleanVolumes: boolean\n ) {\n for (let i = 0; i < containers.length; i += 1) {\n const container = containers[i];\n try {\n setPortainerAgentTargetHeader(container.NodeName);\n await removeContainer(endpointId, container, cleanVolumes);\n notifications.success(\n 'Container successfully removed',\n container.Names[0]\n );\n } catch (err) {\n notifications.error(\n 'Failure',\n err as Error,\n 'Unable to remove container'\n );\n }\n }\n\n router.stateService.reload();\n }\n}\n","import { Checkbox } from '@@/form-components/Checkbox';\nimport { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';\n\nimport { TableSettings } from './types';\nimport { TRUNCATE_LENGTH } from './datatable-store';\n\ninterface Props {\n isRefreshVisible?: boolean;\n settings: TableSettings;\n}\n\nexport function ContainersDatatableSettings({\n isRefreshVisible,\n settings,\n}: Props) {\n return (\n <>\n <Checkbox\n id=\"settings-container-truncate-nae\"\n label=\"Truncate container name\"\n checked={settings.truncateContainerName > 0}\n onChange={() =>\n settings.setTruncateContainerName(\n settings.truncateContainerName > 0 ? 0 : TRUNCATE_LENGTH\n )\n }\n />\n\n {isRefreshVisible && (\n <TableSettingsMenuAutoRefresh\n value={settings.autoRefreshRate}\n onChange={(value) => settings.setAutoRefreshRate(value)}\n />\n )}\n </>\n );\n}\n","import _ from 'lodash';\n\nimport { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { useInfo } from '@/docker/services/system.service';\nimport { useEnvironment } from '@/react/portainer/environments/queries';\n\nimport { DockerContainer, ContainerStatus } from './types';\nimport { DockerContainerResponse } from './types/response';\n\nexport function parseViewModel(\n response: DockerContainerResponse\n): DockerContainer {\n const resourceControl =\n response.Portainer?.ResourceControl &&\n new ResourceControlViewModel(response?.Portainer?.ResourceControl);\n const nodeName = response.Portainer?.Agent?.NodeName || '';\n\n const ip =\n Object.values(response?.NetworkSettings?.Networks || {})[0]?.IPAddress ||\n '';\n\n const labels = response.Labels || {};\n const stackName =\n labels['com.docker.compose.project'] ||\n labels['com.docker.stack.namespace'];\n\n const status = createStatus(response.Status);\n\n const ports = _.compact(\n response.Ports?.map(\n (p) =>\n p.PublicPort && {\n host: p.IP,\n private: p.PrivatePort,\n public: p.PublicPort,\n }\n )\n );\n\n const names = response.Names?.map((n) => {\n const nameWithoutSlash = n[0] === '/' ? n.slice(1) : n;\n return nameWithoutSlash;\n });\n\n return {\n ...response,\n ResourceControl: resourceControl,\n Names: names,\n NodeName: nodeName,\n IP: ip,\n StackName: stackName,\n Status: status,\n Ports: ports,\n StatusText: response.Status,\n Gpus: '',\n };\n}\n\nfunction createStatus(statusText = ''): ContainerStatus {\n const status = statusText.toLowerCase();\n\n if (status.includes(ContainerStatus.Paused)) {\n return ContainerStatus.Paused;\n }\n\n if (status.includes(ContainerStatus.Dead)) {\n return ContainerStatus.Dead;\n }\n\n if (status.includes(ContainerStatus.Created)) {\n return ContainerStatus.Created;\n }\n\n if (status.includes(ContainerStatus.Stopped)) {\n return ContainerStatus.Stopped;\n }\n\n if (status.includes(ContainerStatus.Exited)) {\n return ContainerStatus.Exited;\n }\n\n if (status.includes('(healthy)')) {\n return ContainerStatus.Healthy;\n }\n\n if (status.includes('(unhealthy)')) {\n return ContainerStatus.Unhealthy;\n }\n\n if (status.includes('(health: starting)')) {\n return ContainerStatus.Starting;\n }\n\n return ContainerStatus.Running;\n}\n\nexport function useShowGPUsColumn(environmentID: EnvironmentId) {\n const isDockerStandaloneQuery = useInfo(\n environmentID,\n (info) => !(!!info.Swarm?.NodeID && !!info.Swarm?.ControlAvailable) // is not a swarm environment, therefore docker standalone\n );\n const enableGPUManagementQuery = useEnvironment(\n environmentID,\n (env) => env?.EnableGPUManagement\n );\n return isDockerStandaloneQuery.data && enableGPUManagementQuery.data;\n}\n","import {\n SettableQuickActionsTableSettings,\n QuickAction,\n} from '@/react/docker/containers/ListView/ContainersDatatable/types';\n\nimport { Checkbox } from '@@/form-components/Checkbox';\n\nimport { useTableSettings } from './useTableSettings';\n\nexport interface Action {\n id: QuickAction;\n label: string;\n}\n\ninterface Props {\n actions: Action[];\n}\n\nexport function QuickActionsSettings({ actions }: Props) {\n const settings =\n useTableSettings<SettableQuickActionsTableSettings<QuickAction>>();\n\n return (\n <>\n {actions.map(({ id, label }) => (\n <Checkbox\n key={id}\n label={label}\n id={`quick-actions-${id}`}\n checked={!settings.hiddenQuickActions.includes(id)}\n onChange={(e) => toggleAction(id, e.target.checked)}\n />\n ))}\n </>\n );\n\n function toggleAction(key: QuickAction, visible: boolean) {\n if (!visible) {\n settings.setHiddenQuickActions([...settings.hiddenQuickActions, key]);\n } else {\n settings.setHiddenQuickActions(\n settings.hiddenQuickActions.filter((action) => action !== key)\n );\n }\n }\n}\n\nexport function buildAction(id: QuickAction, label: string): Action {\n return { id, label };\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, {\n agentTargetHeader,\n parseAxiosError,\n} from '@/portainer/services/axios';\nimport { withGlobalError } from '@/react-tools/react-query';\n\nimport { urlBuilder } from '../containers.service';\nimport { DockerContainerResponse } from '../types/response';\nimport { parseViewModel } from '../utils';\n\nimport { Filters } from './types';\nimport { queryKeys } from './query-keys';\n\ninterface UseContainers {\n all?: boolean;\n filters?: Filters;\n nodeName?: string;\n}\n\nexport function useContainers(\n environmentId: EnvironmentId,\n {\n autoRefreshRate,\n\n ...params\n }: UseContainers & {\n autoRefreshRate?: number;\n } = {}\n) {\n return useQuery(\n queryKeys.filters(environmentId, params),\n () => getContainers(environmentId, params),\n {\n ...withGlobalError('Unable to retrieve containers'),\n refetchInterval() {\n return autoRefreshRate ?? false;\n },\n }\n );\n}\n\nasync function getContainers(\n environmentId: EnvironmentId,\n { all = true, filters, nodeName }: UseContainers = {}\n) {\n try {\n const { data } = await axios.get<DockerContainerResponse[]>(\n urlBuilder(environmentId, undefined, 'json'),\n {\n params: { all, filters: filters && JSON.stringify(filters) },\n headers: nodeName\n ? {\n [agentTargetHeader]: nodeName,\n }\n : undefined,\n }\n );\n return data.map((c) => parseViewModel(c));\n } catch (error) {\n throw parseAxiosError(error as Error, 'Unable to retrieve containers');\n }\n}\n","import { Box } from 'lucide-react';\n\nimport { DockerContainer } from '@/react/docker/containers/types';\nimport { Environment } from '@/react/portainer/environments/types';\nimport { createStore } from '@/react/docker/containers/ListView/ContainersDatatable/datatable-store';\nimport { useColumns } from '@/react/docker/containers/ListView/ContainersDatatable/columns';\nimport { ContainersDatatableActions } from '@/react/docker/containers/ListView/ContainersDatatable/ContainersDatatableActions';\nimport { ContainersDatatableSettings } from '@/react/docker/containers/ListView/ContainersDatatable/ContainersDatatableSettings';\nimport { useShowGPUsColumn } from '@/react/docker/containers/utils';\n\nimport { Datatable, Table } from '@@/datatables';\nimport {\n buildAction,\n QuickActionsSettings,\n} from '@@/datatables/QuickActionsSettings';\nimport { ColumnVisibilityMenu } from '@@/datatables/ColumnVisibilityMenu';\nimport { TableSettingsProvider } from '@@/datatables/useTableSettings';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { useContainers } from '../../../docker/containers/queries/containers';\nimport { RowProvider } from '../../../docker/containers/ListView/ContainersDatatable/RowContext';\n\nconst storageKey = 'stack-containers';\nconst settingsStore = createStore(storageKey);\n\nconst actions = [\n buildAction('logs', 'Logs'),\n buildAction('inspect', 'Inspect'),\n buildAction('stats', 'Stats'),\n buildAction('exec', 'Console'),\n buildAction('attach', 'Attach'),\n];\n\nexport interface Props {\n environment: Environment;\n stackName: string;\n}\n\nexport function StackContainersDatatable({ environment, stackName }: Props) {\n const tableState = useTableState(settingsStore, storageKey);\n\n const isGPUsColumnVisible = useShowGPUsColumn(environment.Id);\n const columns = useColumns(false, isGPUsColumnVisible);\n\n const containersQuery = useContainers(environment.Id, {\n filters: {\n label: [`com.docker.compose.project=${stackName}`],\n },\n autoRefreshRate: tableState.autoRefreshRate * 1000,\n });\n\n return (\n <RowProvider context={{ environment }}>\n <TableSettingsProvider settings={settingsStore}>\n <Datatable\n title=\"Containers\"\n titleIcon={Box}\n settingsManager={tableState}\n columns={columns}\n renderTableActions={(selectedRows) => (\n <ContainersDatatableActions\n selectedItems={selectedRows}\n isAddActionVisible={false}\n endpointId={environment.Id}\n />\n )}\n initialTableState={{\n columnVisibility: Object.fromEntries(\n tableState.hiddenColumns.map((col) => [col, false])\n ),\n }}\n renderTableSettings={(tableInstance) => {\n const columnsToHide = tableInstance\n .getAllColumns()\n .filter((col) => col.getCanHide());\n\n return (\n <>\n <ColumnVisibilityMenu<DockerContainer>\n columns={columnsToHide}\n onChange={(hiddenColumns) => {\n tableState.setHiddenColumns(hiddenColumns);\n tableInstance.setColumnVisibility(\n Object.fromEntries(\n hiddenColumns.map((col) => [col, false])\n )\n );\n }}\n value={tableState.hiddenColumns}\n />\n <Table.SettingsMenu\n quickActions={<QuickActionsSettings actions={actions} />}\n >\n <ContainersDatatableSettings settings={tableState} />\n </Table.SettingsMenu>\n </>\n );\n }}\n dataset={containersQuery.data || []}\n isLoading={containersQuery.isLoading}\n emptyContentLabel=\"No containers found\"\n />\n </TableSettingsProvider>\n </RowProvider>\n );\n}\n","import { Select } from '@@/form-components/ReactSelect';\n\ninterface Filter {\n label?: string;\n}\n\ninterface Props {\n options: string[];\n onChange: (value: string | null) => void;\n placeholder?: string;\n value: string;\n}\n\nexport function TemplateListDropdown({\n options,\n onChange,\n placeholder,\n value,\n}: Props) {\n const filterOptions: Filter[] = options.map((value) => ({ label: value }));\n const filterValue: Filter | null = value ? { label: value } : null;\n\n return (\n <Select\n placeholder={placeholder}\n options={filterOptions}\n value={filterValue}\n isClearable\n onChange={(option) => onChange(option?.label ?? null)}\n />\n );\n}\n","import { react2angular } from '@/react-tools/react2angular';\n\nimport { TemplateListDropdown } from './TemplateListDropdown';\n\nconst TemplateListDropdownAngular = react2angular(TemplateListDropdown, [\n 'options',\n 'onChange',\n 'placeholder',\n 'value',\n]);\nexport { TemplateListDropdown, TemplateListDropdownAngular };\n","// extracted by mini-css-extract-plugin\nexport default {\"sortByContainer\":\"app-react-docker-app-templates-TemplateListSort-TemplateListSort-module__sort-by-container\",\"sortButton\":\"app-react-docker-app-templates-TemplateListSort-TemplateListSort-module__sort-button\",\"sortByElement\":\"app-react-docker-app-templates-TemplateListSort-TemplateListSort-module__sort-by-element\"};","import { react2angular } from '@/react-tools/react2angular';\n\nimport { TemplateListSort } from './TemplateListSort';\n\nconst TemplateListSortAngular = react2angular(TemplateListSort, [\n 'options',\n 'onChange',\n 'onDescending',\n 'placeholder',\n 'sortByDescending',\n 'sortByButton',\n 'value',\n]);\nexport { TemplateListSort, TemplateListSortAngular };\n","import clsx from 'clsx';\n\nimport { TableHeaderSortIcons } from '@@/datatables/TableHeaderSortIcons';\n\nimport { TemplateListDropdown } from '../TemplateListDropdown';\n\nimport styles from './TemplateListSort.module.css';\n\ninterface Props {\n options: string[];\n onChange: (value: string | null) => void;\n onDescending: () => void;\n placeholder?: string;\n sortByDescending: boolean;\n sortByButton: boolean;\n value: string;\n}\n\nexport function TemplateListSort({\n options,\n onChange,\n onDescending,\n placeholder,\n sortByDescending,\n sortByButton,\n value,\n}: Props) {\n return (\n <div className={styles.sortByContainer}>\n <div className={styles.sortByElement}>\n <TemplateListDropdown\n placeholder={placeholder}\n options={options}\n onChange={onChange}\n value={value}\n />\n </div>\n <div className={styles.sortByElement}>\n <button\n className={clsx(styles.sortButton, 'h-[34px]')}\n type=\"button\"\n disabled={!sortByButton || !value}\n onClick={(e) => {\n e.preventDefault();\n onDescending();\n }}\n >\n <TableHeaderSortIcons\n sorted={sortByButton && !!value}\n descending={sortByDescending}\n />\n </button>\n </div>\n </div>\n );\n}\n","import { useMemo } from 'react';\nimport { components, MultiValue } from 'react-select';\nimport { MultiValueRemoveProps } from 'react-select/dist/declarations/src/components/MultiValue';\nimport {\n ActionMeta,\n OnChangeValue,\n} from 'react-select/dist/declarations/src/types';\nimport { OptionProps } from 'react-select/dist/declarations/src/components/Option';\n\nimport { Select } from '@@/form-components/ReactSelect';\nimport { Switch } from '@@/form-components/SwitchField/Switch';\nimport { Tooltip } from '@@/Tip/Tooltip';\nimport { TextTip } from '@@/Tip/TextTip';\n\ninterface Values {\n enabled: boolean;\n useSpecific: boolean;\n selectedGPUs: string[];\n capabilities: string[];\n}\n\ninterface GpuOption {\n value: string;\n label: string;\n description?: string;\n}\n\nexport interface GPU {\n value: string;\n name: string;\n}\n\nexport interface Props {\n values: Values;\n onChange(values: Values): void;\n gpus: GPU[];\n usedGpus: string[];\n usedAllGpus: boolean;\n enableGpuManagement?: boolean;\n}\n\nconst NvidiaCapabilitiesOptions = [\n // Taken from https://github.com/containerd/containerd/blob/master/contrib/nvidia/nvidia.go#L40\n {\n value: 'compute',\n label: 'compute',\n description: 'required for CUDA and OpenCL applications',\n },\n {\n value: 'compat32',\n label: 'compat32',\n description: 'required for running 32-bit applications',\n },\n {\n value: 'graphics',\n label: 'graphics',\n description: 'required for running OpenGL and Vulkan applications',\n },\n {\n value: 'utility',\n label: 'utility',\n description: 'required for using nvidia-smi and NVML',\n },\n {\n value: 'video',\n label: 'video',\n description: 'required for using the Video Codec SDK',\n },\n {\n value: 'display',\n label: 'display',\n description: 'required for leveraging X11 display',\n },\n];\n\nfunction Option(props: OptionProps<GpuOption, true>) {\n const {\n data: { value, description },\n } = props;\n\n return (\n <div>\n {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n <components.Option {...props}>\n {`${value} - ${description}`}\n </components.Option>\n </div>\n );\n}\n\nfunction MultiValueRemove(props: MultiValueRemoveProps<GpuOption, true>) {\n const {\n selectProps: { value },\n } = props;\n if (value && (value as MultiValue<GpuOption>).length === 1) {\n return null;\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <components.MultiValueRemove {...props} />;\n}\n\nexport function Gpu({\n values,\n onChange,\n gpus = [],\n usedGpus = [],\n usedAllGpus,\n enableGpuManagement,\n}: Props) {\n const options = useMemo(() => {\n const options = (gpus || []).map((gpu) => ({\n value: gpu.value,\n label:\n usedGpus.includes(gpu.value) || usedAllGpus\n ? `${gpu.name} (in use)`\n : gpu.name,\n }));\n\n options.unshift({\n value: 'all',\n label: 'Use All GPUs',\n });\n\n return options;\n }, [gpus, usedGpus, usedAllGpus]);\n\n function onChangeValues(key: string, newValue: boolean | string[]) {\n const newValues = {\n ...values,\n [key]: newValue,\n };\n onChange(newValues);\n }\n\n function toggleEnableGpu() {\n onChangeValues('enabled', !values.enabled);\n }\n\n function onChangeSelectedGpus(\n newValue: OnChangeValue<GpuOption, true>,\n actionMeta: ActionMeta<GpuOption>\n ) {\n let { useSpecific } = values;\n let selectedGPUs = newValue.map((option) => option.value);\n\n if (actionMeta.action === 'select-option') {\n useSpecific = actionMeta.option?.value !== 'all';\n selectedGPUs = selectedGPUs.filter((value) =>\n useSpecific ? value !== 'all' : value === 'all'\n );\n }\n\n const newValues = { ...values, selectedGPUs, useSpecific };\n onChange(newValues);\n }\n\n function onChangeSelectedCaps(newValue: OnChangeValue<GpuOption, true>) {\n onChangeValues(\n 'capabilities',\n newValue.map((option) => option.value)\n );\n }\n\n const gpuCmd = useMemo(() => {\n const devices = values.selectedGPUs.join(',');\n const deviceStr = devices === 'all' ? 'all,' : `device=${devices},`;\n const caps = values.capabilities.join(',');\n return `--gpus '${deviceStr}\"capabilities=${caps}\"'`;\n }, [values.selectedGPUs, values.capabilities]);\n\n const gpuValue = useMemo(\n () =>\n options.filter((option) => values.selectedGPUs.includes(option.value)),\n [values.selectedGPUs, options]\n );\n\n const capValue = useMemo(\n () =>\n NvidiaCapabilitiesOptions.filter((option) =>\n values.capabilities.includes(option.value)\n ),\n [values.capabilities]\n );\n\n return (\n <div>\n {!enableGpuManagement && (\n <TextTip color=\"blue\">\n GPU in the UI is not currently enabled for this environment.\n </TextTip>\n )}\n <div className=\"form-group\">\n <div className=\"col-sm-3 col-lg-2 control-label text-left\">\n Enable GPU\n <Switch\n id=\"enabled\"\n name=\"enabled\"\n checked={values.enabled && !!enableGpuManagement}\n onChange={toggleEnableGpu}\n className=\"ml-2\"\n disabled={enableGpuManagement === false}\n />\n </div>\n {enableGpuManagement && values.enabled && (\n <div className=\"col-sm-9 col-lg-10 text-left\">\n <Select<GpuOption, true>\n isMulti\n closeMenuOnSelect\n value={gpuValue}\n isClearable={false}\n backspaceRemovesValue={false}\n isDisabled={!values.enabled}\n onChange={onChangeSelectedGpus}\n options={options}\n components={{ MultiValueRemove }}\n />\n </div>\n )}\n </div>\n\n {values.enabled && (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-3 col-lg-2 control-label text-left\">\n Capabilities\n <Tooltip message=\"‘compute’ and ‘utility’ capabilities are preselected by Portainer because they are used by default when you don’t explicitly specify capabilities with docker CLI ‘--gpus’ option.\" />\n </div>\n <div className=\"col-sm-9 col-lg-10 text-left\">\n <Select<GpuOption, true>\n isMulti\n closeMenuOnSelect\n value={capValue}\n options={NvidiaCapabilitiesOptions}\n components={{ Option }}\n onChange={onChangeSelectedCaps}\n />\n </div>\n </div>\n\n <div className=\"form-group\">\n <div className=\"col-sm-3 col-lg-2 control-label text-left\">\n Control\n <Tooltip message=\"This is the generated equivalent of the '--gpus' docker CLI parameter based on your settings.\" />\n </div>\n <div className=\"col-sm-9 col-lg-10\">\n <code>{gpuCmd}</code>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n","import { ComponentProps } from 'react';\nimport { HeartPulse, Server } from 'lucide-react';\n\nimport { TableContainer, TableTitle } from '@@/datatables';\nimport { DetailsTable } from '@@/DetailsTable';\nimport { Icon } from '@@/Icon';\n\nimport { Health } from '../types/response';\n\nconst StatusMode: Record<\n Health['Status'],\n ComponentProps<typeof Icon>['mode']\n> = {\n healthy: 'success',\n unhealthy: 'danger',\n starting: 'warning',\n};\n\ninterface Props {\n health: Health;\n}\n\nexport function HealthStatus({ health }: Props) {\n return (\n <TableContainer>\n <TableTitle label=\"Container health\" icon={Server} />\n\n <DetailsTable>\n <DetailsTable.Row label=\"Status\">\n <div className=\"vertical-center\">\n <Icon\n icon={HeartPulse}\n mode={StatusMode[health.Status]}\n className=\"space-right\"\n />\n {health.Status}\n </div>\n </DetailsTable.Row>\n\n <DetailsTable.Row label=\"Failure count\">\n <div className=\"vertical-center\">{health.FailingStreak}</div>\n </DetailsTable.Row>\n\n <DetailsTable.Row label=\"Last output\">\n {health.Log[health.Log.length - 1].Output}\n </DetailsTable.Row>\n </DetailsTable>\n </TableContainer>\n );\n}\n","import { array, object, string } from 'yup';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { withControlledInput } from '@/react-tools/withControlledInput';\n\nimport { InputList } from '@@/form-components/InputList';\nimport { ItemProps } from '@@/form-components/InputList/InputList';\nimport { InputGroup } from '@@/form-components/InputGroup';\n\nexport interface Gpu {\n value: string;\n name: string;\n}\n\ninterface Props {\n value: Gpu[];\n onChange(value: Gpu[]): void;\n}\n\nfunction Item({ item, onChange }: ItemProps<Gpu>) {\n return (\n <div className=\"flex flex-grow gap-2\">\n <InputGroup size=\"small\" className=\"flex-grow\">\n <InputGroup.Addon>GPU Name</InputGroup.Addon>\n <InputGroup.Input\n placeholder=\"my-gpu\"\n value={item.name}\n onChange={(e) => {\n onChange({ ...item, name: e.target.value });\n }}\n />\n </InputGroup>\n\n <InputGroup size=\"small\" className=\"flex-grow\">\n <InputGroup.Addon>Index or UUID</InputGroup.Addon>\n <InputGroup.Input\n placeholder=\"0 or GPU-6e2c7185-c3d3-ae22-da43-bc5267b89061\"\n value={item.value}\n onChange={(e) => {\n onChange({ ...item, value: e.target.value });\n }}\n />\n </InputGroup>\n </div>\n );\n}\n\nexport function GpusList({ value, onChange }: Props) {\n return (\n <InputList<Gpu>\n label=\"GPUs\"\n tooltip=\"You may optionally set up the GPUs that will be selectable against containers, although 'All GPUs' will always be available.\"\n value={value}\n onChange={onChange}\n itemBuilder={() => ({ value: '', name: '' })}\n addLabel=\"Add GPU\"\n item={Item}\n />\n );\n}\n\nexport function gpusListValidation() {\n const gpuShape = object().shape({\n name: string().required(),\n value: string().required(),\n });\n return array().of(gpuShape).default([]);\n}\n\nexport const GpusListAngular = r2a(withControlledInput(GpusList), [\n 'value',\n 'onChange',\n]);\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { DockerImage } from '@/react/docker/images/types';\n\nexport const columnHelper = createColumnHelper<\n DockerImage & { NodeName?: string }\n>();\n\n/**\n * Docker response from proxy (with added portainer metadata)\n * images view model\n * images snapshot\n * snapshots view model\n *\n *\n */\n","import { isoDateFromTimestamp } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor('Created', {\n id: 'created',\n header: 'Created',\n cell: ({ getValue }) => {\n const value = getValue();\n return isoDateFromTimestamp(value);\n },\n});\n","import { CellContext, Column } from '@tanstack/react-table';\nimport { useSref } from '@uirouter/react';\n\nimport { DockerImage } from '@/react/docker/images/types';\nimport { truncate } from '@/portainer/filters/filters';\nimport { getValueAsArrayOfStrings } from '@/portainer/helpers/array';\n\nimport { MultipleSelectionFilter } from '@@/datatables/Filter';\n\nimport { columnHelper } from './helper';\n\nexport const id = columnHelper.accessor('Id', {\n id: 'id',\n header: 'Id',\n cell: Cell,\n enableColumnFilter: true,\n filterFn: (\n { original: { Used } },\n columnId,\n filterValue: Array<'Used' | 'Unused'>\n ) => {\n if (filterValue.length === 0) {\n return true;\n }\n\n if (filterValue.includes('Used') && Used) {\n return true;\n }\n\n if (filterValue.includes('Unused') && !Used) {\n return true;\n }\n\n return false;\n },\n meta: {\n filter: FilterByUsage,\n },\n});\n\nfunction FilterByUsage<TData extends { Used: boolean }>({\n column: { getFilterValue, setFilterValue, id },\n}: {\n column: Column<TData>;\n}) {\n const options = ['Used', 'Unused'];\n\n const value = getFilterValue();\n\n const valueAsArray = getValueAsArrayOfStrings(value);\n\n return (\n <MultipleSelectionFilter\n options={options}\n filterKey={id}\n value={valueAsArray}\n onChange={setFilterValue}\n menuTitle=\"Filter by usage\"\n />\n );\n}\n\nfunction Cell({\n getValue,\n row: { original: image },\n}: CellContext<DockerImage, string>) {\n const name = getValue();\n\n const linkProps = useSref('.image', {\n id: image.Id,\n imageId: image.Id,\n });\n\n return (\n <>\n <a href={linkProps.href} onClick={linkProps.onClick} title={name}>\n {truncate(name, 40)}\n </a>\n {!image.Used && (\n <span className=\"label label-warning image-tag ml-2\">Unused</span>\n )}\n </>\n );\n}\n","import { humanize } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const size = columnHelper.accessor('VirtualSize', {\n id: 'size',\n header: 'Size',\n cell: ({ getValue }) => {\n const value = getValue();\n return humanize(value) || '-';\n },\n});\n","import { created } from './created';\nimport { id } from './id';\nimport { size } from './size';\nimport { tags } from './tags';\n\nexport const columns = [id, tags, size, created];\n","import { CellContext } from '@tanstack/react-table';\n\nimport { DockerImage } from '@/react/docker/images/types';\n\nimport { columnHelper } from './helper';\n\nexport const tags = columnHelper.accessor('RepoTags', {\n id: 'tags',\n header: 'Tags',\n cell: Cell,\n});\n\nfunction Cell({ getValue }: CellContext<DockerImage, string[]>) {\n const repoTags = getValue();\n\n return (\n <>\n {repoTags.map((tag, idx) => (\n <span key={idx} className=\"label label-primary image-tag\" title={tag}>\n {tag}\n </span>\n ))}\n </>\n );\n}\n","import { columnHelper } from './helper';\n\nexport const host = columnHelper.accessor('NodeName', {\n header: 'Host',\n cell: ({ getValue }) => {\n const value = getValue();\n return value || '-';\n },\n});\n","import { Environment } from '@/react/portainer/environments/types';\n\nimport { createRowContext } from '@@/datatables/RowContext';\n\ninterface RowContextState {\n environment: Environment;\n}\n\nconst { RowProvider, useRowContext } = createRowContext<RowContextState>();\n\nexport { RowProvider, useRowContext };\n","import {\n ChevronDown,\n Download,\n List,\n Plus,\n Trash2,\n Upload,\n} from 'lucide-react';\nimport { Menu, MenuButton, MenuItem, MenuPopover } from '@reach/menu-button';\nimport { positionRight } from '@reach/popover';\nimport { useMemo } from 'react';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { Datatable, TableSettingsMenu } from '@@/datatables';\nimport {\n BasicTableSettings,\n createPersistedStore,\n refreshableSettings,\n RefreshableTableSettings,\n} from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\nimport { Button, ButtonGroup, LoadingButton } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { ButtonWithRef } from '@@/buttons/Button';\nimport { useRepeater } from '@@/datatables/useRepeater';\nimport { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';\n\nimport { DockerImage } from '../../types';\n\nimport { columns as defColumns } from './columns';\nimport { host as hostColumn } from './columns/host';\nimport { RowProvider } from './RowContext';\n\nconst tableKey = 'images';\n\nexport interface TableSettings\n extends BasicTableSettings,\n RefreshableTableSettings {}\n\nconst settingsStore = createPersistedStore<TableSettings>(\n tableKey,\n 'tags',\n (set) => ({\n ...refreshableSettings(set),\n })\n);\n\nexport function ImagesDatatable({\n dataset,\n\n environment,\n isHostColumnVisible,\n isExportInProgress,\n onDownload,\n onRefresh,\n onRemove,\n}: {\n dataset: Array<DockerImage>;\n environment: Environment;\n isHostColumnVisible: boolean;\n\n onDownload: (images: Array<DockerImage>) => void;\n onRemove: (images: Array<DockerImage>, force: true) => void;\n onRefresh: () => Promise<void>;\n isExportInProgress: boolean;\n}) {\n const tableState = useTableState(settingsStore, tableKey);\n const columns = useMemo(\n () => (isHostColumnVisible ? [...defColumns, hostColumn] : defColumns),\n [isHostColumnVisible]\n );\n\n useRepeater(tableState.autoRefreshRate, onRefresh);\n\n return (\n <RowProvider context={{ environment }}>\n <Datatable\n title=\"Images\"\n titleIcon={List}\n renderTableActions={(selectedItems) => (\n <div className=\"flex items-center gap-2\">\n <RemoveButtonMenu\n selectedItems={selectedItems}\n onRemove={onRemove}\n />\n\n <ImportExportButtons\n isExportInProgress={isExportInProgress}\n onExportClick={onDownload}\n selectedItems={selectedItems}\n />\n\n <Authorized authorizations=\"DockerImageBuild\">\n <Button\n as={Link}\n props={{ to: 'docker.images.build' }}\n data-cy=\"image-buildImageButton\"\n icon={Plus}\n >\n Build a new image\n </Button>\n </Authorized>\n </div>\n )}\n dataset={dataset}\n settingsManager={tableState}\n columns={columns}\n emptyContentLabel=\"No images found\"\n renderTableSettings={() => (\n <TableSettingsMenu>\n <TableSettingsMenuAutoRefresh\n value={tableState.autoRefreshRate}\n onChange={(value) => tableState.setAutoRefreshRate(value)}\n />\n </TableSettingsMenu>\n )}\n />\n </RowProvider>\n );\n}\n\nfunction RemoveButtonMenu({\n onRemove,\n selectedItems,\n}: {\n selectedItems: Array<DockerImage>;\n onRemove(selectedItems: Array<DockerImage>, force: boolean): void;\n}) {\n return (\n <Authorized authorizations=\"DockerImageDelete\">\n <ButtonGroup>\n <Button\n size=\"small\"\n color=\"dangerlight\"\n icon={Trash2}\n disabled={selectedItems.length === 0}\n data-cy=\"image-removeImageButton\"\n onClick={() => {\n onRemove(selectedItems, false);\n }}\n >\n Remove\n </Button>\n <Menu>\n <MenuButton\n as={ButtonWithRef}\n size=\"small\"\n color=\"dangerlight\"\n disabled={selectedItems.length === 0}\n icon={ChevronDown}\n >\n <span className=\"sr-only\">Toggle Dropdown</span>\n </MenuButton>\n <MenuPopover position={positionRight}>\n <div className=\"mt-3 bg-white th-highcontrast:bg-black th-dark:bg-black\">\n <MenuItem\n onSelect={() => {\n onRemove(selectedItems, true);\n }}\n >\n Force Remove\n </MenuItem>\n </div>\n </MenuPopover>\n </Menu>\n </ButtonGroup>\n </Authorized>\n );\n}\n\nfunction ImportExportButtons({\n isExportInProgress,\n selectedItems,\n onExportClick,\n}: {\n isExportInProgress: boolean;\n selectedItems: Array<DockerImage>;\n onExportClick(selectedItems: Array<DockerImage>): void;\n}) {\n return (\n <ButtonGroup>\n <Authorized authorizations=\"DockerImageLoad\">\n <Button\n size=\"small\"\n color=\"light\"\n as={Link}\n data-cy=\"image-importImageButton\"\n icon={Upload}\n disabled={isExportInProgress}\n props={{ to: 'docker.images.import' }}\n >\n Import\n </Button>\n </Authorized>\n <Authorized authorizations=\"DockerImageGet\">\n <LoadingButton\n size=\"small\"\n color=\"light\"\n icon={Download}\n isLoading={isExportInProgress}\n loadingText=\"Export in progress...\"\n data-cy=\"image-exportImageButton\"\n onClick={() => onExportClick(selectedItems)}\n disabled={selectedItems.length === 0}\n >\n Export\n </LoadingButton>\n </Authorized>\n </ButtonGroup>\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { Clock } from 'lucide-react';\n\nimport { isoDateFromTimestamp } from '@/portainer/filters/filters';\n\nimport { Datatable } from '@@/datatables';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\ntype DockerEvent = {\n Time: number;\n Type: string;\n Details: string;\n};\n\nconst columnHelper = createColumnHelper<DockerEvent>();\n\nexport const columns = [\n columnHelper.accessor('Time', {\n header: 'Date',\n cell: ({ getValue }) => {\n const value = getValue();\n return isoDateFromTimestamp(value);\n },\n }),\n columnHelper.accessor('Type', {\n header: 'Type',\n }),\n columnHelper.accessor('Details', {\n header: 'Details',\n }),\n];\n\nconst tableKey = 'docker-events';\nconst settingsStore = createPersistedStore(tableKey, {\n id: 'Time',\n desc: true,\n});\n\nexport function EventsDatatable({ dataset }: { dataset: Array<DockerEvent> }) {\n const tableState = useTableState(settingsStore, tableKey);\n\n return (\n <Datatable\n dataset={dataset ?? []}\n columns={columns}\n settingsManager={tableState}\n title=\"Events\"\n titleIcon={Clock}\n disableSelect\n emptyContentLabel=\"No event available.\"\n />\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { isoDate } from '@/portainer/filters/filters';\nimport { createOwnershipColumn } from '@/react/docker/components/datatable-helpers/createOwnershipColumn';\n\nimport { buildNameColumn } from '@@/datatables/NameCell';\n\nimport { DockerConfig } from '../../types';\n\nconst columnHelper = createColumnHelper<DockerConfig>();\n\nexport const columns = [\n buildNameColumn<DockerConfig>('Name', 'Id', 'docker.configs.config'),\n columnHelper.accessor('CreatedAt', {\n header: 'Creation Date',\n cell: ({ getValue }) => {\n const date = getValue();\n return <time dateTime={date}>{isoDate(date)}</time>;\n },\n }),\n createOwnershipColumn<DockerConfig>(),\n];\n","import { Clipboard, Plus, Trash2 } from 'lucide-react';\n\nimport { Datatable, TableSettingsMenu } from '@@/datatables';\nimport { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';\nimport { useRepeater } from '@@/datatables/useRepeater';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { DockerConfig } from '../../types';\n\nimport { columns } from './columns';\nimport { createStore } from './store';\n\ninterface Props {\n dataset: Array<DockerConfig>;\n onRemoveClick: (configs: Array<DockerConfig>) => void;\n onRefresh: () => Promise<void>;\n}\n\nconst storageKey = 'docker_configs';\nconst settingsStore = createStore(storageKey);\n\nexport function ConfigsDatatable({ dataset, onRefresh, onRemoveClick }: Props) {\n const tableState = useTableState(settingsStore, storageKey);\n\n useRepeater(tableState.autoRefreshRate, onRefresh);\n\n return (\n <Datatable\n dataset={dataset}\n columns={columns}\n settingsManager={tableState}\n title=\"Configs\"\n titleIcon={Clipboard}\n emptyContentLabel=\"No config available.\"\n renderTableSettings={() => (\n <TableSettingsMenu>\n <TableSettingsMenuAutoRefresh\n value={tableState.autoRefreshRate}\n onChange={(value) => tableState.setAutoRefreshRate(value)}\n />\n </TableSettingsMenu>\n )}\n renderTableActions={(selectedRows) => (\n <div className=\"flex items-center gap-3\">\n <Button\n icon={Trash2}\n color=\"dangerlight\"\n onClick={() => onRemoveClick(selectedRows)}\n disabled={selectedRows.length === 0}\n >\n Remove\n </Button>\n <Button icon={Plus} as={Link} props={{ to: 'docker.configs.new' }}>\n Add config\n </Button>\n </div>\n )}\n />\n );\n}\n","import {\n BasicTableSettings,\n createPersistedStore,\n refreshableSettings,\n RefreshableTableSettings,\n} from '@@/datatables/types';\n\nexport interface TableSettings\n extends BasicTableSettings,\n RefreshableTableSettings {}\n\nexport function createStore(storageKey: string) {\n return createPersistedStore<TableSettings>(storageKey, 'name', (set) => ({\n ...refreshableSettings(set),\n }));\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { FileData } from '../types';\n\nexport const columnHelper = createColumnHelper<FileData>();\n","import { TableMeta } from '@tanstack/react-table';\nimport { ReactNode } from 'react';\n\nexport type FileData = {\n Name: string;\n Dir: boolean;\n Size: number;\n ModTime: number;\n custom: ReactNode;\n};\n\nexport type FilesTableMeta = TableMeta<FileData> & {\n table: 'files';\n isEdit(rowId: string): boolean;\n setIsEdit(rowId: string, isEdit: boolean): void;\n onRename: (oldName: string, newName: string) => void;\n onBrowse: (name: string) => void;\n onDownload: (fileName: string) => void;\n onDelete: (fileName: string) => void;\n};\n\nexport function isFilesTableMeta(\n meta?: TableMeta<FileData>\n): meta is FilesTableMeta {\n return !!meta && meta.table === 'files';\n}\n","import { CellContext } from '@tanstack/react-table';\nimport { Check, File as FileIcon, Folder, X } from 'lucide-react';\nimport { Form, Formik } from 'formik';\n\nimport { Icon } from '@@/Icon';\nimport { Button } from '@@/buttons';\nimport { Input } from '@@/form-components/Input';\n\nimport { FileData, isFilesTableMeta } from '../types';\n\nexport function NameCell({\n getValue,\n row: { original: item },\n table,\n}: CellContext<FileData, string>) {\n const name = getValue();\n const { meta } = table.options;\n if (!isFilesTableMeta(meta)) {\n throw new Error('Invalid table meta');\n }\n const isEdit = meta.isEdit(name);\n\n if (item.custom) {\n return item.custom;\n }\n\n if (isEdit) {\n return (\n <EditForm\n originalName={name}\n onSave={handleRename}\n onClose={() => meta.setIsEdit(name, false)}\n />\n );\n }\n\n return (\n <>\n {item.Dir ? (\n <Button\n color=\"link\"\n className=\"!ml-0 p-0\"\n onClick={() => meta.onBrowse(name)}\n icon={Folder}\n >\n {name}\n </Button>\n ) : (\n <span className=\"vertical-center\">\n <Icon icon={FileIcon} />\n {name}\n </span>\n )}\n </>\n );\n\n function handleRename(name: string) {\n if (!isFilesTableMeta(meta)) {\n throw new Error('Invalid table meta');\n }\n\n meta.onRename(item.Name, name);\n meta.setIsEdit(name, false);\n }\n}\n\nfunction EditForm({\n originalName,\n onSave,\n onClose,\n}: {\n originalName: string;\n onSave: (name: string) => void;\n onClose: () => void;\n}) {\n return (\n <Formik\n initialValues={{ name: originalName }}\n onSubmit={({ name }) => onSave(name)}\n onReset={onClose}\n >\n {({ values, setFieldValue }) => (\n <Form className=\"flex items-center\">\n <Input\n name=\"name\"\n value={values.name}\n onChange={(e) => setFieldValue('name', e.target.value)}\n className=\"input-sm w-auto\"\n />\n\n <Button color=\"none\" type=\"reset\" icon={X} />\n\n <Button color=\"none\" type=\"submit\" icon={Check} />\n </Form>\n )}\n </Formik>\n );\n}\n","import {\n CellContext,\n ColumnDef,\n ColumnDefTemplate,\n} from '@tanstack/react-table';\n\nimport { humanize, isoDateFromTimestamp } from '@/portainer/filters/filters';\n\nimport { FileData } from '../types';\n\nimport { columnHelper } from './helper';\nimport { NameCell } from './NameCell';\nimport { ActionsCell } from './ActionsCell';\n\nexport const columns = [\n columnHelper.accessor('Name', {\n header: 'Name',\n cell: NameCell,\n }),\n columnHelper.accessor('Size', {\n header: 'Size',\n cell: hideIfCustom(({ getValue }) => humanize(getValue())),\n }),\n columnHelper.accessor('ModTime', {\n header: 'Last modification',\n cell: hideIfCustom(({ getValue }) => isoDateFromTimestamp(getValue())),\n }),\n columnHelper.display({\n header: 'Actions',\n cell: hideIfCustom(ActionsCell),\n }),\n columnHelper.accessor('Dir', {}), // workaround, to enable sorting by Dir (put directory first)\n] as ColumnDef<FileData>[];\n\nfunction hideIfCustom<TValue>(\n template: ColumnDefTemplate<CellContext<FileData, TValue>>\n): ColumnDefTemplate<CellContext<FileData, TValue>> {\n return (props) => {\n if (props.row.original.custom) {\n return null;\n }\n return typeof template === 'string' ? template : template(props);\n };\n}\n","import { CellContext } from '@tanstack/react-table';\nimport { Download, Edit, Trash2 } from 'lucide-react';\n\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { Button } from '@@/buttons';\n\nimport { FileData, isFilesTableMeta } from '../types';\n\nexport function ActionsCell({\n row: { original: item },\n table,\n}: CellContext<FileData, unknown>) {\n const { meta } = table.options;\n if (!isFilesTableMeta(meta)) {\n throw new Error('Invalid table meta');\n }\n\n return (\n <div className=\"flex gap-2\">\n {!item.Dir && (\n <Authorized authorizations=\"DockerAgentBrowseGet\">\n <Button\n color=\"secondary\"\n size=\"xsmall\"\n onClick={() => meta.onDownload(item.Name)}\n icon={Download}\n className=\"!m-0\"\n >\n Download\n </Button>\n </Authorized>\n )}\n <Authorized authorizations=\"DockerAgentBrowseRename\">\n <Button\n color=\"secondary\"\n size=\"xsmall\"\n icon={Edit}\n onClick={() => meta.setIsEdit(item.Name, true)}\n className=\"!m-0\"\n >\n Rename\n </Button>\n </Authorized>\n <Authorized authorizations=\"DockerAgentBrowseDelete\">\n <Button\n color=\"dangerlight\"\n size=\"xsmall\"\n icon={Trash2}\n onClick={() => meta.onDelete(item.Name)}\n className=\"!m-0\"\n >\n Delete\n </Button>\n </Authorized>\n </div>\n );\n}\n","import { CornerLeftUp, File as FileIcon, Upload } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { Datatable } from '@@/datatables';\nimport { BasicTableSettings } from '@@/datatables/types';\nimport { Button } from '@@/buttons';\nimport { TableState } from '@@/datatables/useTableState';\n\nimport { FileData, FilesTableMeta } from './types';\nimport { columns } from './columns';\n\ninterface Props {\n title: string;\n dataset: FileData[];\n tableState: TableState<BasicTableSettings>;\n\n isRoot: boolean;\n onGoToParent: () => void;\n onBrowse: (folderName: string) => void;\n onRename: (oldName: string, newName: string) => void;\n onDownload: (fileName: string) => void;\n onDelete: (fileName: string) => void;\n\n isUploadAllowed: boolean;\n onFileSelectedForUpload: (file: File) => void;\n}\n\nfunction goToParent(onClick: () => void): FileData {\n return {\n custom: (\n <Button\n onClick={onClick}\n color=\"link\"\n icon={CornerLeftUp}\n className=\"!m-0 !p-0\"\n >\n Go to parent\n </Button>\n ),\n Dir: true,\n Name: '..',\n Size: 0,\n ModTime: 0,\n };\n}\n\nexport function FilesTable({\n isRoot,\n title,\n dataset,\n tableState,\n onGoToParent,\n onRename,\n onBrowse,\n onDelete,\n onDownload,\n isUploadAllowed,\n onFileSelectedForUpload,\n}: Props) {\n const [isEditState, setIsEditState] = useState(\n Object.fromEntries(dataset.map((f) => [f.Name, false]))\n );\n\n function isEdit(name: string) {\n return isEditState[name];\n }\n\n function setIsEdit(name: string, value: boolean) {\n setIsEditState((editState) => ({ ...editState, [name]: value }));\n }\n\n return (\n <Datatable<FileData, FilesTableMeta>\n title={title}\n titleIcon={FileIcon}\n dataset={isRoot ? dataset : [goToParent(onGoToParent), ...dataset]}\n settingsManager={tableState}\n columns={columns}\n getRowId={(row) => row.Name}\n meta={{\n table: 'files',\n isEdit,\n setIsEdit,\n onRename,\n onBrowse,\n onDownload,\n onDelete,\n }}\n initialTableState={{\n columnVisibility: {\n Dir: false,\n },\n }}\n disableSelect\n renderTableActions={() => {\n if (!isUploadAllowed) {\n return null;\n }\n\n return (\n <Authorized authorizations=\"DockerAgentBrowsePut\">\n <div className=\"flex flex-row items-center\">\n <Button color=\"light\" icon={Upload} as=\"label\">\n <input\n type=\"file\"\n className=\"hidden\"\n onChange={(e) => {\n const file = e.target.files?.[0];\n if (file) {\n onFileSelectedForUpload(file);\n }\n }}\n />\n </Button>\n </div>\n </Authorized>\n );\n }}\n />\n );\n}\n","import { ComponentProps } from 'react';\n\nimport { FilesTable } from '@/react/docker/components/FilesTable';\n\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nconst tableKey = 'host-browser';\n\nconst settingsStore = createPersistedStore(tableKey, {\n desc: true,\n id: 'Dir',\n});\n\ninterface Props\n extends Omit<\n ComponentProps<typeof FilesTable>,\n 'isUploadAllowed' | 'tableState' | 'title'\n > {\n relativePath: string;\n}\n\nexport function AgentHostBrowser({\n relativePath,\n dataset,\n isRoot,\n onBrowse,\n onDelete,\n onDownload,\n onFileSelectedForUpload,\n onGoToParent,\n onRename,\n}: Props) {\n const tableState = useTableState(settingsStore, tableKey);\n\n return (\n <FilesTable\n tableState={tableState}\n dataset={dataset}\n title={`Host browser - ${relativePath}`}\n isRoot={isRoot}\n onRename={onRename}\n onBrowse={onBrowse}\n onDownload={onDownload}\n onDelete={onDelete}\n isUploadAllowed\n onFileSelectedForUpload={onFileSelectedForUpload}\n onGoToParent={onGoToParent}\n />\n );\n}\n","import { ComponentProps } from 'react';\n\nimport { FilesTable } from '@/react/docker/components/FilesTable';\n\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nconst tableKey = 'host-browser';\n\nconst settingsStore = createPersistedStore(tableKey, 'Name');\n\ninterface Props\n extends Omit<\n ComponentProps<typeof FilesTable>,\n 'onSearchChange' | 'tableState' | 'title'\n > {\n relativePath: string;\n}\n\nexport function AgentVolumeBrowser({\n relativePath,\n dataset,\n isRoot,\n onBrowse,\n onDelete,\n onDownload,\n onFileSelectedForUpload,\n onGoToParent,\n onRename,\n isUploadAllowed,\n}: Props) {\n const tableState = useTableState(settingsStore, tableKey);\n\n return (\n <FilesTable\n tableState={tableState}\n dataset={dataset}\n title={`Volume browser - ${relativePath}`}\n isRoot={isRoot}\n onRename={onRename}\n onBrowse={onBrowse}\n onDownload={onDownload}\n onDelete={onDelete}\n isUploadAllowed={isUploadAllowed}\n onFileSelectedForUpload={onFileSelectedForUpload}\n onGoToParent={onGoToParent}\n />\n );\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { withControlledInput } from '@/react-tools/withControlledInput';\nimport { StackContainersDatatable } from '@/react/common/stacks/ItemView/StackContainersDatatable';\nimport { ContainerQuickActions } from '@/react/docker/containers/components/ContainerQuickActions';\nimport { TemplateListDropdownAngular } from '@/react/docker/app-templates/TemplateListDropdown';\nimport { TemplateListSortAngular } from '@/react/docker/app-templates/TemplateListSort';\nimport { Gpu } from '@/react/docker/containers/CreateView/Gpu';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { DockerfileDetails } from '@/react/docker/images/ItemView/DockerfileDetails';\nimport { HealthStatus } from '@/react/docker/containers/ItemView/HealthStatus';\nimport { GpusList } from '@/react/docker/host/SetupView/GpusList';\nimport { GpusInsights } from '@/react/docker/host/SetupView/GpusInsights';\nimport { InsightsBox } from '@/react/components/InsightsBox';\nimport { BetaAlert } from '@/react/portainer/environments/update-schedules/common/BetaAlert';\nimport { ImagesDatatable } from '@/react/docker/images/ListView/ImagesDatatable/ImagesDatatable';\nimport { EventsDatatable } from '@/react/docker/events/EventsDatatables';\nimport { ConfigsDatatable } from '@/react/docker/configs/ListView/ConfigsDatatable';\nimport { AgentHostBrowser } from '@/react/docker/host/BrowseView/AgentHostBrowser';\nimport { AgentVolumeBrowser } from '@/react/docker/volumes/BrowseView/AgentVolumeBrowser';\n\nconst ngModule = angular\n .module('portainer.docker.react.components', [])\n .component('dockerfileDetails', r2a(DockerfileDetails, ['image']))\n .component('dockerHealthStatus', r2a(HealthStatus, ['health']))\n .component(\n 'containerQuickActions',\n r2a(withUIRouter(withCurrentUser(ContainerQuickActions)), [\n 'containerId',\n 'nodeName',\n 'state',\n 'status',\n 'taskId',\n ])\n )\n .component('templateListDropdown', TemplateListDropdownAngular)\n .component('templateListSort', TemplateListSortAngular)\n .component(\n 'stackContainersDatatable',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(StackContainersDatatable))),\n ['environment', 'stackName']\n )\n )\n .component(\n 'gpu',\n r2a(Gpu, [\n 'values',\n 'onChange',\n 'gpus',\n 'usedGpus',\n 'usedAllGpus',\n 'enableGpuManagement',\n ])\n )\n .component(\n 'gpusList',\n r2a(withControlledInput(GpusList), ['value', 'onChange'])\n )\n .component(\n 'insightsBox',\n r2a(InsightsBox, [\n 'header',\n 'content',\n 'insightCloseId',\n 'type',\n 'className',\n ])\n )\n .component('betaAlert', r2a(BetaAlert, ['className', 'message', 'isHtml']))\n .component('gpusInsights', r2a(GpusInsights, []))\n .component(\n 'dockerImagesDatatable',\n r2a(withUIRouter(withCurrentUser(ImagesDatatable)), [\n 'dataset',\n 'environment',\n 'onRemove',\n 'isExportInProgress',\n 'isHostColumnVisible',\n 'onDownload',\n 'onRefresh',\n 'onRemove',\n ])\n )\n .component(\n 'dockerConfigsDatatable',\n r2a(withUIRouter(ConfigsDatatable), [\n 'dataset',\n 'onRemoveClick',\n 'onRefresh',\n ])\n )\n .component(\n 'agentHostBrowserReact',\n r2a(withUIRouter(withCurrentUser(AgentHostBrowser)), [\n 'dataset',\n 'isRoot',\n 'onBrowse',\n 'onDelete',\n 'onDownload',\n 'onFileSelectedForUpload',\n 'onGoToParent',\n 'onRename',\n 'relativePath',\n ])\n )\n .component(\n 'agentVolumeBrowserReact',\n r2a(withUIRouter(withCurrentUser(AgentVolumeBrowser)), [\n 'dataset',\n 'isRoot',\n 'isUploadAllowed',\n 'onBrowse',\n 'onDelete',\n 'onDownload',\n 'onFileSelectedForUpload',\n 'onGoToParent',\n 'onRename',\n 'relativePath',\n ])\n )\n .component('dockerEventsDatatable', r2a(EventsDatatable, ['dataset']));\n\nexport const componentsModule = ngModule.name;\n","import { List } from 'lucide-react';\n\nimport { joinCommand } from '@/docker/filters/utils';\nimport { getPairKey, getPairValue } from '@/portainer/filters/filters';\n\nimport { TableContainer, TableTitle } from '@@/datatables';\nimport { DetailsTable } from '@@/DetailsTable';\n\ninterface DockerImage {\n Command: null | Array<string>;\n Entrypoint: Array<string>;\n ExposedPorts: Array<number>;\n Volumes: Array<string>;\n Env: Array<string>;\n}\n\ninterface Props {\n image: DockerImage;\n}\n\nexport function DockerfileDetails({ image }: Props) {\n return (\n <TableContainer>\n <TableTitle label=\"Dockerfile details\" icon={List} />\n <DetailsTable>\n <DetailsTable.Row label=\"CMD\">\n <code>{image.Command ? joinCommand(image.Command) : '-'}</code>\n </DetailsTable.Row>\n\n {image.Entrypoint && (\n <DetailsTable.Row label=\"ENTRYPOINT\">\n <code>{joinCommand(image.Entrypoint)}</code>\n </DetailsTable.Row>\n )}\n\n {image.ExposedPorts.length > 0 && (\n <DetailsTable.Row label=\"EXPOSE\">\n {image.ExposedPorts.map((port, index) => (\n <span className=\"label label-default space-right\" key={index}>\n {port}\n </span>\n ))}\n </DetailsTable.Row>\n )}\n\n {image.Volumes.length > 0 && (\n <DetailsTable.Row label=\"VOLUME\">\n <div className=\"flex flex-wrap gap-1\">\n {image.Volumes.map((volume, index) => (\n <span key={index} className=\"label label-default space-right\">\n {volume}\n </span>\n ))}\n </div>\n </DetailsTable.Row>\n )}\n\n {image.Env.length > 0 && (\n <DetailsTable.Row label=\"ENV\">\n <table className=\"table-bordered table-condensed table\">\n <tbody>\n {image.Env.map((variable) => (\n <tr key={variable}>\n <td>{getPairKey(variable, '=')}</td>\n <td>{getPairValue(variable, '=')}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </DetailsTable.Row>\n )}\n </DetailsTable>\n </TableContainer>\n );\n}\n","import { InsightsBox } from '@@/InsightsBox';\n\nexport function GpusInsights() {\n return (\n <InsightsBox\n content={\n <>\n <p>\n From 2.18 on, the set-up of available GPUs for a Docker Standalone\n environment has been shifted from Add environment and Environment\n details to Host -> Setup, so as to align with other settings.\n </p>\n <p>\n A toggle has been introduced for enabling/disabling management of\n GPU settings in the Portainer UI - to alleviate the performance\n impact of showing those settings.\n </p>\n <p>\n The UI has been updated to clarify that GPU settings support is only\n for Docker Standalone (and not Docker Swarm, which was never\n supported in the UI).\n </p>\n </>\n }\n header=\"GPU settings update\"\n insightCloseId=\"gpu-settings-update-closed\"\n />\n );\n}\n","import { ContainerId } from '@/react/docker/containers/types';\nimport axios, {\n agentTargetHeader,\n parseAxiosError,\n} from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { NetworkId, DockerNetwork } from './types';\n\ntype NetworkAction = 'connect' | 'disconnect' | 'create';\n\nexport async function getNetwork(\n environmentId: EnvironmentId,\n networkId: NetworkId,\n { nodeName }: { nodeName?: string } = {}\n) {\n try {\n const { data: network } = await axios.get<DockerNetwork>(\n buildUrl(environmentId, networkId),\n nodeName\n ? {\n headers: {\n [agentTargetHeader]: nodeName,\n },\n }\n : undefined\n );\n return network;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve network details');\n }\n}\n\nexport async function deleteNetwork(\n environmentId: EnvironmentId,\n networkId: NetworkId\n) {\n try {\n await axios.delete(buildUrl(environmentId, networkId));\n return networkId;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to remove network');\n }\n}\n\nexport async function disconnectContainer(\n environmentId: EnvironmentId,\n networkId: NetworkId,\n containerId: ContainerId\n) {\n try {\n await axios.post(buildUrl(environmentId, networkId, 'disconnect'), {\n Container: containerId,\n Force: false,\n });\n return { networkId, environmentId };\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to disconnect container from network'\n );\n }\n}\n\nfunction buildUrl(\n environmentId: EnvironmentId,\n networkId?: NetworkId,\n action?: NetworkAction\n) {\n let url = `endpoints/${environmentId}/docker/networks`;\n\n if (networkId) {\n url += `/${networkId}`;\n }\n\n if (action) {\n url += `/${action}`;\n }\n\n return url;\n}\n","const systemNetworks = ['host', 'bridge', 'ingress', 'nat', 'none'];\n\nexport function isSystemNetwork(networkName: string) {\n return systemNetworks.includes(networkName);\n}\n","import { Fragment } from 'react';\nimport { Share2, Trash2 } from 'lucide-react';\n\nimport DockerNetworkHelper from '@/docker/helpers/networkHelper';\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { TableContainer, TableTitle } from '@@/datatables';\nimport { DetailsTable } from '@@/DetailsTable';\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\n\nimport { isSystemNetwork } from '../network.helper';\nimport { DockerNetwork, IPConfig } from '../types';\n\ninterface Props {\n network: DockerNetwork;\n onRemoveNetworkClicked: () => void;\n}\n\nexport function NetworkDetailsTable({\n network,\n onRemoveNetworkClicked,\n}: Props) {\n const allowRemoveNetwork = !isSystemNetwork(network.Name);\n const ipv4Configs: IPConfig[] = DockerNetworkHelper.getIPV4Configs(\n network.IPAM?.Config\n );\n const ipv6Configs: IPConfig[] = DockerNetworkHelper.getIPV6Configs(\n network.IPAM?.Config\n );\n\n return (\n <TableContainer>\n <TableTitle label=\"Network details\" icon={Share2} />\n <DetailsTable dataCy=\"networkDetails-detailsTable\">\n {/* networkRowContent */}\n <DetailsTable.Row label=\"Name\">{network.Name}</DetailsTable.Row>\n <DetailsTable.Row label=\"Id\">\n {network.Id}\n {allowRemoveNetwork && (\n <Authorized authorizations=\"DockerNetworkDelete\">\n <Button\n data-cy=\"networkDetails-deleteNetwork\"\n size=\"xsmall\"\n color=\"danger\"\n onClick={() => onRemoveNetworkClicked()}\n >\n <Icon\n icon={Trash2}\n className=\"space-right\"\n aria-hidden=\"true\"\n />\n Delete this network\n </Button>\n </Authorized>\n )}\n </DetailsTable.Row>\n <DetailsTable.Row label=\"Driver\">{network.Driver}</DetailsTable.Row>\n <DetailsTable.Row label=\"Scope\">{network.Scope}</DetailsTable.Row>\n <DetailsTable.Row label=\"Attachable\">\n {String(network.Attachable)}\n </DetailsTable.Row>\n <DetailsTable.Row label=\"Internal\">\n {String(network.Internal)}\n </DetailsTable.Row>\n\n {/* IPV4 ConfigRowContent */}\n {ipv4Configs.map((config) => (\n <Fragment key={config.Subnet}>\n <DetailsTable.Row\n label={`IPV4 Subnet${getConfigDetails(config.Subnet)}`}\n >\n {`IPV4 Gateway${getConfigDetails(config.Gateway)}`}\n </DetailsTable.Row>\n <DetailsTable.Row\n label={`IPV4 IP Range${getConfigDetails(config.IPRange)}`}\n >\n {`IPV4 Excluded IPs${getAuxiliaryAddresses(\n config.AuxiliaryAddresses\n )}`}\n </DetailsTable.Row>\n </Fragment>\n ))}\n\n {/* IPV6 ConfigRowContent */}\n {ipv6Configs.map((config) => (\n <Fragment key={config.Subnet}>\n <DetailsTable.Row\n label={`IPV6 Subnet${getConfigDetails(config.Subnet)}`}\n >\n {`IPV6 Gateway${getConfigDetails(config.Gateway)}`}\n </DetailsTable.Row>\n <DetailsTable.Row\n label={`IPV6 IP Range${getConfigDetails(config.IPRange)}`}\n >\n {`IPV6 Excluded IPs${getAuxiliaryAddresses(\n config.AuxiliaryAddresses\n )}`}\n </DetailsTable.Row>\n </Fragment>\n ))}\n </DetailsTable>\n </TableContainer>\n );\n\n function getConfigDetails(configValue?: string) {\n return configValue ? ` - ${configValue}` : '';\n }\n\n function getAuxiliaryAddresses(auxiliaryAddresses?: object) {\n return auxiliaryAddresses\n ? ` - ${Object.values(auxiliaryAddresses).join(' - ')}`\n : '';\n }\n}\n","import { Share2 } from 'lucide-react';\n\nimport { TableContainer, TableTitle } from '@@/datatables';\nimport { DetailsTable } from '@@/DetailsTable';\n\nimport { NetworkOptions } from '../types';\n\ntype Props = {\n options: NetworkOptions;\n};\n\nexport function NetworkOptionsTable({ options }: Props) {\n const networkEntries = Object.entries(options);\n\n if (networkEntries.length === 0) {\n return null;\n }\n\n return (\n <TableContainer>\n <TableTitle label=\"Network options\" icon={Share2} />\n <DetailsTable dataCy=\"networkDetails-networkOptionsTable\">\n {networkEntries.map(([key, value]) => (\n <DetailsTable.Row key={key} label={key}>\n {value}\n </DetailsTable.Row>\n ))}\n </DetailsTable>\n </TableContainer>\n );\n}\n","import { Server, Trash2 } from 'lucide-react';\n\nimport { Authorized } from '@/react/hooks/useUser';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { Icon } from '@/react/components/Icon';\n\nimport { TableContainer, TableTitle } from '@@/datatables';\nimport { DetailsTable } from '@@/DetailsTable';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\n\nimport { NetworkContainer, NetworkId } from '../types';\nimport { useDisconnectContainer } from '../queries';\n\ntype Props = {\n networkContainers: NetworkContainer[];\n nodeName: string;\n environmentId: EnvironmentId;\n networkId: NetworkId;\n};\n\nconst tableHeaders = [\n 'Container Name',\n 'IPv4 Address',\n 'IPv6 Address',\n 'MacAddress',\n 'Actions',\n];\n\nexport function NetworkContainersTable({\n networkContainers,\n nodeName,\n environmentId,\n networkId,\n}: Props) {\n const disconnectContainer = useDisconnectContainer();\n\n if (networkContainers.length === 0) {\n return null;\n }\n\n return (\n <TableContainer>\n <TableTitle label=\"Containers in network\" icon={Server} />\n <DetailsTable\n headers={tableHeaders}\n dataCy=\"networkDetails-networkContainers\"\n >\n {networkContainers.map((container) => (\n <tr key={container.Id}>\n <td>\n <Link\n to=\"docker.containers.container\"\n params={{\n id: container.Id,\n nodeName,\n }}\n title={container.Name}\n >\n {container.Name}\n </Link>\n </td>\n <td>{container.IPv4Address || '-'}</td>\n <td>{container.IPv6Address || '-'}</td>\n <td>{container.MacAddress || '-'}</td>\n <td>\n <Authorized authorizations=\"DockerNetworkDisconnect\">\n <Button\n data-cy={`networkDetails-disconnect${container.Name}`}\n size=\"xsmall\"\n color=\"dangerlight\"\n onClick={() => {\n if (container.Id) {\n disconnectContainer.mutate({\n containerId: container.Id,\n environmentId,\n networkId,\n });\n }\n }}\n >\n <Icon icon={Trash2} class-name=\"icon-secondary icon-md\" />\n Leave Network\n </Button>\n </Authorized>\n </td>\n </tr>\n ))}\n </DetailsTable>\n </TableContainer>\n );\n}\n","import { useQuery, useMutation, useQueryClient } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport {\n error as notifyError,\n success as notifySuccess,\n} from '@/portainer/services/notifications';\nimport { ContainerId } from '@/react/docker/containers/types';\n\nimport {\n getNetwork,\n deleteNetwork,\n disconnectContainer,\n} from './network.service';\nimport { NetworkId } from './types';\n\nexport function useNetwork(\n environmentId: EnvironmentId,\n networkId: NetworkId,\n { nodeName }: { nodeName?: string } = {}\n) {\n return useQuery(\n [\n 'environments',\n environmentId,\n 'docker',\n 'networks',\n networkId,\n { nodeName },\n ],\n () => getNetwork(environmentId, networkId, { nodeName }),\n {\n onError: (err) => {\n notifyError('Failure', err as Error, 'Unable to get network');\n },\n }\n );\n}\n\nexport function useDeleteNetwork() {\n return useMutation(\n ({\n environmentId,\n networkId,\n }: {\n environmentId: EnvironmentId;\n networkId: NetworkId;\n }) => deleteNetwork(environmentId, networkId),\n {\n onSuccess: (networkId) => {\n notifySuccess('Network successfully removed', networkId);\n },\n onError: (err) => {\n notifyError('Failure', err as Error, 'Unable to remove network');\n },\n }\n );\n}\n\nexport function useDisconnectContainer() {\n const client = useQueryClient();\n\n return useMutation(\n ({\n containerId,\n environmentId,\n networkId,\n }: {\n containerId: ContainerId;\n environmentId: EnvironmentId;\n networkId: NetworkId;\n }) => disconnectContainer(environmentId, networkId, containerId),\n {\n onSuccess: ({ networkId, environmentId }) => {\n notifySuccess('Container successfully disconnected', networkId);\n return client.invalidateQueries([\n 'environments',\n environmentId,\n 'docker',\n 'networks',\n networkId,\n ]);\n },\n onError: (err) => {\n notifyError(\n 'Failure',\n err as Error,\n 'Unable to disconnect container from network'\n );\n },\n }\n );\n}\n","import { useRouter, useCurrentStateAndParams } from '@uirouter/react';\nimport { useQueryClient } from 'react-query';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport { AccessControlPanel } from '@/react/portainer/access-control/AccessControlPanel/AccessControlPanel';\nimport { ResourceControlType } from '@/react/portainer/access-control/types';\nimport { DockerContainer } from '@/react/docker/containers/types';\nimport { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\nimport { useContainers } from '@/react/docker/containers/queries/containers';\n\nimport { confirmDelete } from '@@/modals/confirm';\nimport { PageHeader } from '@@/PageHeader';\n\nimport { useNetwork, useDeleteNetwork } from '../queries';\nimport { isSystemNetwork } from '../network.helper';\nimport { NetworkResponseContainers } from '../types';\n\nimport { NetworkDetailsTable } from './NetworkDetailsTable';\nimport { NetworkOptionsTable } from './NetworkOptionsTable';\nimport { NetworkContainersTable } from './NetworkContainersTable';\n\nexport function ItemView() {\n const router = useRouter();\n const queryClient = useQueryClient();\n\n const {\n params: { id: networkId, nodeName },\n } = useCurrentStateAndParams();\n const environmentId = useEnvironmentId();\n const networkQuery = useNetwork(environmentId, networkId, { nodeName });\n const deleteNetworkMutation = useDeleteNetwork();\n const containersQuery = useContainers(environmentId, {\n filters: {\n network: [networkId],\n },\n nodeName,\n });\n\n if (!networkQuery.data) {\n return null;\n }\n\n const network = networkQuery.data;\n\n const networkContainers = filterContainersInNetwork(\n network.Containers,\n containersQuery.data\n );\n const resourceControl = network.Portainer?.ResourceControl\n ? new ResourceControlViewModel(network.Portainer.ResourceControl)\n : undefined;\n\n return (\n <>\n <PageHeader\n title=\"Network details\"\n breadcrumbs={[\n { link: 'docker.networks', label: 'Networks' },\n {\n link: 'docker.networks.network',\n label: networkQuery.data.Name,\n },\n ]}\n />\n <NetworkDetailsTable\n network={networkQuery.data}\n onRemoveNetworkClicked={onRemoveNetworkClicked}\n />\n\n <AccessControlPanel\n onUpdateSuccess={() =>\n queryClient.invalidateQueries([\n 'environments',\n environmentId,\n 'docker',\n 'networks',\n networkId,\n ])\n }\n resourceControl={resourceControl}\n resourceType={ResourceControlType.Network}\n disableOwnershipChange={isSystemNetwork(networkQuery.data.Name)}\n resourceId={networkId}\n environmentId={environmentId}\n />\n <NetworkOptionsTable options={networkQuery.data.Options} />\n <NetworkContainersTable\n networkContainers={networkContainers}\n nodeName={nodeName}\n environmentId={environmentId}\n networkId={networkId}\n />\n </>\n );\n\n async function onRemoveNetworkClicked() {\n const message = 'Do you want to delete the network?';\n const confirmed = await confirmDelete(message);\n\n if (confirmed) {\n deleteNetworkMutation.mutate(\n { environmentId, networkId },\n {\n onSuccess: () => {\n router.stateService.go('docker.networks');\n },\n }\n );\n }\n }\n}\n\nfunction filterContainersInNetwork(\n networkContainers?: NetworkResponseContainers,\n containers: DockerContainer[] = []\n) {\n if (!networkContainers) {\n return [];\n }\n\n return containers\n .filter((container) => networkContainers[container.Id])\n .map((container) => ({\n ...networkContainers[container.Id],\n Id: container.Id,\n }));\n}\n","import { Box } from 'lucide-react';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport type { DockerContainer } from '@/react/docker/containers/types';\nimport { useShowGPUsColumn } from '@/react/docker/containers/utils';\n\nimport { Table, Datatable } from '@@/datatables';\nimport {\n buildAction,\n QuickActionsSettings,\n} from '@@/datatables/QuickActionsSettings';\nimport { ColumnVisibilityMenu } from '@@/datatables/ColumnVisibilityMenu';\nimport { TableSettingsProvider } from '@@/datatables/useTableSettings';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { useContainers } from '../../queries/containers';\n\nimport { createStore } from './datatable-store';\nimport { ContainersDatatableSettings } from './ContainersDatatableSettings';\nimport { useColumns } from './columns';\nimport { ContainersDatatableActions } from './ContainersDatatableActions';\nimport { RowProvider } from './RowContext';\n\nconst storageKey = 'containers';\nconst settingsStore = createStore(storageKey);\n\nconst actions = [\n buildAction('logs', 'Logs'),\n buildAction('inspect', 'Inspect'),\n buildAction('stats', 'Stats'),\n buildAction('exec', 'Console'),\n buildAction('attach', 'Attach'),\n];\n\nexport interface Props {\n isHostColumnVisible: boolean;\n environment: Environment;\n}\n\nexport function ContainersDatatable({\n isHostColumnVisible,\n environment,\n}: Props) {\n const isGPUsColumnVisible = useShowGPUsColumn(environment.Id);\n const columns = useColumns(isHostColumnVisible, isGPUsColumnVisible);\n const tableState = useTableState(settingsStore, storageKey);\n\n const containersQuery = useContainers(environment.Id, {\n autoRefreshRate: tableState.autoRefreshRate * 1000,\n });\n\n return (\n <RowProvider context={{ environment }}>\n <TableSettingsProvider settings={settingsStore}>\n <Datatable\n titleIcon={Box}\n title=\"Containers\"\n settingsManager={tableState}\n columns={columns}\n renderTableActions={(selectedRows) => (\n <ContainersDatatableActions\n selectedItems={selectedRows}\n isAddActionVisible\n endpointId={environment.Id}\n />\n )}\n isLoading={containersQuery.isLoading}\n isRowSelectable={(row) => !row.original.IsPortainer}\n initialTableState={{\n columnVisibility: Object.fromEntries(\n tableState.hiddenColumns.map((col) => [col, false])\n ),\n }}\n renderTableSettings={(tableInstance) => {\n const columnsToHide = tableInstance\n .getAllColumns()\n .filter((col) => col.getCanHide());\n\n return (\n <>\n <ColumnVisibilityMenu<DockerContainer>\n columns={columnsToHide}\n onChange={(hiddenColumns) => {\n tableState.setHiddenColumns(hiddenColumns);\n tableInstance.setColumnVisibility(\n Object.fromEntries(\n hiddenColumns.map((col) => [col, false])\n )\n );\n }}\n value={tableState.hiddenColumns}\n />\n <Table.SettingsMenu\n quickActions={<QuickActionsSettings actions={actions} />}\n >\n <ContainersDatatableSettings\n isRefreshVisible\n settings={tableState}\n />\n </Table.SettingsMenu>\n </>\n );\n }}\n dataset={containersQuery.data || []}\n emptyContentLabel=\"No containers found\"\n />\n </TableSettingsProvider>\n </RowProvider>\n );\n}\n","const autoNgTemplateLoaderTemplate1 = require('@/docker/views/containers/edit/container.html');\nconst autoNgTemplateLoaderTemplate2 = require('@/docker/views/containers/console/attach.html');\nconst autoNgTemplateLoaderTemplate3 = require('@/docker/views/containers/console/exec.html');\nconst autoNgTemplateLoaderTemplate4 = require('@/docker/views/containers/create/createcontainer.html');\nconst autoNgTemplateLoaderTemplate5 = require('@/docker/views/containers/inspect/containerinspect.html');\nconst autoNgTemplateLoaderTemplate6 = require('@/docker/views/containers/logs/containerlogs.html');\nconst autoNgTemplateLoaderTemplate7 = require('@/docker/views/containers/stats/containerstats.html');\n\nimport { StateRegistry } from '@uirouter/angularjs';\nimport angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { ListView } from '@/react/docker/containers/ListView';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\n\nexport const containersModule = angular\n .module('portainer.docker.containers', [])\n .component(\n 'containersView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ListView))), ['endpoint'])\n )\n\n .config(config).name;\n\n/* @ngInject */\nfunction config($stateRegistryProvider: StateRegistry) {\n $stateRegistryProvider.register({\n name: 'docker.containers',\n url: '/containers',\n views: {\n 'content@': {\n component: 'containersView',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'docker.containers.container',\n url: '/:id?nodeName',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'ContainerController',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'docker.containers.container.attach',\n url: '/attach',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate2,\n controller: 'ContainerConsoleController',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'docker.containers.container.exec',\n url: '/exec',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate3,\n controller: 'ContainerConsoleController',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'docker.containers.new',\n url: '/new?nodeName&from',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate4,\n controller: 'CreateContainerController',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'docker.containers.container.inspect',\n url: '/inspect',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate5,\n controller: 'ContainerInspectController',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'docker.containers.container.logs',\n url: '/logs',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate6,\n controller: 'ContainerLogsController',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'docker.containers.container.stats',\n url: '/stats',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate7,\n controller: 'ContainerStatsController',\n },\n },\n });\n}\n","import { useInfo } from '@/docker/services/system.service';\nimport { Environment } from '@/react/portainer/environments/types';\nimport { isAgentEnvironment } from '@/react/portainer/environments/utils';\n\nimport { PageHeader } from '@@/PageHeader';\n\nimport { ContainersDatatable } from './ContainersDatatable';\n\ninterface Props {\n endpoint: Environment;\n}\n\nexport function ListView({ endpoint: environment }: Props) {\n const isAgent = isAgentEnvironment(environment.Type);\n\n const envInfoQuery = useInfo(environment.Id, (info) => !!info.Swarm?.NodeID);\n\n const isSwarmManager = !!envInfoQuery.data;\n const isHostColumnVisible = isAgent && isSwarmManager;\n return (\n <>\n <PageHeader\n title=\"Container list\"\n breadcrumbs={[{ label: 'Containers' }]}\n reload\n />\n\n <ContainersDatatable\n isHostColumnVisible={isHostColumnVisible}\n environment={environment}\n />\n </>\n );\n}\n","import angular from 'angular';\n\nimport { ItemView as NetworksItemView } from '@/react/docker/networks/ItemView';\nimport { r2a } from '@/react-tools/react2angular';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\n\nimport { containersModule } from './containers';\n\nexport const viewsModule = angular\n .module('portainer.docker.react.views', [containersModule])\n\n .component(\n 'networkDetailsView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(NetworksItemView))), [])\n ).name;\n","import angular from 'angular';\n\nimport { componentsModule } from './components';\nimport { viewsModule } from './views';\n\nexport const reactModule = angular.module('portainer.docker.react', [\n viewsModule,\n componentsModule,\n]).name;\n","const autoNgTemplateLoaderTemplate1 = require('./views/configs/configs.html');\nconst autoNgTemplateLoaderTemplate2 = require('./views/configs/edit/config.html');\nconst autoNgTemplateLoaderTemplate3 = require('./views/configs/create/createconfig.html');\nconst autoNgTemplateLoaderTemplate4 = require('./views/dashboard/dashboard.html');\nconst autoNgTemplateLoaderTemplate5 = require('./views/events/events.html');\nconst autoNgTemplateLoaderTemplate6 = require('./views/images/images.html');\nconst autoNgTemplateLoaderTemplate7 = require('./views/images/edit/image.html');\nconst autoNgTemplateLoaderTemplate8 = require('./views/images/build/buildimage.html');\nconst autoNgTemplateLoaderTemplate9 = require('./views/images/import/importimage.html');\nconst autoNgTemplateLoaderTemplate10 = require('./views/networks/networks.html');\nconst autoNgTemplateLoaderTemplate11 = require('./views/networks/create/createnetwork.html');\nconst autoNgTemplateLoaderTemplate12 = require('./views/secrets/secrets.html');\nconst autoNgTemplateLoaderTemplate13 = require('./views/secrets/edit/secret.html');\nconst autoNgTemplateLoaderTemplate14 = require('./views/secrets/create/createsecret.html');\nconst autoNgTemplateLoaderTemplate15 = require('./views/services/services.html');\nconst autoNgTemplateLoaderTemplate16 = require('./views/services/edit/service.html');\nconst autoNgTemplateLoaderTemplate17 = require('./views/services/create/createservice.html');\nconst autoNgTemplateLoaderTemplate18 = require('./views/services/logs/servicelogs.html');\nconst autoNgTemplateLoaderTemplate19 = require('Portainer/views/stacks/stacks.html');\nconst autoNgTemplateLoaderTemplate20 = require('Portainer/views/stacks/edit/stack.html');\nconst autoNgTemplateLoaderTemplate21 = require('@/docker/views/containers/edit/container.html');\nconst autoNgTemplateLoaderTemplate22 = require('Portainer/views/stacks/create/createstack.html');\nconst autoNgTemplateLoaderTemplate23 = require('./views/swarm/swarm.html');\nconst autoNgTemplateLoaderTemplate24 = require('./views/swarm/visualizer/swarmvisualizer.html');\nconst autoNgTemplateLoaderTemplate25 = require('./views/tasks/edit/task.html');\nconst autoNgTemplateLoaderTemplate26 = require('./views/tasks/logs/tasklogs.html');\nconst autoNgTemplateLoaderTemplate27 = require('Portainer/views/templates/templates.html');\nconst autoNgTemplateLoaderTemplate28 = require('./views/volumes/volumes.html');\nconst autoNgTemplateLoaderTemplate29 = require('./views/volumes/edit/volume.html');\nconst autoNgTemplateLoaderTemplate30 = require('./views/volumes/browse/browsevolume.html');\nconst autoNgTemplateLoaderTemplate31 = require('./views/volumes/create/createvolume.html');\n\nimport angular from 'angular';\n\nimport { PortainerEndpointTypes } from 'Portainer/models/endpoint/models';\n\nimport { EnvironmentStatus } from '@/react/portainer/environments/types';\n\nimport { reactModule } from './react';\n\nangular.module('portainer.docker', ['portainer.app', reactModule]).config([\n '$stateRegistryProvider',\n function ($stateRegistryProvider) {\n 'use strict';\n\n var docker = {\n name: 'docker',\n parent: 'endpoint',\n url: '/docker',\n abstract: true,\n onEnter: /* @ngInject */ function onEnter(endpoint, $async, $state, EndpointService, Notifications, StateManager, SystemService) {\n return $async(async () => {\n const dockerTypes = [PortainerEndpointTypes.DockerEnvironment, PortainerEndpointTypes.AgentOnDockerEnvironment, PortainerEndpointTypes.EdgeAgentOnDockerEnvironment];\n\n if (!dockerTypes.includes(endpoint.Type)) {\n $state.go('portainer.home');\n return;\n }\n\n try {\n const status = await checkEndpointStatus(endpoint);\n\n if (endpoint.Type !== PortainerEndpointTypes.EdgeAgentOnDockerEnvironment) {\n await updateEndpointStatus(endpoint, status);\n }\n endpoint.Status = status;\n\n if (status === EnvironmentStatus.Down) {\n throw new Error('Environment is unreachable.');\n }\n\n await StateManager.updateEndpointState(endpoint);\n } catch (e) {\n let params = {};\n\n if (endpoint.Type == PortainerEndpointTypes.EdgeAgentOnDockerEnvironment) {\n params = { redirect: true, environmentId: endpoint.Id, environmentName: endpoint.Name, route: 'docker.dashboard' };\n } else {\n Notifications.error('Failed loading environment', e);\n }\n $state.go('portainer.home', params, { reload: true, inherit: false });\n }\n\n async function checkEndpointStatus(endpoint) {\n try {\n await SystemService.ping(endpoint.Id);\n return EnvironmentStatus.Up;\n } catch (e) {\n return EnvironmentStatus.Down;\n }\n }\n\n async function updateEndpointStatus(endpoint, status) {\n if (endpoint.Status === status) {\n return;\n }\n await EndpointService.updateEndpoint(endpoint.Id, { Status: status });\n }\n });\n },\n };\n\n var configs = {\n name: 'docker.configs',\n url: '/configs',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'ConfigsController',\n controllerAs: 'ctrl',\n },\n },\n };\n\n var config = {\n name: 'docker.configs.config',\n url: '/:id',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate2,\n controller: 'ConfigController',\n },\n },\n };\n\n var configCreation = {\n name: 'docker.configs.new',\n url: '/new?id',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate3,\n controller: 'CreateConfigController',\n controllerAs: 'ctrl',\n },\n },\n };\n\n const customTemplates = {\n name: 'docker.templates.custom',\n url: '/custom',\n\n views: {\n 'content@': {\n component: 'customTemplatesView',\n },\n },\n };\n\n const customTemplatesNew = {\n name: 'docker.templates.custom.new',\n url: '/new?fileContent&type',\n\n views: {\n 'content@': {\n component: 'createCustomTemplateView',\n },\n },\n params: {\n fileContent: '',\n type: '',\n },\n };\n\n const customTemplatesEdit = {\n name: 'docker.templates.custom.edit',\n url: '/:id',\n\n views: {\n 'content@': {\n component: 'editCustomTemplateView',\n },\n },\n };\n\n var dashboard = {\n name: 'docker.dashboard',\n url: '/dashboard',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate4,\n controller: 'DashboardController',\n },\n },\n };\n\n var host = {\n name: 'docker.host',\n url: '/host',\n views: {\n 'content@': {\n component: 'hostView',\n },\n },\n };\n\n var hostBrowser = {\n name: 'docker.host.browser',\n url: '/browser',\n views: {\n 'content@': {\n component: 'hostBrowserView',\n },\n },\n };\n\n var events = {\n name: 'docker.events',\n url: '/events',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate5,\n controller: 'EventsController',\n },\n },\n };\n\n var images = {\n name: 'docker.images',\n url: '/images',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate6,\n controller: 'ImagesController',\n },\n },\n };\n\n var image = {\n name: 'docker.images.image',\n url: '/:id?nodeName',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate7,\n controller: 'ImageController',\n },\n },\n };\n\n var imageBuild = {\n name: 'docker.images.build',\n url: '/build',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate8,\n controller: 'BuildImageController',\n },\n },\n };\n\n var imageImport = {\n name: 'docker.images.import',\n url: '/import',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate9,\n controller: 'ImportImageController',\n },\n },\n };\n\n var networks = {\n name: 'docker.networks',\n url: '/networks',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate10,\n controller: 'NetworksController',\n },\n },\n };\n\n var network = {\n name: 'docker.networks.network',\n url: '/:id?nodeName',\n views: {\n 'content@': {\n component: 'networkDetailsView',\n },\n },\n };\n\n var networkCreation = {\n name: 'docker.networks.new',\n url: '/new',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate11,\n controller: 'CreateNetworkController',\n },\n },\n };\n\n var nodes = {\n name: 'docker.nodes',\n url: '/nodes',\n abstract: true,\n };\n\n var node = {\n name: 'docker.nodes.node',\n url: '/:id',\n views: {\n 'content@': {\n component: 'nodeDetailsView',\n },\n },\n };\n\n var nodeBrowser = {\n name: 'docker.nodes.node.browse',\n url: '/browse',\n views: {\n 'content@': {\n component: 'nodeBrowserView',\n },\n },\n };\n\n var secrets = {\n name: 'docker.secrets',\n url: '/secrets',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate12,\n controller: 'SecretsController',\n },\n },\n };\n\n var secret = {\n name: 'docker.secrets.secret',\n url: '/:id',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate13,\n controller: 'SecretController',\n },\n },\n };\n\n var secretCreation = {\n name: 'docker.secrets.new',\n url: '/new',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate14,\n controller: 'CreateSecretController',\n },\n },\n };\n\n var services = {\n name: 'docker.services',\n url: '/services',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate15,\n controller: 'ServicesController',\n },\n },\n };\n\n var service = {\n name: 'docker.services.service',\n url: '/:id',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate16,\n controller: 'ServiceController',\n },\n },\n };\n\n var serviceCreation = {\n name: 'docker.services.new',\n url: '/new',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate17,\n controller: 'CreateServiceController',\n },\n },\n };\n\n var serviceLogs = {\n name: 'docker.services.service.logs',\n url: '/logs',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate18,\n controller: 'ServiceLogsController',\n },\n },\n };\n\n var stacks = {\n name: 'docker.stacks',\n url: '/stacks',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate19,\n controller: 'StacksController',\n },\n },\n };\n\n var stack = {\n name: 'docker.stacks.stack',\n url: '/:name?id&type®ular&external&orphaned&orphanedRunning',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate20,\n controller: 'StackController',\n },\n },\n };\n\n var stackContainer = {\n name: 'docker.stacks.stack.container',\n url: '/:id?nodeName',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate21,\n controller: 'ContainerController',\n },\n },\n };\n\n var stackCreation = {\n name: 'docker.stacks.newstack',\n url: '/newstack',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate22,\n controller: 'CreateStackController',\n },\n },\n };\n\n var swarm = {\n name: 'docker.swarm',\n url: '/swarm',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate23,\n controller: 'SwarmController',\n },\n },\n };\n\n var swarmVisualizer = {\n name: 'docker.swarm.visualizer',\n url: '/visualizer',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate24,\n controller: 'SwarmVisualizerController',\n },\n },\n };\n\n var tasks = {\n name: 'docker.tasks',\n url: '/tasks',\n abstract: true,\n };\n\n var task = {\n name: 'docker.tasks.task',\n url: '/:id',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate25,\n controller: 'TaskController',\n },\n },\n };\n\n var taskLogs = {\n name: 'docker.tasks.task.logs',\n url: '/logs',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate26,\n controller: 'TaskLogsController',\n },\n },\n };\n\n var templates = {\n name: 'docker.templates',\n url: '/templates',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate27,\n controller: 'TemplatesController',\n },\n },\n };\n\n var volumes = {\n name: 'docker.volumes',\n url: '/volumes',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate28,\n controller: 'VolumesController',\n },\n },\n };\n\n var volume = {\n name: 'docker.volumes.volume',\n url: '/:id?nodeName',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate29,\n controller: 'VolumeController',\n },\n },\n };\n\n var volumeBrowse = {\n name: 'docker.volumes.volume.browse',\n url: '/browse',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate30,\n controller: 'BrowseVolumeController',\n },\n },\n };\n\n var volumeCreation = {\n name: 'docker.volumes.new',\n url: '/new',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate31,\n controller: 'CreateVolumeController',\n },\n },\n };\n\n const dockerFeaturesConfiguration = {\n name: 'docker.host.featuresConfiguration',\n url: '/feat-config',\n views: {\n 'content@': {\n component: 'dockerFeaturesConfigurationView',\n },\n },\n };\n\n const swarmFeaturesConfiguration = {\n name: 'docker.swarm.featuresConfiguration',\n url: '/feat-config',\n views: {\n 'content@': {\n component: 'dockerFeaturesConfigurationView',\n },\n },\n };\n\n const dockerRegistries = {\n name: 'docker.host.registries',\n url: '/registries',\n views: {\n 'content@': {\n component: 'endpointRegistriesView',\n },\n },\n };\n\n const swarmRegistries = {\n name: 'docker.swarm.registries',\n url: '/registries',\n views: {\n 'content@': {\n component: 'endpointRegistriesView',\n },\n },\n };\n\n const dockerRegistryAccess = {\n name: 'docker.host.registries.access',\n url: '/:id/access',\n views: {\n 'content@': {\n component: 'dockerRegistryAccessView',\n },\n },\n };\n\n const swarmRegistryAccess = {\n name: 'docker.swarm.registries.access',\n url: '/:id/access',\n views: {\n 'content@': {\n component: 'dockerRegistryAccessView',\n },\n },\n };\n\n $stateRegistryProvider.register(configs);\n $stateRegistryProvider.register(config);\n $stateRegistryProvider.register(configCreation);\n\n $stateRegistryProvider.register(customTemplates);\n $stateRegistryProvider.register(customTemplatesNew);\n $stateRegistryProvider.register(customTemplatesEdit);\n $stateRegistryProvider.register(docker);\n $stateRegistryProvider.register(dashboard);\n $stateRegistryProvider.register(host);\n $stateRegistryProvider.register(hostBrowser);\n $stateRegistryProvider.register(events);\n $stateRegistryProvider.register(images);\n $stateRegistryProvider.register(image);\n $stateRegistryProvider.register(imageBuild);\n $stateRegistryProvider.register(imageImport);\n $stateRegistryProvider.register(networks);\n $stateRegistryProvider.register(network);\n $stateRegistryProvider.register(networkCreation);\n $stateRegistryProvider.register(nodes);\n $stateRegistryProvider.register(node);\n $stateRegistryProvider.register(nodeBrowser);\n $stateRegistryProvider.register(secrets);\n $stateRegistryProvider.register(secret);\n $stateRegistryProvider.register(secretCreation);\n $stateRegistryProvider.register(services);\n $stateRegistryProvider.register(service);\n $stateRegistryProvider.register(serviceCreation);\n $stateRegistryProvider.register(serviceLogs);\n $stateRegistryProvider.register(stacks);\n $stateRegistryProvider.register(stack);\n $stateRegistryProvider.register(stackContainer);\n $stateRegistryProvider.register(stackCreation);\n $stateRegistryProvider.register(swarm);\n $stateRegistryProvider.register(swarmVisualizer);\n $stateRegistryProvider.register(tasks);\n $stateRegistryProvider.register(task);\n $stateRegistryProvider.register(taskLogs);\n $stateRegistryProvider.register(templates);\n $stateRegistryProvider.register(volumes);\n $stateRegistryProvider.register(volume);\n $stateRegistryProvider.register(volumeBrowse);\n $stateRegistryProvider.register(volumeCreation);\n $stateRegistryProvider.register(dockerFeaturesConfiguration);\n $stateRegistryProvider.register(swarmFeaturesConfiguration);\n $stateRegistryProvider.register(dockerRegistries);\n $stateRegistryProvider.register(swarmRegistries);\n $stateRegistryProvider.register(dockerRegistryAccess);\n $stateRegistryProvider.register(swarmRegistryAccess);\n },\n]);\n","export default class ContainerCapabilitiesController {\n /* @ngInject */\n constructor($scope) {\n this.$scope = $scope;\n\n this.oldCapabilities = [];\n }\n\n createOnChangeHandler(capability) {\n return (checked) => {\n this.$scope.$evalAsync(() => {\n capability.allowed = checked;\n });\n };\n }\n\n $doCheck() {\n if (this.oldCapabilities.length !== this.capabilities.length) {\n this.oldCapabilities = this.capabilities;\n this.capabilitiesOnChange = Object.fromEntries(this.capabilities.map((cap) => [cap.capability, this.createOnChangeHandler(cap)]));\n }\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./containerCapabilities.html');\n\nimport controller from './container-capabilities.controller';\n\nangular.module('portainer.docker').component('containerCapabilities', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n capabilities: '=',\n },\n controller,\n});\n","angular.module('portainer.docker').controller('ContainerRestartPolicyController', [\n function ContainerRestartPolicyController() {\n var ctrl = this;\n\n this.state = {\n editModel: {},\n };\n\n ctrl.save = save;\n\n function save() {\n if (ctrl.state.editModel.name === ctrl.name && ctrl.state.editModel.maximumRetryCount === ctrl.maximumRetryCount) {\n return;\n }\n ctrl.updateRestartPolicy(ctrl.state.editModel);\n }\n\n this.$onInit = function () {\n ctrl.state.editModel = {\n name: ctrl.name ? ctrl.name : 'no',\n maximumRetryCount: ctrl.maximumRetryCount,\n };\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./container-restart-policy.html');\n\nangular.module('portainer.docker').component('containerRestartPolicy', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'ContainerRestartPolicyController',\n bindings: {\n name: '<',\n maximumRetryCount: '<',\n updateRestartPolicy: '&',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./dashboardClusterAgentInfo.html');\n\nangular.module('portainer.docker').component('dashboardClusterAgentInfo', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'DashboardClusterAgentInfoController',\n bindings: {\n endpointId: '<',\n },\n});\n","angular.module('portainer.docker').controller('DashboardClusterAgentInfoController', [\n 'AgentService',\n 'Notifications',\n function (AgentService, Notifications) {\n var ctrl = this;\n\n this.$onInit = function () {\n AgentService.agents(ctrl.endpointId)\n .then(function success(data) {\n ctrl.agentCount = data.length;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve agent information');\n });\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./containerNetworksDatatable.html');\n\nangular.module('portainer.docker').component('containerNetworksDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'ContainerNetworksDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n container: '<',\n availableNetworks: '<',\n joinNetworkAction: '<',\n joinNetworkActionInProgress: '<',\n leaveNetworkActionInProgress: '<',\n leaveNetworkAction: '<',\n nodeName: '<',\n },\n});\n","import _ from 'lodash-es';\n\nangular.module('portainer.docker').controller('ContainerNetworksDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n this.state = Object.assign(this.state, {\n expandedItems: [],\n expandAll: true,\n });\n\n this.expandItem = function (item, expanded) {\n if (!this.itemCanExpand(item)) {\n return;\n }\n\n item.Expanded = expanded;\n if (!expanded) {\n item.Highlighted = false;\n }\n if (!item.Expanded) {\n this.state.expandAll = false;\n }\n };\n\n this.itemCanExpand = function (item) {\n return item.GlobalIPv6Address !== '';\n };\n\n this.hasExpandableItems = function () {\n return _.filter(this.dataset, (item) => this.itemCanExpand(item)).length;\n };\n\n this.expandAll = function () {\n this.state.expandAll = !this.state.expandAll;\n _.forEach(this.dataset, (item) => {\n if (this.itemCanExpand(item)) {\n this.expandItem(item, this.state.expandAll);\n }\n });\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n\n _.forEach(this.dataset, (item) => {\n item.Expanded = true;\n item.Highlighted = true;\n });\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./containerProcessesDatatable.html');\n\nangular.module('portainer.docker').component('containerProcessesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '=',\n headerset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./macvlanNodesDatatable.html');\n\nangular.module('portainer.docker').component('macvlanNodesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n showIpAddressColumn: '<',\n accessToNodeDetails: '<',\n state: '=',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./networkRowContent.html');\n\nimport { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types';\n\nangular.module('portainer.docker').directive('networkRowContent', [\n function networkRowContent() {\n var directive = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n restrict: 'A',\n transclude: true,\n scope: {\n item: '<',\n parentCtrl: '<',\n allowCheckbox: '<',\n allowExpand: '<',\n },\n controller: ($scope) => {\n $scope.RCO = RCO;\n },\n };\n return directive;\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./networksDatatable.html');\n\nangular.module('portainer.docker').component('networksDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'NetworksDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n showHostColumn: '<',\n removeAction: '<',\n refreshCallback: '<',\n },\n});\n","import _ from 'lodash-es';\n\nangular.module('portainer.docker').controller('NetworksDatatableController', [\n '$scope',\n '$controller',\n 'NetworkHelper',\n 'DatatableService',\n function ($scope, $controller, NetworkHelper, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.disableRemove = function (item) {\n return NetworkHelper.isSystemNetwork(item);\n };\n\n this.state = Object.assign(this.state, {\n expandedItems: [],\n });\n\n /**\n * Do not allow system networks to be selected\n */\n this.allowSelection = function (item) {\n return !this.disableRemove(item);\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n\n this.expandItem = function (item, expanded) {\n item.Expanded = expanded;\n };\n\n this.itemCanExpand = function (item) {\n return item.Subs.length > 0;\n };\n\n this.hasExpandableItems = function () {\n return _.filter(this.state.filteredDataSet, (item) => this.itemCanExpand(item)).length;\n };\n\n this.expandAll = function () {\n this.state.expandAll = !this.state.expandAll;\n _.forEach(this.state.filteredDataSet, (item) => {\n if (this.itemCanExpand(item)) {\n this.expandItem(item, this.state.expandAll);\n }\n });\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./nodeTasksDatatable.html');\n\nangular.module('portainer.docker').component('nodeTasksDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./nodesDatatable.html');\n\nangular.module('portainer.docker').component('nodesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n showIpAddressColumn: '<',\n accessToNodeDetails: '<',\n refreshCallback: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./secretsDatatable.html');\n\nangular.module('portainer.docker').component('secretsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n refreshCallback: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./serviceTasksDatatable.html');\n\nangular.module('portainer.docker').component('serviceTasksDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'ServiceTasksDatatableController',\n bindings: {\n dataset: '<',\n serviceId: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n nodes: '<',\n agentProxy: '<',\n textFilter: '=',\n showTaskLogsButton: '<',\n },\n});\n","import _ from 'lodash-es';\n\nangular.module('portainer.docker').controller('ServiceTasksDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n var ctrl = this;\n\n this.state = Object.assign(this.state, {\n showQuickActionStats: true,\n showQuickActionLogs: true,\n showQuickActionConsole: true,\n showQuickActionInspect: true,\n showQuickActionExec: true,\n showQuickActionAttach: false,\n });\n\n this.filters = {\n state: {\n open: false,\n enabled: false,\n values: [],\n },\n };\n\n this.applyFilters = function (item) {\n var filters = ctrl.filters;\n for (var i = 0; i < filters.state.values.length; i++) {\n var filter = filters.state.values[i];\n if (item.Status.State === filter.label && filter.display) {\n return true;\n }\n }\n return false;\n };\n\n this.onStateFilterChange = function () {\n var filters = this.filters.state.values;\n var filtered = false;\n for (var i = 0; i < filters.length; i++) {\n var filter = filters[i];\n if (!filter.display) {\n filtered = true;\n }\n }\n this.filters.state.enabled = filtered;\n };\n\n this.prepareTableFromDataset = function () {\n var availableStateFilters = [];\n for (var i = 0; i < this.dataset.length; i++) {\n var item = this.dataset[i];\n availableStateFilters.push({ label: item.Status.State, display: true });\n }\n this.filters.state.values = _.uniqBy(availableStateFilters, 'label');\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./servicesDatatableActions.html');\n\nangular.module('portainer.docker').component('servicesDatatableActions', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'ServicesDatatableActionsController',\n bindings: {\n selectedItems: '=',\n selectedItemCount: '=',\n showUpdateAction: '<',\n showAddAction: '<',\n endpointId: '<',\n },\n});\n","import { confirmDelete } from '@@/modals/confirm';\nimport { confirmServiceForceUpdate } from '@/react/docker/services/common/update-service-modal';\n\nangular.module('portainer.docker').controller('ServicesDatatableActionsController', [\n '$q',\n '$state',\n 'ServiceService',\n 'ServiceHelper',\n 'Notifications',\n 'ImageHelper',\n 'WebhookService',\n function ($q, $state, ServiceService, ServiceHelper, Notifications, ImageHelper, WebhookService) {\n const ctrl = this;\n\n this.scaleAction = function scaleService(service) {\n var config = ServiceHelper.serviceToConfig(service.Model);\n config.Mode.Replicated.Replicas = service.Replicas;\n ServiceService.update(service, config)\n .then(function success() {\n Notifications.success('Service successfully scaled', 'New replica count: ' + service.Replicas);\n $state.reload();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to scale service');\n service.Scale = false;\n service.Replicas = service.ReplicaCount;\n });\n };\n\n this.removeAction = function (selectedItems) {\n confirmDelete('Do you want to remove the selected service(s)? All the containers associated to the selected service(s) will be removed too.').then((confirmed) => {\n if (!confirmed) {\n return;\n }\n removeServices(selectedItems);\n });\n };\n\n this.updateAction = function (selectedItems) {\n confirmServiceForceUpdate('Do you want to force an update of the selected service(s)? All the tasks associated to the selected service(s) will be recreated.').then(\n (result) => {\n if (!result) {\n return;\n }\n\n forceUpdateServices(selectedItems, result.pullLatest);\n }\n );\n };\n\n function forceUpdateServices(services, pullImage) {\n var actionCount = services.length;\n angular.forEach(services, function (service) {\n var config = ServiceHelper.serviceToConfig(service.Model);\n if (pullImage) {\n config.TaskTemplate.ContainerSpec.Image = ImageHelper.removeDigestFromRepository(config.TaskTemplate.ContainerSpec.Image);\n }\n\n // As explained in https://github.com/docker/swarmkit/issues/2364 ForceUpdate can accept a random\n // value or an increment of the counter value to force an update.\n config.TaskTemplate.ForceUpdate++;\n ServiceService.update(service, config)\n .then(function success() {\n Notifications.success('Service successfully updated', service.Name);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to force update service' + service.Name);\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n }\n\n function removeServices(services) {\n var actionCount = services.length;\n angular.forEach(services, function (service) {\n ServiceService.remove(service)\n .then(function success() {\n return WebhookService.webhooks(service.Id, ctrl.endpointId);\n })\n .then(function success(data) {\n return $q.when(data.length !== 0 && WebhookService.deleteWebhook(data[0].Id));\n })\n .then(function success() {\n Notifications.success('Service successfully removed', service.Name);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove service');\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n }\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./servicesDatatable.html');\n\nangular.module('portainer.docker').component('servicesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'ServicesDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n nodes: '<',\n agentProxy: '<',\n showUpdateAction: '<',\n showAddAction: '<',\n showStackColumn: '<',\n showTaskLogsButton: '<',\n refreshCallback: '<',\n notAutoFocus: '<',\n endpointPublicUrl: '<',\n endpointId: '<',\n },\n});\n","import _ from 'lodash-es';\n\nangular.module('portainer.docker').controller('ServicesDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n var ctrl = this;\n\n this.state = Object.assign(this.state, {\n expandAll: false,\n expandedItems: [],\n });\n\n this.columnVisibility = {\n columns: {\n image: {\n label: 'Image',\n display: true,\n },\n ownership: {\n label: 'OwnerShip',\n display: true,\n },\n ports: {\n label: 'Published Ports',\n display: true,\n },\n updated: {\n label: 'Last Update',\n display: true,\n },\n },\n };\n\n this.onColumnVisibilityChange = onColumnVisibilityChange.bind(this);\n function onColumnVisibilityChange(columns) {\n this.columnVisibility.columns = columns;\n DatatableService.setColumnVisibilitySettings(this.tableKey, this.columnVisibility);\n }\n\n this.expandAll = function () {\n this.state.expandAll = !this.state.expandAll;\n for (var i = 0; i < this.state.filteredDataSet.length; i++) {\n var item = this.state.filteredDataSet[i];\n this.expandItem(item, this.state.expandAll);\n }\n };\n\n this.expandItem = function (item, expanded) {\n item.Expanded = expanded;\n if (item.Expanded) {\n if (this.state.expandedItems.indexOf(item.Id) === -1) {\n this.state.expandedItems.push(item.Id);\n }\n } else {\n var index = this.state.expandedItems.indexOf(item.Id);\n if (index > -1) {\n this.state.expandedItems.splice(index, 1);\n }\n }\n DatatableService.setDataTableExpandedItems(this.tableKey, this.state.expandedItems);\n };\n\n function expandPreviouslyExpandedItem(item, storedExpandedItems) {\n var expandedItem = _.find(storedExpandedItems, function (storedId) {\n return item.Id === storedId;\n });\n\n if (expandedItem) {\n ctrl.expandItem(item, true);\n }\n }\n\n this.expandItems = function (storedExpandedItems) {\n var expandedItemCount = 0;\n this.state.expandedItems = storedExpandedItems;\n\n for (var i = 0; i < this.dataset.length; i++) {\n var item = this.dataset[i];\n expandPreviouslyExpandedItem(item, storedExpandedItems);\n if (item.Expanded) {\n ++expandedItemCount;\n }\n }\n\n if (expandedItemCount === this.dataset.length) {\n this.state.expandAll = true;\n }\n };\n\n this.onDataRefresh = function () {\n var storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey);\n if (storedExpandedItems !== null) {\n this.expandItems(storedExpandedItems);\n }\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey);\n if (storedExpandedItems !== null) {\n this.expandItems(storedExpandedItems);\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);\n if (storedColumnVisibility !== null) {\n this.columnVisibility = storedColumnVisibility;\n }\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./tasksDatatable.html');\n\nangular.module('portainer.docker').component('tasksDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'TasksDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n nodes: '<',\n showSlotColumn: '<',\n showLogsButton: '<',\n agentProxy: '<',\n },\n});\n","angular.module('portainer.docker').controller('TasksDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.state = Object.assign(this.state, {\n showQuickActionStats: true,\n showQuickActionLogs: true,\n showQuickActionExec: true,\n showQuickActionInspect: true,\n showQuickActionAttach: false,\n });\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./volumesDatatable.html');\n\nangular.module('portainer.docker').component('volumesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'VolumesDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n showHostColumn: '<',\n removeAction: '<',\n showBrowseAction: '<',\n refreshCallback: '<',\n },\n});\n","angular.module('portainer.docker').controller('VolumesDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n var ctrl = this;\n\n this.filters = {\n state: {\n open: false,\n enabled: false,\n showUsedVolumes: true,\n showUnusedVolumes: true,\n },\n };\n\n this.applyFilters = function (value) {\n var volume = value;\n var filters = ctrl.filters;\n if ((volume.dangling && filters.state.showUnusedVolumes) || (!volume.dangling && filters.state.showUsedVolumes)) {\n return true;\n }\n return false;\n };\n\n this.onstateFilterChange = function () {\n var filters = this.filters.state;\n var filtered = false;\n if (!filters.showUsedVolumes || !filters.showUnusedVolumes) {\n filtered = true;\n }\n this.filters.state.enabled = filtered;\n DatatableService.setDataTableFilters(this.tableKey, this.filters);\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./host-overview.html');\n\nangular.module('portainer.docker').component('hostOverview', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n hostDetails: '<',\n engineDetails: '<',\n devices: '<',\n disks: '<',\n isAgent: '<',\n agentApiVersion: '<',\n refreshUrl: '@',\n browseUrl: '@',\n hostFeaturesEnabled: '<',\n },\n transclude: true,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./devices-panel.html');\n\nangular.module('portainer.docker').component('devicesPanel', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n devices: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./disks-panel.html');\n\nangular.module('portainer.docker').component('disksPanel', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n disks: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./engine-details-panel.html');\n\nangular.module('portainer.docker').component('engineDetailsPanel', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n engine: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./host-details-panel.html');\n\nangular.module('portainer.docker').component('hostDetailsPanel', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n host: '<',\n isBrowseEnabled: '<',\n browseUrl: '@',\n },\n});\n","angular.module('portainer.docker').controller('NodeAvailabilitySelectController', [\n function NodeAvailabilitySelectController() {\n this.onChange = onChange;\n\n function onChange() {\n this.onSave({ availability: this.availability });\n }\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./node-availability-select.html');\n\nangular.module('portainer.docker').component('nodeAvailabilitySelect', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'NodeAvailabilitySelectController',\n bindings: {\n availability: '<',\n originalValue: '<',\n onSave: '&',\n },\n});\n","angular.module('portainer.docker').controller('NodeLabelsTableController', [\n function NodeLabelsTableController() {\n var ctrl = this;\n ctrl.removeLabel = removeLabel;\n ctrl.updateLabel = updateLabel;\n\n function removeLabel(index) {\n var label = ctrl.labels.splice(index, 1);\n if (label !== null) {\n ctrl.onChangedLabels({ labels: ctrl.labels });\n }\n }\n\n function updateLabel(label) {\n if (label.value !== label.originalValue || label.key !== label.originalKey) {\n ctrl.onChangedLabels({ labels: ctrl.labels });\n }\n }\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./node-labels-table.html');\n\nangular.module('portainer.docker').component('nodeLabelsTable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'NodeLabelsTableController',\n bindings: {\n labels: '<',\n onChangedLabels: '&',\n },\n});\n","angular.module('portainer.docker').controller('SwarmNodeDetailsPanelController', [\n 'NodeService',\n 'LabelHelper',\n 'Notifications',\n '$state',\n function SwarmNodeDetailsPanelController(NodeService, LabelHelper, Notifications, $state) {\n var ctrl = this;\n ctrl.state = {\n managerAddress: '',\n hasChanges: false,\n };\n ctrl.$onChanges = $onChanges;\n ctrl.addLabel = addLabel;\n ctrl.updateNodeLabels = updateNodeLabels;\n ctrl.updateNodeAvailability = updateNodeAvailability;\n ctrl.saveChanges = saveChanges;\n ctrl.cancelChanges = cancelChanges;\n\n var managerRole = 'manager';\n\n function $onChanges() {\n if (!ctrl.details) {\n return;\n }\n if (ctrl.details.role === managerRole) {\n ctrl.state.managerAddress = '(' + ctrl.details.managerAddress + ')';\n }\n }\n\n function addLabel() {\n ctrl.details.nodeLabels.push({\n key: '',\n value: '',\n originalValue: '',\n originalKey: '',\n });\n }\n\n function updateNodeLabels(labels) {\n ctrl.details.nodeLabels = labels;\n ctrl.state.hasChanges = true;\n }\n\n function updateNodeAvailability(availability) {\n ctrl.details.availability = availability;\n ctrl.state.hasChanges = true;\n }\n\n function saveChanges() {\n var originalNode = ctrl.originalNode;\n var config = {\n Name: originalNode.Name,\n Availability: ctrl.details.availability,\n Role: originalNode.Role,\n Labels: LabelHelper.fromKeyValueToLabelHash(ctrl.details.nodeLabels),\n Id: originalNode.Id,\n Version: originalNode.Version,\n };\n\n NodeService.updateNode(config).then(onUpdateSuccess).catch(notifyOnError);\n\n function onUpdateSuccess() {\n Notifications.success('Node successfully updated', 'Node updated');\n $state.go('docker.nodes.node', { id: originalNode.Id }, { reload: true });\n }\n\n function notifyOnError(error) {\n Notifications.error('Failure', error, 'Failed to update node');\n }\n }\n\n function cancelChanges() {\n cancelLabelChanges();\n ctrl.details.availability = ctrl.originalNode.Availability;\n ctrl.state.hasChanges = false;\n }\n\n function cancelLabelChanges() {\n ctrl.details.nodeLabels = ctrl.details.nodeLabels\n .filter(function (label) {\n return label.originalValue || label.originalKey;\n })\n .map(function (label) {\n return Object.assign(label, {\n value: label.originalValue,\n key: label.originalKey,\n });\n });\n }\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./swarm-node-details-panel.html');\n\nangular.module('portainer.docker').component('swarmNodeDetailsPanel', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'SwarmNodeDetailsPanelController',\n bindings: {\n details: '<',\n originalNode: '<',\n },\n});\n","import { isAgentEnvironment, isLocalEnvironment } from '@/react/portainer/environments/utils';\n\nexport default class porImageRegistryContainerController {\n /* @ngInject */\n constructor(DockerHubService, Notifications) {\n this.DockerHubService = DockerHubService;\n this.Notifications = Notifications;\n\n this.pullRateLimits = null;\n }\n\n $onChanges({ registryId }) {\n if (registryId) {\n this.fetchRateLimits();\n }\n }\n\n $onInit() {\n this.setValidity =\n this.setValidity ||\n (() => {\n /* noop */\n });\n }\n\n async fetchRateLimits() {\n this.pullRateLimits = null;\n if (!isAgentEnvironment(this.endpoint.Type) && !isLocalEnvironment(this.endpoint)) {\n this.setValidity(true);\n return;\n }\n\n try {\n this.pullRateLimits = await this.DockerHubService.checkRateLimits(this.endpoint, this.registryId || 0);\n this.setValidity(!this.pullRateLimits.limit || (this.pullRateLimits.limit && this.pullRateLimits.remaining >= 0));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Failed loading DockerHub pull rate limits', e);\n this.setValidity(true);\n }\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./por-image-registry-rate-limits.html');\n\nimport angular from 'angular';\n\nimport controller from './por-image-registry-rate-limits.controller';\n\nangular.module('portainer.docker').component('porImageRegistryRateLimits', {\n bindings: {\n endpoint: '<',\n registry: '<',\n setValidity: '<',\n isAdmin: '<',\n isDockerHubRegistry: '<',\n isAuthenticated: '<',\n registryId: '<',\n },\n controller,\n transclude: {\n rateLimitExceeded: '?porImageRegistryRateLimitExceeded',\n },\n templateUrl: autoNgTemplateLoaderTemplate1,\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport { DockerHubViewModel } from 'Portainer/models/dockerhub';\nimport { RegistryTypes } from '@/portainer/models/registryTypes';\n\nclass porImageRegistryController {\n /* @ngInject */\n constructor($async, $scope, ImageHelper, RegistryService, EndpointService, ImageService, Notifications) {\n this.$async = $async;\n this.$scope = $scope;\n this.ImageHelper = ImageHelper;\n this.RegistryService = RegistryService;\n this.EndpointService = EndpointService;\n this.ImageService = ImageService;\n this.Notifications = Notifications;\n\n this.onRegistryChange = this.onRegistryChange.bind(this);\n this.onImageChange = this.onImageChange.bind(this);\n\n this.registries = [];\n this.images = [];\n this.defaultRegistry = new DockerHubViewModel();\n\n this.$scope.$watch(() => this.model.Registry, this.onRegistryChange);\n this.$scope.$watch(() => this.model.Image, this.onImageChange);\n }\n\n isKnownRegistry(registry) {\n return registry && !(registry instanceof DockerHubViewModel) && registry.URL;\n }\n\n getRegistryURL(registry) {\n if (!registry) {\n return;\n }\n let url = registry.URL;\n if (registry.Type === RegistryTypes.GITLAB) {\n url = registry.URL + '/' + registry.Gitlab.ProjectPath;\n }\n return url;\n }\n\n prepareAutocomplete() {\n let images = [];\n const registry = this.model.Registry;\n if (this.isKnownRegistry(registry)) {\n const url = this.getRegistryURL(registry);\n const registryImages = _.filter(this.images, (image) => _.includes(image, url));\n images = _.map(registryImages, (image) => _.replace(image, new RegExp(url + '/?'), ''));\n } else {\n const registries = _.filter(this.registries, (reg) => this.isKnownRegistry(reg));\n const registryImages = _.flatMap(registries, (registry) => _.filter(this.images, (image) => _.includes(image, registry.URL)));\n const imagesWithoutKnown = _.difference(this.images, registryImages);\n images = _.filter(imagesWithoutKnown, (image) => !this.ImageHelper.imageContainsURL(image));\n }\n this.availableImages = images;\n }\n\n isDockerHubRegistry() {\n return this.model.UseRegistry && this.model.Registry && (this.model.Registry.Type === RegistryTypes.DOCKERHUB || this.model.Registry.Type === RegistryTypes.ANONYMOUS);\n }\n\n async onRegistryChange() {\n this.prepareAutocomplete();\n if (this.model.Registry && this.model.Registry.Type === RegistryTypes.GITLAB && this.model.Image) {\n this.model.Image = _.replace(this.model.Image, this.model.Registry.Gitlab.ProjectPath, '');\n }\n }\n\n async onImageChange() {\n if (!this.isDockerHubRegistry()) {\n this.setValidity(true);\n }\n }\n\n displayedRegistryURL() {\n return (this.model.Registry && this.getRegistryURL(this.model.Registry)) || 'docker.io';\n }\n\n async reloadRegistries() {\n return this.$async(async () => {\n try {\n let showDefaultRegistry = false;\n this.registries = await this.EndpointService.registries(this.endpoint.Id, this.namespace);\n\n // Sort the registries by Name\n this.registries.sort((a, b) => a.Name.localeCompare(b.Name));\n\n // hide default(anonymous) dockerhub registry if user has an authenticated one\n if (!this.registries.some((registry) => registry.Type === RegistryTypes.DOCKERHUB)) {\n showDefaultRegistry = true;\n // Add dockerhub on top\n this.registries.splice(0, 0, this.defaultRegistry);\n }\n\n const id = this.model.Registry && this.model.Registry.Id;\n const registry = _.find(this.registries, { Id: id });\n if (!registry) {\n this.model.Registry = showDefaultRegistry ? this.defaultRegistry : this.registries[0];\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registries');\n }\n });\n }\n\n async loadImages() {\n return this.$async(async () => {\n try {\n if (!this.autoComplete) {\n this.images = [];\n return;\n }\n\n const images = await this.ImageService.images();\n this.images = this.ImageService.getUniqueTagListFromImages(images);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve images');\n }\n });\n }\n\n $onChanges({ namespace, endpoint }) {\n if ((namespace || endpoint) && this.endpoint.Id) {\n this.reloadRegistries();\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n await this.loadImages();\n });\n }\n}\n\nexport default porImageRegistryController;\nangular.module('portainer.docker').controller('porImageRegistryController', porImageRegistryController);\n","const autoNgTemplateLoaderTemplate1 = require('./por-image-registry.html');\n\nangular.module('portainer.docker').component('porImageRegistry', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'porImageRegistryController',\n bindings: {\n model: '=', // must be of type PorImageRegistryModel\n autoComplete: '<',\n labelClass: '@',\n inputClass: '@',\n endpoint: '<',\n isAdmin: '<',\n checkRateLimits: '<',\n onImageChange: '&',\n setValidity: '<',\n namespace: '<',\n },\n require: {\n form: '^form',\n },\n transclude: true,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./logViewer.html');\n\nangular.module('portainer.docker').component('logViewer', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'LogViewerController',\n bindings: {\n data: '=',\n displayTimestamps: '=',\n logCollectionChange: '<',\n sinceTimestamp: '=',\n lineCount: '=',\n resourceName: '<',\n },\n});\n","import moment from 'moment';\n\nimport { concatLogsToString, NEW_LINE_BREAKER } from '@/docker/helpers/logHelper';\n\nangular.module('portainer.docker').controller('LogViewerController', [\n '$scope',\n 'clipboard',\n 'Blob',\n 'FileSaver',\n function ($scope, clipboard, Blob, FileSaver) {\n this.state = {\n availableSinceDatetime: [\n { desc: 'Last day', value: moment().subtract(1, 'days').format() },\n { desc: 'Last 4 hours', value: moment().subtract(4, 'hours').format() },\n { desc: 'Last hour', value: moment().subtract(1, 'hours').format() },\n { desc: 'Last 10 minutes', value: moment().subtract(10, 'minutes').format() },\n ],\n copySupported: clipboard.supported,\n logCollection: true,\n autoScroll: true,\n wrapLines: true,\n search: '',\n filteredLogs: [],\n selectedLines: [],\n };\n\n this.handleLogsCollectionChange = handleLogsCollectionChange.bind(this);\n this.handleLogsWrapLinesChange = handleLogsWrapLinesChange.bind(this);\n this.handleDisplayTimestampsChange = handleDisplayTimestampsChange.bind(this);\n\n function handleLogsCollectionChange(enabled) {\n $scope.$evalAsync(() => {\n this.state.logCollection = enabled;\n this.state.autoScroll = enabled;\n this.logCollectionChange(enabled);\n });\n }\n\n function handleLogsWrapLinesChange(enabled) {\n $scope.$evalAsync(() => {\n this.state.wrapLines = enabled;\n });\n }\n\n function handleDisplayTimestampsChange(enabled) {\n $scope.$evalAsync(() => {\n this.displayTimestamps = enabled;\n });\n }\n\n this.copy = function () {\n clipboard.copyText(this.state.filteredLogs.map((log) => log.line).join(NEW_LINE_BREAKER));\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(2000);\n };\n\n this.copySelection = function () {\n clipboard.copyText(this.state.selectedLines.join(NEW_LINE_BREAKER));\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(2000);\n };\n\n this.clearSelection = function () {\n this.state.selectedLines = [];\n };\n\n this.selectLine = function (line) {\n var idx = this.state.selectedLines.indexOf(line);\n if (idx === -1) {\n this.state.selectedLines.push(line);\n } else {\n this.state.selectedLines.splice(idx, 1);\n }\n };\n\n this.downloadLogs = function () {\n const logsAsString = concatLogsToString(this.state.filteredLogs);\n const data = new Blob([logsAsString]);\n FileSaver.saveAs(data, this.resourceName + '_logs.txt');\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./networkMacvlanForm.html');\n\nangular.module('portainer.docker').component('networkMacvlanForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'NetworkMacvlanFormController',\n bindings: {\n data: '=',\n applicationState: '<',\n },\n});\n","import { getOptions } from '@/react/docker/networks/CreateView/macvlanOptions';\n\nangular.module('portainer.docker').controller('NetworkMacvlanFormController', [\n '$q',\n 'NodeService',\n 'NetworkService',\n 'Notifications',\n '$scope',\n 'Authentication',\n function ($q, NodeService, NetworkService, Notifications, $scope, Authentication) {\n var ctrl = this;\n\n this.options = [];\n\n ctrl.requiredNodeSelection = function () {\n if (ctrl.data.Scope !== 'local' || ctrl.data.DatatableState === undefined) {\n return false;\n }\n return ctrl.data.DatatableState.selectedItemCount === 0;\n };\n\n ctrl.requiredConfigSelection = function () {\n if (ctrl.data.Scope !== 'swarm') {\n return false;\n }\n return !ctrl.data.SelectedNetworkConfig;\n };\n\n this.onChangeScope = onChangeScope.bind(this);\n function onChangeScope(value) {\n return $scope.$evalAsync(() => {\n this.data.Scope = value;\n });\n }\n\n this.$onInit = $onInit;\n function $onInit() {\n var isAdmin = Authentication.isAdmin();\n ctrl.isAdmin = isAdmin;\n\n var provider = ctrl.applicationState.endpoint.mode.provider;\n var apiVersion = ctrl.applicationState.endpoint.apiVersion;\n $q.all({\n nodes: provider !== 'DOCKER_SWARM_MODE' || NodeService.nodes(),\n networks: NetworkService.networks(provider === 'DOCKER_STANDALONE' || provider === 'DOCKER_SWARM_MODE', false, provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25),\n })\n .then(function success(data) {\n if (data.nodes !== true) {\n ctrl.nodes = data.nodes;\n }\n ctrl.availableNetworks = data.networks.filter(function (item) {\n return item.ConfigOnly === true;\n });\n\n ctrl.options = getOptions(ctrl.availableNetworks.length > 0);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve informations for macvlan');\n });\n }\n },\n]);\n","import { Share2, Sliders } from 'lucide-react';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport function getOptions(\n hasNetworks: boolean\n): ReadonlyArray<BoxSelectorOption<string>> {\n return [\n {\n id: 'network_config',\n icon: Sliders,\n iconType: 'badge',\n label: 'Configuration',\n description: 'I want to configure a network before deploying it',\n value: 'local',\n },\n {\n id: 'network_deploy',\n icon: Share2,\n iconType: 'badge',\n label: 'Creation',\n description: 'I want to create a network from a configuration',\n value: 'swarm',\n disabled: () => !hasNetworks,\n },\n ] as const;\n}\n","export function MacvlanFormData() {\n this.Scope = 'local';\n this.SelectedNetworkConfig = null;\n this.DatatableState = {\n selectedItems: [],\n };\n this.ParentNetworkCard = '';\n}\n","const autoNgTemplateLoaderTemplate1 = require('./volumesCifsForm.html');\n\nangular.module('portainer.docker').component('volumesCifsForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n data: '=',\n },\n});\n","export function VolumesCIFSFormData() {\n this.useCIFS = false;\n this.serverAddress = '';\n this.share = '';\n this.version = 'CIFS v2.0 (Used by Windows Vista / Server 2008)';\n this.versions = [\n 'CIFS v1.0 (Used by Windows XP / Server 2003 and earlier)',\n 'CIFS v2.0 (Used by Windows Vista / Server 2008)',\n 'CIFS v2.1 (Used by Windows 7 / Server 2008 R2)',\n 'CIFS 3.0 (Used by Windows 8 / Server 2012 and newer)',\n ];\n this.versionsNumber = ['1.0', '2.0', '2.1', '3.0'];\n this.username = '';\n this.password = '';\n}\n","const autoNgTemplateLoaderTemplate1 = require('./volumesnfsForm.html');\n\nangular.module('portainer.docker').component('volumesNfsForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n data: '=',\n },\n});\n","export function VolumesNFSFormData() {\n this.useNFS = false;\n this.serverAddress = '';\n this.mountPoint = '';\n this.version = 'NFS4';\n this.options = 'rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14';\n this.versions = ['NFS4', 'NFS'];\n}\n","import _ from 'lodash-es';\nimport { joinCommand, trimSHA } from './utils';\n\nfunction includeString(text, values) {\n return values.some(function (val) {\n return text.indexOf(val) !== -1;\n });\n}\n\nfunction strToHash(str) {\n var hash = 0;\n for (var i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n return hash;\n}\n\nfunction hashToHexColor(hash) {\n var color = '#';\n for (var i = 0; i < 3; ) {\n color += ('00' + ((hash >> (i++ * 8)) & 0xff).toString(16)).slice(-2);\n }\n return color;\n}\n\nangular\n .module('portainer.docker')\n .filter('visualizerTask', function () {\n 'use strict';\n return function (text) {\n var status = _.toLower(text);\n if (includeString(status, ['new', 'allocated', 'assigned', 'accepted', 'complete', 'preparing'])) {\n return 'info';\n } else if (includeString(status, ['pending'])) {\n return 'warning';\n } else if (includeString(status, ['shutdown', 'failed', 'rejected'])) {\n return 'stopped';\n }\n return 'running';\n };\n })\n .filter('visualizerTaskBorderColor', function () {\n 'use strict';\n return function (str) {\n var hash = strToHash(str);\n var color = hashToHexColor(hash);\n return color;\n };\n })\n .filter('taskstatusbadge', function () {\n 'use strict';\n return function (text) {\n var status = _.toLower(text);\n var labelStyle = 'default';\n if (includeString(status, ['new', 'allocated', 'assigned', 'accepted', 'preparing', 'ready', 'starting', 'remove'])) {\n labelStyle = 'info';\n } else if (includeString(status, ['pending'])) {\n labelStyle = 'warning';\n } else if (includeString(status, ['shutdown', 'failed', 'rejected', 'orphaned'])) {\n labelStyle = 'danger';\n } else if (includeString(status, ['complete'])) {\n labelStyle = 'primary';\n } else if (includeString(status, ['running'])) {\n labelStyle = 'success';\n }\n return labelStyle;\n };\n })\n .filter('taskhaslogs', function () {\n 'use strict';\n return function (state) {\n var validState = ['running', 'complete', 'failed', 'shutdown'];\n if (validState.indexOf(state) > -1) {\n return true;\n }\n return false;\n };\n })\n .filter('containerstatusbadge', function () {\n 'use strict';\n return function (text) {\n var status = _.toLower(text);\n if (includeString(status, ['paused', 'starting', 'unhealthy'])) {\n return 'warning';\n } else if (includeString(status, ['created'])) {\n return 'info';\n } else if (includeString(status, ['stopped', 'dead', 'exited'])) {\n return 'danger';\n }\n return 'success';\n };\n })\n .filter('nodestatusbadge', function () {\n 'use strict';\n return function (text) {\n if (text === 'down' || text === 'Unhealthy') {\n return 'danger';\n }\n return 'success';\n };\n })\n .filter('dockerNodeAvailabilityBadge', function () {\n 'use strict';\n return function (text) {\n if (text === 'pause') {\n return 'warning';\n } else if (text === 'drain') {\n return 'danger';\n }\n return 'success';\n };\n })\n .filter('trimcontainername', function () {\n 'use strict';\n return function (name) {\n if (name) {\n return name.indexOf('/') === 0 ? name.slice(1) : name;\n }\n return '';\n };\n })\n .filter('getstatetext', function () {\n 'use strict';\n return function (state) {\n if (state === undefined) {\n return '';\n }\n if (state.Dead) {\n return 'Dead';\n }\n if (state.Ghost && state.Running) {\n return 'Ghost';\n }\n if (state.Running && state.Paused) {\n return 'Running (Paused)';\n }\n if (state.Running) {\n return 'Running';\n }\n if (state.Status === 'created') {\n return 'Created';\n }\n return 'Stopped';\n };\n })\n .filter('getstatelabel', function () {\n 'use strict';\n return function (state) {\n if (state === undefined) {\n return 'label-default';\n }\n if (state.Ghost && state.Running) {\n return 'label-important';\n }\n if (state.Running) {\n return 'label-success';\n }\n return 'label-default';\n };\n })\n .filter('containername', function () {\n 'use strict';\n return function (container) {\n return container.Names[0];\n };\n })\n .filter('swarmversion', function () {\n 'use strict';\n return function (text) {\n return _.split(text, '/')[1];\n };\n })\n .filter('swarmhostname', function () {\n 'use strict';\n return function (container) {\n return container.Names[0];\n };\n })\n .filter('repotags', function () {\n 'use strict';\n return function (image) {\n if (image.RepoTags && image.RepoTags.length > 0) {\n var tag = image.RepoTags[0];\n if (tag === '<none>:<none>') {\n return [];\n }\n return image.RepoTags;\n }\n return [];\n };\n })\n .filter('command', function () {\n return joinCommand;\n })\n .filter('hideshasum', function () {\n 'use strict';\n return function (imageName) {\n if (imageName) {\n return imageName.split('@sha')[0];\n }\n return '';\n };\n })\n .filter('availablenodecount', [\n 'ConstraintsHelper',\n function (ConstraintsHelper) {\n 'use strict';\n return function (nodes, service) {\n var availableNodes = 0;\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (node.Availability === 'active' && node.Status === 'ready' && ConstraintsHelper.matchesServiceConstraints(service, node)) {\n availableNodes++;\n }\n }\n return availableNodes;\n };\n },\n ])\n .filter('runningtaskscount', function () {\n 'use strict';\n return function (tasks) {\n var runningTasks = 0;\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n if (task.Status.State === 'running' && task.DesiredState === 'running') {\n runningTasks++;\n }\n }\n return runningTasks;\n };\n })\n .filter('tasknodename', function () {\n 'use strict';\n return function (nodeId, nodes) {\n var node = _.find(nodes, { Id: nodeId });\n if (node) {\n return node.Hostname;\n }\n return '';\n };\n })\n .filter('imagelayercommand', function () {\n 'use strict';\n return function (createdBy) {\n if (!createdBy) {\n return '';\n }\n return createdBy.replace('/bin/sh -c #(nop) ', '').replace('/bin/sh -c ', 'RUN ');\n };\n })\n .filter('trimshasum', function () {\n 'use strict';\n return trimSHA;\n })\n .filter('trimversiontag', function () {\n 'use strict';\n return function trimversiontag(fullName) {\n if (!fullName) {\n return fullName;\n }\n var versionIdx = fullName.lastIndexOf(':');\n if (versionIdx < 0) {\n return fullName;\n }\n var hostIdx = fullName.indexOf('/');\n if (hostIdx > versionIdx) {\n return fullName;\n }\n return fullName.substring(0, versionIdx);\n };\n })\n .filter('unique', function () {\n return _.uniqBy;\n });\n","angular.module('portainer.docker').factory('ConfigHelper', [\n function ConfigHelperFactory() {\n 'use strict';\n return {\n flattenConfig: function (config) {\n if (config) {\n return {\n Id: config.ConfigID,\n Name: config.ConfigName,\n ...(config.File ? { FileName: config.File.Name, Uid: config.File.UID, Gid: config.File.GID, Mode: config.File.Mode } : {}),\n credSpec: !!config.Runtime,\n };\n }\n return {};\n },\n configConfig: function (config) {\n if (config) {\n return {\n ConfigID: config.Id,\n ConfigName: config.Name,\n File: config.credSpec\n ? null\n : {\n Name: config.FileName || config.Name,\n UID: config.Uid || '0',\n GID: config.Gid || '0',\n Mode: config.Mode || 292,\n },\n Runtime: config.credSpec ? {} : null,\n };\n }\n return {};\n },\n };\n },\n]);\n","import _ from 'lodash-es';\n\nfunction ConstraintModel(op, key, value) {\n this.op = op;\n this.value = value;\n this.key = key;\n}\n\nvar patterns = {\n id: {\n nodeId: 'node.id',\n nodeHostname: 'node.hostname',\n nodeRole: 'node.role',\n nodeLabels: 'node.labels.',\n engineLabels: 'engine.labels.',\n },\n op: {\n eq: '==',\n neq: '!=',\n },\n};\n\nfunction matchesConstraint(value, constraint) {\n if (!constraint || (constraint.op === patterns.op.eq && value === constraint.value) || (constraint.op === patterns.op.neq && value !== constraint.value)) {\n return true;\n }\n return false;\n}\n\nfunction matchesLabel(labels, constraint) {\n if (!constraint) {\n return true;\n }\n var found = _.find(labels, function (label) {\n return label.key === constraint.key && label.value === constraint.value;\n });\n return found !== undefined;\n}\n\nfunction extractValue(constraint, op) {\n return constraint.split(op).pop().trim();\n}\n\nfunction extractCustomLabelKey(constraint, op, baseLabelKey) {\n return constraint.split(op).shift().trim().replace(baseLabelKey, '');\n}\n\nangular.module('portainer.docker').factory('ConstraintsHelper', [\n function ConstraintsHelperFactory() {\n 'use strict';\n return {\n transformConstraints: function (constraints) {\n var transform = {};\n for (var i = 0; i < constraints.length; i++) {\n var constraint = constraints[i];\n\n var op;\n if (constraint.includes(patterns.op.eq)) {\n op = patterns.op.eq;\n } else if (constraint.includes(patterns.op.neq)) {\n op = patterns.op.neq;\n }\n\n var value = extractValue(constraint, op);\n var key = '';\n switch (true) {\n case constraint.includes(patterns.id.nodeId):\n transform.nodeId = new ConstraintModel(op, key, value);\n break;\n case constraint.includes(patterns.id.nodeHostname):\n transform.nodeHostname = new ConstraintModel(op, key, value);\n break;\n case constraint.includes(patterns.id.nodeRole):\n transform.nodeRole = new ConstraintModel(op, key, value);\n break;\n case constraint.includes(patterns.id.nodeLabels):\n key = extractCustomLabelKey(constraint, op, patterns.id.nodeLabels);\n transform.nodeLabels = new ConstraintModel(op, key, value);\n break;\n case constraint.includes(patterns.id.engineLabels):\n key = extractCustomLabelKey(constraint, op, patterns.id.engineLabels);\n transform.engineLabels = new ConstraintModel(op, key, value);\n break;\n default:\n break;\n }\n }\n return transform;\n },\n matchesServiceConstraints: function (service, node) {\n if (service.Constraints === undefined || service.Constraints.length === 0) {\n return true;\n }\n var constraints = this.transformConstraints(angular.copy(service.Constraints));\n if (\n matchesConstraint(node.Id, constraints.nodeId) &&\n matchesConstraint(node.Hostname, constraints.nodeHostname) &&\n matchesConstraint(node.Role, constraints.nodeRole) &&\n matchesLabel(node.Labels, constraints.nodeLabels) &&\n matchesLabel(node.EngineLabels, constraints.engineLabels)\n ) {\n return true;\n }\n return false;\n },\n };\n },\n]);\n","import _ from 'lodash-es';\nimport splitargs from 'splitargs/src/splitargs';\n\nconst portPattern = /^([1-9]|[1-5]?[0-9]{2,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/m;\n\nfunction parsePort(port) {\n if (portPattern.test(port)) {\n return parseInt(port, 10);\n } else {\n return 0;\n }\n}\n\nfunction parsePortRange(portRange) {\n if (typeof portRange !== 'string') {\n portRange = portRange.toString();\n }\n\n // Split the range and convert to integers\n const stringPorts = _.split(portRange, '-', 2);\n const intPorts = _.map(stringPorts, parsePort);\n\n // If it's not a range, we still make sure that we return two ports (start & end)\n if (intPorts.length == 1) {\n intPorts.push(intPorts[0]);\n }\n\n return intPorts;\n}\n\nfunction isValidPortRange(portRange) {\n if (typeof portRange === 'string') {\n portRange = parsePortRange();\n }\n\n return Array.isArray(portRange) && portRange.length === 2 && portRange[0] > 0 && portRange[1] >= portRange[0];\n}\n\nfunction createPortRange(portRangeText, port) {\n if (typeof portRangeText !== 'string') {\n portRangeText = portRangeText.toString();\n }\n\n let hostIp = null;\n const colonIndex = portRangeText.indexOf(':');\n if (colonIndex >= 0) {\n hostIp = portRangeText.substr(0, colonIndex);\n portRangeText = portRangeText.substr(colonIndex + 1);\n }\n\n port = typeof port === 'number' ? port : parsePort(port);\n const portRange = parsePortRange(portRangeText);\n const startPort = Math.min(portRange[0], port);\n const endPort = Math.max(portRange[1], port);\n\n if (hostIp) {\n return hostIp + ':' + startPort + '-' + endPort;\n } else {\n return startPort + '-' + endPort;\n }\n}\n\nangular.module('portainer.docker').factory('ContainerHelper', [\n function ContainerHelperFactory() {\n 'use strict';\n var helper = {};\n\n helper.commandStringToArray = function (command) {\n return splitargs(command);\n };\n\n helper.commandArrayToString = function (array) {\n return array\n .map(function (elem) {\n return \"'\" + elem + \"'\";\n })\n .join(' ');\n };\n\n helper.configFromContainer = function (container) {\n var config = container.Config;\n // HostConfig\n config.HostConfig = container.HostConfig;\n // Name\n config.name = container.Name.replace(/^\\//g, '');\n // Network\n var mode = config.HostConfig.NetworkMode;\n config.NetworkingConfig = {\n EndpointsConfig: {},\n };\n config.NetworkingConfig.EndpointsConfig = container.NetworkSettings.Networks;\n\n if (config.ExposedPorts === undefined) {\n config.ExposedPorts = {};\n }\n\n if (mode.indexOf('container:') !== -1) {\n delete config.Hostname;\n delete config.ExposedPorts;\n }\n // Set volumes\n var binds = [];\n var volumes = {};\n for (var v in container.Mounts) {\n if ({}.hasOwnProperty.call(container.Mounts, v)) {\n var mount = container.Mounts[v];\n var name = mount.Name || mount.Source;\n var containerPath = mount.Destination;\n if (name && containerPath) {\n var bind = name + ':' + containerPath;\n volumes[containerPath] = {};\n if (mount.RW === false) {\n bind += ':ro';\n }\n binds.push(bind);\n }\n }\n }\n config.HostConfig.Mounts = null;\n config.HostConfig.Binds = binds;\n config.Volumes = volumes;\n return config;\n };\n\n helper.preparePortBindings = function (portBindings) {\n const bindings = {};\n _.forEach(portBindings, (portBinding) => {\n if (!portBinding.containerPort) {\n return;\n }\n\n let hostPort = portBinding.hostPort;\n const containerPortRange = parsePortRange(portBinding.containerPort);\n if (!isValidPortRange(containerPortRange)) {\n throw new Error('Invalid port specification: ' + portBinding.containerPort);\n }\n\n const startPort = containerPortRange[0];\n const endPort = containerPortRange[1];\n let hostIp = undefined;\n let startHostPort = 0;\n let endHostPort = 0;\n if (hostPort) {\n if (hostPort.indexOf('[') > -1) {\n const hostAndPort = _.split(hostPort, ']:');\n\n if (hostAndPort.length < 2) {\n throw new Error('Invalid port specification: ' + portBinding.containerPort);\n }\n\n hostIp = hostAndPort[0].replace('[', '');\n hostPort = hostAndPort[1];\n } else {\n if (hostPort.indexOf(':') > -1) {\n const hostAndPort = _.split(hostPort, ':');\n hostIp = hostAndPort[0];\n hostPort = hostAndPort[1];\n }\n }\n\n const hostPortRange = parsePortRange(hostPort);\n if (!isValidPortRange(hostPortRange)) {\n throw new Error('Invalid port specification: ' + hostPort);\n }\n\n startHostPort = hostPortRange[0];\n endHostPort = hostPortRange[1];\n if (endPort !== startPort && endPort - startPort !== endHostPort - startHostPort) {\n throw new Error('Invalid port specification: ' + hostPort);\n }\n }\n\n for (let i = 0; i <= endPort - startPort; i++) {\n const containerPort = (startPort + i).toString();\n if (startHostPort > 0) {\n hostPort = (startHostPort + i).toString();\n }\n if (startPort === endPort && startHostPort !== endHostPort) {\n hostPort += '-' + endHostPort.toString();\n }\n\n const bindKey = containerPort + '/' + portBinding.protocol;\n if (bindings[bindKey]) {\n bindings[bindKey].push({ HostIp: hostIp, HostPort: hostPort });\n } else {\n bindings[bindKey] = [{ HostIp: hostIp, HostPort: hostPort }];\n }\n }\n });\n return bindings;\n };\n\n helper.sortAndCombinePorts = function (portBindings) {\n const bindings = [];\n const portBindingKeys = _.keys(portBindings);\n\n // Group the port bindings by protocol\n const portBindingKeysByProtocol = _.groupBy(portBindingKeys, (portKey) => {\n return _.split(portKey, '/')[1];\n });\n\n _.forEach(portBindingKeysByProtocol, (portBindingKeys, protocol) => {\n // Group the port bindings by host IP\n const portBindingKeysByHostIp = {};\n for (const portKey of portBindingKeys) {\n for (const portBinding of portBindings[portKey]) {\n portBindingKeysByHostIp[portBinding.HostIp] = portBindingKeysByHostIp[portBinding.HostIp] || [];\n portBindingKeysByHostIp[portBinding.HostIp].push(portKey);\n }\n }\n\n _.forEach(portBindingKeysByHostIp, (portBindingKeys, ip) => {\n // Sort by host port\n const sortedPortBindingKeys = _.orderBy(portBindingKeys, (portKey) => {\n return parseInt(_.split(portKey, '/')[0], 10);\n });\n\n let previousHostPort = -1;\n let previousContainerPort = -1;\n _.forEach(sortedPortBindingKeys, (portKey) => {\n const portKeySplit = _.split(portKey, '/');\n const containerPort = parseInt(portKeySplit[0], 10);\n const portBinding = portBindings[portKey][0];\n portBindings[portKey].shift();\n const hostPort = parsePort(portBinding.HostPort);\n\n // We only combine single ports, and skip the host port ranges on one container port\n if (hostPort > 0) {\n // If we detect consecutive ports, we create a range of them\n if (bindings.length > 0 && previousHostPort === hostPort - 1 && previousContainerPort === containerPort - 1) {\n bindings[bindings.length - 1].hostPort = createPortRange(bindings[bindings.length - 1].hostPort, hostPort);\n bindings[bindings.length - 1].containerPort = createPortRange(bindings[bindings.length - 1].containerPort, containerPort);\n previousHostPort = hostPort;\n previousContainerPort = containerPort;\n return;\n }\n\n previousHostPort = hostPort;\n previousContainerPort = containerPort;\n } else {\n previousHostPort = -1;\n previousContainerPort = -1;\n }\n\n let bindingHostPort = portBinding.HostPort.toString();\n if (ip) {\n bindingHostPort = `${ip}:${bindingHostPort}`;\n }\n\n const binding = {\n hostPort: bindingHostPort,\n containerPort: containerPort,\n protocol: protocol,\n };\n bindings.push(binding);\n });\n });\n });\n\n return bindings;\n };\n\n helper.getContainerNames = function (containers) {\n return _.map(_.flatten(_.map(containers, 'Names')), (name) => _.trimStart(name, '/'));\n };\n\n return helper;\n },\n]);\n","import { buildImageFullURIFromModel, imageContainsURL } from '@/react/docker/images/utils';\n\nangular.module('portainer.docker').factory('ImageHelper', ImageHelperFactory);\nfunction ImageHelperFactory() {\n return {\n isValidTag,\n createImageConfigForContainer,\n getImagesNamesForDownload,\n removeDigestFromRepository,\n imageContainsURL,\n };\n\n function isValidTag(tag) {\n return tag.match(/^(?![\\.\\-])([a-zA-Z0-9\\_\\.\\-])+$/g);\n }\n\n function getImagesNamesForDownload(images) {\n var names = images.map(function (image) {\n return image.RepoTags[0] !== '<none>:<none>' ? image.RepoTags[0] : image.Id;\n });\n return {\n names: names,\n };\n }\n\n /**\n *\n * @param {PorImageRegistryModel} registry\n */\n function createImageConfigForContainer(imageModel) {\n return {\n fromImage: buildImageFullURIFromModel(imageModel),\n };\n }\n\n function removeDigestFromRepository(repository) {\n return repository.split('@sha')[0];\n }\n}\n","import _ from 'lodash-es';\n\nangular.module('portainer.docker').factory('InfoHelper', [\n function InfoHelperFactory() {\n 'use strict';\n\n var helper = {};\n\n helper.determineEndpointMode = function (info, type) {\n var mode = {\n provider: '',\n role: '',\n agentProxy: false,\n };\n\n if (type === 2 || type === 4) {\n mode.agentProxy = true;\n }\n\n if (!info.Swarm || _.isEmpty(info.Swarm.NodeID)) {\n mode.provider = 'DOCKER_STANDALONE';\n } else {\n mode.provider = 'DOCKER_SWARM_MODE';\n if (info.Swarm.ControlAvailable) {\n mode.role = 'MANAGER';\n } else {\n mode.role = 'WORKER';\n }\n }\n return mode;\n };\n\n return helper;\n },\n]);\n","angular.module('portainer.docker').factory('LabelHelper', [\n function LabelHelperFactory() {\n 'use strict';\n return {\n fromLabelHashToKeyValue: function (labels) {\n if (labels) {\n return Object.keys(labels).map(function (key) {\n return { key: key, value: labels[key], originalKey: key, originalValue: labels[key], added: true };\n });\n }\n return [];\n },\n fromKeyValueToLabelHash: function (labelKV) {\n var labels = {};\n if (labelKV) {\n labelKV.forEach(function (label) {\n if (label.key) {\n labels[label.key] = label.value;\n }\n });\n }\n return labels;\n },\n };\n },\n]);\n","import _ from 'lodash-es';\n\nclass DockerNetworkHelper {\n static getIPV4Configs(configs) {\n return _.filter(configs, (config) => /^([0-9]{1,3}\\.){3}[0-9]{1,3}(\\/([0-9]|[1-2][0-9]|3[0-2]))?$/.test(config.Subnet));\n }\n\n static getIPV6Configs(configs) {\n return _.without(configs, ...DockerNetworkHelper.getIPV4Configs(configs));\n }\n}\n\nexport default DockerNetworkHelper;\n","angular.module('portainer.docker').factory('NodeHelper', [\n function NodeHelperFactory() {\n 'use strict';\n return {\n nodeToConfig: function (node) {\n return {\n Name: node.Spec.Name,\n Role: node.Spec.Role,\n Labels: node.Spec.Labels,\n Availability: node.Spec.Availability,\n };\n },\n };\n },\n]);\n","angular.module('portainer.docker').factory('SecretHelper', [\n function SecretHelperFactory() {\n 'use strict';\n return {\n flattenSecret: function (secret) {\n if (secret) {\n return {\n Id: secret.SecretID,\n Name: secret.SecretName,\n FileName: secret.File.Name,\n Uid: secret.File.UID,\n Gid: secret.File.GID,\n Mode: secret.File.Mode,\n };\n }\n return {};\n },\n secretConfig: function (secret) {\n if (secret) {\n return {\n SecretID: secret.Id,\n SecretName: secret.Name,\n File: {\n Name: secret.FileName,\n UID: secret.Uid || '0',\n GID: secret.Gid || '0',\n Mode: secret.Mode || 444,\n },\n };\n }\n return {};\n },\n };\n },\n]);\n","import moment from 'moment';\n\nangular.module('portainer.docker').factory('ServiceHelper', [\n function ServiceHelperFactory() {\n 'use strict';\n\n var helper = {};\n\n helper.associateTasksToService = function (service, tasks) {\n service.Tasks = [];\n var otherServicesTasks = [];\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n if (task.ServiceId === service.Id) {\n service.Tasks.push(task);\n task.ServiceName = service.Name;\n } else {\n otherServicesTasks.push(task);\n }\n }\n tasks = otherServicesTasks;\n };\n\n helper.serviceToConfig = function (service) {\n return {\n Name: service.Spec.Name,\n Labels: service.Spec.Labels,\n TaskTemplate: service.Spec.TaskTemplate,\n Mode: service.Spec.Mode,\n UpdateConfig: service.Spec.UpdateConfig,\n Networks: service.Spec.Networks,\n EndpointSpec: service.Spec.EndpointSpec,\n };\n };\n\n helper.translateKeyValueToPlacementPreferences = function (keyValuePreferences) {\n if (keyValuePreferences) {\n var preferences = [];\n keyValuePreferences.forEach(function (preference) {\n if (preference.strategy && preference.strategy !== '' && preference.value && preference.value !== '') {\n switch (preference.strategy.toLowerCase()) {\n case 'spread':\n preferences.push({\n Spread: {\n SpreadDescriptor: preference.value,\n },\n });\n break;\n }\n }\n });\n return preferences;\n }\n return [];\n };\n\n helper.translateKeyValueToPlacementConstraints = function (keyValueConstraints) {\n if (keyValueConstraints) {\n var constraints = [];\n keyValueConstraints.forEach(function (constraint) {\n if (constraint.key && constraint.key !== '' && constraint.value && constraint.value !== '') {\n constraints.push(constraint.key + constraint.operator + constraint.value);\n }\n });\n return constraints;\n }\n return [];\n };\n\n helper.translatePreferencesToKeyValue = function (preferences) {\n if (preferences) {\n var keyValuePreferences = [];\n preferences.forEach(function (preference) {\n if (preference.Spread) {\n keyValuePreferences.push({\n strategy: 'Spread',\n value: preference.Spread.SpreadDescriptor,\n });\n }\n });\n return keyValuePreferences;\n }\n return [];\n };\n\n helper.translateConstraintsToKeyValue = function (constraints) {\n function getOperator(constraint) {\n var indexEquals = constraint.indexOf('==');\n if (indexEquals >= 0) {\n return [indexEquals, '=='];\n }\n return [constraint.indexOf('!='), '!='];\n }\n if (constraints) {\n var keyValueConstraints = [];\n constraints.forEach(function (constraint) {\n var operatorIndices = getOperator(constraint);\n\n var key = constraint.slice(0, operatorIndices[0]);\n var operator = operatorIndices[1];\n var value = constraint.slice(operatorIndices[0] + 2);\n\n keyValueConstraints.push({\n key: key,\n value: value,\n operator: operator,\n originalKey: key,\n originalValue: value,\n });\n });\n return keyValueConstraints;\n }\n };\n\n helper.translateHumanDurationToNanos = function (humanDuration) {\n var nanos;\n var regex = /^([0-9]+)(h|m|s|ms|us|ns)$/i;\n var matches = humanDuration.match(regex);\n\n if (matches !== null && matches.length === 3) {\n var duration = parseInt(matches[1], 10);\n var unit = matches[2];\n // Moment.js cannot use micro or nanoseconds\n switch (unit) {\n case 'ns':\n nanos = duration;\n break;\n case 'us':\n nanos = duration * 1000;\n break;\n default:\n nanos = moment.duration(duration, unit).asMilliseconds() * 1000000;\n }\n }\n return nanos;\n };\n\n // Convert nanoseconds to the higher unit possible\n // e.g 1840 nanoseconds = 1804ns\n // e.g 300000000000 nanoseconds = 5m\n // e.g 3510000000000 nanoseconds = 3510s\n // e.g 3540000000000 nanoseconds = 59m\n // e.g 3600000000000 nanoseconds = 1h\n\n helper.translateNanosToHumanDuration = function (nanos) {\n var humanDuration = '0s';\n var conversionFromNano = {};\n conversionFromNano['ns'] = 1;\n conversionFromNano['us'] = conversionFromNano['ns'] * 1000;\n conversionFromNano['ms'] = conversionFromNano['us'] * 1000;\n conversionFromNano['s'] = conversionFromNano['ms'] * 1000;\n conversionFromNano['m'] = conversionFromNano['s'] * 60;\n conversionFromNano['h'] = conversionFromNano['m'] * 60;\n\n Object.keys(conversionFromNano).forEach(function (unit) {\n if (nanos % conversionFromNano[unit] === 0 && nanos / conversionFromNano[unit] > 0) {\n humanDuration = nanos / conversionFromNano[unit] + unit;\n }\n });\n return humanDuration;\n };\n\n helper.translateLogDriverOptsToKeyValue = function (logOptions) {\n var options = [];\n if (logOptions) {\n Object.keys(logOptions).forEach(function (key) {\n options.push({\n key: key,\n value: logOptions[key],\n originalKey: key,\n originalValue: logOptions[key],\n added: true,\n });\n });\n }\n return options;\n };\n\n helper.translateKeyValueToLogDriverOpts = function (keyValueLogDriverOpts) {\n var options = {};\n if (keyValueLogDriverOpts) {\n keyValueLogDriverOpts.forEach(function (option) {\n if (option.key && option.key !== '' && option.value && option.value !== '') {\n options[option.key] = option.value;\n }\n });\n }\n return options;\n };\n\n helper.translateHostsEntriesToHostnameIP = function (entries) {\n var ipHostEntries = [];\n if (entries) {\n entries.forEach(function (entry) {\n if (entry.indexOf(' ') && entry.split(' ').length === 2) {\n var keyValue = entry.split(' ');\n ipHostEntries.push({ hostname: keyValue[1], ip: keyValue[0] });\n }\n });\n }\n return ipHostEntries;\n };\n\n helper.translateHostnameIPToHostsEntries = function (entries) {\n var ipHostEntries = [];\n if (entries) {\n entries.forEach(function (entry) {\n if (entry.ip && entry.hostname) {\n ipHostEntries.push(entry.ip + ' ' + entry.hostname);\n }\n });\n }\n return ipHostEntries;\n };\n\n return helper;\n },\n]);\n","angular.module('portainer.docker').factory('TaskHelper', [\n function TaskHelperFactory() {\n 'use strict';\n\n var helper = {};\n\n helper.associateContainerToTask = function (task, containers) {\n for (var i = 0; i < containers.length; i++) {\n var container = containers[i];\n if (task.ContainerId === container.Id) {\n task.Container = container;\n break;\n }\n }\n };\n\n return helper;\n },\n]);\n","angular.module('portainer.docker').factory('VolumeHelper', [\n function VolumeHelperFactory() {\n 'use strict';\n var helper = {};\n\n helper.createDriverOptions = function (optionArray) {\n var options = {};\n optionArray.forEach(function (option) {\n options[option.name] = option.value;\n });\n return options;\n };\n\n helper.isVolumeUsedByAService = function (volume, services) {\n for (var i = 0; i < services.length; i++) {\n var service = services[i];\n var mounts = service.Mounts;\n for (var j = 0; j < mounts.length; j++) {\n var mount = mounts[j];\n if (mount.Source === volume.Id) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n return helper;\n },\n]);\n","import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nfunction b64DecodeUnicode(str) {\n try {\n return decodeURIComponent(\n atob(str)\n .split('')\n .map(function (c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join('')\n );\n } catch (err) {\n return atob(str);\n }\n}\n\nexport function ConfigViewModel(data) {\n this.Id = data.ID;\n this.CreatedAt = data.CreatedAt;\n this.UpdatedAt = data.UpdatedAt;\n this.Version = data.Version.Index;\n this.Name = data.Spec.Name;\n this.Labels = data.Spec.Labels;\n this.Data = b64DecodeUnicode(data.Spec.Data);\n\n if (data.Portainer && data.Portainer.ResourceControl) {\n this.ResourceControl = new ResourceControlViewModel(data.Portainer.ResourceControl);\n }\n}\n","import _ from 'lodash-es';\nimport { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nexport function createStatus(statusText) {\n var status = _.toLower(statusText);\n\n if (status.indexOf('paused') > -1) {\n return 'paused';\n } else if (status.indexOf('dead') > -1) {\n return 'dead';\n } else if (status.indexOf('created') > -1) {\n return 'created';\n } else if (status.indexOf('exited') > -1) {\n return 'stopped';\n } else if (status.indexOf('(healthy)') > -1) {\n return 'healthy';\n } else if (status.indexOf('(unhealthy)') > -1) {\n return 'unhealthy';\n } else if (status.indexOf('(health: starting)') > -1) {\n return 'starting';\n }\n return 'running';\n}\n\nexport function ContainerViewModel(data) {\n this.Id = data.Id;\n this.Status = createStatus(data.Status);\n this.State = data.State;\n this.Created = data.Created;\n this.Names = data.Names;\n // Unavailable in Docker < 1.10\n if (data.NetworkSettings && !_.isEmpty(data.NetworkSettings.Networks)) {\n this.IP = data.NetworkSettings.Networks[Object.keys(data.NetworkSettings.Networks)[0]].IPAddress;\n }\n this.NetworkSettings = data.NetworkSettings;\n this.Image = data.Image;\n this.ImageID = data.ImageID;\n this.Command = data.Command;\n this.Checked = false;\n this.Labels = data.Labels;\n if (this.Labels && this.Labels['com.docker.compose.project']) {\n this.StackName = this.Labels['com.docker.compose.project'];\n } else if (this.Labels && this.Labels['com.docker.stack.namespace']) {\n this.StackName = this.Labels['com.docker.stack.namespace'];\n }\n this.Mounts = data.Mounts;\n\n this.IsPortainer = data.IsPortainer;\n\n this.Ports = [];\n if (data.Ports) {\n for (var i = 0; i < data.Ports.length; ++i) {\n var p = data.Ports[i];\n if (p.PublicPort) {\n this.Ports.push({ host: p.IP, private: p.PrivatePort, public: p.PublicPort });\n }\n }\n }\n\n if (data.Portainer) {\n if (data.Portainer.ResourceControl) {\n this.ResourceControl = new ResourceControlViewModel(data.Portainer.ResourceControl);\n }\n if (data.Portainer.Agent && data.Portainer.Agent.NodeName) {\n this.NodeName = data.Portainer.Agent.NodeName;\n }\n }\n}\n\nexport function ContainerStatsViewModel(data) {\n this.read = data.read;\n this.preread = data.preread;\n if (data.memory_stats.privateworkingset !== undefined) {\n // Windows\n this.MemoryUsage = data.memory_stats.privateworkingset;\n this.MemoryCache = 0;\n this.NumProcs = data.num_procs;\n this.isWindows = true;\n } else {\n // Linux\n if (data.memory_stats.stats === undefined || data.memory_stats.usage === undefined) {\n this.MemoryUsage = this.MemoryCache = 0;\n } else {\n this.MemoryCache = 0;\n if (data.memory_stats.stats.cache !== undefined) {\n // cgroups v1\n this.MemoryCache = data.memory_stats.stats.cache;\n }\n this.MemoryUsage = data.memory_stats.usage - this.MemoryCache;\n }\n }\n this.PreviousCPUTotalUsage = data.precpu_stats.cpu_usage.total_usage;\n this.PreviousCPUSystemUsage = data.precpu_stats.system_cpu_usage;\n this.CurrentCPUTotalUsage = data.cpu_stats.cpu_usage.total_usage;\n this.CurrentCPUSystemUsage = data.cpu_stats.system_cpu_usage;\n this.CPUCores = 1;\n if (data.cpu_stats.cpu_usage.percpu_usage) {\n this.CPUCores = data.cpu_stats.cpu_usage.percpu_usage.length;\n } else {\n if (data.cpu_stats.online_cpus !== undefined) {\n this.CPUCores = data.cpu_stats.online_cpus;\n }\n }\n this.Networks = _.values(data.networks);\n if (data.blkio_stats !== undefined && data.blkio_stats.io_service_bytes_recursive !== null) {\n //TODO: take care of multiple block devices\n var readData = data.blkio_stats.io_service_bytes_recursive.find((d) => d.op === 'Read');\n if (readData === undefined) {\n // try the cgroups v2 version\n readData = data.blkio_stats.io_service_bytes_recursive.find((d) => d.op === 'read');\n }\n if (readData !== undefined) {\n this.BytesRead = readData.value;\n }\n var writeData = data.blkio_stats.io_service_bytes_recursive.find((d) => d.op === 'Write');\n if (writeData === undefined) {\n // try the cgroups v2 version\n writeData = data.blkio_stats.io_service_bytes_recursive.find((d) => d.op === 'write');\n }\n if (writeData !== undefined) {\n this.BytesWrite = writeData.value;\n }\n } else {\n //no IO related data is available\n this.noIOdata = true;\n }\n}\n\nexport function ContainerDetailsViewModel(data) {\n this.Model = data;\n this.Id = data.Id;\n this.State = data.State;\n this.Created = data.Created;\n this.Name = data.Name;\n this.NetworkSettings = data.NetworkSettings;\n this.Args = data.Args;\n this.Image = data.Image;\n this.Config = data.Config;\n this.HostConfig = data.HostConfig;\n this.Mounts = data.Mounts;\n if (data.Portainer && data.Portainer.ResourceControl) {\n this.ResourceControl = new ResourceControlViewModel(data.Portainer.ResourceControl);\n }\n this.IsPortainer = data.IsPortainer;\n}\n","var capDesc = {\n SETPCAP: 'Modify process capabilities.',\n MKNOD: 'Create special files using mknod(2).',\n AUDIT_WRITE: 'Write records to kernel auditing log.',\n CHOWN: 'Make arbitrary changes to file UIDs and GIDs (see chown(2)).',\n NET_RAW: 'Use RAW and PACKET sockets.',\n DAC_OVERRIDE: 'Bypass file read, write, and execute permission checks.',\n FOWNER: 'Bypass permission checks on operations that normally require the file system UID of the process to match the UID of the file.',\n FSETID: 'Don’t clear set-user-ID and set-group-ID permission bits when a file is modified.',\n KILL: 'Bypass permission checks for sending signals.',\n SETGID: 'Make arbitrary manipulations of process GIDs and supplementary GID list.',\n SETUID: 'Make arbitrary manipulations of process UIDs.',\n NET_BIND_SERVICE: 'Bind a socket to internet domain privileged ports (port numbers less than 1024).',\n SYS_CHROOT: 'Use chroot(2), change root directory.',\n SETFCAP: 'Set file capabilities.',\n SYS_MODULE: 'Load and unload kernel modules.',\n SYS_RAWIO: 'Perform I/O port operations (iopl(2) and ioperm(2)).',\n SYS_PACCT: 'Use acct(2), switch process accounting on or off.',\n SYS_ADMIN: 'Perform a range of system administration operations.',\n SYS_NICE: 'Raise process nice value (nice(2), setpriority(2)) and change the nice value for arbitrary processes.',\n SYS_RESOURCE: 'Override resource Limits.',\n SYS_TIME: 'Set system clock (settimeofday(2), stime(2), adjtimex(2)); set real-time (hardware) clock.',\n SYS_TTY_CONFIG: 'Use vhangup(2); employ various privileged ioctl(2) operations on virtual terminals.',\n AUDIT_CONTROL: 'Enable and disable kernel auditing; change auditing filter rules; retrieve auditing status and filtering rules.',\n MAC_ADMIN: 'Allow MAC configuration or state changes. Implemented for the Smack LSM.',\n MAC_OVERRIDE: 'Override Mandatory Access Control (MAC). Implemented for the Smack Linux Security Module (LSM).',\n NET_ADMIN: 'Perform various network-related operations.',\n SYSLOG: 'Perform privileged syslog(2) operations.',\n DAC_READ_SEARCH: 'Bypass file read permission checks and directory read and execute permission checks.',\n LINUX_IMMUTABLE: 'Set the FS_APPEND_FL and FS_IMMUTABLE_FL i-node flags.',\n NET_BROADCAST: 'Make socket broadcasts, and listen to multicasts.',\n IPC_LOCK: 'Lock memory (mlock(2), mlockall(2), mmap(2), shmctl(2)).',\n IPC_OWNER: 'Bypass permission checks for operations on System V IPC objects.',\n SYS_PTRACE: 'Trace arbitrary processes using ptrace(2).',\n SYS_BOOT: 'Use reboot(2) and kexec_load(2), reboot and load a new kernel for later execution.',\n LEASE: 'Establish leases on arbitrary files (see fcntl(2)).',\n WAKE_ALARM: 'Trigger something that will wake up the system.',\n BLOCK_SUSPEND: 'Employ features that can block system suspend.',\n};\n\nexport function ContainerCapabilities() {\n // all capabilities can be found at https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities\n return [\n new ContainerCapability('SETPCAP', true),\n new ContainerCapability('MKNOD', true),\n new ContainerCapability('AUDIT_WRITE', true),\n new ContainerCapability('CHOWN', true),\n new ContainerCapability('NET_RAW', true),\n new ContainerCapability('DAC_OVERRIDE', true),\n new ContainerCapability('FOWNER', true),\n new ContainerCapability('FSETID', true),\n new ContainerCapability('KILL', true),\n new ContainerCapability('SETGID', true),\n new ContainerCapability('SETUID', true),\n new ContainerCapability('NET_BIND_SERVICE', true),\n new ContainerCapability('SYS_CHROOT', true),\n new ContainerCapability('SETFCAP', true),\n new ContainerCapability('SYS_MODULE', false),\n new ContainerCapability('SYS_RAWIO', false),\n new ContainerCapability('SYS_PACCT', false),\n new ContainerCapability('SYS_ADMIN', false),\n new ContainerCapability('SYS_NICE', false),\n new ContainerCapability('SYS_RESOURCE', false),\n new ContainerCapability('SYS_TIME', false),\n new ContainerCapability('SYS_TTY_CONFIG', false),\n new ContainerCapability('AUDIT_CONTROL', false),\n new ContainerCapability('MAC_ADMIN', false),\n new ContainerCapability('MAC_OVERRIDE', false),\n new ContainerCapability('NET_ADMIN', false),\n new ContainerCapability('SYSLOG', false),\n new ContainerCapability('DAC_READ_SEARCH', false),\n new ContainerCapability('LINUX_IMMUTABLE', false),\n new ContainerCapability('NET_BROADCAST', false),\n new ContainerCapability('IPC_LOCK', false),\n new ContainerCapability('IPC_OWNER', false),\n new ContainerCapability('SYS_PTRACE', false),\n new ContainerCapability('SYS_BOOT', false),\n new ContainerCapability('LEASE', false),\n new ContainerCapability('WAKE_ALARM', false),\n new ContainerCapability('BLOCK_SUSPEND', false),\n ].sort(function (a, b) {\n return a.capability < b.capability ? -1 : 1;\n });\n}\n\nexport function ContainerCapability(cap, allowed) {\n this.capability = cap;\n this.allowed = allowed;\n this.description = capDesc[cap];\n}\n","function createEventDetails(event) {\n var eventAttr = event.Actor.Attributes;\n var details = '';\n\n var action = event.Action;\n var extra = '';\n var hasColon = action.indexOf(':');\n if (hasColon != -1) {\n extra = action.substring(hasColon);\n action = action.substring(0, hasColon);\n }\n\n switch (event.Type) {\n case 'container':\n switch (action) {\n case 'stop':\n details = 'Container ' + eventAttr.name + ' stopped';\n break;\n case 'destroy':\n details = 'Container ' + eventAttr.name + ' deleted';\n break;\n case 'create':\n details = 'Container ' + eventAttr.name + ' created';\n break;\n case 'start':\n details = 'Container ' + eventAttr.name + ' started';\n break;\n case 'kill':\n details = 'Container ' + eventAttr.name + ' killed';\n break;\n case 'die':\n details = 'Container ' + eventAttr.name + ' exited with status code ' + eventAttr.exitCode;\n break;\n case 'commit':\n details = 'Container ' + eventAttr.name + ' committed';\n break;\n case 'restart':\n details = 'Container ' + eventAttr.name + ' restarted';\n break;\n case 'pause':\n details = 'Container ' + eventAttr.name + ' paused';\n break;\n case 'unpause':\n details = 'Container ' + eventAttr.name + ' unpaused';\n break;\n case 'attach':\n details = 'Container ' + eventAttr.name + ' attached';\n break;\n case 'detach':\n details = 'Container ' + eventAttr.name + ' detached';\n break;\n case 'copy':\n details = 'Container ' + eventAttr.name + ' copied';\n break;\n case 'export':\n details = 'Container ' + eventAttr.name + ' exported';\n break;\n case 'health_status':\n details = 'Container ' + eventAttr.name + ' executed health status';\n break;\n case 'oom':\n details = 'Container ' + eventAttr.name + ' goes in out of memory';\n break;\n case 'rename':\n details = 'Container ' + eventAttr.name + ' renamed';\n break;\n case 'resize':\n details = 'Container ' + eventAttr.name + ' resized';\n break;\n case 'top':\n details = 'Showed running processes for container ' + eventAttr.name;\n break;\n case 'update':\n details = 'Container ' + eventAttr.name + ' updated';\n break;\n case 'exec_create':\n details = 'Exec instance created';\n break;\n case 'exec_start':\n details = 'Exec instance started';\n break;\n case 'exec_die':\n details = 'Exec instance exited';\n break;\n default:\n details = 'Unsupported event';\n }\n break;\n case 'image':\n switch (action) {\n case 'delete':\n details = 'Image deleted';\n break;\n case 'import':\n details = 'Image ' + event.Actor.ID + ' imported';\n break;\n case 'load':\n details = 'Image ' + event.Actor.ID + ' loaded';\n break;\n case 'tag':\n details = 'New tag created for ' + eventAttr.name;\n break;\n case 'untag':\n details = 'Image untagged';\n break;\n case 'save':\n details = 'Image ' + event.Actor.ID + ' saved';\n break;\n case 'pull':\n details = 'Image ' + event.Actor.ID + ' pulled';\n break;\n case 'push':\n details = 'Image ' + event.Actor.ID + ' pushed';\n break;\n default:\n details = 'Unsupported event';\n }\n break;\n case 'network':\n switch (action) {\n case 'create':\n details = 'Network ' + eventAttr.name + ' created';\n break;\n case 'destroy':\n details = 'Network ' + eventAttr.name + ' deleted';\n break;\n case 'remove':\n details = 'Network ' + eventAttr.name + ' removed';\n break;\n case 'connect':\n details = 'Container connected to ' + eventAttr.name + ' network';\n break;\n case 'disconnect':\n details = 'Container disconnected from ' + eventAttr.name + ' network';\n break;\n default:\n details = 'Unsupported event';\n }\n break;\n case 'volume':\n switch (action) {\n case 'create':\n details = 'Volume ' + event.Actor.ID + ' created';\n break;\n case 'destroy':\n details = 'Volume ' + event.Actor.ID + ' deleted';\n break;\n case 'mount':\n details = 'Volume ' + event.Actor.ID + ' mounted';\n break;\n case 'unmount':\n details = 'Volume ' + event.Actor.ID + ' unmounted';\n break;\n default:\n details = 'Unsupported event';\n }\n break;\n default:\n details = 'Unsupported event';\n }\n return details + extra;\n}\n\nexport function EventViewModel(data) {\n // Type, Action, Actor unavailable in Docker < 1.10\n this.Time = data.time;\n if (data.Type) {\n this.Type = data.Type;\n this.Details = createEventDetails(data);\n } else {\n this.Type = data.status;\n this.Details = data.from;\n }\n}\n","export function ImageViewModel(data) {\n this.Id = data.Id;\n this.Tag = data.Tag;\n this.Repository = data.Repository;\n this.Created = data.Created;\n this.Checked = false;\n this.RepoTags = data.RepoTags;\n if ((!this.RepoTags || this.RepoTags.length === 0) && data.RepoDigests) {\n this.RepoTags = [];\n for (var i = 0; i < data.RepoDigests.length; i++) {\n var digest = data.RepoDigests[i];\n var repository = digest.substring(0, digest.indexOf('@'));\n this.RepoTags.push(repository + ':<none>');\n }\n }\n\n this.VirtualSize = data.VirtualSize;\n this.Used = data.Used;\n\n if (data.Portainer && data.Portainer.Agent && data.Portainer.Agent.NodeName) {\n this.NodeName = data.Portainer.Agent.NodeName;\n }\n this.Labels = data.Labels;\n}\n\nexport function ImageBuildModel(data) {\n this.hasError = false;\n var buildLogs = [];\n\n for (var i = 0; i < data.length; i++) {\n var line = data[i];\n\n if (line.stream) {\n line = line.stream.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');\n buildLogs.push(line);\n }\n\n if (line.errorDetail) {\n buildLogs.push(line.errorDetail.message);\n this.hasError = true;\n }\n }\n\n this.buildLogs = buildLogs;\n}\n","export function ImageDetailsViewModel(data) {\n this.Id = data.Id;\n this.Tag = data.Tag;\n this.Parent = data.Parent;\n this.Repository = data.Repository;\n this.Created = data.Created;\n this.Checked = false;\n this.RepoTags = data.RepoTags;\n this.VirtualSize = data.VirtualSize;\n this.DockerVersion = data.DockerVersion;\n this.Os = data.Os;\n this.Architecture = data.Architecture;\n this.Author = data.Author;\n this.Command = data.Config.Cmd;\n this.Entrypoint = data.ContainerConfig.Entrypoint ? data.ContainerConfig.Entrypoint : '';\n this.ExposedPorts = data.ContainerConfig.ExposedPorts ? Object.keys(data.ContainerConfig.ExposedPorts) : [];\n this.Volumes = data.ContainerConfig.Volumes ? Object.keys(data.ContainerConfig.Volumes) : [];\n this.Env = data.ContainerConfig.Env ? data.ContainerConfig.Env : [];\n this.Labels = data.ContainerConfig.Labels;\n}\n","export function ImageLayerViewModel(order, data) {\n this.Order = order;\n this.Id = data.Id;\n this.Created = data.Created;\n this.CreatedBy = data.CreatedBy;\n this.Size = data.Size;\n this.Comment = data.Comment;\n this.Tags = data.Tags;\n}\n","import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nexport function NetworkViewModel(data) {\n this.Id = data.Id;\n this.Name = data.Name;\n this.Scope = data.Scope;\n this.Driver = data.Driver;\n this.Attachable = data.Attachable;\n this.Internal = data.Internal;\n this.IPAM = data.IPAM;\n this.Containers = data.Containers;\n this.Options = data.Options;\n this.Ingress = data.Ingress;\n\n this.Labels = data.Labels;\n if (this.Labels && this.Labels['com.docker.compose.project']) {\n this.StackName = this.Labels['com.docker.compose.project'];\n } else if (this.Labels && this.Labels['com.docker.stack.namespace']) {\n this.StackName = this.Labels['com.docker.stack.namespace'];\n }\n\n if (data.Portainer) {\n if (data.Portainer.ResourceControl) {\n this.ResourceControl = new ResourceControlViewModel(data.Portainer.ResourceControl);\n }\n if (data.Portainer.Agent && data.Portainer.Agent.NodeName) {\n this.NodeName = data.Portainer.Agent.NodeName;\n }\n }\n\n this.ConfigFrom = data.ConfigFrom;\n this.ConfigOnly = data.ConfigOnly;\n}\n","export function NodeViewModel(data) {\n this.Model = data;\n this.Id = data.ID;\n this.Version = data.Version.Index;\n this.Name = data.Spec.Name;\n this.Role = data.Spec.Role;\n this.CreatedAt = data.CreatedAt;\n this.UpdatedAt = data.UpdatedAt;\n this.Availability = data.Spec.Availability;\n\n var labels = data.Spec.Labels;\n if (labels) {\n this.Labels = Object.keys(labels).map(function (key) {\n return { key: key, value: labels[key], originalKey: key, originalValue: labels[key], added: true };\n });\n } else {\n this.Labels = [];\n }\n\n var engineLabels = data.Description.Engine.Labels;\n if (engineLabels) {\n this.EngineLabels = Object.keys(engineLabels).map(function (key) {\n return { key: key, value: engineLabels[key] };\n });\n } else {\n this.EngineLabels = [];\n }\n\n this.Hostname = data.Description.Hostname;\n this.PlatformArchitecture = data.Description.Platform.Architecture;\n this.PlatformOS = data.Description.Platform.OS;\n this.CPUs = data.Description.Resources.NanoCPUs;\n this.Memory = data.Description.Resources.MemoryBytes;\n this.EngineVersion = data.Description.Engine.EngineVersion;\n this.Plugins = data.Description.Engine.Plugins;\n this.Status = data.Status.State;\n\n if (data.Status.Addr) {\n this.Addr = data.Status.Addr;\n }\n\n if (data.ManagerStatus) {\n this.Leader = data.ManagerStatus.Leader;\n this.Reachability = data.ManagerStatus.Reachability;\n this.ManagerAddr = data.ManagerStatus.Addr;\n }\n}\n","// This model is based on https://github.com/moby/moby/blob/0ac25dfc751fa4304ab45afd5cd8705c2235d101/api/types/plugin.go#L8-L31\n// instead of the official documentation.\n// See: https://github.com/moby/moby/issues/34241\nexport function PluginViewModel(data) {\n this.Id = data.Id;\n this.Name = data.Name;\n this.Enabled = data.Enabled;\n this.Config = data.Config;\n}\n","/**\n * This model should be used with por-image-registry component\n * And bound to the 'model' attribute\n *\n * // viewController.js\n *\n * this.imageModel = new PorImageRegistryModel();\n *\n * // view.html\n * <por-image-registry model=\"$ctrl.imageModel\" ... />\n */\nexport function PorImageRegistryModel() {\n this.UseRegistry = true;\n this.Registry = {};\n this.Image = '';\n}\n","import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nexport function SecretViewModel(data) {\n this.Id = data.ID;\n this.CreatedAt = data.CreatedAt;\n this.UpdatedAt = data.UpdatedAt;\n this.Version = data.Version.Index;\n this.Name = data.Spec.Name;\n this.Labels = data.Spec.Labels;\n\n if (data.Portainer) {\n if (data.Portainer.ResourceControl) {\n this.ResourceControl = new ResourceControlViewModel(data.Portainer.ResourceControl);\n }\n }\n}\n","import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nexport function ServiceViewModel(data, runningTasks, allTasks) {\n this.Model = data;\n this.Id = data.ID;\n this.Tasks = [];\n this.Name = data.Spec.Name;\n this.CreatedAt = data.CreatedAt;\n this.UpdatedAt = data.UpdatedAt;\n this.Image = data.Spec.TaskTemplate.ContainerSpec.Image;\n this.Version = data.Version.Index;\n if (data.Spec.Mode.Replicated) {\n this.Mode = 'replicated';\n this.Replicas = data.Spec.Mode.Replicated.Replicas;\n } else {\n this.Mode = 'global';\n if (allTasks) {\n this.Replicas = allTasks.length;\n }\n }\n if (runningTasks) {\n this.Running = runningTasks.length;\n }\n if (data.Spec.TaskTemplate.Resources) {\n if (data.Spec.TaskTemplate.Resources.Limits) {\n this.LimitNanoCPUs = data.Spec.TaskTemplate.Resources.Limits.NanoCPUs;\n this.LimitMemoryBytes = data.Spec.TaskTemplate.Resources.Limits.MemoryBytes;\n }\n if (data.Spec.TaskTemplate.Resources.Reservations) {\n this.ReservationNanoCPUs = data.Spec.TaskTemplate.Resources.Reservations.NanoCPUs;\n this.ReservationMemoryBytes = data.Spec.TaskTemplate.Resources.Reservations.MemoryBytes;\n }\n }\n\n if (data.Spec.TaskTemplate.RestartPolicy) {\n this.RestartCondition = data.Spec.TaskTemplate.RestartPolicy.Condition || 'any';\n this.RestartDelay = data.Spec.TaskTemplate.RestartPolicy.Delay || 5000000000;\n this.RestartMaxAttempts = data.Spec.TaskTemplate.RestartPolicy.MaxAttempts || 0;\n this.RestartWindow = data.Spec.TaskTemplate.RestartPolicy.Window || 0;\n } else {\n this.RestartCondition = 'any';\n this.RestartDelay = 5000000000;\n this.RestartMaxAttempts = 0;\n this.RestartWindow = 0;\n }\n\n if (data.Spec.TaskTemplate.LogDriver) {\n this.LogDriverName = data.Spec.TaskTemplate.LogDriver.Name || '';\n this.LogDriverOpts = data.Spec.TaskTemplate.LogDriver.Options || [];\n } else {\n this.LogDriverName = '';\n this.LogDriverOpts = [];\n }\n\n this.Constraints = data.Spec.TaskTemplate.Placement ? data.Spec.TaskTemplate.Placement.Constraints || [] : [];\n this.Preferences = data.Spec.TaskTemplate.Placement ? data.Spec.TaskTemplate.Placement.Preferences || [] : [];\n this.Platforms = data.Spec.TaskTemplate.Placement ? data.Spec.TaskTemplate.Placement.Platforms || [] : [];\n this.Labels = data.Spec.Labels;\n if (this.Labels && this.Labels['com.docker.stack.namespace']) {\n this.StackName = this.Labels['com.docker.stack.namespace'];\n }\n\n var containerSpec = data.Spec.TaskTemplate.ContainerSpec;\n if (containerSpec) {\n this.ContainerLabels = containerSpec.Labels;\n this.Command = containerSpec.Command;\n this.Arguments = containerSpec.Args;\n this.Hostname = containerSpec.Hostname;\n this.Env = containerSpec.Env;\n this.Dir = containerSpec.Dir;\n this.User = containerSpec.User;\n this.Groups = containerSpec.Groups;\n this.TTY = containerSpec.TTY;\n this.OpenStdin = containerSpec.OpenStdin;\n this.ReadOnly = containerSpec.ReadOnly;\n this.Mounts = containerSpec.Mounts || [];\n this.StopSignal = containerSpec.StopSignal;\n this.StopGracePeriod = containerSpec.StopGracePeriod;\n this.HealthCheck = containerSpec.HealthCheck || {};\n this.Hosts = containerSpec.Hosts;\n this.DNSConfig = containerSpec.DNSConfig;\n this.Secrets = containerSpec.Secrets;\n this.Configs = containerSpec.Configs;\n }\n if (data.Endpoint) {\n this.Ports = data.Endpoint.Ports;\n }\n\n this.LogDriver = data.Spec.TaskTemplate.LogDriver;\n this.Runtime = data.Spec.TaskTemplate.Runtime;\n\n this.VirtualIPs = data.Endpoint ? data.Endpoint.VirtualIPs : [];\n\n if (data.Spec.UpdateConfig) {\n this.UpdateParallelism = typeof data.Spec.UpdateConfig.Parallelism !== 'undefined' ? data.Spec.UpdateConfig.Parallelism || 0 : 1;\n this.UpdateDelay = data.Spec.UpdateConfig.Delay || 0;\n this.UpdateFailureAction = data.Spec.UpdateConfig.FailureAction || 'pause';\n this.UpdateOrder = data.Spec.UpdateConfig.Order || 'stop-first';\n } else {\n this.UpdateParallelism = 1;\n this.UpdateDelay = 0;\n this.UpdateFailureAction = 'pause';\n this.UpdateOrder = 'stop-first';\n }\n\n this.RollbackConfig = data.Spec.RollbackConfig;\n\n this.Checked = false;\n this.Scale = false;\n this.EditName = false;\n\n if (data.Portainer) {\n if (data.Portainer.ResourceControl) {\n this.ResourceControl = new ResourceControlViewModel(data.Portainer.ResourceControl);\n }\n }\n}\n","export function SwarmViewModel(data) {\n this.Id = data.ID;\n}\n","export function TaskViewModel(data) {\n this.Id = data.ID;\n this.Created = data.CreatedAt;\n this.Updated = data.UpdatedAt;\n this.Slot = data.Slot;\n this.Spec = data.Spec;\n this.Status = data.Status;\n this.DesiredState = data.DesiredState;\n this.ServiceId = data.ServiceID;\n this.NodeId = data.NodeID;\n if (data.Status && data.Status.ContainerStatus && data.Status.ContainerStatus.ContainerID) {\n this.ContainerId = data.Status.ContainerStatus.ContainerID;\n }\n}\n","import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nexport function VolumeViewModel(data) {\n this.Id = data.Name;\n this.CreatedAt = data.CreatedAt;\n this.Driver = data.Driver;\n this.Options = data.Options;\n this.Labels = data.Labels;\n if (this.Labels && this.Labels['com.docker.compose.project']) {\n this.StackName = this.Labels['com.docker.compose.project'];\n } else if (this.Labels && this.Labels['com.docker.stack.namespace']) {\n this.StackName = this.Labels['com.docker.stack.namespace'];\n }\n this.Mountpoint = data.Mountpoint;\n\n this.ResourceId = data.ResourceID;\n\n if (data.Portainer) {\n if (data.Portainer.ResourceControl) {\n this.ResourceControl = new ResourceControlViewModel(data.Portainer.ResourceControl);\n }\n if (data.Portainer.Agent && data.Portainer.Agent.NodeName) {\n this.NodeName = data.Portainer.Agent.NodeName;\n }\n }\n}\n","import { API_ENDPOINT_ENDPOINTS } from '@/constants';\nimport { jsonObjectsToArrayHandler } from './response/handlers';\n\nangular.module('portainer.docker').factory('Build', [\n '$resource',\n function BuildFactory($resource) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/build',\n {},\n {\n buildImage: {\n method: 'POST',\n ignoreLoadingBar: true,\n transformResponse: jsonObjectsToArrayHandler,\n isArray: true,\n headers: { 'Content-Type': 'application/x-tar' },\n },\n buildImageOverride: {\n method: 'POST',\n ignoreLoadingBar: true,\n transformResponse: jsonObjectsToArrayHandler,\n isArray: true,\n },\n }\n );\n },\n]);\n","angular.module('portainer.docker').factory('Commit', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n function CommitFactory($resource, API_ENDPOINT_ENDPOINTS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:environmentId/docker/commit',\n {},\n {\n commitContainer: { method: 'POST', params: { container: '@id', repo: '@repo' }, ignoreLoadingBar: true },\n }\n );\n },\n]);\n","angular.module('portainer.docker').factory('Config', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function ConfigFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/configs/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: { method: 'GET', params: { id: '@id' } },\n query: { method: 'GET', isArray: true },\n create: { method: 'POST', params: { action: 'create' }, ignoreLoadingBar: true },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n },\n]);\n","import { genericHandler, logsHandler } from './response/handlers';\n\nangular.module('portainer.docker').factory('Container', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function ContainerFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/containers/:id/:action',\n {\n name: '@name',\n endpointId: EndpointProvider.endpointID,\n },\n {\n query: {\n method: 'GET',\n params: { all: 0, action: 'json', filters: '@filters' },\n isArray: true,\n },\n get: {\n method: 'GET',\n params: { action: 'json' },\n },\n logs: {\n method: 'GET',\n params: { id: '@id', action: 'logs' },\n ignoreLoadingBar: true,\n transformResponse: logsHandler,\n },\n stats: {\n method: 'GET',\n params: { id: '@id', stream: false, action: 'stats' },\n ignoreLoadingBar: true,\n },\n top: {\n method: 'GET',\n params: { id: '@id', action: 'top' },\n ignoreLoadingBar: true,\n },\n create: {\n method: 'POST',\n params: { action: 'create' },\n transformResponse: genericHandler,\n ignoreLoadingBar: true,\n },\n exec: {\n method: 'POST',\n params: { id: '@id', action: 'exec' },\n transformResponse: genericHandler,\n ignoreLoadingBar: true,\n },\n inspect: {\n method: 'GET',\n params: { id: '@id', action: 'json' },\n },\n update: {\n method: 'POST',\n params: { id: '@id', action: 'update' },\n },\n prune: {\n method: 'POST',\n params: { action: 'prune', filters: '@filters' },\n },\n resize: {\n method: 'POST',\n params: { id: '@id', action: 'resize', h: '@height', w: '@width' },\n transformResponse: genericHandler,\n ignoreLoadingBar: true,\n },\n }\n );\n },\n]);\n","import { genericHandler } from './response/handlers';\n\nangular.module('portainer.docker').factory('Exec', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function ExecFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/exec/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n resize: {\n method: 'POST',\n params: { id: '@id', action: 'resize', h: '@height', w: '@width' },\n transformResponse: genericHandler,\n ignoreLoadingBar: true,\n },\n }\n );\n },\n]);\n","import { deleteImageHandler, jsonObjectsToArrayHandler } from './response/handlers';\nimport { imageGetResponse } from './response/image';\n\nangular.module('portainer.docker').factory('Image', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n 'HttpRequestHelper',\n function ImageFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, HttpRequestHelper) {\n 'use strict';\n\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/images/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n query: { method: 'GET', params: { all: 0, action: 'json' }, isArray: true },\n get: { method: 'GET', params: { action: 'json' } },\n search: { method: 'GET', params: { action: 'search' } },\n history: { method: 'GET', params: { action: 'history' }, isArray: true },\n insert: { method: 'POST', params: { id: '@id', action: 'insert' } },\n tag: { method: 'POST', params: { id: '@id', action: 'tag', force: 0, repo: '@repo' }, ignoreLoadingBar: true },\n inspect: { method: 'GET', params: { id: '@id', action: 'json' } },\n push: {\n method: 'POST',\n params: { action: 'push', id: '@imageName' },\n isArray: true,\n transformResponse: jsonObjectsToArrayHandler,\n headers: { 'X-Registry-Auth': HttpRequestHelper.registryAuthenticationHeader },\n ignoreLoadingBar: true,\n },\n create: {\n method: 'POST',\n params: { action: 'create', fromImage: '@fromImage' },\n isArray: true,\n transformResponse: jsonObjectsToArrayHandler,\n headers: { 'X-Registry-Auth': HttpRequestHelper.registryAuthenticationHeader },\n ignoreLoadingBar: true,\n },\n download: {\n method: 'GET',\n params: { action: 'get', names: '@names' },\n transformResponse: imageGetResponse,\n responseType: 'blob',\n ignoreLoadingBar: true,\n },\n remove: {\n method: 'DELETE',\n params: { id: '@id', force: '@force' },\n isArray: true,\n transformResponse: deleteImageHandler,\n },\n }\n );\n },\n]);\n","import { genericHandler } from './response/handlers';\n\nangular.module('portainer.docker').factory('Network', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function NetworkFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/networks/:id/:action',\n {\n id: '@id',\n endpointId: EndpointProvider.endpointID,\n },\n {\n query: {\n method: 'GET',\n isArray: true,\n },\n get: {\n method: 'GET',\n },\n create: {\n method: 'POST',\n params: { action: 'create' },\n transformResponse: genericHandler,\n ignoreLoadingBar: true,\n },\n remove: {\n method: 'DELETE',\n transformResponse: genericHandler,\n },\n connect: {\n method: 'POST',\n params: { action: 'connect' },\n },\n disconnect: {\n method: 'POST',\n params: { action: 'disconnect' },\n },\n }\n );\n },\n]);\n","angular.module('portainer.docker').factory('Node', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function NodeFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/nodes/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'POST', params: { id: '@id', action: 'update', version: '@version' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n },\n]);\n","angular.module('portainer.docker').factory('Plugin', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function PluginFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/plugins/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n query: { method: 'GET', isArray: true },\n }\n );\n },\n]);\n","function isJSONArray(jsonString) {\n return Object.prototype.toString.call(jsonString) === '[object Array]';\n}\n\nfunction isJSON(jsonString) {\n try {\n var o = JSON.parse(jsonString);\n if (o && typeof o === 'object') {\n return o;\n }\n } catch (e) {\n //empty\n }\n return false;\n}\n\n// The Docker API often returns a list of JSON object.\n// This handler wrap the JSON objects in an array.\n// Used by the API in: Image push, Image create, Events query.\nexport function jsonObjectsToArrayHandler(data) {\n // catching empty data helps the function not to fail and prevents unwanted error message to user.\n if (!data) {\n return [];\n }\n var str = '[' + data.replace(/\\n/g, ' ').replace(/\\}\\s*\\{/g, '}, {') + ']';\n return angular.fromJson(str);\n}\n\n// The Docker API often returns an empty string or a valid JSON object on success (Docker 1.9 -> Docker 1.12).\n// On error, it returns either an error message as a string (Docker < 1.12) or a JSON object with the field message\n// container the error (Docker = 1.12)\n// This handler ensure a valid JSON object is returned in any case.\n// Used by the API in: container deletion, network deletion, network creation, volume creation,\n// container exec, exec resize.\nexport function genericHandler(data) {\n var response = {};\n // No data is returned when deletion is successful (Docker 1.9 -> 1.12)\n if (!data) {\n return response;\n }\n // A string is returned on failure (Docker < 1.12)\n else if (!isJSON(data)) {\n response.message = data;\n }\n // Docker 1.12 returns a valid JSON object when an error occurs\n else {\n response = angular.fromJson(data);\n }\n return response;\n}\n\n// The Docker API returns the logs as a single string.\n// This handler wraps the data in a JSON object under the \"logs\" property.\nexport function logsHandler(data) {\n return {\n logs: data,\n };\n}\n\n// Image delete API returns an array on success (Docker 1.9 -> Docker 1.12).\n// On error, it returns either an error message as a string (Docker < 1.12) or a JSON object with the field message\n// container the error (Docker = 1.12).\n// This handler returns the original array on success or a newly created array containing\n// only one JSON object with the field message filled with the error message on failure.\nexport function deleteImageHandler(data) {\n // A string is returned on failure (Docker < 1.12)\n var response = [];\n if (!isJSON(data)) {\n response.push({ message: data });\n }\n // A JSON object is returned on failure (Docker = 1.12)\n else if (!isJSONArray(data)) {\n var json = angular.fromJson(data);\n response.push(json);\n }\n // An array is returned on success (Docker 1.9 -> 1.12)\n else {\n response = angular.fromJson(data);\n }\n return response;\n}\n","// The get action of the Image service returns a file.\n// ngResource will transform it as an array of chars.\n// This functions simply creates a response object and assign\n// the data to a field.\nexport function imageGetResponse(data) {\n var response = {};\n response.file = data;\n return response;\n}\n","angular.module('portainer.docker').factory('Secret', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function SecretFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/secrets/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: { method: 'GET', params: { id: '@id' } },\n query: { method: 'GET', isArray: true },\n create: { method: 'POST', params: { action: 'create' }, ignoreLoadingBar: true },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n },\n]);\n","import { logsHandler } from './response/handlers';\n\nangular.module('portainer.docker').factory('Service', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n 'HttpRequestHelper',\n function ServiceFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider, HttpRequestHelper) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/services/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: { method: 'GET', params: { id: '@id' } },\n query: { method: 'GET', isArray: true, params: { filters: '@filters' } },\n create: {\n method: 'POST',\n params: { action: 'create' },\n headers: {\n 'X-Registry-Auth': HttpRequestHelper.registryAuthenticationHeader,\n version: '1.29',\n },\n ignoreLoadingBar: true,\n },\n update: {\n method: 'POST',\n params: { id: '@id', action: 'update', version: '@version', rollback: '@rollback' },\n headers: {\n 'X-Registry-Auth': (config) => btoa(JSON.stringify({ registryId: config.data.registryId })),\n version: '1.29',\n },\n },\n remove: { method: 'DELETE', params: { id: '@id' } },\n logs: {\n method: 'GET',\n params: { id: '@id', action: 'logs' },\n ignoreLoadingBar: true,\n transformResponse: logsHandler,\n },\n }\n );\n },\n]);\n","angular.module('portainer.docker').factory('Swarm', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function SwarmFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/swarm',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: { method: 'GET' },\n }\n );\n },\n]);\n","import { jsonObjectsToArrayHandler } from './response/handlers';\n\nangular.module('portainer.docker').factory('System', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function SystemFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/:action/:subAction',\n {\n name: '@name',\n endpointId: EndpointProvider.endpointID,\n },\n {\n info: {\n method: 'GET',\n params: { action: 'info' },\n },\n version: { method: 'GET', params: { action: 'version' } },\n events: {\n method: 'GET',\n params: { action: 'events', since: '@since', until: '@until' },\n isArray: true,\n transformResponse: jsonObjectsToArrayHandler,\n },\n auth: { method: 'POST', params: { action: 'auth' } },\n dataUsage: { method: 'GET', params: { action: 'system', subAction: 'df' } },\n }\n );\n },\n]);\n","import { logsHandler } from './response/handlers';\n\nangular.module('portainer.docker').factory('Task', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function TaskFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/tasks/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: { method: 'GET', params: { id: '@id' } },\n query: { method: 'GET', isArray: true, params: { filters: '@filters' } },\n logs: {\n method: 'GET',\n params: { id: '@id', action: 'logs' },\n ignoreLoadingBar: true,\n transformResponse: logsHandler,\n },\n }\n );\n },\n]);\n","import { genericHandler } from './response/handlers';\n\nangular.module('portainer.docker').factory('Volume', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function VolumeFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n\n function addVolumeNameToHeader(config) {\n return config.data.Name || '';\n }\n\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:endpointId/docker/volumes/:id/:action',\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n query: { method: 'GET' },\n get: { method: 'GET', params: { id: '@id' } },\n create: {\n method: 'POST',\n params: { action: 'create' },\n transformResponse: genericHandler,\n ignoreLoadingBar: true,\n headers: { 'X-Portainer-VolumeName': addVolumeNameToHeader },\n },\n remove: {\n method: 'DELETE',\n transformResponse: genericHandler,\n params: { id: '@id' },\n },\n }\n );\n },\n]);\n","import { ImageBuildModel } from '../models/image';\n\nangular.module('portainer.docker').factory('BuildService', [\n '$q',\n 'Build',\n 'FileUploadService',\n function BuildServiceFactory($q, Build, FileUploadService) {\n 'use strict';\n var service = {};\n\n service.buildImageFromUpload = function (endpointID, names, file, path) {\n var deferred = $q.defer();\n\n FileUploadService.buildImage(endpointID, names, file, path)\n .then(function success(response) {\n var model = new ImageBuildModel(response.data);\n deferred.resolve(model);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n service.buildImageFromURL = function (endpointId, names, url, path) {\n var params = {\n endpointId,\n t: names,\n remote: url,\n dockerfile: path,\n };\n\n var deferred = $q.defer();\n\n Build.buildImage(params, {})\n .$promise.then(function success(data) {\n var model = new ImageBuildModel(data);\n deferred.resolve(model);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n service.buildImageFromDockerfileContent = function (endpointId, names, content) {\n var params = {\n endpointId,\n t: names,\n };\n var payload = {\n content: content,\n };\n\n var deferred = $q.defer();\n\n Build.buildImageOverride(params, payload)\n .$promise.then(function success(data) {\n var model = new ImageBuildModel(data);\n deferred.resolve(model);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n service.buildImageFromDockerfileContentAndFiles = function (endpointID, names, content, files) {\n var dockerfile = new Blob([content], { type: 'text/plain' });\n var uploadFiles = [dockerfile].concat(files);\n\n var deferred = $q.defer();\n\n FileUploadService.buildImageFromFiles(endpointID, names, uploadFiles)\n .then(function success(response) {\n var model = new ImageBuildModel(response.data);\n deferred.resolve(model);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n return service;\n },\n]);\n","import { ConfigViewModel } from '../models/config';\n\nangular.module('portainer.docker').factory('ConfigService', [\n '$q',\n 'Config',\n function ConfigServiceFactory($q, Config) {\n 'use strict';\n var service = {};\n\n service.config = function (configId) {\n var deferred = $q.defer();\n\n Config.get({ id: configId })\n .$promise.then(function success(data) {\n var config = new ConfigViewModel(data);\n deferred.resolve(config);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve config details', err: err });\n });\n\n return deferred.promise;\n };\n\n service.configs = function () {\n var deferred = $q.defer();\n\n Config.query({})\n .$promise.then(function success(data) {\n var configs = data.map(function (item) {\n return new ConfigViewModel(item);\n });\n deferred.resolve(configs);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve configs', err: err });\n });\n\n return deferred.promise;\n };\n\n service.remove = function (configId) {\n var deferred = $q.defer();\n\n Config.remove({ id: configId })\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: data.message });\n } else {\n deferred.resolve();\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to remove config', err: err });\n });\n\n return deferred.promise;\n };\n\n service.create = function (config) {\n return Config.create(config).$promise;\n };\n\n return service;\n },\n]);\n","import angular from 'angular';\nimport {\n killContainer,\n pauseContainer,\n removeContainer,\n renameContainer,\n restartContainer,\n resumeContainer,\n startContainer,\n stopContainer,\n recreateContainer,\n} from '@/react/docker/containers/containers.service';\nimport { ContainerDetailsViewModel, ContainerStatsViewModel, ContainerViewModel } from '../models/container';\nimport { formatLogs } from '../helpers/logHelper';\n\nangular.module('portainer.docker').factory('ContainerService', ContainerServiceFactory);\n\n/* @ngInject */\nfunction ContainerServiceFactory($q, Container, $timeout, EndpointProvider) {\n const service = {\n killContainer: withEndpointId(killContainer),\n pauseContainer: withEndpointId(pauseContainer),\n renameContainer: withEndpointId(renameContainer),\n restartContainer: withEndpointId(restartContainer),\n resumeContainer: withEndpointId(resumeContainer),\n startContainer: withEndpointId(startContainer),\n stopContainer: withEndpointId(stopContainer),\n recreateContainer: withEndpointId(recreateContainer),\n remove: withEndpointId(removeContainer),\n updateRestartPolicy,\n updateLimits,\n };\n\n service.container = function (id) {\n var deferred = $q.defer();\n\n Container.get({ id: id })\n .$promise.then(function success(data) {\n var container = new ContainerDetailsViewModel(data);\n deferred.resolve(container);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve container information', err: err });\n });\n\n return deferred.promise;\n };\n\n service.containers = function (all, filters) {\n var deferred = $q.defer();\n Container.query({ all: all, filters: filters })\n .$promise.then(function success(data) {\n var containers = data.map(function (item) {\n return new ContainerViewModel(item);\n });\n deferred.resolve(containers);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve containers', err: err });\n });\n\n return deferred.promise;\n };\n\n service.resizeTTY = function (id, width, height, timeout) {\n var deferred = $q.defer();\n\n $timeout(function () {\n Container.resize({}, { id: id, height: height, width: width })\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: 'Unable to resize tty of container ' + id, err: data.message });\n } else {\n deferred.resolve(data);\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to resize tty of container ' + id, err: err });\n });\n }, timeout);\n\n return deferred.promise;\n };\n\n function updateRestartPolicy(id, restartPolicy, maximumRetryCounts) {\n return Container.update({ id: id }, { RestartPolicy: { Name: restartPolicy, MaximumRetryCount: maximumRetryCounts } }).$promise;\n }\n\n function updateLimits(id, config) {\n return Container.update(\n { id: id },\n {\n // MemorySwap: must be set\n // -1: non limits, 0: treated as unset(cause update error).\n MemoryReservation: config.HostConfig.MemoryReservation,\n Memory: config.HostConfig.Memory,\n MemorySwap: -1,\n NanoCpus: config.HostConfig.NanoCpus,\n }\n ).$promise;\n }\n\n service.createContainer = function (configuration) {\n var deferred = $q.defer();\n Container.create(configuration)\n .$promise.then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create container', err: err });\n });\n return deferred.promise;\n };\n\n service.createAndStartContainer = function (configuration) {\n var deferred = $q.defer();\n var container;\n service\n .createContainer(configuration)\n .then(function success(data) {\n container = data;\n return service.startContainer(container.Id);\n })\n .then(function success() {\n deferred.resolve(container);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n return deferred.promise;\n };\n\n service.createExec = function (execConfig) {\n var deferred = $q.defer();\n\n Container.exec({}, execConfig)\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: data.message, err: data.message });\n } else {\n deferred.resolve(data);\n }\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n service.logs = function (id, stdout, stderr, timestamps, since, tail, stripHeaders) {\n var deferred = $q.defer();\n\n var parameters = {\n id: id,\n stdout: stdout || 0,\n stderr: stderr || 0,\n timestamps: timestamps || 0,\n since: since || 0,\n tail: tail || 'all',\n };\n\n Container.logs(parameters)\n .$promise.then(function success(data) {\n var logs = formatLogs(data.logs, { stripHeaders, withTimestamps: !!timestamps });\n deferred.resolve(logs);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n service.containerStats = function (id) {\n var deferred = $q.defer();\n\n Container.stats({ id: id })\n .$promise.then(function success(data) {\n var containerStats = new ContainerStatsViewModel(data);\n deferred.resolve(containerStats);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n service.containerTop = function (id) {\n return Container.top({ id: id }).$promise;\n };\n\n service.inspect = function (id) {\n return Container.inspect({ id: id }).$promise;\n };\n\n service.prune = function (filters) {\n return Container.prune({ filters: filters }).$promise;\n };\n\n return service;\n\n function withEndpointId(func) {\n return function (...args) {\n const endpointId = EndpointProvider.endpointID();\n\n return func(endpointId, ...args);\n };\n }\n}\n","angular.module('portainer.docker').factory('ExecService', [\n '$q',\n '$timeout',\n 'Exec',\n function ExecServiceFactory($q, $timeout, Exec) {\n 'use strict';\n var service = {};\n\n service.resizeTTY = function (execId, width, height, timeout) {\n var deferred = $q.defer();\n\n $timeout(function () {\n Exec.resize({}, { id: execId, height: height, width: width })\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: 'Unable to resize tty of exec', err: data.message });\n } else {\n deferred.resolve(data);\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to resize tty of exec', err: err });\n });\n }, timeout);\n\n return deferred.promise;\n };\n\n return service;\n },\n]);\n","import _ from 'lodash';\nimport { getUniqueTagListFromImages } from '@/react/docker/images/utils';\nimport { ImageViewModel } from '../models/image';\nimport { ImageDetailsViewModel } from '../models/imageDetails';\nimport { ImageLayerViewModel } from '../models/imageLayer';\n\nangular.module('portainer.docker').factory('ImageService', [\n '$q',\n 'Image',\n 'ImageHelper',\n 'RegistryService',\n 'HttpRequestHelper',\n 'ContainerService',\n 'FileUploadService',\n function ImageServiceFactory($q, Image, ImageHelper, RegistryService, HttpRequestHelper, ContainerService, FileUploadService) {\n 'use strict';\n var service = {};\n\n service.image = function (imageId) {\n var deferred = $q.defer();\n Image.get({ id: imageId })\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: data.message });\n } else {\n var image = new ImageDetailsViewModel(data);\n deferred.resolve(image);\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve image details', err: err });\n });\n return deferred.promise;\n };\n\n service.images = function (withUsage) {\n var deferred = $q.defer();\n\n $q.all({\n containers: withUsage ? ContainerService.containers(1) : [],\n images: Image.query({}).$promise,\n })\n .then(function success(data) {\n var containers = data.containers;\n const containerByImageId = _.groupBy(containers, 'ImageID');\n\n var images = data.images.map(function (item) {\n item.Used = !!containerByImageId[item.Id] && containerByImageId[item.Id].length > 0;\n return new ImageViewModel(item);\n });\n\n deferred.resolve(images);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve images', err: err });\n });\n return deferred.promise;\n };\n\n service.history = function (imageId) {\n var deferred = $q.defer();\n Image.history({ id: imageId })\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: data.message });\n } else {\n var layers = [];\n var order = data.length;\n angular.forEach(data, function (imageLayer) {\n layers.push(new ImageLayerViewModel(order, imageLayer));\n order--;\n });\n deferred.resolve(layers);\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve image details', err: err });\n });\n return deferred.promise;\n };\n\n service.pushImage = pushImage;\n /**\n *\n * @param {PorImageRegistryModel} registryModel\n */\n function pushImage(registryModel) {\n var deferred = $q.defer();\n\n var authenticationDetails = registryModel.Registry.Authentication ? RegistryService.encodedCredentials(registryModel.Registry) : '';\n HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails);\n\n const imageConfiguration = ImageHelper.createImageConfigForContainer(registryModel);\n\n Image.push({ imageName: imageConfiguration.fromImage })\n .$promise.then(function success(data) {\n if (data[data.length - 1].error) {\n deferred.reject({ msg: data[data.length - 1].error });\n } else {\n deferred.resolve();\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to push image tag', err: err });\n });\n return deferred.promise;\n }\n\n /**\n * PULL IMAGE\n */\n\n function pullImageAndIgnoreErrors(imageConfiguration) {\n var deferred = $q.defer();\n\n Image.create({}, imageConfiguration)\n .$promise.catch(() => {\n // left empty to ignore errors\n })\n .finally(function final() {\n deferred.resolve();\n });\n\n return deferred.promise;\n }\n\n function pullImageAndAcknowledgeErrors(imageConfiguration) {\n var deferred = $q.defer();\n\n Image.create({}, imageConfiguration)\n .$promise.then(function success(data) {\n var err = data.length > 0 && data[data.length - 1].message;\n if (err) {\n var detail = data[data.length - 1];\n deferred.reject({ msg: detail.message });\n } else {\n deferred.resolve(data);\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to pull image', err: err });\n });\n\n return deferred.promise;\n }\n\n service.pullImage = pullImage;\n\n /**\n *\n * @param {PorImageRegistryModel} registry\n * @param {bool} ignoreErrors\n */\n function pullImage(registry, ignoreErrors) {\n var authenticationDetails = registry.Registry.Authentication ? RegistryService.encodedCredentials(registry.Registry) : '';\n HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails);\n\n var imageConfiguration = ImageHelper.createImageConfigForContainer(registry);\n\n if (ignoreErrors) {\n return pullImageAndIgnoreErrors(imageConfiguration);\n }\n return pullImageAndAcknowledgeErrors(imageConfiguration);\n }\n\n /**\n * ! PULL IMAGE\n */\n\n service.tagImage = function (id, image) {\n return Image.tag({ id: id, repo: image }).$promise;\n };\n\n service.downloadImages = function (images) {\n var names = ImageHelper.getImagesNamesForDownload(images);\n return Image.download(names).$promise;\n };\n\n service.uploadImage = function (file) {\n return FileUploadService.loadImages(file);\n };\n\n service.deleteImage = function (id, forceRemoval) {\n var deferred = $q.defer();\n Image.remove({ id: id, force: forceRemoval })\n .$promise.then(function success(data) {\n if (data[0].message) {\n deferred.reject({ msg: data[0].message });\n } else {\n deferred.resolve();\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to remove image', err: err });\n });\n return deferred.promise;\n };\n\n service.getUniqueTagListFromImages = getUniqueTagListFromImages;\n\n return service;\n },\n]);\n","import { NetworkViewModel } from '../models/network';\n\nangular.module('portainer.docker').factory('NetworkService', [\n '$q',\n 'Network',\n function NetworkServiceFactory($q, Network) {\n 'use strict';\n var service = {};\n\n service.create = function (networkConfiguration) {\n var deferred = $q.defer();\n\n Network.create(networkConfiguration)\n .$promise.then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create network', err: err });\n });\n return deferred.promise;\n };\n\n service.network = function (id) {\n var deferred = $q.defer();\n\n Network.get({ id: id })\n .$promise.then(function success(data) {\n var network = new NetworkViewModel(data);\n deferred.resolve(network);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve network details', err: err });\n });\n\n return deferred.promise;\n };\n\n service.networks = function (localNetworks, swarmNetworks, swarmAttachableNetworks, filters) {\n var deferred = $q.defer();\n\n Network.query({ filters: filters })\n .$promise.then(function success(data) {\n var networks = data;\n var filteredNetworks = networks\n .filter(function (network) {\n if (localNetworks && network.Scope === 'local') {\n return network;\n }\n if (swarmNetworks && network.Scope === 'swarm') {\n return network;\n }\n if (swarmAttachableNetworks && network.Scope === 'swarm' && network.Attachable === true) {\n return network;\n }\n })\n .map(function (item) {\n return new NetworkViewModel(item);\n });\n\n deferred.resolve(filteredNetworks);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve networks', err: err });\n });\n\n return deferred.promise;\n };\n\n service.remove = function (id) {\n return Network.remove({ id: id }).$promise;\n };\n\n service.disconnectContainer = function (networkId, containerId, force) {\n return Network.disconnect({ id: networkId }, { Container: containerId, Force: force }).$promise;\n };\n\n service.connectContainer = function (networkId, containerId, aliases) {\n var payload = {\n Container: containerId,\n };\n if (aliases) {\n payload.EndpointConfig = {\n Aliases: aliases,\n };\n }\n return Network.connect({ id: networkId }, payload).$promise;\n };\n\n return service;\n },\n]);\n","import { NodeViewModel } from '../models/node';\n\nangular.module('portainer.docker').factory('NodeService', [\n '$q',\n 'Node',\n function NodeServiceFactory($q, Node) {\n 'use strict';\n var service = {};\n\n service.nodes = nodes;\n service.node = node;\n service.updateNode = updateNode;\n service.getActiveManager = getActiveManager;\n\n function node(id) {\n var deferred = $q.defer();\n Node.get({ id: id })\n .$promise.then(function onNodeLoaded(rawNode) {\n var node = new NodeViewModel(rawNode);\n return deferred.resolve(node);\n })\n .catch(function onFailed(err) {\n deferred.reject({ msg: 'Unable to retrieve node', err: err });\n });\n\n return deferred.promise;\n }\n\n function nodes() {\n var deferred = $q.defer();\n\n Node.query({})\n .$promise.then(function success(data) {\n var nodes = data.map(function (item) {\n return new NodeViewModel(item);\n });\n deferred.resolve(nodes);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve nodes', err: err });\n });\n\n return deferred.promise;\n }\n\n function updateNode(node) {\n return Node.update({ id: node.Id, version: node.Version }, node).$promise;\n }\n\n function getActiveManager() {\n var deferred = $q.defer();\n\n service\n .nodes()\n .then(function success(data) {\n for (var i = 0; i < data.length; ++i) {\n var node = data[i];\n if (node.Role === 'manager' && node.Availability === 'active' && node.Status === 'ready' && node.Addr !== '0.0.0.0') {\n deferred.resolve(node);\n break;\n }\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve nodes', err: err });\n });\n\n return deferred.promise;\n }\n\n return service;\n },\n]);\n","import _ from 'lodash-es';\nimport { PluginViewModel } from '../models/plugin';\n\nangular.module('portainer.docker').factory('PluginService', [\n '$q',\n 'Plugin',\n 'SystemService',\n function PluginServiceFactory($q, Plugin, SystemService) {\n 'use strict';\n var service = {};\n\n service.plugins = function () {\n var deferred = $q.defer();\n var plugins = [];\n\n Plugin.query({})\n .$promise.then(function success(data) {\n for (var i = 0; i < data.length; i++) {\n var plugin = new PluginViewModel(data[i]);\n plugins.push(plugin);\n }\n })\n .finally(function final() {\n deferred.resolve(plugins);\n });\n\n return deferred.promise;\n };\n\n function servicePlugins(systemOnly, pluginType, pluginVersion) {\n var deferred = $q.defer();\n\n $q.all({\n system: SystemService.plugins(),\n plugins: systemOnly ? [] : service.plugins(),\n })\n .then(function success(data) {\n var aggregatedPlugins = [];\n var systemPlugins = data.system;\n var plugins = data.plugins;\n\n if (systemPlugins[pluginType]) {\n aggregatedPlugins = aggregatedPlugins.concat(systemPlugins[pluginType]);\n }\n\n for (var i = 0; i < plugins.length; i++) {\n var plugin = plugins[i];\n if (plugin.Enabled && _.includes(plugin.Config.Interface.Types, pluginVersion)) {\n aggregatedPlugins.push(plugin.Name);\n }\n }\n\n deferred.resolve(aggregatedPlugins);\n })\n .catch(function error(err) {\n deferred.reject({ msg: err.msg, err: err });\n });\n\n return deferred.promise;\n }\n\n service.volumePlugins = function (systemOnly) {\n return servicePlugins(systemOnly, 'Volume', 'docker.volumedriver/1.0');\n };\n\n service.networkPlugins = function (systemOnly) {\n return servicePlugins(systemOnly, 'Network', 'docker.networkdriver/1.0');\n };\n\n service.loggingPlugins = function (systemOnly) {\n return servicePlugins(systemOnly, 'Log', 'docker.logdriver/1.0');\n };\n\n return service;\n },\n]);\n","import { SecretViewModel } from '../models/secret';\n\nangular.module('portainer.docker').factory('SecretService', [\n '$q',\n 'Secret',\n function SecretServiceFactory($q, Secret) {\n 'use strict';\n var service = {};\n\n service.secret = function (secretId) {\n var deferred = $q.defer();\n\n Secret.get({ id: secretId })\n .$promise.then(function success(data) {\n var secret = new SecretViewModel(data);\n deferred.resolve(secret);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve secret details', err: err });\n });\n\n return deferred.promise;\n };\n\n service.secrets = function () {\n var deferred = $q.defer();\n\n Secret.query({})\n .$promise.then(function success(data) {\n var secrets = data.map(function (item) {\n return new SecretViewModel(item);\n });\n deferred.resolve(secrets);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve secrets', err: err });\n });\n\n return deferred.promise;\n };\n\n service.remove = function (secretId) {\n var deferred = $q.defer();\n\n Secret.remove({ id: secretId })\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: data.message });\n } else {\n deferred.resolve();\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to remove secret', err: err });\n });\n\n return deferred.promise;\n };\n\n service.create = function (secretConfig) {\n return Secret.create(secretConfig).$promise;\n };\n\n return service;\n },\n]);\n","import { formatLogs } from '../helpers/logHelper';\nimport { ServiceViewModel } from '../models/service';\n\nangular.module('portainer.docker').factory('ServiceService', [\n '$q',\n 'Service',\n function ServiceServiceFactory($q, Service) {\n 'use strict';\n var service = {};\n\n service.services = function (filters) {\n var deferred = $q.defer();\n\n Service.query({ filters: filters ? filters : {} })\n .$promise.then(function success(data) {\n var services = data.map(function (item) {\n return new ServiceViewModel(item);\n });\n deferred.resolve(services);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve services', err: err });\n });\n\n return deferred.promise;\n };\n\n service.service = function (id) {\n var deferred = $q.defer();\n\n Service.get({ id: id })\n .$promise.then(function success(data) {\n var service = new ServiceViewModel(data);\n deferred.resolve(service);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve service details', err: err });\n });\n\n return deferred.promise;\n };\n\n service.remove = function (service) {\n var deferred = $q.defer();\n\n Service.remove({ id: service.Id })\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: data.message, err: data.message });\n } else {\n deferred.resolve();\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to remove service', err: err });\n });\n\n return deferred.promise;\n };\n\n service.update = function (serv, config, rollback) {\n return service.service(serv.Id).then((data) => {\n const params = {\n id: serv.Id,\n version: data.Version,\n };\n if (rollback) {\n params.rollback = rollback;\n }\n return Service.update(params, config).$promise;\n });\n };\n\n service.logs = function (id, stdout, stderr, timestamps, since, tail) {\n var deferred = $q.defer();\n\n var parameters = {\n id: id,\n stdout: stdout || 0,\n stderr: stderr || 0,\n timestamps: timestamps || 0,\n since: since || 0,\n tail: tail || 'all',\n };\n\n Service.logs(parameters)\n .$promise.then(function success(data) {\n var logs = formatLogs(data.logs, { stripHeaders: true, withTimestamps: !!timestamps });\n deferred.resolve(logs);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n return service;\n },\n]);\n","import { SwarmViewModel } from '../models/swarm';\n\nangular.module('portainer.docker').factory('SwarmService', [\n '$q',\n 'Swarm',\n function SwarmServiceFactory($q, Swarm) {\n 'use strict';\n var service = {};\n\n service.swarm = function (endpointId) {\n var deferred = $q.defer();\n\n Swarm.get(endpointId ? { endpointId } : undefined)\n .$promise.then(function success(data) {\n var swarm = new SwarmViewModel(data);\n deferred.resolve(swarm);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve Swarm details', err: err });\n });\n\n return deferred.promise;\n };\n\n return service;\n },\n]);\n","import { EventViewModel } from '../models/event';\nimport { ping } from './ping';\n\nangular.module('portainer.docker').factory('SystemService', [\n '$q',\n 'System',\n function SystemServiceFactory($q, System) {\n 'use strict';\n var service = {};\n\n service.plugins = function () {\n var deferred = $q.defer();\n System.info({})\n .$promise.then(function success(data) {\n var plugins = data.Plugins;\n deferred.resolve(plugins);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve plugins information from system', err: err });\n });\n return deferred.promise;\n };\n\n service.info = function () {\n return System.info({}).$promise;\n };\n\n service.ping = function (endpointId) {\n return ping(endpointId);\n };\n\n service.version = function () {\n return System.version({}).$promise;\n };\n\n service.events = function (from, to) {\n var deferred = $q.defer();\n\n System.events({ since: from, until: to })\n .$promise.then(function success(data) {\n var events = data.map(function (item) {\n return new EventViewModel(item);\n });\n deferred.resolve(events);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve engine events', err: err });\n });\n\n return deferred.promise;\n };\n\n service.dataUsage = function () {\n return System.dataUsage().$promise;\n };\n\n return service;\n },\n]);\n","import { formatLogs } from '../helpers/logHelper';\nimport { TaskViewModel } from '../models/task';\n\nangular.module('portainer.docker').factory('TaskService', [\n '$q',\n 'Task',\n function TaskServiceFactory($q, Task) {\n 'use strict';\n var service = {};\n\n service.task = function (id) {\n var deferred = $q.defer();\n\n Task.get({ id: id })\n .$promise.then(function success(data) {\n var task = new TaskViewModel(data);\n deferred.resolve(task);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve task details', err: err });\n });\n\n return deferred.promise;\n };\n\n service.tasks = function (filters) {\n var deferred = $q.defer();\n\n Task.query({ filters: filters ? filters : {} })\n .$promise.then(function success(data) {\n var tasks = data.map(function (item) {\n return new TaskViewModel(item);\n });\n deferred.resolve(tasks);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve tasks', err: err });\n });\n\n return deferred.promise;\n };\n\n service.logs = function (id, stdout, stderr, timestamps, since, tail) {\n var deferred = $q.defer();\n\n var parameters = {\n id: id,\n stdout: stdout || 0,\n stderr: stderr || 0,\n timestamps: timestamps || 0,\n since: since || 0,\n tail: tail || 'all',\n };\n\n Task.logs(parameters)\n .$promise.then(function success(data) {\n var logs = formatLogs(data.logs, { stripHeaders: true, withTimestamps: !!timestamps });\n deferred.resolve(logs);\n })\n .catch(function error(err) {\n deferred.reject(err);\n });\n\n return deferred.promise;\n };\n\n return service;\n },\n]);\n","import { VolumeViewModel } from '../models/volume';\n\nangular.module('portainer.docker').factory('VolumeService', [\n '$q',\n 'Volume',\n 'VolumeHelper',\n function VolumeServiceFactory($q, Volume, VolumeHelper) {\n 'use strict';\n var service = {};\n\n service.volumes = function (params) {\n var deferred = $q.defer();\n Volume.query(params)\n .$promise.then(function success(data) {\n var volumes = data.Volumes || [];\n volumes = volumes.map(function (item) {\n return new VolumeViewModel(item);\n });\n deferred.resolve(volumes);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve volumes', err: err });\n });\n return deferred.promise;\n };\n\n service.volume = function (id) {\n var deferred = $q.defer();\n Volume.get({ id: id })\n .$promise.then(function success(data) {\n var volume = new VolumeViewModel(data);\n deferred.resolve(volume);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve volume details', err: err });\n });\n return deferred.promise;\n };\n\n service.getVolumes = function () {\n return Volume.query({}).$promise;\n };\n\n service.remove = function (volume) {\n var deferred = $q.defer();\n\n Volume.remove({ id: volume.Id })\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: data.message, err: data.message });\n } else {\n deferred.resolve();\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to remove volume', err: err });\n });\n\n return deferred.promise;\n };\n\n service.createVolumeConfiguration = function (name, driver, driverOptions) {\n var volumeConfiguration = {\n Name: name,\n Driver: driver,\n DriverOpts: VolumeHelper.createDriverOptions(driverOptions),\n };\n return volumeConfiguration;\n };\n\n service.createVolume = function (volumeConfiguration) {\n var deferred = $q.defer();\n Volume.create(volumeConfiguration)\n .$promise.then(function success(data) {\n if (data.message) {\n deferred.reject({ msg: data.message });\n } else {\n var volume = new VolumeViewModel(data);\n deferred.resolve(volume);\n }\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create volume', err: err });\n });\n return deferred.promise;\n };\n\n service.createVolumes = function (volumeConfigurations) {\n var createVolumeQueries = volumeConfigurations.map(function (volumeConfiguration) {\n return service.createVolume(volumeConfiguration);\n });\n return $q.all(createVolumeQueries);\n };\n\n service.createXAutoGeneratedLocalVolumes = function (x) {\n var createVolumeQueries = [];\n for (var i = 0; i < x; i++) {\n createVolumeQueries.push(service.createVolume({ Driver: 'local' }));\n }\n return $q.all(createVolumeQueries);\n };\n\n return service;\n },\n]);\n","import angular from 'angular';\nimport { confirmDelete } from '@@/modals/confirm';\n\nclass ConfigsController {\n /* @ngInject */\n constructor($state, ConfigService, Notifications, $async) {\n this.$state = $state;\n this.ConfigService = ConfigService;\n this.Notifications = Notifications;\n this.$async = $async;\n\n this.removeAction = this.removeAction.bind(this);\n this.removeActionAsync = this.removeActionAsync.bind(this);\n this.getConfigs = this.getConfigs.bind(this);\n this.getConfigsAsync = this.getConfigsAsync.bind(this);\n }\n\n getConfigs() {\n return this.$async(this.getConfigsAsync);\n }\n\n async getConfigsAsync() {\n try {\n this.configs = await this.ConfigService.configs();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve configs');\n }\n }\n\n async $onInit() {\n this.configs = [];\n this.getConfigs();\n }\n\n async removeAction(selectedItems) {\n const confirmed = await confirmDelete('Do you want to remove the selected config(s)?');\n if (!confirmed) {\n return null;\n }\n return this.$async(this.removeActionAsync, selectedItems);\n }\n\n async removeActionAsync(selectedItems) {\n let actionCount = selectedItems.length;\n for (const config of selectedItems) {\n try {\n await this.ConfigService.remove(config.Id);\n this.Notifications.success('Config successfully removed', config.Name);\n const index = this.configs.indexOf(config);\n this.configs.splice(index, 1);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove config');\n } finally {\n --actionCount;\n if (actionCount === 0) {\n this.$state.reload();\n }\n }\n }\n }\n}\nexport default ConfigsController;\nangular.module('portainer.docker').controller('ConfigsController', ConfigsController);\n","import _ from 'lodash-es';\nimport angular from 'angular';\nimport { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\n\nclass CreateConfigController {\n /* @ngInject */\n constructor($async, $state, $transition$, $window, Notifications, ConfigService, Authentication, FormValidator, ResourceControlService) {\n this.$state = $state;\n this.$transition$ = $transition$;\n this.$window = $window;\n this.Notifications = Notifications;\n this.ConfigService = ConfigService;\n this.Authentication = Authentication;\n this.FormValidator = FormValidator;\n this.ResourceControlService = ResourceControlService;\n this.$async = $async;\n\n this.formValues = {\n Name: '',\n Labels: [],\n AccessControlData: new AccessControlFormData(),\n ConfigContent: '',\n };\n\n this.state = {\n formValidationError: '',\n isEditorDirty: false,\n };\n\n this.editorUpdate = this.editorUpdate.bind(this);\n this.createAsync = this.createAsync.bind(this);\n }\n\n async $onInit() {\n this.$window.onbeforeunload = () => {\n if (this.formValues.displayCodeEditor && this.formValues.ConfigContent && this.state.isEditorDirty) {\n return '';\n }\n };\n\n if (!this.$transition$.params().id) {\n this.formValues.displayCodeEditor = true;\n return;\n }\n\n try {\n let data = await this.ConfigService.config(this.$transition$.params().id);\n this.formValues.Name = data.Name + '_copy';\n this.formValues.ConfigContent = data.Data;\n let labels = _.keys(data.Labels);\n for (let i = 0; i < labels.length; i++) {\n let labelName = labels[i];\n let labelValue = data.Labels[labelName];\n this.formValues.Labels.push({ name: labelName, value: labelValue });\n }\n this.formValues.displayCodeEditor = true;\n } catch (err) {\n this.formValues.displayCodeEditor = true;\n this.Notifications.error('Failure', err, 'Unable to clone config');\n }\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n\n async uiCanExit() {\n if (this.formValues.displayCodeEditor && this.formValues.ConfigContent && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n addLabel() {\n this.formValues.Labels.push({ name: '', value: '' });\n }\n\n removeLabel(index) {\n this.formValues.Labels.splice(index, 1);\n }\n\n prepareLabelsConfig(config) {\n let labels = {};\n this.formValues.Labels.forEach(function (label) {\n if (label.name && label.value) {\n labels[label.name] = label.value;\n }\n });\n config.Labels = labels;\n }\n\n prepareConfigData(config) {\n let configData = this.formValues.ConfigContent;\n config.Data = btoa(unescape(encodeURIComponent(configData)));\n }\n\n prepareConfiguration() {\n let config = {};\n config.Name = this.formValues.Name;\n this.prepareConfigData(config);\n this.prepareLabelsConfig(config);\n return config;\n }\n\n validateForm(accessControlData, isAdmin) {\n this.state.formValidationError = '';\n let error = '';\n error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n this.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n create() {\n return this.$async(this.createAsync);\n }\n\n async createAsync() {\n const accessControlData = this.formValues.AccessControlData;\n const userDetails = this.Authentication.getUserDetails();\n const isAdmin = this.Authentication.isAdmin();\n\n if (this.formValues.ConfigContent === '') {\n this.state.formValidationError = 'Config content must not be empty';\n return;\n }\n\n if (!this.validateForm(accessControlData, isAdmin)) {\n return;\n }\n\n const config = this.prepareConfiguration();\n\n try {\n const data = await this.ConfigService.create(config);\n const resourceControl = data.Portainer.ResourceControl;\n const userId = userDetails.ID;\n await this.ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n this.Notifications.success('Success', 'Configuration successfully created');\n this.state.isEditorDirty = false;\n this.$state.go('docker.configs', {}, { reload: true });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create config');\n }\n }\n\n editorUpdate(value) {\n this.formValues.ConfigContent = value;\n this.state.isEditorDirty = true;\n }\n}\n\nexport default CreateConfigController;\nangular.module('portainer.docker').controller('CreateConfigController', CreateConfigController);\n","import { ResourceControlType } from '@/react/portainer/access-control/types';\n\nangular.module('portainer.docker').controller('ConfigController', [\n '$scope',\n '$transition$',\n '$state',\n 'ConfigService',\n 'Notifications',\n function ($scope, $transition$, $state, ConfigService, Notifications) {\n $scope.resourceType = ResourceControlType.Config;\n\n $scope.onUpdateResourceControlSuccess = function () {\n $state.reload();\n };\n\n $scope.removeConfig = function removeConfig(configId) {\n ConfigService.remove(configId)\n .then(function success() {\n Notifications.success('Success', 'Configuration successfully removed');\n $state.go('docker.configs', {});\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove config');\n });\n };\n\n function initView() {\n ConfigService.config($transition$.params().id)\n .then(function success(data) {\n $scope.config = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve config details');\n });\n }\n\n initView();\n },\n]);\n","import { Terminal } from 'xterm';\nimport { baseHref } from '@/portainer/helpers/pathHelper';\n\nangular.module('portainer.docker').controller('ContainerConsoleController', [\n '$scope',\n '$state',\n '$transition$',\n 'ContainerService',\n 'ImageService',\n 'Notifications',\n 'ContainerHelper',\n 'ExecService',\n 'HttpRequestHelper',\n 'LocalStorage',\n 'CONSOLE_COMMANDS_LABEL_PREFIX',\n 'SidebarService',\n function (\n $scope,\n $state,\n $transition$,\n ContainerService,\n ImageService,\n Notifications,\n ContainerHelper,\n ExecService,\n HttpRequestHelper,\n LocalStorage,\n CONSOLE_COMMANDS_LABEL_PREFIX,\n SidebarService\n ) {\n var socket, term;\n\n let states = Object.freeze({\n disconnected: 0,\n connecting: 1,\n connected: 2,\n });\n\n $scope.loaded = false;\n $scope.states = states;\n $scope.state = states.disconnected;\n\n $scope.formValues = {};\n $scope.containerCommands = [];\n\n // Ensure the socket is closed before leaving the view\n $scope.$on('$stateChangeStart', function () {\n $scope.disconnect();\n });\n\n $scope.connectAttach = function () {\n if ($scope.state > states.disconnected) {\n return;\n }\n\n $scope.state = states.connecting;\n\n let attachId = $transition$.params().id;\n\n ContainerService.container(attachId)\n .then((details) => {\n if (!details.State.Running) {\n Notifications.error('Failure', details, 'Container ' + attachId + ' is not running!');\n $scope.disconnect();\n return;\n }\n\n const params = {\n endpointId: $state.params.endpointId,\n id: attachId,\n };\n\n const base = window.location.origin.startsWith('http') ? `${window.location.origin}${baseHref()}` : baseHref();\n var url =\n base +\n 'api/websocket/attach?' +\n Object.keys(params)\n .map((k) => k + '=' + params[k])\n .join('&');\n\n initTerm(url, ContainerService.resizeTTY.bind(this, attachId));\n })\n .catch(function error(err) {\n Notifications.error('Error', err, 'Unable to retrieve container details');\n $scope.disconnect();\n });\n };\n\n $scope.connectExec = function () {\n if ($scope.state > states.disconnected) {\n return;\n }\n\n $scope.state = states.connecting;\n var command = $scope.formValues.isCustomCommand ? $scope.formValues.customCommand : $scope.formValues.command;\n var execConfig = {\n id: $transition$.params().id,\n AttachStdin: true,\n AttachStdout: true,\n AttachStderr: true,\n Tty: true,\n User: $scope.formValues.user,\n Cmd: ContainerHelper.commandStringToArray(command),\n };\n\n ContainerService.createExec(execConfig)\n .then(function success(data) {\n const params = {\n endpointId: $state.params.endpointId,\n id: data.Id,\n };\n\n const base = window.location.origin.startsWith('http') ? `${window.location.origin}${baseHref()}` : baseHref();\n var url =\n base +\n 'api/websocket/exec?' +\n Object.keys(params)\n .map((k) => k + '=' + params[k])\n .join('&');\n\n initTerm(url, ExecService.resizeTTY.bind(this, params.id));\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to exec into container');\n $scope.disconnect();\n });\n };\n\n $scope.disconnect = function () {\n if (socket) {\n socket.close();\n }\n if ($scope.state > states.disconnected) {\n $scope.state = states.disconnected;\n if (term) {\n term.write('\\n\\r(connection closed)');\n term.dispose();\n }\n }\n };\n\n $scope.autoconnectAttachView = function () {\n return $scope.initView().then(function success() {\n if ($scope.container.State.Running) {\n $scope.connectAttach();\n }\n });\n };\n\n function resize(restcall, add) {\n add = add || 0;\n\n term.fit();\n var termWidth = term.cols;\n var termHeight = 30;\n term.resize(termWidth, termHeight);\n\n restcall(termWidth + add, termHeight + add, 1);\n }\n\n function initTerm(url, resizeRestCall) {\n let resizefun = resize.bind(this, resizeRestCall);\n\n if ($transition$.params().nodeName) {\n url += '&nodeName=' + $transition$.params().nodeName;\n }\n\n url += '&token=' + LocalStorage.getJWT();\n\n if (url.indexOf('https') > -1) {\n url = url.replace('https://', 'wss://');\n } else {\n url = url.replace('http://', 'ws://');\n }\n\n socket = new WebSocket(url);\n\n socket.onopen = function () {\n $scope.state = states.connected;\n term = new Terminal();\n\n term.on('data', function (data) {\n socket.send(data);\n });\n var terminal_container = document.getElementById('terminal-container');\n term.open(terminal_container);\n term.focus();\n term.setOption('cursorBlink', true);\n\n window.onresize = function () {\n resizefun();\n $scope.$apply();\n };\n\n $scope.$watch(SidebarService.isSidebarOpen, function () {\n setTimeout(resizefun, 400);\n });\n\n socket.onmessage = function (e) {\n term.write(e.data);\n };\n socket.onerror = function (err) {\n $scope.disconnect();\n $scope.$apply();\n Notifications.error('Failure', err, 'Connection error');\n };\n socket.onclose = function () {\n $scope.disconnect();\n $scope.$apply();\n };\n\n resizefun(1);\n $scope.$apply();\n };\n }\n\n $scope.initView = function () {\n HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n return ContainerService.container($transition$.params().id)\n .then(function success(data) {\n var container = data;\n $scope.container = container;\n return ImageService.image(container.Image);\n })\n .then(function success(data) {\n var image = data;\n var containerLabels = $scope.container.Config.Labels;\n $scope.imageOS = image.Os;\n $scope.formValues.command = image.Os === 'windows' ? 'powershell' : 'bash';\n $scope.containerCommands = Object.keys(containerLabels)\n .filter(function (label) {\n return label.indexOf(CONSOLE_COMMANDS_LABEL_PREFIX) === 0;\n })\n .map(function (label) {\n return {\n title: label.replace(CONSOLE_COMMANDS_LABEL_PREFIX, ''),\n command: containerLabels[label],\n };\n });\n $scope.loaded = true;\n })\n .catch(function error(err) {\n Notifications.error('Error', err, 'Unable to retrieve container details');\n });\n };\n\n $scope.handleIsCustomCommandChange = function (enabled) {\n $scope.$evalAsync(() => {\n $scope.formValues.isCustomCommand = enabled;\n });\n };\n },\n]);\n","import _ from 'lodash-es';\n\nimport * as envVarsUtils from '@/react/components/form-components/EnvironmentVariablesFieldset/utils';\nimport { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\n\nimport { confirmDestructive } from '@@/modals/confirm';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nimport { ContainerCapabilities, ContainerCapability } from '../../../models/containerCapabilities';\nimport { AccessControlFormData } from '../../../../portainer/components/accessControlForm/porAccessControlFormModel';\nimport { ContainerDetailsViewModel } from '../../../models/container';\n\nimport './createcontainer.css';\n\nangular.module('portainer.docker').controller('CreateContainerController', [\n '$q',\n '$scope',\n '$async',\n '$state',\n '$timeout',\n '$transition$',\n '$filter',\n '$analytics',\n 'Container',\n 'ContainerHelper',\n 'Image',\n 'ImageHelper',\n 'Volume',\n 'NetworkService',\n 'ResourceControlService',\n 'Authentication',\n 'Notifications',\n 'ContainerService',\n 'ImageService',\n 'FormValidator',\n 'RegistryService',\n 'SystemService',\n 'SettingsService',\n 'PluginService',\n 'HttpRequestHelper',\n 'endpoint',\n function (\n $q,\n $scope,\n $async,\n $state,\n $timeout,\n $transition$,\n $filter,\n $analytics,\n Container,\n ContainerHelper,\n Image,\n ImageHelper,\n Volume,\n NetworkService,\n ResourceControlService,\n Authentication,\n Notifications,\n ContainerService,\n ImageService,\n FormValidator,\n RegistryService,\n SystemService,\n SettingsService,\n PluginService,\n HttpRequestHelper,\n endpoint\n ) {\n $scope.create = create;\n $scope.update = update;\n $scope.endpoint = endpoint;\n $scope.containerWebhookFeature = FeatureId.CONTAINER_WEBHOOK;\n $scope.formValues = {\n alwaysPull: true,\n GPU: {\n enabled: false,\n useSpecific: false,\n selectedGPUs: ['all'],\n capabilities: ['compute', 'utility'],\n },\n Console: 'none',\n Volumes: [],\n NetworkContainer: null,\n Labels: [],\n ExtraHosts: [],\n MacAddress: '',\n IPv4: '',\n IPv6: '',\n DnsPrimary: '',\n DnsSecondary: '',\n AccessControlData: new AccessControlFormData(),\n CpuLimit: 0,\n MemoryLimit: 0,\n MemoryReservation: 0,\n ShmSize: 64,\n CmdMode: 'default',\n EntrypointMode: 'default',\n Env: [],\n NodeName: null,\n capabilities: [],\n Sysctls: [],\n LogDriverName: '',\n LogDriverOpts: [],\n RegistryModel: new PorImageRegistryModel(),\n };\n\n $scope.extraNetworks = {};\n\n $scope.state = {\n formValidationError: '',\n actionInProgress: false,\n mode: '',\n pullImageValidity: true,\n settingUnlimitedResources: false,\n };\n\n $scope.onAlwaysPullChange = onAlwaysPullChange;\n $scope.handlePublishAllPortsChange = handlePublishAllPortsChange;\n $scope.handleAutoRemoveChange = handleAutoRemoveChange;\n $scope.handlePrivilegedChange = handlePrivilegedChange;\n $scope.handleInitChange = handleInitChange;\n\n function onAlwaysPullChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.formValues.alwaysPull = checked;\n });\n }\n\n function handlePublishAllPortsChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.config.HostConfig.PublishAllPorts = checked;\n });\n }\n\n function handleAutoRemoveChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.config.HostConfig.AutoRemove = checked;\n });\n }\n\n function handlePrivilegedChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.config.HostConfig.Privileged = checked;\n });\n }\n\n function handleInitChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.config.HostConfig.Init = checked;\n });\n }\n\n $scope.handleEnvVarChange = handleEnvVarChange;\n function handleEnvVarChange(value) {\n $scope.formValues.Env = value;\n }\n\n $scope.refreshSlider = function () {\n $timeout(function () {\n $scope.$broadcast('rzSliderForceRender');\n });\n };\n\n $scope.onImageNameChange = function () {\n $scope.formValues.CmdMode = 'default';\n $scope.formValues.EntrypointMode = 'default';\n };\n\n $scope.setPullImageValidity = setPullImageValidity;\n function setPullImageValidity(validity) {\n if (!validity) {\n $scope.formValues.alwaysPull = false;\n }\n $scope.state.pullImageValidity = validity;\n }\n\n $scope.config = {\n Image: '',\n Env: [],\n Cmd: '',\n MacAddress: '',\n ExposedPorts: {},\n Entrypoint: '',\n HostConfig: {\n RestartPolicy: {\n Name: 'no',\n },\n PortBindings: [],\n PublishAllPorts: false,\n Binds: [],\n AutoRemove: false,\n NetworkMode: 'bridge',\n Privileged: false,\n Init: false,\n Runtime: null,\n ExtraHosts: [],\n Devices: [],\n DeviceRequests: [],\n CapAdd: [],\n CapDrop: [],\n Sysctls: {},\n },\n NetworkingConfig: {\n EndpointsConfig: {},\n },\n Labels: {},\n };\n\n $scope.addVolume = function () {\n $scope.formValues.Volumes.push({ name: '', containerPath: '', readOnly: false, type: 'volume' });\n };\n\n $scope.removeVolume = function (index) {\n $scope.formValues.Volumes.splice(index, 1);\n };\n\n $scope.addPortBinding = function () {\n $scope.config.HostConfig.PortBindings.push({ hostPort: '', containerPort: '', protocol: 'tcp' });\n };\n\n $scope.removePortBinding = function (index) {\n $scope.config.HostConfig.PortBindings.splice(index, 1);\n };\n\n $scope.addLabel = function () {\n $scope.formValues.Labels.push({ name: '', value: '' });\n };\n\n $scope.removeLabel = function (index) {\n $scope.formValues.Labels.splice(index, 1);\n };\n\n $scope.addExtraHost = function () {\n $scope.formValues.ExtraHosts.push({ value: '' });\n };\n\n $scope.removeExtraHost = function (index) {\n $scope.formValues.ExtraHosts.splice(index, 1);\n };\n\n $scope.addDevice = function () {\n $scope.config.HostConfig.Devices.push({ pathOnHost: '', pathInContainer: '' });\n };\n\n $scope.removeDevice = function (index) {\n $scope.config.HostConfig.Devices.splice(index, 1);\n };\n\n $scope.onGpuChange = function (values) {\n return $async(async () => {\n $scope.formValues.GPU = values;\n });\n };\n\n $scope.addSysctl = function () {\n $scope.formValues.Sysctls.push({ name: '', value: '' });\n };\n\n $scope.removeSysctl = function (index) {\n $scope.formValues.Sysctls.splice(index, 1);\n };\n\n $scope.addLogDriverOpt = function () {\n $scope.formValues.LogDriverOpts.push({ name: '', value: '' });\n };\n\n $scope.removeLogDriverOpt = function (index) {\n $scope.formValues.LogDriverOpts.splice(index, 1);\n };\n\n $scope.fromContainerMultipleNetworks = false;\n\n function prepareImageConfig(config) {\n const imageConfig = ImageHelper.createImageConfigForContainer($scope.formValues.RegistryModel);\n config.Image = imageConfig.fromImage;\n }\n\n function preparePortBindings(config) {\n const bindings = ContainerHelper.preparePortBindings(config.HostConfig.PortBindings);\n config.ExposedPorts = {};\n _.forEach(bindings, (_, key) => (config.ExposedPorts[key] = {}));\n config.HostConfig.PortBindings = bindings;\n }\n\n function prepareConsole(config) {\n var value = $scope.formValues.Console;\n var openStdin = true;\n var tty = true;\n if (value === 'tty') {\n openStdin = false;\n } else if (value === 'interactive') {\n tty = false;\n } else if (value === 'none') {\n openStdin = false;\n tty = false;\n }\n config.OpenStdin = openStdin;\n config.Tty = tty;\n }\n\n function prepareCmd(config) {\n if (_.isEmpty(config.Cmd) || $scope.formValues.CmdMode == 'default') {\n delete config.Cmd;\n } else {\n config.Cmd = ContainerHelper.commandStringToArray(config.Cmd);\n }\n }\n\n function prepareEntrypoint(config) {\n if ($scope.formValues.EntrypointMode == 'default' || (_.isEmpty(config.Cmd) && _.isEmpty(config.Entrypoint))) {\n config.Entrypoint = null;\n }\n }\n\n function prepareEnvironmentVariables(config) {\n config.Env = envVarsUtils.convertToArrayOfStrings($scope.formValues.Env);\n }\n\n function prepareVolumes(config) {\n var binds = [];\n var volumes = {};\n\n $scope.formValues.Volumes.forEach(function (volume) {\n var name = volume.name;\n var containerPath = volume.containerPath;\n if (name && containerPath) {\n var bind = name + ':' + containerPath;\n volumes[containerPath] = {};\n if (volume.readOnly) {\n bind += ':ro';\n }\n binds.push(bind);\n }\n });\n config.HostConfig.Binds = binds;\n config.Volumes = volumes;\n }\n\n function prepareNetworkConfig(config) {\n var mode = config.HostConfig.NetworkMode;\n var container = $scope.formValues.NetworkContainer;\n var containerName = container;\n if (container && typeof container === 'object') {\n containerName = container.Names[0];\n }\n var networkMode = mode;\n if (containerName) {\n networkMode += ':' + containerName;\n config.Hostname = '';\n }\n config.HostConfig.NetworkMode = networkMode;\n config.MacAddress = $scope.formValues.MacAddress;\n\n config.NetworkingConfig.EndpointsConfig[networkMode] = {\n IPAMConfig: {\n IPv4Address: $scope.formValues.IPv4,\n IPv6Address: $scope.formValues.IPv6,\n },\n };\n\n if (networkMode && _.get($scope.config.NetworkingConfig.EndpointsConfig[networkMode], 'Aliases')) {\n var aliases = $scope.config.NetworkingConfig.EndpointsConfig[networkMode].Aliases;\n config.NetworkingConfig.EndpointsConfig[networkMode].Aliases = _.filter(aliases, (o) => {\n return !_.startsWith($scope.fromContainer.Id, o);\n });\n }\n\n var dnsServers = [];\n if ($scope.formValues.DnsPrimary) {\n dnsServers.push($scope.formValues.DnsPrimary);\n }\n if ($scope.formValues.DnsSecondary) {\n dnsServers.push($scope.formValues.DnsSecondary);\n }\n config.HostConfig.Dns = dnsServers;\n\n config.HostConfig.ExtraHosts = _.map(\n _.filter($scope.formValues.ExtraHosts, (v) => v.value),\n 'value'\n );\n }\n\n function prepareLabels(config) {\n var labels = {};\n $scope.formValues.Labels.forEach(function (label) {\n if (label.name) {\n if (label.value) {\n labels[label.name] = label.value;\n } else {\n labels[label.name] = '';\n }\n }\n });\n config.Labels = labels;\n }\n\n function prepareDevices(config) {\n var path = [];\n config.HostConfig.Devices.forEach(function (p) {\n if (p.pathOnHost) {\n if (p.pathInContainer === '') {\n p.pathInContainer = p.pathOnHost;\n }\n path.push({ PathOnHost: p.pathOnHost, PathInContainer: p.pathInContainer, CgroupPermissions: 'rwm' });\n }\n });\n config.HostConfig.Devices = path;\n }\n\n function prepareSysctls(config) {\n var sysctls = {};\n $scope.formValues.Sysctls.forEach(function (sysctl) {\n if (sysctl.name && sysctl.value) {\n sysctls[sysctl.name] = sysctl.value;\n }\n });\n config.HostConfig.Sysctls = sysctls;\n }\n\n function prepareResources(config) {\n // Shared Memory Size - Round to 0.125\n if ($scope.formValues.ShmSize >= 0) {\n var shmSize = (Math.round($scope.formValues.ShmSize * 8) / 8).toFixed(3);\n shmSize *= 1024 * 1024;\n config.HostConfig.ShmSize = shmSize;\n }\n\n // Memory Limit - Round to 0.125\n if ($scope.formValues.MemoryLimit >= 0) {\n var memoryLimit = (Math.round($scope.formValues.MemoryLimit * 8) / 8).toFixed(3);\n memoryLimit *= 1024 * 1024;\n config.HostConfig.Memory = memoryLimit;\n }\n\n // Memory Resevation - Round to 0.125\n if ($scope.formValues.MemoryReservation >= 0) {\n var memoryReservation = (Math.round($scope.formValues.MemoryReservation * 8) / 8).toFixed(3);\n memoryReservation *= 1024 * 1024;\n config.HostConfig.MemoryReservation = memoryReservation;\n }\n\n // CPU Limit\n if ($scope.formValues.CpuLimit >= 0) {\n config.HostConfig.NanoCpus = $scope.formValues.CpuLimit * 1000000000;\n }\n }\n\n function prepareLogDriver(config) {\n var logOpts = {};\n if ($scope.formValues.LogDriverName) {\n config.HostConfig.LogConfig = { Type: $scope.formValues.LogDriverName };\n if ($scope.formValues.LogDriverName !== 'none') {\n $scope.formValues.LogDriverOpts.forEach(function (opt) {\n if (opt.name) {\n logOpts[opt.name] = opt.value;\n }\n });\n if (Object.keys(logOpts).length !== 0 && logOpts.constructor === Object) {\n config.HostConfig.LogConfig.Config = logOpts;\n }\n }\n }\n }\n\n function prepareCapabilities(config) {\n var allowed = $scope.formValues.capabilities.filter(function (item) {\n return item.allowed === true;\n });\n var notAllowed = $scope.formValues.capabilities.filter(function (item) {\n return item.allowed === false;\n });\n\n var getCapName = function (item) {\n return item.capability;\n };\n config.HostConfig.CapAdd = allowed.map(getCapName);\n config.HostConfig.CapDrop = notAllowed.map(getCapName);\n }\n\n function prepareGPUOptions(config) {\n const driver = 'nvidia';\n const gpuOptions = $scope.formValues.GPU;\n const existingDeviceRequest = _.find($scope.config.HostConfig.DeviceRequests, { Driver: driver });\n if (existingDeviceRequest) {\n _.pullAllBy(config.HostConfig.DeviceRequests, [existingDeviceRequest], 'Driver');\n }\n if (!gpuOptions.enabled) {\n return;\n }\n const deviceRequest = {\n Driver: driver,\n Count: -1,\n DeviceIDs: [], // must be empty if Count != 0 https://github.com/moby/moby/blob/master/daemon/nvidia_linux.go#L50\n Capabilities: [], // array of ORed arrays of ANDed capabilites = [ [c1 AND c2] OR [c1 AND c3] ] : https://github.com/moby/moby/blob/master/api/types/container/host_config.go#L272\n // Options: { property1: \"string\", property2: \"string\" }, // seems to never be evaluated/used in docker API ?\n };\n if (gpuOptions.useSpecific) {\n deviceRequest.DeviceIDs = gpuOptions.selectedGPUs;\n deviceRequest.Count = 0;\n }\n deviceRequest.Capabilities = [gpuOptions.capabilities];\n\n if (config.HostConfig.DeviceRequests) {\n config.HostConfig.DeviceRequests.push(deviceRequest);\n } else {\n config.HostConfig.DeviceRequests = [deviceRequest];\n }\n }\n\n function prepareConfiguration() {\n var config = angular.copy($scope.config);\n prepareCmd(config);\n prepareEntrypoint(config);\n prepareNetworkConfig(config);\n prepareImageConfig(config);\n preparePortBindings(config);\n prepareConsole(config);\n prepareEnvironmentVariables(config);\n prepareVolumes(config);\n prepareLabels(config);\n prepareDevices(config);\n prepareResources(config);\n prepareLogDriver(config);\n prepareCapabilities(config);\n prepareSysctls(config);\n prepareGPUOptions(config);\n return config;\n }\n\n function loadFromContainerCmd() {\n if ($scope.config.Cmd) {\n $scope.config.Cmd = ContainerHelper.commandArrayToString($scope.config.Cmd);\n $scope.formValues.CmdMode = 'override';\n }\n }\n\n function loadFromContainerEntrypoint() {\n if (_.has($scope.config, 'Entrypoint')) {\n if ($scope.config.Entrypoint == null) {\n $scope.config.Entrypoint = '';\n }\n $scope.formValues.EntrypointMode = 'override';\n }\n }\n\n function loadFromContainerPortBindings() {\n const bindings = ContainerHelper.sortAndCombinePorts($scope.config.HostConfig.PortBindings);\n $scope.config.HostConfig.PortBindings = bindings;\n }\n\n function loadFromContainerVolumes(d) {\n for (var v in d.Mounts) {\n if ({}.hasOwnProperty.call(d.Mounts, v)) {\n var mount = d.Mounts[v];\n var volume = {\n type: mount.Type,\n name: mount.Name || mount.Source,\n containerPath: mount.Destination,\n readOnly: mount.RW === false,\n };\n $scope.formValues.Volumes.push(volume);\n }\n }\n }\n\n $scope.resetNetworkConfig = function () {\n $scope.config.NetworkingConfig = {\n EndpointsConfig: {},\n };\n };\n\n function loadFromContainerNetworkConfig(d) {\n $scope.config.NetworkingConfig = {\n EndpointsConfig: {},\n };\n var networkMode = d.HostConfig.NetworkMode;\n if (networkMode === 'default') {\n $scope.config.HostConfig.NetworkMode = 'bridge';\n if (!_.find($scope.availableNetworks, { Name: 'bridge' })) {\n $scope.config.HostConfig.NetworkMode = 'nat';\n }\n }\n if ($scope.config.HostConfig.NetworkMode.indexOf('container:') === 0) {\n var netContainer = $scope.config.HostConfig.NetworkMode.split(/^container:/)[1];\n $scope.config.HostConfig.NetworkMode = 'container';\n for (var c in $scope.runningContainers) {\n if ($scope.runningContainers[c].Id == netContainer) {\n $scope.formValues.NetworkContainer = $scope.runningContainers[c];\n }\n }\n }\n $scope.fromContainerMultipleNetworks = Object.keys(d.NetworkSettings.Networks).length >= 2;\n if (d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode]) {\n if (d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig) {\n if (d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig.IPv4Address) {\n $scope.formValues.IPv4 = d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig.IPv4Address;\n }\n if (d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig.IPv6Address) {\n $scope.formValues.IPv6 = d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode].IPAMConfig.IPv6Address;\n }\n }\n }\n $scope.config.NetworkingConfig.EndpointsConfig[$scope.config.HostConfig.NetworkMode] = d.NetworkSettings.Networks[$scope.config.HostConfig.NetworkMode];\n if (Object.keys(d.NetworkSettings.Networks).length > 1) {\n var firstNetwork = d.NetworkSettings.Networks[Object.keys(d.NetworkSettings.Networks)[0]];\n $scope.config.NetworkingConfig.EndpointsConfig[$scope.config.HostConfig.NetworkMode] = firstNetwork;\n $scope.extraNetworks = angular.copy(d.NetworkSettings.Networks);\n delete $scope.extraNetworks[Object.keys(d.NetworkSettings.Networks)[0]];\n }\n $scope.formValues.MacAddress = d.Config.MacAddress;\n\n if (d.HostConfig.Dns && d.HostConfig.Dns[0]) {\n $scope.formValues.DnsPrimary = d.HostConfig.Dns[0];\n if (d.HostConfig.Dns[1]) {\n $scope.formValues.DnsSecondary = d.HostConfig.Dns[1];\n }\n }\n\n // ExtraHosts\n if ($scope.config.HostConfig.ExtraHosts) {\n var extraHosts = $scope.config.HostConfig.ExtraHosts;\n for (var i = 0; i < extraHosts.length; i++) {\n var host = extraHosts[i];\n $scope.formValues.ExtraHosts.push({ value: host });\n }\n $scope.config.HostConfig.ExtraHosts = [];\n }\n }\n\n function loadFromContainerEnvironmentVariables() {\n $scope.formValues.Env = envVarsUtils.parseArrayOfStrings($scope.config.Env);\n }\n\n function loadFromContainerLabels() {\n for (var l in $scope.config.Labels) {\n if ({}.hasOwnProperty.call($scope.config.Labels, l)) {\n $scope.formValues.Labels.push({ name: l, value: $scope.config.Labels[l] });\n }\n }\n }\n\n function loadFromContainerConsole() {\n if ($scope.config.OpenStdin && $scope.config.Tty) {\n $scope.formValues.Console = 'both';\n } else if (!$scope.config.OpenStdin && $scope.config.Tty) {\n $scope.formValues.Console = 'tty';\n } else if ($scope.config.OpenStdin && !$scope.config.Tty) {\n $scope.formValues.Console = 'interactive';\n } else if (!$scope.config.OpenStdin && !$scope.config.Tty) {\n $scope.formValues.Console = 'none';\n }\n }\n\n function loadFromContainerDevices() {\n var path = [];\n for (var dev in $scope.config.HostConfig.Devices) {\n if ({}.hasOwnProperty.call($scope.config.HostConfig.Devices, dev)) {\n var device = $scope.config.HostConfig.Devices[dev];\n path.push({ pathOnHost: device.PathOnHost, pathInContainer: device.PathInContainer });\n }\n }\n $scope.config.HostConfig.Devices = path;\n }\n\n function loadFromContainerDeviceRequests() {\n const deviceRequest = _.find($scope.config.HostConfig.DeviceRequests, function (o) {\n return o.Driver === 'nvidia' || o.Capabilities[0][0] === 'gpu';\n });\n if (deviceRequest) {\n $scope.formValues.GPU.enabled = true;\n $scope.formValues.GPU.useSpecific = deviceRequest.Count !== -1;\n $scope.formValues.GPU.selectedGPUs = deviceRequest.DeviceIDs || [];\n if ($scope.formValues.GPU.useSpecific) {\n $scope.formValues.GPU.selectedGPUs = deviceRequest.DeviceIDs;\n } else {\n $scope.formValues.GPU.selectedGPUs = ['all'];\n }\n // we only support a single set of capabilities for now\n // UI needs to be reworked in order to support OR combinations of AND capabilities\n $scope.formValues.GPU.capabilities = deviceRequest.Capabilities[0];\n $scope.formValues.GPU = { ...$scope.formValues.GPU };\n }\n }\n\n function loadFromContainerSysctls() {\n for (var s in $scope.config.HostConfig.Sysctls) {\n if ({}.hasOwnProperty.call($scope.config.HostConfig.Sysctls, s)) {\n $scope.formValues.Sysctls.push({ name: s, value: $scope.config.HostConfig.Sysctls[s] });\n }\n }\n }\n\n function loadFromContainerImageConfig() {\n RegistryService.retrievePorRegistryModelFromRepository($scope.config.Image, endpoint.Id)\n .then((model) => {\n $scope.formValues.RegistryModel = model;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve registry');\n });\n }\n\n function loadFromContainerResources(d) {\n if (d.HostConfig.NanoCpus) {\n $scope.formValues.CpuLimit = d.HostConfig.NanoCpus / 1000000000;\n }\n if (d.HostConfig.Memory) {\n $scope.formValues.MemoryLimit = d.HostConfig.Memory / 1024 / 1024;\n }\n if (d.HostConfig.MemoryReservation) {\n $scope.formValues.MemoryReservation = d.HostConfig.MemoryReservation / 1024 / 1024;\n }\n if (d.HostConfig.ShmSize) {\n $scope.formValues.ShmSize = d.HostConfig.ShmSize / 1024 / 1024;\n }\n }\n\n function loadFromContainerCapabilities(d) {\n if (d.HostConfig.CapAdd) {\n d.HostConfig.CapAdd.forEach(function (cap) {\n $scope.formValues.capabilities.push(new ContainerCapability(cap, true));\n });\n }\n if (d.HostConfig.CapDrop) {\n d.HostConfig.CapDrop.forEach(function (cap) {\n $scope.formValues.capabilities.push(new ContainerCapability(cap, false));\n });\n }\n\n function hasCapability(item) {\n return item.capability === cap.capability;\n }\n\n var capabilities = new ContainerCapabilities();\n for (var i = 0; i < capabilities.length; i++) {\n var cap = capabilities[i];\n if (!_.find($scope.formValues.capabilities, hasCapability)) {\n $scope.formValues.capabilities.push(cap);\n }\n }\n\n $scope.formValues.capabilities.sort(function (a, b) {\n return a.capability < b.capability ? -1 : 1;\n });\n }\n\n function loadFromContainerSpec() {\n // Get container\n Container.get({ id: $transition$.params().from })\n .$promise.then(function success(d) {\n var fromContainer = new ContainerDetailsViewModel(d);\n if (fromContainer.ResourceControl) {\n if (fromContainer.ResourceControl.Public) {\n $scope.formValues.AccessControlData.AccessControlEnabled = false;\n }\n\n // When the container is create by duplicate/edit, the access permission\n // shouldn't be copied\n fromContainer.ResourceControl.UserAccesses = [];\n fromContainer.ResourceControl.TeamAccesses = [];\n }\n\n $scope.fromContainer = fromContainer;\n $scope.state.mode = 'duplicate';\n $scope.config = ContainerHelper.configFromContainer(fromContainer.Model);\n loadFromContainerCmd(d);\n loadFromContainerEntrypoint(d);\n loadFromContainerLogging(d);\n loadFromContainerPortBindings(d);\n loadFromContainerVolumes(d);\n loadFromContainerNetworkConfig(d);\n loadFromContainerEnvironmentVariables(d);\n loadFromContainerLabels(d);\n loadFromContainerConsole(d);\n loadFromContainerDevices(d);\n loadFromContainerDeviceRequests(d);\n loadFromContainerImageConfig(d);\n loadFromContainerResources(d);\n loadFromContainerCapabilities(d);\n loadFromContainerSysctls(d);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve container');\n });\n }\n\n function loadFromContainerLogging(config) {\n var logConfig = config.HostConfig.LogConfig;\n $scope.formValues.LogDriverName = logConfig.Type;\n $scope.formValues.LogDriverOpts = _.map(logConfig.Config, function (value, name) {\n return {\n name: name,\n value: value,\n };\n });\n }\n\n async function initView() {\n var nodeName = $transition$.params().nodeName;\n $scope.formValues.NodeName = nodeName;\n HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n\n $scope.isAdmin = Authentication.isAdmin();\n $scope.showDeviceMapping = await shouldShowDevices();\n $scope.showSysctls = await shouldShowSysctls();\n $scope.areContainerCapabilitiesEnabled = await checkIfContainerCapabilitiesEnabled();\n $scope.isAdminOrEndpointAdmin = Authentication.isAdmin();\n\n Volume.query(\n {},\n function (d) {\n $scope.availableVolumes = d.Volumes.sort((vol1, vol2) => {\n return vol1.Name.localeCompare(vol2.Name);\n });\n },\n function (e) {\n Notifications.error('Failure', e, 'Unable to retrieve volumes');\n }\n );\n\n var provider = $scope.applicationState.endpoint.mode.provider;\n var apiVersion = $scope.applicationState.endpoint.apiVersion;\n NetworkService.networks(provider === 'DOCKER_STANDALONE' || provider === 'DOCKER_SWARM_MODE', false, provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25)\n .then(function success(networks) {\n networks.push({ Name: 'container' });\n $scope.availableNetworks = networks.sort((a, b) => a.Name.localeCompare(b.Name));\n\n if (_.find(networks, { Name: 'nat' })) {\n $scope.config.HostConfig.NetworkMode = 'nat';\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve networks');\n });\n\n Container.query(\n {},\n function (d) {\n var containers = d;\n $scope.runningContainers = containers;\n $scope.gpuUseAll = _.get($scope, 'endpoint.Snapshots[0].GpuUseAll', false);\n $scope.gpuUseList = _.get($scope, 'endpoint.Snapshots[0].GpuUseList', []);\n if ($transition$.params().from) {\n loadFromContainerSpec();\n } else {\n $scope.fromContainer = {};\n $scope.formValues.capabilities = $scope.areContainerCapabilitiesEnabled ? new ContainerCapabilities() : [];\n }\n },\n function (e) {\n Notifications.error('Failure', e, 'Unable to retrieve running containers');\n }\n );\n\n SystemService.info()\n .then(function success(data) {\n $scope.availableRuntimes = data.Runtimes ? Object.keys(data.Runtimes) : [];\n $scope.state.sliderMaxCpu = 32;\n if (data.NCPU) {\n $scope.state.sliderMaxCpu = data.NCPU;\n }\n $scope.state.sliderMaxMemory = 32768;\n if (data.MemTotal) {\n $scope.state.sliderMaxMemory = Math.floor(data.MemTotal / 1000 / 1000);\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve engine details');\n });\n\n $scope.allowBindMounts = $scope.isAdminOrEndpointAdmin || endpoint.SecuritySettings.allowBindMountsForRegularUsers;\n $scope.allowPrivilegedMode = endpoint.SecuritySettings.allowPrivilegedModeForRegularUsers;\n\n PluginService.loggingPlugins(apiVersion < 1.25).then(function success(loggingDrivers) {\n $scope.availableLoggingDrivers = loggingDrivers;\n });\n }\n\n function validateForm(accessControlData, isAdmin) {\n $scope.state.formValidationError = '';\n var error = '';\n error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n $scope.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n $scope.handleResourceChange = handleResourceChange;\n function handleResourceChange() {\n $scope.state.settingUnlimitedResources = false;\n if (\n ($scope.config.HostConfig.Memory > 0 && $scope.formValues.MemoryLimit === 0) ||\n ($scope.config.HostConfig.MemoryReservation > 0 && $scope.formValues.MemoryReservation === 0) ||\n ($scope.config.HostConfig.NanoCpus > 0 && $scope.formValues.CpuLimit === 0)\n ) {\n $scope.state.settingUnlimitedResources = true;\n }\n }\n\n async function updateLimits(config) {\n try {\n if ($scope.state.settingUnlimitedResources) {\n create();\n } else {\n await ContainerService.updateLimits($transition$.params().from, config);\n $scope.config = config;\n Notifications.success('Success', 'Limits updated');\n }\n } catch (err) {\n Notifications.error('Failure', err, 'Update Limits fail');\n }\n }\n\n async function update() {\n $scope.state.actionInProgress = true;\n var config = angular.copy($scope.config);\n prepareResources(config);\n await updateLimits(config);\n $scope.state.actionInProgress = false;\n }\n\n function create() {\n var oldContainer = null;\n HttpRequestHelper.setPortainerAgentTargetHeader($scope.formValues.NodeName);\n return findCurrentContainer().then(setOldContainer).then(confirmCreateContainer).then(startCreationProcess).catch(notifyOnError).finally(final);\n\n function final() {\n $scope.state.actionInProgress = false;\n }\n\n function setOldContainer(container) {\n oldContainer = container;\n return container;\n }\n\n function findCurrentContainer() {\n return Container.query({ all: 1, filters: { name: ['^/' + $scope.config.name + '$'] } })\n .$promise.then(function onQuerySuccess(containers) {\n if (!containers.length) {\n return;\n }\n return containers[0];\n })\n .catch(notifyOnError);\n\n function notifyOnError(err) {\n Notifications.error('Failure', err, 'Unable to retrieve containers');\n }\n }\n\n function startCreationProcess(confirmed) {\n if (!confirmed) {\n return $q.when();\n }\n if (!validateAccessControl()) {\n return $q.when();\n }\n $scope.state.actionInProgress = true;\n return pullImageIfNeeded()\n .then(stopAndRenameContainer)\n .then(createNewContainer)\n .then(applyResourceControl)\n .then(connectToExtraNetworks)\n .then(removeOldContainer)\n .then(onSuccess)\n .catch(onCreationProcessFail);\n }\n\n function onCreationProcessFail(error) {\n var deferred = $q.defer();\n removeNewContainer()\n .then(restoreOldContainerName)\n .then(function () {\n deferred.reject(error);\n })\n .catch(function (restoreError) {\n deferred.reject(restoreError);\n });\n return deferred.promise;\n }\n\n function removeNewContainer() {\n return findCurrentContainer().then(function onContainerLoaded(container) {\n if (container && (!oldContainer || container.Id !== oldContainer.Id)) {\n return ContainerService.remove(container, true);\n }\n });\n }\n\n function restoreOldContainerName() {\n if (!oldContainer) {\n return;\n }\n return ContainerService.renameContainer(oldContainer.Id, oldContainer.Names[0]);\n }\n\n function confirmCreateContainer(container) {\n if (!container) {\n return $q.when(true);\n }\n\n return showConfirmationModal();\n\n function showConfirmationModal() {\n var deferred = $q.defer();\n\n confirmDestructive({\n title: 'Are you sure?',\n message: 'A container with the same name already exists. Portainer can automatically remove it and re-create one. Do you want to replace it?',\n confirmButton: buildConfirmButton('Replace', 'danger'),\n }).then(function onConfirm(confirmed) {\n deferred.resolve(confirmed);\n });\n\n return deferred.promise;\n }\n }\n\n function stopAndRenameContainer() {\n if (!oldContainer) {\n return $q.when();\n }\n return stopContainerIfNeeded(oldContainer).then(renameContainer);\n }\n\n function stopContainerIfNeeded(oldContainer) {\n if (oldContainer.State !== 'running') {\n return $q.when();\n }\n return ContainerService.stopContainer(oldContainer.Id);\n }\n\n function renameContainer() {\n return ContainerService.renameContainer(oldContainer.Id, oldContainer.Names[0] + '-old');\n }\n\n function pullImageIfNeeded() {\n return $q.when($scope.formValues.alwaysPull && ImageService.pullImage($scope.formValues.RegistryModel, true));\n }\n\n function createNewContainer() {\n return $async(async () => {\n const config = prepareConfiguration();\n return await ContainerService.createAndStartContainer(config);\n });\n }\n\n async function sendAnalytics() {\n const publicSettings = await SettingsService.publicSettings();\n const analyticsAllowed = publicSettings.EnableTelemetry;\n const image = `${$scope.formValues.RegistryModel.Registry.URL}/${$scope.formValues.RegistryModel.Image}`;\n if (analyticsAllowed && $scope.formValues.GPU.enabled) {\n $analytics.eventTrack('gpuContainerCreated', {\n category: 'docker',\n metadata: { gpu: $scope.formValues.GPU, containerImage: image },\n });\n }\n }\n\n function applyResourceControl(newContainer) {\n const userId = Authentication.getUserDetails().ID;\n const resourceControl = newContainer.Portainer.ResourceControl;\n const containerId = newContainer.Id;\n const accessControlData = $scope.formValues.AccessControlData;\n\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl).then(function onApplyResourceControlSuccess() {\n return containerId;\n });\n }\n\n function connectToExtraNetworks(newContainerId) {\n if (!$scope.extraNetworks) {\n return $q.when();\n }\n\n var connectionPromises = _.forOwn($scope.extraNetworks, function (network, networkName) {\n if (_.has(network, 'Aliases')) {\n var aliases = _.filter(network.Aliases, (o) => {\n return !_.startsWith($scope.fromContainer.Id, o);\n });\n }\n return NetworkService.connectContainer(networkName, newContainerId, aliases);\n });\n\n return $q.all(connectionPromises);\n }\n\n function removeOldContainer() {\n var deferred = $q.defer();\n\n if (!oldContainer) {\n deferred.resolve();\n return;\n }\n\n ContainerService.remove(oldContainer, true).then(notifyOnRemoval).catch(notifyOnRemoveError);\n\n return deferred.promise;\n\n function notifyOnRemoval() {\n Notifications.success('Container Removed', oldContainer.Id);\n deferred.resolve();\n }\n\n function notifyOnRemoveError(err) {\n deferred.reject({ msg: 'Unable to remove container', err: err });\n }\n }\n\n function notifyOnError(err) {\n Notifications.error('Failure', err, 'Unable to create container');\n }\n\n function validateAccessControl() {\n var accessControlData = $scope.formValues.AccessControlData;\n return validateForm(accessControlData, $scope.isAdmin);\n }\n\n async function onSuccess() {\n await sendAnalytics();\n Notifications.success('Success', 'Container successfully created');\n $state.go('docker.containers', {}, { reload: true });\n }\n }\n\n async function shouldShowDevices() {\n return endpoint.SecuritySettings.allowDeviceMappingForRegularUsers || Authentication.isAdmin();\n }\n\n async function shouldShowSysctls() {\n return endpoint.SecuritySettings.allowSysctlSettingForRegularUsers || Authentication.isAdmin();\n }\n\n async function checkIfContainerCapabilitiesEnabled() {\n return endpoint.SecuritySettings.allowContainerCapabilitiesForRegularUsers || Authentication.isAdmin();\n }\n\n initView();\n },\n]);\n","import { useState } from 'react';\n\nimport { Modal, OnSubmit, ModalType, openModal } from '@@/modals';\nimport { Button } from '@@/buttons';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { TextTip } from '@@/Tip/TextTip';\n\ninterface Props {\n onSubmit: OnSubmit<{ pullLatest: boolean }>;\n\n cannotPullImage: boolean;\n}\n\nfunction ConfirmRecreationModal({ onSubmit, cannotPullImage }: Props) {\n const [pullLatest, setPullLatest] = useState(false);\n\n return (\n <Modal\n onDismiss={() => onSubmit()}\n aria-label=\"confirm recreate container modal\"\n >\n <Modal.Header title=\"Are you sure?\" modalType={ModalType.Destructive} />\n\n <Modal.Body>\n <p>\n You're about to recreate this container and any non-persisted\n data will be lost. This container will be removed and another one will\n be created using the same configuration.\n </p>\n <SwitchField\n name=\"pullLatest\"\n label=\"Re-pull image\"\n checked={pullLatest}\n onChange={setPullLatest}\n disabled={cannotPullImage}\n />\n {cannotPullImage && (\n <div className=\"mt-1 text-sm\">\n <TextTip color=\"orange\">\n Cannot re-pull as the image is inaccessible - either it no longer\n exists or the tag or name is no longer correct.\n </TextTip>\n </div>\n )}\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => onSubmit()} color=\"default\">\n Cancel\n </Button>\n <Button onClick={() => onSubmit({ pullLatest })} color=\"danger\">\n Recreate\n </Button>\n </Modal.Footer>\n </Modal>\n );\n}\n\nexport async function confirmContainerRecreation(cannotPullImage: boolean) {\n return openModal(ConfirmRecreationModal, {\n cannotPullImage,\n });\n}\n","import moment from 'moment';\nimport _ from 'lodash-es';\nimport { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\nimport { confirmContainerDeletion } from '@/react/docker/containers/common/confirm-container-delete-modal';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { ResourceControlType } from '@/react/portainer/access-control/types';\nimport { confirmContainerRecreation } from '@/react/docker/containers/ItemView/ConfirmRecreationModal';\n\nangular.module('portainer.docker').controller('ContainerController', [\n '$q',\n '$scope',\n '$state',\n '$transition$',\n '$filter',\n '$async',\n 'Commit',\n 'ContainerHelper',\n 'ContainerService',\n 'ImageHelper',\n 'NetworkService',\n 'Notifications',\n 'ResourceControlService',\n 'RegistryService',\n 'ImageService',\n 'HttpRequestHelper',\n 'Authentication',\n 'endpoint',\n function (\n $q,\n $scope,\n $state,\n $transition$,\n $filter,\n $async,\n Commit,\n ContainerHelper,\n ContainerService,\n ImageHelper,\n NetworkService,\n Notifications,\n ResourceControlService,\n RegistryService,\n ImageService,\n HttpRequestHelper,\n Authentication,\n endpoint\n ) {\n $scope.resourceType = ResourceControlType.Container;\n $scope.endpoint = endpoint;\n $scope.isAdmin = Authentication.isAdmin();\n $scope.activityTime = 0;\n $scope.portBindings = [];\n $scope.displayRecreateButton = false;\n $scope.displayCreateWebhookButton = false;\n $scope.containerWebhookFeature = FeatureId.CONTAINER_WEBHOOK;\n\n $scope.config = {\n RegistryModel: new PorImageRegistryModel(),\n commitInProgress: false,\n };\n\n $scope.state = {\n recreateContainerInProgress: false,\n joinNetworkInProgress: false,\n leaveNetworkInProgress: false,\n pullImageValidity: false,\n };\n\n $scope.setPullImageValidity = setPullImageValidity;\n function setPullImageValidity(validity) {\n $scope.state.pullImageValidity = validity;\n }\n\n $scope.updateRestartPolicy = updateRestartPolicy;\n\n $scope.onUpdateResourceControlSuccess = function () {\n $state.reload();\n };\n\n $scope.computeDockerGPUCommand = () => {\n const gpuOptions = _.find($scope.container.HostConfig.DeviceRequests, function (o) {\n return o.Driver === 'nvidia' || o.Capabilities[0][0] === 'gpu';\n });\n if (!gpuOptions) {\n return 'No GPU config found';\n }\n let gpuStr = 'all';\n if (gpuOptions.Count !== -1) {\n gpuStr = `\"device=${_.join(gpuOptions.DeviceIDs, ',')}\"`;\n }\n // we only support a single set of capabilities for now\n // creation UI needs to be reworked in order to support OR combinations of AND capabilities\n const capStr = `\"capabilities=${_.join(gpuOptions.Capabilities[0], ',')}\"`;\n return `${gpuStr},${capStr}`;\n };\n\n var update = function () {\n var nodeName = $transition$.params().nodeName;\n HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n $scope.nodeName = nodeName;\n\n ContainerService.container($transition$.params().id)\n .then(function success(data) {\n var container = data;\n $scope.container = container;\n $scope.container.edit = false;\n $scope.container.newContainerName = $filter('trimcontainername')(container.Name);\n\n if (container.State.Running) {\n $scope.activityTime = moment.duration(moment(container.State.StartedAt).utc().diff(moment().utc())).humanize();\n } else if (container.State.Status === 'created') {\n $scope.activityTime = moment.duration(moment(container.Created).utc().diff(moment().utc())).humanize();\n } else {\n $scope.activityTime = moment.duration(moment().utc().diff(moment(container.State.FinishedAt).utc())).humanize();\n }\n\n $scope.portBindings = [];\n if (container.NetworkSettings.Ports) {\n _.forEach(Object.keys(container.NetworkSettings.Ports), function (key) {\n if (container.NetworkSettings.Ports[key]) {\n _.forEach(container.NetworkSettings.Ports[key], (portMapping) => {\n const mapping = {};\n mapping.container = key;\n mapping.host = `${portMapping.HostIp}:${portMapping.HostPort}`;\n $scope.portBindings.push(mapping);\n });\n }\n });\n }\n\n $scope.container.Config.Env = _.sortBy($scope.container.Config.Env, _.toLower);\n const inSwarm = $scope.container.Config.Labels['com.docker.swarm.service.id'];\n const autoRemove = $scope.container.HostConfig.AutoRemove;\n const admin = Authentication.isAdmin();\n const {\n allowContainerCapabilitiesForRegularUsers,\n allowHostNamespaceForRegularUsers,\n allowDeviceMappingForRegularUsers,\n allowSysctlSettingForRegularUsers,\n allowBindMountsForRegularUsers,\n allowPrivilegedModeForRegularUsers,\n } = endpoint.SecuritySettings;\n\n const settingRestrictsRegularUsers =\n !allowContainerCapabilitiesForRegularUsers ||\n !allowBindMountsForRegularUsers ||\n !allowDeviceMappingForRegularUsers ||\n !allowSysctlSettingForRegularUsers ||\n !allowHostNamespaceForRegularUsers ||\n !allowPrivilegedModeForRegularUsers;\n\n $scope.displayRecreateButton = !inSwarm && !autoRemove && (admin || !settingRestrictsRegularUsers);\n $scope.displayCreateWebhookButton = $scope.displayRecreateButton;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve container info');\n });\n };\n\n function executeContainerAction(id, action, successMessage, errorMessage) {\n action(id)\n .then(function success() {\n Notifications.success(successMessage, id);\n update();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, errorMessage);\n });\n }\n\n $scope.start = function () {\n var successMessage = 'Container successfully started';\n var errorMessage = 'Unable to start container';\n executeContainerAction($transition$.params().id, ContainerService.startContainer, successMessage, errorMessage);\n };\n\n $scope.stop = function () {\n var successMessage = 'Container successfully stopped';\n var errorMessage = 'Unable to stop container';\n executeContainerAction($transition$.params().id, ContainerService.stopContainer, successMessage, errorMessage);\n };\n\n $scope.kill = function () {\n var successMessage = 'Container successfully killed';\n var errorMessage = 'Unable to kill container';\n executeContainerAction($transition$.params().id, ContainerService.killContainer, successMessage, errorMessage);\n };\n\n $scope.pause = function () {\n var successMessage = 'Container successfully paused';\n var errorMessage = 'Unable to pause container';\n executeContainerAction($transition$.params().id, ContainerService.pauseContainer, successMessage, errorMessage);\n };\n\n $scope.unpause = function () {\n var successMessage = 'Container successfully resumed';\n var errorMessage = 'Unable to resume container';\n executeContainerAction($transition$.params().id, ContainerService.resumeContainer, successMessage, errorMessage);\n };\n\n $scope.restart = function () {\n var successMessage = 'Container successfully restarted';\n var errorMessage = 'Unable to restart container';\n executeContainerAction($transition$.params().id, ContainerService.restartContainer, successMessage, errorMessage);\n };\n\n $scope.renameContainer = function () {\n var container = $scope.container;\n if (container.newContainerName === $filter('trimcontainername')(container.Name)) {\n $scope.container.edit = false;\n return;\n }\n ContainerService.renameContainer($transition$.params().id, container.newContainerName)\n .then(function success() {\n container.Name = container.newContainerName;\n Notifications.success('Container successfully renamed', container.Name);\n })\n .catch(function error(err) {\n container.newContainerName = $filter('trimcontainername')(container.Name);\n Notifications.error('Failure', err, 'Unable to rename container');\n })\n .finally(function final() {\n $scope.container.edit = false;\n $scope.$apply();\n });\n };\n\n $scope.containerLeaveNetwork = function containerLeaveNetwork(container, networkId) {\n $scope.state.leaveNetworkInProgress = true;\n NetworkService.disconnectContainer(networkId, container.Id, false)\n .then(function success() {\n Notifications.success('Container left network', container.Id);\n $state.reload();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to disconnect container from network');\n })\n .finally(function final() {\n $scope.state.leaveNetworkInProgress = false;\n });\n };\n\n $scope.containerJoinNetwork = function containerJoinNetwork(container, networkId) {\n $scope.state.joinNetworkInProgress = true;\n NetworkService.connectContainer(networkId, container.Id)\n .then(function success() {\n Notifications.success('Container joined network', container.Id);\n $state.reload();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to connect container to network');\n })\n .finally(function final() {\n $scope.state.joinNetworkInProgress = false;\n });\n };\n\n async function commitContainerAsync() {\n $scope.config.commitInProgress = true;\n const registryModel = $scope.config.RegistryModel;\n const imageConfig = ImageHelper.createImageConfigForContainer(registryModel);\n try {\n await Commit.commitContainer({ environmentId: endpoint.Id }, { id: $transition$.params().id, repo: imageConfig.fromImage }).$promise;\n Notifications.success('Image created', $transition$.params().id);\n $state.reload();\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to create image');\n $scope.config.commitInProgress = false;\n }\n }\n\n $scope.commit = function () {\n return $async(commitContainerAsync);\n };\n\n $scope.confirmRemove = function () {\n return $async(async () => {\n var title = 'You are about to remove a container.';\n if ($scope.container.State.Running) {\n title = 'You are about to remove a running container.';\n }\n\n const result = await confirmContainerDeletion(title);\n\n if (!result) {\n return;\n }\n const { removeVolumes } = result;\n\n removeContainer(removeVolumes);\n });\n };\n\n function removeContainer(cleanAssociatedVolumes) {\n ContainerService.remove($scope.container, cleanAssociatedVolumes)\n .then(function success() {\n Notifications.success('Success', 'Container successfully removed');\n $state.go('docker.containers', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove container');\n });\n }\n\n function recreateContainer(pullImage) {\n var container = $scope.container;\n $scope.state.recreateContainerInProgress = true;\n\n return ContainerService.recreateContainer(container.Id, pullImage).then(notifyAndChangeView).catch(notifyOnError);\n\n function notifyAndChangeView() {\n Notifications.success('Success', 'Container successfully re-created');\n $state.go('docker.containers', {}, { reload: true });\n }\n\n function notifyOnError(err) {\n Notifications.error('Failure', err, 'Unable to re-create container');\n $scope.state.recreateContainerInProgress = false;\n }\n }\n\n $scope.recreate = function () {\n const cannotPullImage = !$scope.container.Config.Image || $scope.container.Config.Image.toLowerCase().startsWith('sha256');\n confirmContainerRecreation(cannotPullImage).then(function (result) {\n if (!result) {\n return;\n }\n\n recreateContainer(result.pullLatest);\n });\n };\n\n function updateRestartPolicy(restartPolicy, maximumRetryCount) {\n maximumRetryCount = restartPolicy === 'on-failure' ? maximumRetryCount : undefined;\n\n return ContainerService.updateRestartPolicy($scope.container.Id, restartPolicy, maximumRetryCount).then(onUpdateSuccess).catch(notifyOnError);\n\n function onUpdateSuccess() {\n $scope.container.HostConfig.RestartPolicy = {\n Name: restartPolicy,\n MaximumRetryCount: maximumRetryCount,\n };\n Notifications.success('Success', 'Restart policy updated');\n }\n\n function notifyOnError(err) {\n Notifications.error('Failure', err, 'Unable to update restart policy');\n return $q.reject(err);\n }\n }\n\n var provider = $scope.applicationState.endpoint.mode.provider;\n var apiVersion = $scope.applicationState.endpoint.apiVersion;\n NetworkService.networks(provider === 'DOCKER_STANDALONE' || provider === 'DOCKER_SWARM_MODE', false, provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25)\n .then(function success(data) {\n var networks = data;\n $scope.availableNetworks = networks;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve networks');\n });\n\n update();\n },\n]);\n","angular.module('portainer.docker').controller('ContainerInspectController', [\n '$scope',\n '$transition$',\n 'Notifications',\n 'ContainerService',\n 'HttpRequestHelper',\n function ($scope, $transition$, Notifications, ContainerService, HttpRequestHelper) {\n $scope.state = {\n DisplayTextView: false,\n };\n $scope.containerInfo = {};\n\n function initView() {\n HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n ContainerService.inspect($transition$.params().id)\n .then(function success(d) {\n $scope.containerInfo = d;\n })\n .catch(function error(e) {\n Notifications.error('Failure', e, 'Unable to inspect container');\n });\n }\n\n initView();\n },\n]);\n","import moment from 'moment';\n\nangular.module('portainer.docker').controller('ContainerLogsController', [\n '$scope',\n '$transition$',\n '$interval',\n 'ContainerService',\n 'Notifications',\n 'HttpRequestHelper',\n function ($scope, $transition$, $interval, ContainerService, Notifications, HttpRequestHelper) {\n $scope.state = {\n refreshRate: 3,\n lineCount: 100,\n sinceTimestamp: '',\n displayTimestamps: false,\n };\n\n $scope.changeLogCollection = function (logCollectionStatus) {\n if (!logCollectionStatus) {\n stopRepeater();\n } else {\n setUpdateRepeater(!$scope.container.Config.Tty);\n }\n };\n\n $scope.$on('$destroy', function () {\n stopRepeater();\n });\n\n function stopRepeater() {\n var repeater = $scope.repeater;\n if (angular.isDefined(repeater)) {\n $interval.cancel(repeater);\n repeater = null;\n }\n }\n\n function setUpdateRepeater(skipHeaders) {\n var refreshRate = $scope.state.refreshRate;\n $scope.repeater = $interval(function () {\n ContainerService.logs(\n $transition$.params().id,\n 1,\n 1,\n $scope.state.displayTimestamps ? 1 : 0,\n moment($scope.state.sinceTimestamp).unix(),\n $scope.state.lineCount,\n skipHeaders\n )\n .then(function success(data) {\n $scope.logs = data;\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve container logs');\n });\n }, refreshRate * 1000);\n }\n\n function startLogPolling(skipHeaders) {\n ContainerService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment($scope.state.sinceTimestamp).unix(), $scope.state.lineCount, skipHeaders)\n .then(function success(data) {\n $scope.logs = data;\n setUpdateRepeater(skipHeaders);\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve container logs');\n });\n }\n\n function initView() {\n HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n ContainerService.container($transition$.params().id)\n .then(function success(data) {\n var container = data;\n $scope.container = container;\n startLogPolling(!container.Config.Tty);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve container information');\n });\n }\n\n initView();\n },\n]);\n","import moment from 'moment';\n\nangular.module('portainer.docker').controller('ContainerStatsController', [\n '$q',\n '$scope',\n '$transition$',\n '$document',\n '$interval',\n 'ContainerService',\n 'ChartService',\n 'Notifications',\n 'HttpRequestHelper',\n function ($q, $scope, $transition$, $document, $interval, ContainerService, ChartService, Notifications, HttpRequestHelper) {\n $scope.state = {\n refreshRate: '5',\n networkStatsUnavailable: false,\n ioStatsUnavailable: false,\n };\n\n $scope.$on('$destroy', function () {\n stopRepeater();\n });\n\n function stopRepeater() {\n var repeater = $scope.repeater;\n if (angular.isDefined(repeater)) {\n $interval.cancel(repeater);\n repeater = null;\n }\n }\n\n function updateNetworkChart(stats, chart) {\n if (stats.Networks.length > 0) {\n var rx = stats.Networks[0].rx_bytes;\n var tx = stats.Networks[0].tx_bytes;\n var label = moment(stats.read).format('HH:mm:ss');\n\n ChartService.UpdateNetworkChart(label, rx, tx, chart);\n }\n }\n\n function updateMemoryChart(stats, chart) {\n var label = moment(stats.read).format('HH:mm:ss');\n\n ChartService.UpdateMemoryChart(label, stats.MemoryUsage, stats.MemoryCache, chart);\n }\n\n function updateIOChart(stats, chart) {\n var label = moment(stats.read).format('HH:mm:ss');\n if (stats.noIOData !== true) {\n ChartService.UpdateIOChart(label, stats.BytesRead, stats.BytesWrite, chart);\n }\n }\n\n function updateCPUChart(stats, chart) {\n var label = moment(stats.read).format('HH:mm:ss');\n var value = stats.isWindows ? calculateCPUPercentWindows(stats) : calculateCPUPercentUnix(stats);\n\n ChartService.UpdateCPUChart(label, value, chart);\n }\n\n function calculateCPUPercentUnix(stats) {\n var cpuPercent = 0.0;\n var cpuDelta = stats.CurrentCPUTotalUsage - stats.PreviousCPUTotalUsage;\n var systemDelta = stats.CurrentCPUSystemUsage - stats.PreviousCPUSystemUsage;\n\n if (systemDelta > 0.0 && cpuDelta > 0.0) {\n cpuPercent = (cpuDelta / systemDelta) * stats.CPUCores * 100.0;\n }\n\n return cpuPercent;\n }\n\n function calculateCPUPercentWindows(stats) {\n var possIntervals =\n stats.NumProcs * parseFloat(moment(stats.read, 'YYYY-MM-DDTHH:mm:ss.SSSSSSSSSZ').valueOf() - moment(stats.preread, 'YYYY-MM-DDTHH:mm:ss.SSSSSSSSSZ').valueOf());\n var windowsCpuUsage = 0.0;\n if (possIntervals > 0) {\n windowsCpuUsage = parseFloat(stats.CurrentCPUTotalUsage - stats.PreviousCPUTotalUsage) / parseFloat(possIntervals * 100);\n }\n return windowsCpuUsage;\n }\n\n $scope.changeUpdateRepeater = function () {\n var networkChart = $scope.networkChart;\n var cpuChart = $scope.cpuChart;\n var memoryChart = $scope.memoryChart;\n var ioChart = $scope.ioChart;\n\n stopRepeater();\n setUpdateRepeater(networkChart, cpuChart, memoryChart, ioChart);\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(1500);\n };\n\n function startChartUpdate(networkChart, cpuChart, memoryChart, ioChart) {\n $q.all({\n stats: ContainerService.containerStats($transition$.params().id),\n top: ContainerService.containerTop($transition$.params().id),\n })\n .then(function success(data) {\n var stats = data.stats;\n $scope.processInfo = data.top;\n if (stats.Networks.length === 0) {\n $scope.state.networkStatsUnavailable = true;\n }\n if (stats.noIOData === true) {\n $scope.state.ioStatsUnavailable = true;\n }\n updateNetworkChart(stats, networkChart);\n updateMemoryChart(stats, memoryChart);\n updateCPUChart(stats, cpuChart);\n updateIOChart(stats, ioChart);\n setUpdateRepeater(networkChart, cpuChart, memoryChart, ioChart);\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve container statistics');\n });\n }\n\n function setUpdateRepeater(networkChart, cpuChart, memoryChart, ioChart) {\n var refreshRate = $scope.state.refreshRate;\n $scope.repeater = $interval(function () {\n $q.all({\n stats: ContainerService.containerStats($transition$.params().id),\n top: ContainerService.containerTop($transition$.params().id),\n })\n .then(function success(data) {\n var stats = data.stats;\n $scope.processInfo = data.top;\n updateNetworkChart(stats, networkChart);\n updateMemoryChart(stats, memoryChart);\n updateCPUChart(stats, cpuChart);\n updateIOChart(stats, ioChart);\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve container statistics');\n });\n }, refreshRate * 1000);\n }\n\n function initCharts() {\n var networkChartCtx = $('#networkChart');\n var networkChart = ChartService.CreateNetworkChart(networkChartCtx);\n $scope.networkChart = networkChart;\n\n var cpuChartCtx = $('#cpuChart');\n var cpuChart = ChartService.CreateCPUChart(cpuChartCtx);\n $scope.cpuChart = cpuChart;\n\n var memoryChartCtx = $('#memoryChart');\n var memoryChart = ChartService.CreateMemoryChart(memoryChartCtx);\n $scope.memoryChart = memoryChart;\n\n var ioChartCtx = $('#ioChart');\n var ioChart = ChartService.CreateIOChart(ioChartCtx);\n $scope.ioChart = ioChart;\n\n startChartUpdate(networkChart, cpuChart, memoryChart, ioChart);\n }\n\n function initView() {\n HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n ContainerService.container($transition$.params().id)\n .then(function success(data) {\n $scope.container = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve container information');\n });\n\n $document.ready(function () {\n initCharts();\n });\n }\n\n initView();\n },\n]);\n","import { Heart, Power } from 'lucide-react';\n\nimport { Icon } from '@/react/components/Icon';\n\nimport { DockerContainer } from '../containers/types';\n\ninterface Props {\n containers: DockerContainer[];\n}\n\nexport function useContainerStatusComponent(containers: DockerContainer[]) {\n return <ContainerStatus containers={containers} />;\n}\n\nexport function ContainerStatus({ containers }: Props) {\n return (\n <div className=\"pull-right\">\n <div>\n <div className=\"vertical-center space-right pr-5\">\n <Icon icon={Power} mode=\"success\" size=\"sm\" />\n {runningContainersFilter(containers)} running\n </div>\n <div className=\"vertical-center space-right\">\n <Icon icon={Power} mode=\"danger\" size=\"sm\" />\n {stoppedContainersFilter(containers)} stopped\n </div>\n </div>\n <div>\n <div className=\"vertical-center space-right pr-5\">\n <Icon icon={Heart} mode=\"success\" size=\"sm\" />\n {healthyContainersFilter(containers)} healthy\n </div>\n <div className=\"vertical-center space-right\">\n <Icon icon={Heart} mode=\"danger\" size=\"sm\" />\n {unhealthyContainersFilter(containers)} unhealthy\n </div>\n </div>\n </div>\n );\n}\n\nfunction runningContainersFilter(containers: DockerContainer[]) {\n return containers.filter((container) => container.Status === 'running')\n .length;\n}\nfunction stoppedContainersFilter(containers: DockerContainer[]) {\n return containers.filter(\n (container) =>\n container.Status === 'exited' || container.Status === 'stopped'\n ).length;\n}\nfunction healthyContainersFilter(containers: DockerContainer[]) {\n return containers.filter((container) => container.Status === 'healthy')\n .length;\n}\nfunction unhealthyContainersFilter(containers: DockerContainer[]) {\n return containers.filter((container) => container.Status === 'unhealthy')\n .length;\n}\n","import clsx from 'clsx';\nimport { PieChart } from 'lucide-react';\n\nimport { Icon } from '@/react/components/Icon';\nimport { humanize } from '@/portainer/filters/filters';\n\ninterface Props {\n imagesTotalSize: number;\n}\n\nexport function useImagesTotalSizeComponent(imagesTotalSize: number) {\n return <ImagesTotalSize imagesTotalSize={imagesTotalSize} />;\n}\n\nexport function ImagesTotalSize({ imagesTotalSize }: Props) {\n return (\n <div className=\"vertical-center\">\n <Icon icon={PieChart} className={clsx('space-right')} />\n {humanize(imagesTotalSize)}\n </div>\n );\n}\n","import angular from 'angular';\nimport _ from 'lodash';\n\nimport { PortainerEndpointTypes } from 'Portainer/models/endpoint/models';\nimport { useContainerStatusComponent } from '@/react/docker/DashboardView/ContainerStatus';\nimport { useImagesTotalSizeComponent } from '@/react/docker/DashboardView/ImagesTotalSize';\n\nangular.module('portainer.docker').controller('DashboardController', [\n '$scope',\n '$q',\n 'Authentication',\n 'ContainerService',\n 'ImageService',\n 'NetworkService',\n 'VolumeService',\n 'SystemService',\n 'ServiceService',\n 'StackService',\n 'Notifications',\n 'StateManager',\n 'TagService',\n 'endpoint',\n function (\n $scope,\n $q,\n Authentication,\n ContainerService,\n ImageService,\n NetworkService,\n VolumeService,\n SystemService,\n ServiceService,\n StackService,\n Notifications,\n StateManager,\n TagService,\n endpoint\n ) {\n $scope.dismissInformationPanel = function (id) {\n StateManager.dismissInformationPanel(id);\n };\n\n $scope.showStacks = false;\n\n $scope.buildGpusStr = function (gpuUseSet) {\n var gpusAvailable = new Object();\n for (let i = 0; i < ($scope.endpoint.Gpus || []).length; i++) {\n if (!gpuUseSet.has($scope.endpoint.Gpus[i].name)) {\n var exist = false;\n for (let gpuAvailable in gpusAvailable) {\n if ($scope.endpoint.Gpus[i].value == gpuAvailable) {\n gpusAvailable[gpuAvailable] += 1;\n exist = true;\n }\n }\n if (exist === false) {\n gpusAvailable[$scope.endpoint.Gpus[i].value] = 1;\n }\n }\n }\n var retStr = Object.keys(gpusAvailable).length\n ? _.join(\n _.map(Object.keys(gpusAvailable), (gpuAvailable) => {\n var _str = gpusAvailable[gpuAvailable];\n _str += ' x ';\n _str += gpuAvailable;\n return _str;\n }),\n ' + '\n )\n : 'none';\n return retStr;\n };\n\n async function initView() {\n const endpointMode = $scope.applicationState.endpoint.mode;\n $scope.endpoint = endpoint;\n\n $scope.showStacks = await shouldShowStacks();\n $scope.showEnvUrl = endpoint.Type !== PortainerEndpointTypes.EdgeAgentOnDockerEnvironment && endpoint.Type !== PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment;\n $q.all({\n containers: ContainerService.containers(1),\n images: ImageService.images(false),\n volumes: VolumeService.volumes(),\n networks: NetworkService.networks(true, true, true),\n services: endpointMode.provider === 'DOCKER_SWARM_MODE' && endpointMode.role === 'MANAGER' ? ServiceService.services() : [],\n stacks: StackService.stacks(true, endpointMode.provider === 'DOCKER_SWARM_MODE' && endpointMode.role === 'MANAGER', endpoint.Id),\n info: SystemService.info(),\n tags: TagService.tags(),\n })\n .then(function success(data) {\n $scope.containers = data.containers;\n $scope.containerStatusComponent = useContainerStatusComponent(data.containers);\n\n $scope.images = data.images;\n $scope.imagesTotalSizeComponent = useImagesTotalSizeComponent(imagesTotalSize(data.images));\n\n $scope.volumeCount = data.volumes.length;\n $scope.networkCount = data.networks.length;\n $scope.serviceCount = data.services.length;\n $scope.stackCount = data.stacks.length;\n $scope.info = data.info;\n\n $scope.gpuInfoStr = $scope.buildGpusStr(new Set());\n $scope.gpuUseAll = _.get($scope, 'endpoint.Snapshots[0].GpuUseAll', false);\n $scope.gpuUseList = _.get($scope, 'endpoint.Snapshots[0].GpuUseList', []);\n $scope.gpuFreeStr = 'all';\n if ($scope.gpuUseAll == true) $scope.gpuFreeStr = 'none';\n else $scope.gpuFreeStr = $scope.buildGpusStr(new Set($scope.gpuUseList));\n\n $scope.endpointTags = endpoint.TagIds.length\n ? _.join(\n _.filter(\n _.map(endpoint.TagIds, (id) => {\n const tag = data.tags.find((tag) => tag.Id === id);\n return tag ? tag.Name : '';\n }),\n Boolean\n ),\n ', '\n )\n : '-';\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to load dashboard data');\n });\n }\n\n async function shouldShowStacks() {\n const isAdmin = Authentication.isAdmin();\n\n return isAdmin || endpoint.SecuritySettings.allowStackManagementForRegularUsers;\n }\n\n initView();\n },\n]);\n\nfunction imagesTotalSize(images) {\n return images.reduce((acc, image) => acc + image.VirtualSize, 0);\n}\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nexport default class DockerFeaturesConfigurationController {\n /* @ngInject */\n constructor($async, $scope, $state, $analytics, EndpointService, SettingsService, Notifications, StateManager) {\n this.$async = $async;\n this.$scope = $scope;\n this.$state = $state;\n this.$analytics = $analytics;\n this.EndpointService = EndpointService;\n this.SettingsService = SettingsService;\n this.Notifications = Notifications;\n this.StateManager = StateManager;\n\n this.limitedFeatureAutoUpdate = FeatureId.HIDE_AUTO_UPDATE_WINDOW;\n this.limitedFeatureUpToDateImage = FeatureId.IMAGE_UP_TO_DATE_INDICATOR;\n\n this.formValues = {\n enableHostManagementFeatures: false,\n allowVolumeBrowserForRegularUsers: false,\n disableBindMountsForRegularUsers: false,\n disablePrivilegedModeForRegularUsers: false,\n disableHostNamespaceForRegularUsers: false,\n disableStackManagementForRegularUsers: false,\n disableDeviceMappingForRegularUsers: false,\n disableContainerCapabilitiesForRegularUsers: false,\n disableSysctlSettingForRegularUsers: false,\n };\n\n this.isAgent = false;\n\n this.state = {\n actionInProgress: false,\n autoUpdateSettings: { Enabled: false },\n timeZone: '',\n };\n\n this.save = this.save.bind(this);\n this.onChangeField = this.onChangeField.bind(this);\n this.onToggleAutoUpdate = this.onToggleAutoUpdate.bind(this);\n this.onToggleGPUManagement = this.onToggleGPUManagement.bind(this);\n this.onGpusChange = this.onGpusChange.bind(this);\n this.onChangeEnableHostManagementFeatures = this.onChangeField('enableHostManagementFeatures');\n this.onChangeAllowVolumeBrowserForRegularUsers = this.onChangeField('allowVolumeBrowserForRegularUsers');\n this.onChangeDisableBindMountsForRegularUsers = this.onChangeField('disableBindMountsForRegularUsers');\n this.onChangeDisablePrivilegedModeForRegularUsers = this.onChangeField('disablePrivilegedModeForRegularUsers');\n this.onChangeDisableHostNamespaceForRegularUsers = this.onChangeField('disableHostNamespaceForRegularUsers');\n this.onChangeDisableStackManagementForRegularUsers = this.onChangeField('disableStackManagementForRegularUsers');\n this.onChangeDisableDeviceMappingForRegularUsers = this.onChangeField('disableDeviceMappingForRegularUsers');\n this.onChangeDisableContainerCapabilitiesForRegularUsers = this.onChangeField('disableContainerCapabilitiesForRegularUsers');\n this.onChangeDisableSysctlSettingForRegularUsers = this.onChangeField('disableSysctlSettingForRegularUsers');\n }\n\n onToggleAutoUpdate(value) {\n return this.$scope.$evalAsync(() => {\n this.state.autoUpdateSettings.Enabled = value;\n });\n }\n\n onToggleGPUManagement(checked) {\n this.$scope.$evalAsync(() => {\n this.state.enableGPUManagement = checked;\n });\n }\n\n onChange(values) {\n return this.$scope.$evalAsync(() => {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n });\n }\n\n onChangeField(field) {\n return (value) => {\n this.onChange({\n [field]: value,\n });\n };\n }\n\n onGpusChange(value) {\n return this.$async(async () => {\n this.endpoint.Gpus = value;\n });\n }\n\n isContainerEditDisabled() {\n const {\n disableBindMountsForRegularUsers,\n disableHostNamespaceForRegularUsers,\n disablePrivilegedModeForRegularUsers,\n disableDeviceMappingForRegularUsers,\n disableContainerCapabilitiesForRegularUsers,\n disableSysctlSettingForRegularUsers,\n } = this.formValues;\n return (\n disableBindMountsForRegularUsers ||\n disableHostNamespaceForRegularUsers ||\n disablePrivilegedModeForRegularUsers ||\n disableDeviceMappingForRegularUsers ||\n disableContainerCapabilitiesForRegularUsers ||\n disableSysctlSettingForRegularUsers\n );\n }\n\n async save() {\n return this.$async(async () => {\n try {\n this.state.actionInProgress = true;\n\n const validGpus = this.endpoint.Gpus.filter((gpu) => gpu.name && gpu.value);\n const gpus = this.state.enableGPUManagement ? validGpus : [];\n\n const settings = {\n enableHostManagementFeatures: this.formValues.enableHostManagementFeatures,\n allowBindMountsForRegularUsers: !this.formValues.disableBindMountsForRegularUsers,\n allowPrivilegedModeForRegularUsers: !this.formValues.disablePrivilegedModeForRegularUsers,\n allowVolumeBrowserForRegularUsers: this.formValues.allowVolumeBrowserForRegularUsers,\n allowHostNamespaceForRegularUsers: !this.formValues.disableHostNamespaceForRegularUsers,\n allowDeviceMappingForRegularUsers: !this.formValues.disableDeviceMappingForRegularUsers,\n allowStackManagementForRegularUsers: !this.formValues.disableStackManagementForRegularUsers,\n allowContainerCapabilitiesForRegularUsers: !this.formValues.disableContainerCapabilitiesForRegularUsers,\n allowSysctlSettingForRegularUsers: !this.formValues.disableSysctlSettingForRegularUsers,\n enableGPUManagement: this.state.enableGPUManagement,\n gpus,\n };\n\n const publicSettings = await this.SettingsService.publicSettings();\n const analyticsAllowed = publicSettings.EnableTelemetry;\n if (analyticsAllowed) {\n // send analytics if GPU management is changed (with the new state)\n if (this.initialEnableGPUManagement !== this.state.enableGPUManagement) {\n this.$analytics.eventTrack('enable-gpu-management-updated', { category: 'portainer', metadata: { enableGPUManagementState: this.state.enableGPUManagement } });\n }\n // send analytics if the number of GPUs is changed (with a list of the names)\n if (gpus.length > this.initialGPUs.length) {\n const numberOfGPUSAdded = this.endpoint.Gpus.length - this.initialGPUs.length;\n this.$analytics.eventTrack('gpus-added', { category: 'portainer', metadata: { gpus: gpus.map((gpu) => gpu.name), numberOfGPUSAdded } });\n }\n if (gpus.length < this.initialGPUs.length) {\n const numberOfGPUSRemoved = this.initialGPUs.length - this.endpoint.Gpus.length;\n this.$analytics.eventTrack('gpus-removed', { category: 'portainer', metadata: { gpus: gpus.map((gpu) => gpu.name), numberOfGPUSRemoved } });\n }\n this.initialGPUs = gpus;\n this.initialEnableGPUManagement = this.state.enableGPUManagement;\n }\n\n await this.EndpointService.updateSecuritySettings(this.endpoint.Id, settings);\n\n this.endpoint.SecuritySettings = settings;\n this.Notifications.success('Success', 'Saved settings successfully');\n } catch (e) {\n this.Notifications.error('Failure', e, 'Failed saving settings');\n }\n this.state.actionInProgress = false;\n this.$state.reload();\n });\n }\n\n $onInit() {\n const securitySettings = this.endpoint.SecuritySettings;\n\n const applicationState = this.StateManager.getState();\n this.isAgent = applicationState.endpoint.mode.agentProxy;\n\n this.isDockerStandaloneEnv = applicationState.endpoint.mode.provider === 'DOCKER_STANDALONE';\n\n this.formValues = {\n enableHostManagementFeatures: this.isAgent && securitySettings.enableHostManagementFeatures,\n allowVolumeBrowserForRegularUsers: this.isAgent && securitySettings.allowVolumeBrowserForRegularUsers,\n disableBindMountsForRegularUsers: !securitySettings.allowBindMountsForRegularUsers,\n disablePrivilegedModeForRegularUsers: !securitySettings.allowPrivilegedModeForRegularUsers,\n disableHostNamespaceForRegularUsers: !securitySettings.allowHostNamespaceForRegularUsers,\n disableDeviceMappingForRegularUsers: !securitySettings.allowDeviceMappingForRegularUsers,\n disableStackManagementForRegularUsers: !securitySettings.allowStackManagementForRegularUsers,\n disableContainerCapabilitiesForRegularUsers: !securitySettings.allowContainerCapabilitiesForRegularUsers,\n disableSysctlSettingForRegularUsers: !securitySettings.allowSysctlSettingForRegularUsers,\n };\n\n // this.endpoint.Gpus could be null as it is Gpus: []Pair in the API\n this.endpoint.Gpus = this.endpoint.Gpus || [];\n this.state.enableGPUManagement = this.isDockerStandaloneEnv && (this.endpoint.EnableGPUManagement || this.endpoint.Gpus.length > 0);\n this.initialGPUs = this.endpoint.Gpus;\n this.initialEnableGPUManagement = this.endpoint.EnableGPUManagement;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./docker-features-configuration.html');\n\nimport angular from 'angular';\n\nimport controller from './docker-features-configuration.controller';\n\nangular.module('portainer.docker').component('dockerFeaturesConfigurationView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n endpoint: '<',\n },\n});\n","import moment from 'moment';\n\nangular.module('portainer.docker').controller('EventsController', [\n '$scope',\n 'Notifications',\n 'SystemService',\n function ($scope, Notifications, SystemService) {\n function initView() {\n var from = moment().subtract(24, 'hour').unix();\n var to = moment().unix();\n\n SystemService.events(from, to)\n .then(function success(data) {\n $scope.events = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to load events');\n });\n }\n\n initView();\n },\n]);\n","angular.module('portainer.docker').controller('HostBrowserViewController', [\n 'SystemService',\n 'Notifications',\n function HostBrowserViewController(SystemService, Notifications) {\n var ctrl = this;\n ctrl.$onInit = $onInit;\n\n function $onInit() {\n SystemService.info()\n .then(function onInfoLoaded(host) {\n ctrl.host = host;\n })\n .catch(function onError(err) {\n Notifications.error('Unable to retrieve host information', err);\n });\n }\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./host-browser-view.html');\n\nangular.module('portainer.docker').component('hostBrowserView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'HostBrowserViewController',\n bindings: {\n endpoint: '<',\n },\n});\n","angular.module('portainer.docker').controller('HostViewController', [\n '$q',\n 'SystemService',\n 'Notifications',\n 'StateManager',\n 'AgentService',\n 'ContainerService',\n 'Authentication',\n function HostViewController($q, SystemService, Notifications, StateManager, AgentService, ContainerService, Authentication) {\n var ctrl = this;\n\n this.$onInit = initView;\n\n ctrl.state = {\n isAgent: false,\n isAdmin: false,\n };\n\n this.engineDetails = {};\n this.hostDetails = {};\n this.devices = null;\n this.disks = null;\n\n function initView() {\n var applicationState = StateManager.getState();\n ctrl.state.isAgent = applicationState.endpoint.mode.agentProxy;\n ctrl.state.isAdmin = Authentication.isAdmin();\n var agentApiVersion = applicationState.endpoint.agentApiVersion;\n ctrl.state.agentApiVersion = agentApiVersion;\n ctrl.state.enableHostManagementFeatures = ctrl.endpoint.SecuritySettings.enableHostManagementFeatures;\n\n $q.all({\n version: SystemService.version(),\n info: SystemService.info(),\n jobs: ctrl.state.isAdmin ? ContainerService.containers(true, { label: ['io.portainer.job.endpoint'] }) : [],\n })\n .then(function success(data) {\n ctrl.engineDetails = buildEngineDetails(data);\n ctrl.hostDetails = buildHostDetails(data.info);\n ctrl.jobs = data.jobs;\n\n if (ctrl.state.isAgent && agentApiVersion > 1 && ctrl.state.enableHostManagementFeatures) {\n return AgentService.hostInfo(ctrl.endpoint.Id).then(function onHostInfoLoad(agentHostInfo) {\n ctrl.devices = agentHostInfo.PCIDevices;\n ctrl.disks = agentHostInfo.PhysicalDisks;\n });\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve engine details');\n });\n }\n\n function buildEngineDetails(data) {\n var versionDetails = data.version;\n var info = data.info;\n return {\n releaseVersion: versionDetails.Version,\n apiVersion: versionDetails.ApiVersion,\n rootDirectory: info.DockerRootDir,\n storageDriver: info.Driver,\n loggingDriver: info.LoggingDriver,\n volumePlugins: info.Plugins.Volume,\n networkPlugins: info.Plugins.Network,\n };\n }\n\n function buildHostDetails(info) {\n return {\n os: {\n arch: info.Architecture,\n type: info.OSType,\n name: info.OperatingSystem,\n },\n name: info.Name,\n kernelVersion: info.KernelVersion,\n totalCPU: info.NCPU,\n totalMemory: info.MemTotal,\n };\n }\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./host-view.html');\n\nangular.module('portainer.docker').component('hostView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'HostViewController',\n bindings: {\n endpoint: '<',\n },\n});\n","import { confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { editor, upload, url } from '@@/BoxSelector/common-options/build-methods';\n\nangular.module('portainer.docker').controller('BuildImageController', BuildImageController);\n\n/* @ngInject */\nfunction BuildImageController($scope, $async, $window, BuildService, Notifications, HttpRequestHelper, endpoint) {\n $scope.endpoint = endpoint;\n $scope.options = [editor, upload, url];\n\n $scope.state = {\n BuildType: 'editor',\n actionInProgress: false,\n activeTab: 0,\n isEditorDirty: false,\n };\n\n $scope.formValues = {\n ImageNames: [{ Name: '', Valid: false, Unique: true }],\n UploadFile: null,\n DockerFileContent: '',\n AdditionalFiles: [],\n URL: '',\n Path: 'Dockerfile',\n NodeName: null,\n };\n\n $window.onbeforeunload = () => {\n if ($scope.state.BuildType === 'editor' && $scope.formValues.DockerFileContent && $scope.state.isEditorDirty) {\n return '';\n }\n };\n\n $scope.$on('$destroy', function () {\n $scope.state.isEditorDirty = false;\n });\n\n $scope.onChangeBuildType = function (type) {\n $scope.$evalAsync(() => {\n $scope.state.BuildType = type;\n });\n };\n\n $scope.checkName = function (index) {\n var item = $scope.formValues.ImageNames[index];\n item.Valid = true;\n item.Unique = true;\n if (item.Name !== '') {\n // Check unique\n $scope.formValues.ImageNames.forEach((element, idx) => {\n if (idx != index && element.Name == item.Name) {\n item.Valid = false;\n item.Unique = false;\n }\n });\n if (!item.Valid) {\n return;\n }\n }\n // Validation\n const parts = item.Name.split('/');\n const repository = parts[parts.length - 1];\n const repositoryRegExp = RegExp('^[a-z0-9-_.]{2,255}(:[A-Za-z0-9-_.]{1,128})?$');\n item.Valid = repositoryRegExp.test(repository);\n };\n\n $scope.addImageName = function () {\n $scope.formValues.ImageNames.push({ Name: '', Valid: false, Unique: true });\n };\n\n $scope.removeImageName = function (index) {\n $scope.formValues.ImageNames.splice(index, 1);\n for (var i = 0; i < $scope.formValues.ImageNames.length; i++) {\n $scope.checkName(i);\n }\n };\n\n function buildImageBasedOnBuildType(method, names) {\n var buildType = $scope.state.BuildType;\n var dockerfilePath = $scope.formValues.Path;\n\n if (buildType === 'upload') {\n var file = $scope.formValues.UploadFile;\n return BuildService.buildImageFromUpload(endpoint.Id, names, file, dockerfilePath);\n } else if (buildType === 'url') {\n var URL = $scope.formValues.URL;\n return BuildService.buildImageFromURL(endpoint.Id, names, URL, dockerfilePath);\n } else {\n var dockerfileContent = $scope.formValues.DockerFileContent;\n if ($scope.formValues.AdditionalFiles.length === 0) {\n return BuildService.buildImageFromDockerfileContent(endpoint.Id, names, dockerfileContent);\n } else {\n var additionalFiles = $scope.formValues.AdditionalFiles;\n return BuildService.buildImageFromDockerfileContentAndFiles(endpoint.Id, names, dockerfileContent, additionalFiles);\n }\n }\n }\n\n $scope.buildImage = buildImage;\n\n async function buildImage() {\n return $async(async () => {\n var buildType = $scope.state.BuildType;\n\n if (buildType === 'editor' && $scope.formValues.DockerFileContent === '') {\n $scope.state.formValidationError = 'Dockerfile content must not be empty';\n return;\n }\n\n $scope.state.actionInProgress = true;\n\n var imageNames = $scope.formValues.ImageNames.filter(function filterNull(x) {\n return x.Name;\n }).map(function getNames(x) {\n return x.Name;\n });\n\n var nodeName = $scope.formValues.NodeName;\n HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n\n try {\n const data = await buildImageBasedOnBuildType(buildType, imageNames);\n $scope.buildLogs = data.buildLogs;\n $scope.state.activeTab = 1;\n if (data.hasError) {\n Notifications.error('An error occurred during build', { msg: 'Please check build logs output' });\n } else {\n Notifications.success('Image successfully built');\n $scope.state.isEditorDirty = false;\n }\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to build image');\n } finally {\n $scope.state.actionInProgress = false;\n }\n });\n }\n\n $scope.validImageNames = function () {\n if ($scope.formValues.ImageNames.length == 0) {\n return false;\n }\n for (var i = 0; i < $scope.formValues.ImageNames.length; i++) {\n if (!$scope.formValues.ImageNames[i].Valid) {\n return false;\n }\n }\n return true;\n };\n\n $scope.editorUpdate = function (value) {\n $scope.formValues.DockerFileContent = value;\n $scope.state.isEditorDirty = true;\n };\n\n this.uiCanExit = async function () {\n if ($scope.state.BuildType === 'editor' && $scope.formValues.DockerFileContent && $scope.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n };\n\n $scope.selectAdditionalFiles = function (files) {\n $scope.formValues.AdditionalFiles = files;\n };\n}\n","import _ from 'lodash-es';\nimport { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\nimport { confirmImageExport } from '@/react/docker/images/common/ConfirmExportModal';\nimport { confirmDelete } from '@@/modals/confirm';\n\nangular.module('portainer.docker').controller('ImageController', [\n '$async',\n '$q',\n '$scope',\n '$transition$',\n '$state',\n 'Authentication',\n 'ImageService',\n 'ImageHelper',\n 'RegistryService',\n 'Notifications',\n 'HttpRequestHelper',\n 'FileSaver',\n 'Blob',\n 'endpoint',\n 'RegistryModalService',\n function (\n $async,\n $q,\n $scope,\n $transition$,\n $state,\n Authentication,\n ImageService,\n ImageHelper,\n RegistryService,\n Notifications,\n HttpRequestHelper,\n FileSaver,\n Blob,\n endpoint,\n RegistryModalService\n ) {\n $scope.endpoint = endpoint;\n $scope.isAdmin = Authentication.isAdmin();\n\n $scope.formValues = {\n RegistryModel: new PorImageRegistryModel(),\n };\n\n $scope.state = {\n exportInProgress: false,\n pullImageValidity: false,\n };\n\n $scope.sortType = 'Order';\n $scope.sortReverse = false;\n\n $scope.order = function (sortType) {\n $scope.sortReverse = $scope.sortType === sortType ? !$scope.sortReverse : false;\n $scope.sortType = sortType;\n };\n\n $scope.toggleLayerCommand = function (layerId) {\n $('#layer-command-expander' + layerId + ' span').toggleClass('glyphicon-plus-sign glyphicon-minus-sign');\n $('#layer-command-' + layerId + '-short').toggle();\n $('#layer-command-' + layerId + '-full').toggle();\n };\n\n $scope.setPullImageValidity = setPullImageValidity;\n function setPullImageValidity(validity) {\n $scope.state.pullImageValidity = validity;\n }\n\n $scope.tagImage = function () {\n const registryModel = $scope.formValues.RegistryModel;\n\n const image = ImageHelper.createImageConfigForContainer(registryModel);\n\n ImageService.tagImage($transition$.params().id, image.fromImage)\n .then(function success() {\n Notifications.success('Success', 'Image successfully tagged');\n $state.go('docker.images.image', { id: $transition$.params().id }, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to tag image');\n });\n };\n\n $scope.pushTag = pushTag;\n\n async function pushTag(repository) {\n return $async(async () => {\n try {\n const registryModel = await RegistryModalService.registryModal(repository, $scope.registries);\n\n if (registryModel) {\n $('#uploadResourceHint').show();\n await ImageService.pushImage(registryModel);\n Notifications.success('Image successfully pushed', repository);\n }\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to push image to repository');\n } finally {\n $('#uploadResourceHint').hide();\n }\n });\n }\n\n $scope.pullTag = pullTag;\n async function pullTag(repository) {\n return $async(async () => {\n try {\n const registryModel = await RegistryModalService.registryModal(repository, $scope.registries);\n if (registryModel) {\n $('#downloadResourceHint').show();\n await ImageService.pullImage(registryModel);\n Notifications.success('Image successfully pulled', repository);\n }\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to pull image from repository');\n } finally {\n $('#downloadResourceHint').hide();\n }\n });\n }\n\n $scope.removeTag = function (repository) {\n return $async(async () => {\n if (!(await confirmDelete('Are you sure you want to delete this tag?'))) {\n return;\n }\n\n ImageService.deleteImage(repository, false)\n .then(function success() {\n if ($scope.image.RepoTags.length === 1) {\n Notifications.success('Image successfully deleted', repository);\n $state.go('docker.images', {}, { reload: true });\n } else {\n Notifications.success('Tag successfully deleted', repository);\n $state.go('docker.images.image', { id: $transition$.params().id }, { reload: true });\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove image');\n });\n });\n };\n\n $scope.removeImage = function (id) {\n return $async(async () => {\n if (!(await confirmDelete('Deleting this image will also delete all associated tags. Are you sure you want to delete this image?'))) {\n return;\n }\n\n ImageService.deleteImage(id, false)\n .then(function success() {\n Notifications.success('Image successfully deleted', id);\n $state.go('docker.images', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove image');\n });\n });\n };\n\n function exportImage(image) {\n HttpRequestHelper.setPortainerAgentTargetHeader(image.NodeName);\n $scope.state.exportInProgress = true;\n ImageService.downloadImages([image])\n .then(function success(data) {\n var downloadData = new Blob([data.file], { type: 'application/x-tar' });\n FileSaver.saveAs(downloadData, 'images.tar');\n Notifications.success('Success', 'Image successfully downloaded');\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to download image');\n })\n .finally(function final() {\n $scope.state.exportInProgress = false;\n });\n }\n\n $scope.exportImage = function (image) {\n if (image.RepoTags.length === 0 || _.includes(image.RepoTags, '<none>')) {\n Notifications.warning('', 'Cannot download a untagged image');\n return;\n }\n\n confirmImageExport(function (confirmed) {\n if (!confirmed) {\n return;\n }\n exportImage(image);\n });\n };\n\n async function initView() {\n HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n\n try {\n $scope.registries = await RegistryService.loadRegistriesForDropdown(endpoint.Id);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load registries');\n }\n\n $q.all({\n image: ImageService.image($transition$.params().id),\n history: ImageService.history($transition$.params().id),\n })\n .then(function success(data) {\n $scope.image = data.image;\n $scope.history = data.history;\n $scope.image.Env = _.sortBy($scope.image.Env, _.toLower);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve image details');\n $state.go('docker.images');\n });\n }\n\n initView();\n },\n]);\n","import _ from 'lodash-es';\nimport { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\nimport { confirmImageExport } from '@/react/docker/images/common/ConfirmExportModal';\nimport { confirmDestructive } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nangular.module('portainer.docker').controller('ImagesController', [\n '$scope',\n '$state',\n 'Authentication',\n 'ImageService',\n 'Notifications',\n 'HttpRequestHelper',\n 'FileSaver',\n 'Blob',\n 'endpoint',\n '$async',\n function ($scope, $state, Authentication, ImageService, Notifications, HttpRequestHelper, FileSaver, Blob, endpoint) {\n $scope.endpoint = endpoint;\n $scope.isAdmin = Authentication.isAdmin();\n\n $scope.state = {\n actionInProgress: false,\n exportInProgress: false,\n pullRateValid: false,\n };\n\n $scope.formValues = {\n RegistryModel: new PorImageRegistryModel(),\n NodeName: null,\n };\n\n $scope.pullImage = function () {\n const registryModel = $scope.formValues.RegistryModel;\n\n var nodeName = $scope.formValues.NodeName;\n HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n\n $scope.state.actionInProgress = true;\n ImageService.pullImage(registryModel, false)\n .then(function success(data) {\n var err = data[data.length - 1].errorDetail;\n if (err) {\n return Notifications.error('Failure', err, 'Unable to pull image');\n }\n Notifications.success('Image successfully pulled', registryModel.Image);\n $state.reload();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to pull image');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n\n function confirmImageForceRemoval() {\n return confirmDestructive({\n title: 'Are you sure?',\n message:\n \"Forcing removal of an image will remove it even if it's used by stopped containers, and delete all associated tags. Are you sure you want to remove the selected image(s)?\",\n confirmButton: buildConfirmButton('Remove the image', 'danger'),\n });\n }\n\n function confirmRegularRemove() {\n return confirmDestructive({\n title: 'Are you sure?',\n message: 'Removing an image will also delete all associated tags. Are you sure you want to remove the selected image(s)?',\n confirmButton: buildConfirmButton('Remove the image', 'danger'),\n });\n }\n\n $scope.confirmRemovalAction = async function (selectedItems, force) {\n const confirmed = await (force ? confirmImageForceRemoval() : confirmRegularRemove());\n\n if (!confirmed) {\n return;\n }\n\n $scope.removeAction(selectedItems, force);\n };\n\n function isAuthorizedToDownload(selectedItems) {\n for (var i = 0; i < selectedItems.length; i++) {\n var image = selectedItems[i];\n\n var untagged = _.find(image.RepoTags, function (item) {\n return item.indexOf('<none>') > -1;\n });\n\n if (untagged) {\n Notifications.warning('', 'Cannot download a untagged image');\n return false;\n }\n }\n\n if (_.uniqBy(selectedItems, 'NodeName').length > 1) {\n Notifications.warning('', 'Cannot download images from different nodes at the same time');\n return false;\n }\n\n return true;\n }\n\n function exportImages(images) {\n HttpRequestHelper.setPortainerAgentTargetHeader(images[0].NodeName);\n $scope.state.exportInProgress = true;\n ImageService.downloadImages(images)\n .then(function success(data) {\n var downloadData = new Blob([data.file], { type: 'application/x-tar' });\n FileSaver.saveAs(downloadData, 'images.tar');\n Notifications.success('Success', 'Image(s) successfully downloaded');\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to download image(s)');\n })\n .finally(function final() {\n $scope.state.exportInProgress = false;\n });\n }\n\n $scope.downloadAction = function (selectedItems) {\n if (!isAuthorizedToDownload(selectedItems)) {\n return;\n }\n\n confirmImageExport(function (confirmed) {\n if (!confirmed) {\n return;\n }\n exportImages(selectedItems);\n });\n };\n\n $scope.removeAction = function (selectedItems, force) {\n var actionCount = selectedItems.length;\n angular.forEach(selectedItems, function (image) {\n HttpRequestHelper.setPortainerAgentTargetHeader(image.NodeName);\n ImageService.deleteImage(image.Id, force)\n .then(function success() {\n Notifications.success('Image successfully removed', image.Id);\n var index = $scope.images.indexOf(image);\n $scope.images.splice(index, 1);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove image');\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n };\n\n $scope.getImages = getImages;\n function getImages() {\n ImageService.images(true)\n .then(function success(data) {\n $scope.images = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve images');\n $scope.images = [];\n });\n }\n\n $scope.setPullImageValidity = setPullImageValidity;\n function setPullImageValidity(validity) {\n $scope.state.pullRateValid = validity;\n }\n\n function initView() {\n getImages();\n }\n\n initView();\n },\n]);\n","import { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\n\nangular.module('portainer.docker').controller('ImportImageController', [\n '$scope',\n '$state',\n 'ImageService',\n 'Notifications',\n 'HttpRequestHelper',\n 'Authentication',\n 'ImageHelper',\n 'endpoint',\n function ($scope, $state, ImageService, Notifications, HttpRequestHelper, Authentication, ImageHelper, endpoint) {\n $scope.state = {\n actionInProgress: false,\n };\n\n $scope.endpoint = endpoint;\n\n $scope.isAdmin = Authentication.isAdmin();\n\n $scope.formValues = {\n UploadFile: null,\n NodeName: null,\n RegistryModel: new PorImageRegistryModel(),\n };\n\n $scope.setPullImageValidity = setPullImageValidity;\n function setPullImageValidity(validity) {\n $scope.state.pullImageValidity = validity;\n }\n\n async function tagImage(id) {\n const registryModel = $scope.formValues.RegistryModel;\n if (registryModel.Image) {\n const image = ImageHelper.createImageConfigForContainer(registryModel);\n try {\n await ImageService.tagImage(id, image.fromImage);\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to tag image');\n }\n }\n }\n\n $scope.uploadImage = async function () {\n $scope.state.actionInProgress = true;\n\n var nodeName = $scope.formValues.NodeName;\n HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n var file = $scope.formValues.UploadFile;\n try {\n const { data } = await ImageService.uploadImage(file);\n if (data.error) {\n Notifications.error('Failure', data.error, 'Unable to upload image');\n } else if (data.stream) {\n var regex = /Loaded.*?: (.*?)\\n$/g;\n var imageIds = regex.exec(data.stream);\n if (imageIds && imageIds.length == 2) {\n await tagImage(imageIds[1]);\n $state.go('docker.images.image', { id: imageIds[1] }, { reload: true });\n }\n Notifications.success('Success', 'Images successfully uploaded');\n } else {\n Notifications.success('Success', 'The uploaded tar file contained multiple images. The provided tag therefore has been ignored.');\n }\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to upload image');\n } finally {\n $scope.state.actionInProgress = false;\n }\n };\n },\n]);\n","import _ from 'lodash-es';\nimport { AccessControlFormData } from '../../../../portainer/components/accessControlForm/porAccessControlFormModel';\nimport { MacvlanFormData } from '../../../components/network-macvlan-form/networkMacvlanFormModel';\n\nangular.module('portainer.docker').controller('CreateNetworkController', [\n '$q',\n '$scope',\n '$state',\n 'PluginService',\n 'Notifications',\n 'NetworkService',\n 'LabelHelper',\n 'Authentication',\n 'ResourceControlService',\n 'FormValidator',\n 'HttpRequestHelper',\n 'endpoint',\n function ($q, $scope, $state, PluginService, Notifications, NetworkService, LabelHelper, Authentication, ResourceControlService, FormValidator, HttpRequestHelper, endpoint) {\n $scope.endpoint = endpoint;\n\n $scope.formValues = {\n DriverOptions: [],\n IPV4: {\n Subnet: '',\n Gateway: '',\n IPRange: '',\n AuxiliaryAddresses: [],\n },\n IPV6: {\n Subnet: '',\n Gateway: '',\n IPRange: '',\n AuxiliaryAddresses: [],\n },\n Labels: [],\n AccessControlData: new AccessControlFormData(),\n NodeName: null,\n Macvlan: new MacvlanFormData(),\n };\n\n $scope.state = {\n formValidationError: '',\n actionInProgress: false,\n };\n\n $scope.availableNetworkDrivers = [];\n\n $scope.config = {\n Driver: 'bridge',\n CheckDuplicate: true,\n Internal: false,\n Attachable: false,\n EnableIPv6: false,\n // Force IPAM Driver to 'default', should not be required.\n // See: https://github.com/docker/docker/issues/25735\n IPAM: {\n Driver: 'default',\n Config: [],\n },\n Labels: {},\n };\n\n $scope.addDriverOption = function () {\n $scope.formValues.DriverOptions.push({\n name: '',\n value: '',\n });\n };\n\n $scope.removeDriverOption = function (index) {\n $scope.formValues.DriverOptions.splice(index, 1);\n };\n\n $scope.addLabel = function () {\n $scope.formValues.Labels.push({\n key: '',\n value: '',\n });\n };\n\n $scope.removeLabel = function (index) {\n $scope.formValues.Labels.splice(index, 1);\n };\n\n $scope.addIPV4AuxAddress = function () {\n $scope.formValues.IPV4.AuxiliaryAddresses.push('');\n };\n\n $scope.addIPV6AuxAddress = function () {\n $scope.formValues.IPV6.AuxiliaryAddresses.push('');\n };\n\n $scope.removeIPV4AuxAddress = function (index) {\n $scope.formValues.IPV4.AuxiliaryAddresses.splice(index, 1);\n $scope.state.IPV4AuxiliaryAddressesError.splice(index, 1);\n };\n\n $scope.removeIPV6AuxAddress = function (index) {\n $scope.formValues.IPV6.AuxiliaryAddresses.splice(index, 1);\n $scope.state.IPV6AuxiliaryAddressesError.splice(index, 1);\n };\n\n function checkAuxiliaryAddress(excludedIP, gateway) {\n const split = _.split(excludedIP, '=');\n\n if (split.length === 2) {\n return split[1] === gateway;\n }\n return excludedIP === gateway;\n }\n\n $scope.checkIPV4AuxiliaryAddress = function (index) {\n $scope.state.IPV4AuxiliaryAddressesError[index] = checkAuxiliaryAddress($scope.formValues.IPV4.AuxiliaryAddresses[index], $scope.formValues.IPV4.Gateway);\n };\n\n $scope.checkIPV6AuxiliaryAddress = function (index) {\n $scope.state.IPV6AuxiliaryAddressesError[index] = checkAuxiliaryAddress($scope.formValues.IPV6.AuxiliaryAddresses[index], $scope.formValues.IPV6.Gateway);\n };\n\n $scope.isValid = function () {\n const validIPV4 = !_.reduce($scope.state.IPV4AuxiliaryAddressesError, (acc, item) => acc || item, false);\n const validIPV6 = !_.reduce($scope.state.IPV6AuxiliaryAddressesError, (acc, item) => acc || item, false);\n return validIPV4 && validIPV6;\n };\n\n function prepareAuxiliaryAddresses(ipamConfig, ipFormValues) {\n ipamConfig.AuxiliaryAddresses = {};\n _.forEach(ipFormValues.AuxiliaryAddresses, (auxAddress, index) => {\n const split = _.split(auxAddress, '=');\n if (split.length === 2) {\n ipamConfig.AuxiliaryAddresses[split[0]] = split[1];\n } else {\n ipamConfig.AuxiliaryAddresses['device' + index] = auxAddress;\n }\n });\n }\n\n function prepareIPAMConfiguration(config) {\n if ($scope.formValues.IPV4.Subnet) {\n let ipamConfig = {};\n ipamConfig.Subnet = $scope.formValues.IPV4.Subnet;\n if ($scope.formValues.IPV4.Gateway) {\n ipamConfig.Gateway = $scope.formValues.IPV4.Gateway;\n }\n if ($scope.formValues.IPV4.IPRange) {\n ipamConfig.IPRange = $scope.formValues.IPV4.IPRange;\n }\n if ($scope.formValues.IPV4.AuxiliaryAddresses.length) {\n prepareAuxiliaryAddresses(ipamConfig, $scope.formValues.IPV4);\n }\n config.IPAM.Config.push(ipamConfig);\n }\n if ($scope.formValues.IPV6.Subnet) {\n let ipamConfig = {};\n ipamConfig.Subnet = $scope.formValues.IPV6.Subnet;\n if ($scope.formValues.IPV6.Gateway) {\n ipamConfig.Gateway = $scope.formValues.IPV6.Gateway;\n }\n if ($scope.formValues.IPV6.IPRange) {\n ipamConfig.IPRange = $scope.formValues.IPV6.IPRange;\n }\n if ($scope.formValues.IPV6.AuxiliaryAddresses.length) {\n prepareAuxiliaryAddresses(ipamConfig, $scope.formValues.IPV6);\n }\n config.EnableIPv6 = true;\n config.IPAM.Config.push(ipamConfig);\n }\n }\n\n function prepareDriverOptions(config) {\n var options = {};\n $scope.formValues.DriverOptions.forEach(function (option) {\n options[option.name] = option.value;\n });\n config.Options = options;\n }\n\n function prepareLabelsConfig(config) {\n config.Labels = LabelHelper.fromKeyValueToLabelHash($scope.formValues.Labels);\n }\n\n function prepareConfiguration() {\n var config = angular.copy($scope.config);\n prepareIPAMConfiguration(config);\n prepareDriverOptions(config);\n prepareLabelsConfig(config);\n return config;\n }\n\n function modifyNetworkConfigurationForMacvlanConfigOnly(config) {\n config.Internal = null;\n config.Attachable = null;\n config.ConfigOnly = true;\n config.Options.parent = $scope.formValues.Macvlan.ParentNetworkCard;\n }\n\n function modifyNetworkConfigurationForMacvlanConfigFrom(config, selectedNetworkConfig) {\n config.ConfigFrom = {\n Network: selectedNetworkConfig.Name,\n };\n if ($scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE') {\n config.Scope = 'swarm';\n } else {\n config.Scope = 'local';\n }\n }\n\n $scope.onChangeInternal = function (enable) {\n $scope.$evalAsync(() => {\n $scope.config.Internal = enable;\n });\n };\n\n $scope.onChangeAttachable = function (enable) {\n $scope.$evalAsync(() => {\n $scope.config.Attachable = enable;\n });\n };\n\n function validateForm(accessControlData, isAdmin) {\n $scope.state.formValidationError = '';\n var error = '';\n error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n $scope.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n function createNetwork(context) {\n HttpRequestHelper.setPortainerAgentTargetHeader(context.nodeName);\n HttpRequestHelper.setPortainerAgentManagerOperation(context.managerOperation);\n\n $scope.state.actionInProgress = true;\n NetworkService.create(context.networkConfiguration)\n .then(function success(data) {\n const userId = context.userDetails.ID;\n const accessControlData = context.accessControlData;\n const resourceControl = data.Portainer.ResourceControl;\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n })\n .then(function success() {\n Notifications.success('Success', 'Network successfully created');\n if (context.reload) {\n $state.go(\n 'docker.networks',\n {},\n {\n reload: true,\n }\n );\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'An error occurred during network creation');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n }\n\n $scope.create = function () {\n var networkConfiguration = prepareConfiguration();\n var accessControlData = $scope.formValues.AccessControlData;\n var userDetails = Authentication.getUserDetails();\n var isAdmin = Authentication.isAdmin();\n\n if (!validateForm(accessControlData, isAdmin)) {\n return;\n }\n\n var creationContext = {\n nodeName: $scope.formValues.NodeName,\n managerOperation: false,\n networkConfiguration: networkConfiguration,\n userDetails: userDetails,\n accessControlData: accessControlData,\n reload: true,\n };\n\n if ($scope.applicationState.endpoint.mode.agentProxy && $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && $scope.config.Driver === 'overlay') {\n creationContext.managerOperation = true;\n }\n\n if ($scope.config.Driver === 'macvlan') {\n if ($scope.formValues.Macvlan.Scope === 'local') {\n modifyNetworkConfigurationForMacvlanConfigOnly(networkConfiguration);\n } else if ($scope.formValues.Macvlan.Scope === 'swarm') {\n var selectedNetworkConfig = $scope.formValues.Macvlan.SelectedNetworkConfig;\n modifyNetworkConfigurationForMacvlanConfigFrom(networkConfiguration, selectedNetworkConfig);\n creationContext.nodeName = selectedNetworkConfig.NodeName;\n }\n }\n\n if (\n $scope.config.Driver === 'macvlan' &&\n $scope.formValues.Macvlan.Scope === 'local' &&\n $scope.applicationState.endpoint.mode.agentProxy &&\n $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\n ) {\n var selectedNodes = $scope.formValues.Macvlan.DatatableState.selectedItems;\n selectedNodes.forEach(function (node, idx) {\n creationContext.nodeName = node.Hostname;\n creationContext.reload = idx === selectedNodes.length - 1 ? true : false;\n createNetwork(creationContext);\n });\n } else {\n createNetwork(creationContext);\n }\n };\n\n function initView() {\n var apiVersion = $scope.applicationState.endpoint.apiVersion;\n $scope.state.IPV4AuxiliaryAddressesError = [];\n $scope.state.IPV6AuxiliaryAddressesError = [];\n\n PluginService.networkPlugins(apiVersion < 1.25)\n .then(function success(data) {\n $scope.availableNetworkDrivers = data;\n $scope.availableNetworkDrivers = _.filter($scope.availableNetworkDrivers, (driver) => driver !== 'host' && driver !== 'null');\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve network drivers');\n });\n }\n\n initView();\n },\n]);\n","import _ from 'lodash-es';\nimport DockerNetworkHelper from '@/docker/helpers/networkHelper';\nimport { confirmDelete } from '@@/modals/confirm';\n\nangular.module('portainer.docker').controller('NetworksController', [\n '$q',\n '$scope',\n '$state',\n 'NetworkService',\n 'Notifications',\n 'HttpRequestHelper',\n 'endpoint',\n 'AgentService',\n function ($q, $scope, $state, NetworkService, Notifications, HttpRequestHelper, endpoint, AgentService) {\n $scope.removeAction = async function (selectedItems) {\n const confirmed = await confirmDelete('Do you want to remove the selected network(s)?');\n if (!confirmed) {\n return null;\n }\n var actionCount = selectedItems.length;\n angular.forEach(selectedItems, function (network) {\n HttpRequestHelper.setPortainerAgentTargetHeader(network.NodeName);\n NetworkService.remove(network.Id)\n .then(function success() {\n Notifications.success('Network successfully removed', network.Name);\n var index = $scope.networks.indexOf(network);\n $scope.networks.splice(index, 1);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove network');\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n };\n\n $scope.getNetworks = getNetworks;\n\n function groupSwarmNetworksManagerNodesFirst(networks, agents) {\n const getRole = (item) => _.find(agents, (agent) => agent.NodeName === item.NodeName).NodeRole;\n\n const nonSwarmNetworks = _.remove(networks, (item) => item.Scope !== 'swarm');\n const grouped = _.toArray(_.groupBy(networks, (item) => item.Id));\n const sorted = _.map(grouped, (arr) => _.sortBy(arr, (item) => getRole(item)));\n const arr = _.map(sorted, (a) => {\n const item = a[0];\n for (let i = 1; i < a.length; i++) {\n item.Subs.push(a[i]);\n }\n return item;\n });\n const res = _.concat(arr, ...nonSwarmNetworks);\n return res;\n }\n\n function getNetworks() {\n const req = {\n networks: NetworkService.networks(true, true, true),\n };\n\n if ($scope.applicationState.endpoint.mode.agentProxy && $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE') {\n req.agents = AgentService.agents(endpoint.Id);\n }\n\n $q.all(req)\n .then((data) => {\n const networks = _.forEach(data.networks, (item) => (item.Subs = []));\n if ($scope.applicationState.endpoint.mode.agentProxy && $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE') {\n $scope.networks = groupSwarmNetworksManagerNodesFirst(data.networks, data.agents);\n } else {\n $scope.networks = networks;\n }\n\n _.forEach($scope.networks, (network) => {\n network.IPAM.IPV4Configs = DockerNetworkHelper.getIPV4Configs(network.IPAM.Config);\n network.IPAM.IPV6Configs = DockerNetworkHelper.getIPV6Configs(network.IPAM.Config);\n });\n })\n .catch((err) => {\n $scope.networks = [];\n Notifications.error('Failure', err, 'Unable to retrieve networks');\n });\n }\n\n function initView() {\n getNetworks();\n }\n\n initView();\n },\n]);\n","angular.module('portainer.docker').controller('NodeBrowserController', [\n '$stateParams',\n 'NodeService',\n 'HttpRequestHelper',\n 'Notifications',\n function NodeBrowserController($stateParams, NodeService, HttpRequestHelper, Notifications) {\n var ctrl = this;\n ctrl.$onInit = $onInit;\n\n function $onInit() {\n ctrl.nodeId = $stateParams.id;\n\n NodeService.node(ctrl.nodeId)\n .then(function onNodeLoaded(node) {\n HttpRequestHelper.setPortainerAgentTargetHeader(node.Hostname);\n ctrl.node = node;\n })\n .catch(function onError(err) {\n Notifications.error('Unable to retrieve host information', err);\n });\n }\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./node-browser.html');\n\nangular.module('portainer.docker').component('nodeBrowserView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'NodeBrowserController',\n bindings: {\n endpoint: '<',\n },\n});\n","angular.module('portainer.docker').controller('NodeDetailsViewController', [\n '$q',\n '$stateParams',\n 'NodeService',\n 'StateManager',\n 'AgentService',\n 'ContainerService',\n 'Authentication',\n function NodeDetailsViewController($q, $stateParams, NodeService, StateManager, AgentService, ContainerService, Authentication) {\n var ctrl = this;\n\n ctrl.$onInit = initView;\n\n ctrl.state = {\n isAgent: false,\n isAdmin: false,\n };\n\n function initView() {\n var applicationState = StateManager.getState();\n ctrl.state.isAgent = applicationState.endpoint.mode.agentProxy;\n ctrl.state.isAdmin = Authentication.isAdmin();\n ctrl.state.enableHostManagementFeatures = ctrl.endpoint.SecuritySettings.enableHostManagementFeatures;\n\n var fetchJobs = ctrl.state.isAdmin && ctrl.state.isAgent;\n\n var nodeId = $stateParams.id;\n $q.all({\n node: NodeService.node(nodeId),\n jobs: fetchJobs ? ContainerService.containers(true, { label: ['io.portainer.job.endpoint'] }) : [],\n }).then(function (data) {\n var node = data.node;\n ctrl.originalNode = node;\n ctrl.hostDetails = buildHostDetails(node);\n ctrl.engineDetails = buildEngineDetails(node);\n ctrl.nodeDetails = buildNodeDetails(node);\n ctrl.jobs = data.jobs;\n if (ctrl.state.isAgent) {\n var agentApiVersion = applicationState.endpoint.agentApiVersion;\n ctrl.state.agentApiVersion = agentApiVersion;\n if (agentApiVersion < 2 || !ctrl.state.enableHostManagementFeatures) {\n return;\n }\n\n AgentService.hostInfo(ctrl.endpoint.Id, node.Hostname).then(function onHostInfoLoad(agentHostInfo) {\n ctrl.devices = agentHostInfo.PCIDevices;\n ctrl.disks = agentHostInfo.PhysicalDisks;\n });\n }\n });\n }\n\n function buildHostDetails(node) {\n return {\n os: {\n arch: node.PlatformArchitecture,\n type: node.PlatformOS,\n },\n name: node.Hostname,\n totalCPU: node.CPUs / 1e9,\n totalMemory: node.Memory,\n };\n }\n\n function buildEngineDetails(node) {\n return {\n releaseVersion: node.EngineVersion,\n volumePlugins: transformPlugins(node.Plugins, 'Volume'),\n networkPlugins: transformPlugins(node.Plugins, 'Network'),\n engineLabels: node.EngineLabels,\n };\n }\n\n function buildNodeDetails(node) {\n return {\n name: node.Name,\n role: node.Role,\n managerAddress: node.ManagerAddr,\n availability: node.Availability,\n status: node.Status,\n nodeLabels: node.Labels,\n };\n }\n\n function transformPlugins(pluginsList, type) {\n return pluginsList\n .filter(function (plugin) {\n return plugin.Type === type;\n })\n .map(function (plugin) {\n return plugin.Name;\n });\n }\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./node-details-view.html');\n\nangular.module('portainer.docker').component('nodeDetailsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'NodeDetailsViewController',\n bindings: {\n endpoint: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./registryAccess.html');\n\nangular.module('portainer.docker').component('dockerRegistryAccessView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'DockerRegistryAccessController',\n bindings: {\n endpoint: '<',\n },\n});\n","import { TeamAccessViewModel, UserAccessViewModel } from 'Portainer/models/access';\n\nclass DockerRegistryAccessController {\n /* @ngInject */\n constructor($async, $state, Notifications, EndpointService, GroupService, RegistryService) {\n this.$async = $async;\n this.$state = $state;\n this.Notifications = Notifications;\n this.EndpointService = EndpointService;\n this.GroupService = GroupService;\n this.RegistryService = RegistryService;\n\n this.updateAccess = this.updateAccess.bind(this);\n this.filterUsers = this.filterUsers.bind(this);\n }\n\n updateAccess() {\n return this.$async(async () => {\n this.state.actionInProgress = true;\n try {\n await this.EndpointService.updateRegistryAccess(this.state.endpointId, this.state.registryId, this.registryEndpointAccesses);\n this.Notifications.success('Success', 'Access successfully updated');\n this.$state.reload();\n } catch (err) {\n this.state.actionInProgress = false;\n this.Notifications.error('Failure', err, 'Unable to update accesses');\n }\n });\n }\n\n filterUsers(users) {\n const endpointUsers = this.endpoint.UserAccessPolicies;\n const endpointTeams = this.endpoint.TeamAccessPolicies;\n\n const endpointGroupUsers = this.endpointGroup.UserAccessPolicies;\n const endpointGroupTeams = this.endpointGroup.TeamAccessPolicies;\n\n return users.filter((userOrTeam) => {\n const userAccess = userOrTeam instanceof UserAccessViewModel && (endpointUsers[userOrTeam.Id] || endpointGroupUsers[userOrTeam.Id]);\n const teamAccess = userOrTeam instanceof TeamAccessViewModel && (endpointTeams[userOrTeam.Id] || endpointGroupTeams[userOrTeam.Id]);\n\n return userAccess || teamAccess;\n });\n }\n\n $onInit() {\n return this.$async(async () => {\n this.registryTo = window.location.hash.match(/#!\\/\\d+\\/docker\\/swarm\\/registries/) ? 'docker.swarm.registries' : 'docker.host.registries';\n\n try {\n this.state = {\n viewReady: false,\n actionInProgress: false,\n endpointId: this.$state.params.endpointId,\n registryId: this.$state.params.id,\n };\n this.registry = await this.RegistryService.registry(this.state.registryId, this.state.endpointId);\n this.registryEndpointAccesses = this.registry.RegistryAccesses[this.state.endpointId] || {};\n this.endpointGroup = await this.GroupService.group(this.endpoint.GroupId);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registry details');\n } finally {\n this.state.viewReady = true;\n }\n });\n }\n}\n\nexport default DockerRegistryAccessController;\nangular.module('portainer.docker').controller('DockerRegistryAccessController', DockerRegistryAccessController);\n","import { AccessControlFormData } from '../../../../portainer/components/accessControlForm/porAccessControlFormModel';\n\nangular.module('portainer.docker').controller('CreateSecretController', [\n '$scope',\n '$state',\n 'Notifications',\n 'SecretService',\n 'LabelHelper',\n 'Authentication',\n 'ResourceControlService',\n 'FormValidator',\n function ($scope, $state, Notifications, SecretService, LabelHelper, Authentication, ResourceControlService, FormValidator) {\n $scope.formValues = {\n Name: '',\n Data: '',\n Labels: [],\n encodeSecret: true,\n AccessControlData: new AccessControlFormData(),\n };\n\n $scope.state = {\n formValidationError: '',\n actionInProgress: false,\n };\n\n $scope.handleEncodeSecretChange = handleEncodeSecretChange;\n\n function handleEncodeSecretChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.formValues.encodeSecret = checked;\n });\n }\n\n $scope.addLabel = function () {\n $scope.formValues.Labels.push({ key: '', value: '' });\n };\n\n $scope.removeLabel = function (index) {\n $scope.formValues.Labels.splice(index, 1);\n };\n\n function prepareLabelsConfig(config) {\n config.Labels = LabelHelper.fromKeyValueToLabelHash($scope.formValues.Labels);\n }\n\n function prepareSecretData(config) {\n if ($scope.formValues.encodeSecret) {\n config.Data = btoa(unescape(encodeURIComponent($scope.formValues.Data)));\n } else {\n config.Data = $scope.formValues.Data;\n }\n }\n\n function prepareConfiguration() {\n var config = {};\n config.Name = $scope.formValues.Name;\n prepareSecretData(config);\n prepareLabelsConfig(config);\n return config;\n }\n\n function validateForm(accessControlData, isAdmin) {\n $scope.state.formValidationError = '';\n var error = '';\n error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n $scope.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n $scope.create = function () {\n const accessControlData = $scope.formValues.AccessControlData;\n const userDetails = Authentication.getUserDetails();\n const isAdmin = Authentication.isAdmin();\n\n if (!validateForm(accessControlData, isAdmin)) {\n return;\n }\n\n $scope.state.actionInProgress = true;\n var secretConfiguration = prepareConfiguration();\n SecretService.create(secretConfiguration)\n .then(function success(data) {\n const userId = userDetails.ID;\n const resourceControl = data.Portainer.ResourceControl;\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n })\n .then(function success() {\n Notifications.success('Success', 'Secret successfully created');\n $state.go('docker.secrets', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to create secret');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n },\n]);\n","import { ResourceControlType } from '@/react/portainer/access-control/types';\n\nangular.module('portainer.docker').controller('SecretController', [\n '$scope',\n '$transition$',\n '$state',\n 'SecretService',\n 'Notifications',\n function ($scope, $transition$, $state, SecretService, Notifications) {\n $scope.resourceType = ResourceControlType.Secret;\n\n $scope.onUpdateResourceControlSuccess = function () {\n $state.reload();\n };\n\n $scope.removeSecret = function removeSecret(secretId) {\n SecretService.remove(secretId)\n .then(function success() {\n Notifications.success('Success', 'Secret successfully removed');\n $state.go('docker.secrets', {});\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove secret');\n });\n };\n\n function initView() {\n SecretService.secret($transition$.params().id)\n .then(function success(data) {\n $scope.secret = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve secret details');\n });\n }\n\n initView();\n },\n]);\n","import { confirmDelete } from '@@/modals/confirm';\nangular.module('portainer.docker').controller('SecretsController', [\n '$scope',\n '$state',\n 'SecretService',\n 'Notifications',\n function ($scope, $state, SecretService, Notifications) {\n $scope.removeAction = async function (selectedItems) {\n const confirmed = await confirmDelete('Do you want to remove the selected secret(s)?');\n if (!confirmed) {\n return null;\n }\n var actionCount = selectedItems.length;\n angular.forEach(selectedItems, function (secret) {\n SecretService.remove(secret.Id)\n .then(function success() {\n Notifications.success('Secret successfully removed', secret.Name);\n var index = $scope.secrets.indexOf(secret);\n $scope.secrets.splice(index, 1);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove secret');\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n };\n\n $scope.getSecrets = getSecrets;\n\n function getSecrets() {\n SecretService.secrets()\n .then(function success(data) {\n $scope.secrets = data;\n })\n .catch(function error(err) {\n $scope.secrets = [];\n Notifications.error('Failure', err, 'Unable to retrieve secrets');\n });\n }\n\n function initView() {\n getSecrets();\n }\n\n initView();\n },\n]);\n","import _ from 'lodash-es';\n\nimport * as envVarsUtils from '@/react/components/form-components/EnvironmentVariablesFieldset/utils';\nimport { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\nimport { AccessControlFormData } from '../../../../portainer/components/accessControlForm/porAccessControlFormModel';\n\nrequire('./includes/update-restart.html');\nrequire('./includes/secret.html');\nrequire('./includes/config.html');\nrequire('./includes/resources-placement.html');\n\nangular.module('portainer.docker').controller('CreateServiceController', [\n '$q',\n '$scope',\n '$state',\n '$timeout',\n 'Service',\n 'ServiceHelper',\n 'ConfigService',\n 'ConfigHelper',\n 'SecretHelper',\n 'SecretService',\n 'VolumeService',\n 'NetworkService',\n 'ImageHelper',\n 'LabelHelper',\n 'Authentication',\n 'ResourceControlService',\n 'Notifications',\n 'FormValidator',\n 'PluginService',\n 'RegistryService',\n 'HttpRequestHelper',\n 'NodeService',\n 'WebhookService',\n 'endpoint',\n function (\n $q,\n $scope,\n $state,\n $timeout,\n Service,\n ServiceHelper,\n ConfigService,\n ConfigHelper,\n SecretHelper,\n SecretService,\n VolumeService,\n NetworkService,\n ImageHelper,\n LabelHelper,\n Authentication,\n ResourceControlService,\n Notifications,\n FormValidator,\n PluginService,\n RegistryService,\n HttpRequestHelper,\n NodeService,\n WebhookService,\n endpoint\n ) {\n $scope.endpoint = endpoint;\n\n $scope.formValues = {\n Name: '',\n RegistryModel: new PorImageRegistryModel(),\n Mode: 'replicated',\n Replicas: 1,\n Command: '',\n EntryPoint: '',\n WorkingDir: '',\n User: '',\n Env: [],\n Labels: [],\n ContainerLabels: [],\n Volumes: [],\n Network: '',\n ExtraNetworks: [],\n HostsEntries: [],\n Ports: [],\n Parallelism: 1,\n PlacementConstraints: [],\n PlacementPreferences: [],\n UpdateDelay: '0s',\n UpdateOrder: 'stop-first',\n FailureAction: 'pause',\n Secrets: [],\n Configs: [],\n AccessControlData: new AccessControlFormData(),\n CpuLimit: 0,\n CpuReservation: 0,\n MemoryLimit: 0,\n MemoryReservation: 0,\n MemoryLimitUnit: 'MB',\n MemoryReservationUnit: 'MB',\n RestartCondition: 'any',\n RestartDelay: '5s',\n RestartMaxAttempts: 0,\n RestartWindow: '0s',\n LogDriverName: '',\n LogDriverOpts: [],\n Webhook: false,\n };\n\n $scope.state = {\n formValidationError: '',\n actionInProgress: false,\n pullImageValidity: false,\n };\n\n $scope.allowBindMounts = false;\n\n $scope.handleWebHookChange = handleWebHookChange;\n\n function handleWebHookChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.formValues.Webhook = checked;\n });\n }\n\n $scope.handleEnvVarChange = handleEnvVarChange;\n function handleEnvVarChange(value) {\n $scope.formValues.Env = value;\n }\n\n $scope.refreshSlider = function () {\n $timeout(function () {\n $scope.$broadcast('rzSliderForceRender');\n });\n };\n\n $scope.setPullImageValidity = setPullImageValidity;\n function setPullImageValidity(validity) {\n $scope.state.pullImageValidity = validity;\n }\n\n $scope.addPortBinding = function () {\n $scope.formValues.Ports.push({ PublishedPort: '', TargetPort: '', Protocol: 'tcp', PublishMode: 'ingress' });\n };\n\n $scope.removePortBinding = function (index) {\n $scope.formValues.Ports.splice(index, 1);\n };\n\n $scope.addExtraNetwork = function () {\n $scope.formValues.ExtraNetworks.push({ Name: '' });\n };\n\n $scope.removeExtraNetwork = function (index) {\n $scope.formValues.ExtraNetworks.splice(index, 1);\n };\n\n $scope.addHostsEntry = function () {\n $scope.formValues.HostsEntries.push({});\n };\n\n $scope.removeHostsEntry = function (index) {\n $scope.formValues.HostsEntries.splice(index, 1);\n };\n\n $scope.addVolume = function () {\n $scope.formValues.Volumes.push({ Source: null, Target: '', ReadOnly: false, Type: 'volume' });\n };\n\n $scope.removeVolume = function (index) {\n $scope.formValues.Volumes.splice(index, 1);\n };\n\n $scope.addConfig = function () {\n $scope.formValues.Configs.push({});\n };\n\n $scope.removeConfig = function (index) {\n $scope.formValues.Configs.splice(index, 1);\n $scope.checkIfConfigDuplicated();\n };\n\n $scope.addSecret = function () {\n $scope.formValues.Secrets.push({ overrideTarget: false });\n };\n\n $scope.removeSecret = function (index) {\n $scope.formValues.Secrets.splice(index, 1);\n $scope.checkIfSecretDuplicated();\n };\n\n $scope.addPlacementConstraint = function () {\n $scope.formValues.PlacementConstraints.push({ key: '', operator: '==', value: '' });\n };\n\n $scope.removePlacementConstraint = function (index) {\n $scope.formValues.PlacementConstraints.splice(index, 1);\n };\n\n $scope.addPlacementPreference = function () {\n $scope.formValues.PlacementPreferences.push({ strategy: 'spread', value: '' });\n };\n\n $scope.removePlacementPreference = function (index) {\n $scope.formValues.PlacementPreferences.splice(index, 1);\n };\n\n $scope.addLabel = function () {\n $scope.formValues.Labels.push({ key: '', value: '' });\n };\n\n $scope.removeLabel = function (index) {\n $scope.formValues.Labels.splice(index, 1);\n };\n\n $scope.addContainerLabel = function () {\n $scope.formValues.ContainerLabels.push({ key: '', value: '' });\n };\n\n $scope.removeContainerLabel = function (index) {\n $scope.formValues.ContainerLabels.splice(index, 1);\n };\n\n $scope.addLogDriverOpt = function () {\n $scope.formValues.LogDriverOpts.push({ name: '', value: '' });\n };\n\n $scope.removeLogDriverOpt = function (index) {\n $scope.formValues.LogDriverOpts.splice(index, 1);\n };\n\n $scope.checkIfSecretDuplicated = function () {\n $scope.formValues.Secrets.$invalid = false;\n [...$scope.formValues.Secrets]\n .sort((a, b) => a.model.Id.localeCompare(b.model.Id))\n .sort((a, b) => {\n if (a.model.Id === b.model.Id) {\n $scope.formValues.Secrets.$invalid = true;\n $scope.formValues.Secrets.$error = 'Secret ' + a.model.Name + ' cannot be assigned multiple times.';\n }\n });\n if (!$scope.formValues.Secrets.$invalid) {\n $scope.formValues.Secrets.$error = '';\n }\n };\n\n $scope.checkIfConfigDuplicated = function () {\n $scope.formValues.Configs.$invalid = false;\n [...$scope.formValues.Configs]\n .sort((a, b) => a.model.Id.localeCompare(b.model.Id))\n .sort((a, b) => {\n if (a.model.Id === b.model.Id) {\n $scope.formValues.Configs.$invalid = true;\n $scope.formValues.Configs.$error = 'Config ' + a.model.Name + ' cannot be assigned multiple times.';\n }\n });\n if (!$scope.formValues.Configs.$invalid) {\n $scope.formValues.Configs.$error = '';\n }\n };\n\n function prepareImageConfig(config, input) {\n var imageConfig = ImageHelper.createImageConfigForContainer(input.RegistryModel);\n config.TaskTemplate.ContainerSpec.Image = imageConfig.fromImage;\n }\n\n function preparePortsConfig(config, input) {\n let ports = [];\n input.Ports.forEach(function (binding) {\n const port = {\n Protocol: binding.Protocol,\n PublishMode: binding.PublishMode,\n };\n if (binding.TargetPort) {\n port.TargetPort = +binding.TargetPort;\n if (binding.PublishedPort) {\n port.PublishedPort = +binding.PublishedPort;\n }\n ports.push(port);\n }\n });\n config.EndpointSpec.Ports = ports;\n }\n\n function prepareSchedulingConfig(config, input) {\n if (input.Mode === 'replicated') {\n config.Mode.Replicated = {\n Replicas: input.Replicas,\n };\n } else {\n config.Mode.Global = {};\n }\n }\n\n function commandToArray(cmd) {\n var tokens = [].concat\n .apply(\n [],\n cmd.split(\"'\").map(function (v, i) {\n return i % 2 ? v : v.split(' ');\n })\n )\n .filter(Boolean);\n return tokens;\n }\n\n function prepareCommandConfig(config, input) {\n if (input.EntryPoint) {\n config.TaskTemplate.ContainerSpec.Command = commandToArray(input.EntryPoint);\n }\n if (input.Command) {\n config.TaskTemplate.ContainerSpec.Args = commandToArray(input.Command);\n }\n if (input.User) {\n config.TaskTemplate.ContainerSpec.User = input.User;\n }\n if (input.WorkingDir) {\n config.TaskTemplate.ContainerSpec.Dir = input.WorkingDir;\n }\n }\n\n function prepareEnvConfig(config, input) {\n config.TaskTemplate.ContainerSpec.Env = envVarsUtils.convertToArrayOfStrings(input.Env);\n }\n\n function prepareLabelsConfig(config, input) {\n config.Labels = LabelHelper.fromKeyValueToLabelHash(input.Labels);\n config.TaskTemplate.ContainerSpec.Labels = LabelHelper.fromKeyValueToLabelHash(input.ContainerLabels);\n }\n\n function createMountObjectFromVolume(volumeObject, target, readonly) {\n return {\n Target: target,\n Source: volumeObject.Id,\n Type: 'volume',\n ReadOnly: readonly,\n VolumeOptions: {\n Labels: volumeObject.Labels,\n DriverConfig: {\n Name: volumeObject.Driver,\n Options: volumeObject.Options,\n },\n },\n };\n }\n\n function prepareVolumes(config, input) {\n input.Volumes.forEach(function (volume) {\n if (volume.Source && volume.Target) {\n if (volume.Type !== 'volume') {\n config.TaskTemplate.ContainerSpec.Mounts.push(volume);\n } else {\n var volumeObject = volume.Source;\n var mount = createMountObjectFromVolume(volumeObject, volume.Target, volume.ReadOnly);\n config.TaskTemplate.ContainerSpec.Mounts.push(mount);\n }\n }\n });\n }\n\n function prepareNetworks(config, input) {\n var networks = [];\n if (input.Network) {\n networks.push({ Target: input.Network });\n }\n input.ExtraNetworks.forEach(function (network) {\n networks.push({ Target: network.Name });\n });\n config.Networks = _.uniqWith(networks, _.isEqual);\n }\n\n function prepareHostsEntries(config, input) {\n var hostsEntries = [];\n if (input.HostsEntries) {\n input.HostsEntries.forEach(function (host_ip) {\n if (host_ip.value && host_ip.value.indexOf(':') && host_ip.value.split(':').length === 2) {\n var keyVal = host_ip.value.split(':');\n // Hosts file format, IP_address canonical_hostname\n hostsEntries.push(keyVal[1] + ' ' + keyVal[0]);\n }\n });\n if (hostsEntries.length > 0) {\n config.TaskTemplate.ContainerSpec.Hosts = hostsEntries;\n }\n }\n }\n\n function prepareUpdateConfig(config, input) {\n config.UpdateConfig = {\n Parallelism: input.Parallelism || 0,\n Delay: ServiceHelper.translateHumanDurationToNanos(input.UpdateDelay) || 0,\n FailureAction: input.FailureAction,\n Order: input.UpdateOrder,\n };\n }\n\n function prepareRestartPolicy(config, input) {\n config.TaskTemplate.RestartPolicy = {\n Condition: input.RestartCondition || 'any',\n Delay: ServiceHelper.translateHumanDurationToNanos(input.RestartDelay) || 5000000000,\n MaxAttempts: input.RestartMaxAttempts || 0,\n Window: ServiceHelper.translateHumanDurationToNanos(input.RestartWindow) || 0,\n };\n }\n\n function preparePlacementConfig(config, input) {\n config.TaskTemplate.Placement.Constraints = ServiceHelper.translateKeyValueToPlacementConstraints(input.PlacementConstraints);\n config.TaskTemplate.Placement.Preferences = ServiceHelper.translateKeyValueToPlacementPreferences(input.PlacementPreferences);\n }\n\n function prepareConfigConfig(config, input) {\n if (input.Configs) {\n var configs = [];\n angular.forEach(input.Configs, function (config) {\n if (config.model) {\n var s = ConfigHelper.configConfig(config.model);\n s.File.Name = config.FileName || s.File.Name;\n configs.push(s);\n }\n });\n config.TaskTemplate.ContainerSpec.Configs = configs;\n }\n }\n\n function prepareSecretConfig(config, input) {\n if (input.Secrets) {\n var secrets = [];\n angular.forEach(input.Secrets, function (secret) {\n if (secret.model) {\n var s = SecretHelper.secretConfig(secret.model);\n s.File.Name = s.SecretName;\n if (secret.overrideTarget && secret.target && secret.target !== '') {\n s.File.Name = secret.target;\n }\n secrets.push(s);\n }\n });\n config.TaskTemplate.ContainerSpec.Secrets = secrets;\n }\n }\n\n function prepareResourcesCpuConfig(config, input) {\n // CPU Limit\n if (input.CpuLimit > 0) {\n config.TaskTemplate.Resources.Limits.NanoCPUs = input.CpuLimit * 1000000000;\n }\n // CPU Reservation\n if (input.CpuReservation > 0) {\n config.TaskTemplate.Resources.Reservations.NanoCPUs = input.CpuReservation * 1000000000;\n }\n }\n\n function prepareResourcesMemoryConfig(config, input) {\n // Memory Limit - Round to 0.125\n var memoryLimit = (Math.round(input.MemoryLimit * 8) / 8).toFixed(3);\n memoryLimit *= 1024 * 1024;\n if (input.MemoryLimitUnit === 'GB') {\n memoryLimit *= 1024;\n }\n if (memoryLimit > 0) {\n config.TaskTemplate.Resources.Limits.MemoryBytes = memoryLimit;\n }\n // Memory Resevation - Round to 0.125\n var memoryReservation = (Math.round(input.MemoryReservation * 8) / 8).toFixed(3);\n memoryReservation *= 1024 * 1024;\n if (input.MemoryReservationUnit === 'GB') {\n memoryReservation *= 1024;\n }\n if (memoryReservation > 0) {\n config.TaskTemplate.Resources.Reservations.MemoryBytes = memoryReservation;\n }\n }\n\n function prepareLogDriverConfig(config, input) {\n var logOpts = {};\n if (input.LogDriverName) {\n config.TaskTemplate.LogDriver = { Name: input.LogDriverName };\n if (input.LogDriverName !== 'none') {\n input.LogDriverOpts.forEach(function (opt) {\n if (opt.name) {\n logOpts[opt.name] = opt.value;\n }\n });\n if (Object.keys(logOpts).length !== 0 && logOpts.constructor === Object) {\n config.TaskTemplate.LogDriver.Options = logOpts;\n }\n }\n }\n }\n\n function prepareConfiguration() {\n var input = $scope.formValues;\n var config = {\n Name: input.Name,\n TaskTemplate: {\n ContainerSpec: {\n Mounts: [],\n },\n Placement: {},\n Resources: {\n Limits: {},\n Reservations: {},\n },\n },\n Mode: {},\n EndpointSpec: {},\n };\n prepareSchedulingConfig(config, input);\n prepareImageConfig(config, input);\n preparePortsConfig(config, input);\n prepareCommandConfig(config, input);\n prepareEnvConfig(config, input);\n prepareLabelsConfig(config, input);\n prepareVolumes(config, input);\n prepareNetworks(config, input);\n prepareHostsEntries(config, input);\n prepareUpdateConfig(config, input);\n prepareConfigConfig(config, input);\n prepareSecretConfig(config, input);\n preparePlacementConfig(config, input);\n prepareResourcesCpuConfig(config, input);\n prepareResourcesMemoryConfig(config, input);\n prepareRestartPolicy(config, input);\n prepareLogDriverConfig(config, input);\n return config;\n }\n\n function createNewService(config, accessControlData) {\n const registryModel = $scope.formValues.RegistryModel;\n var authenticationDetails = registryModel.Registry.Authentication ? RegistryService.encodedCredentials(registryModel.Registry) : '';\n HttpRequestHelper.setRegistryAuthenticationHeader(authenticationDetails);\n\n Service.create(config)\n .$promise.then(function success(data) {\n const serviceId = data.ID;\n const resourceControl = data.Portainer.ResourceControl;\n const userId = Authentication.getUserDetails().ID;\n const rcPromise = ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n const registryID = $scope.formValues.RegistryModel.Registry.Id;\n const webhookPromise = $q.when(endpoint.Type !== 4 && $scope.formValues.Webhook && WebhookService.createServiceWebhook(serviceId, endpoint.Id, registryID));\n return $q.all([rcPromise, webhookPromise]);\n })\n .then(function success() {\n Notifications.success('Success', 'Service successfully created');\n $state.go('docker.services', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to create service');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n }\n\n function validateForm(accessControlData, isAdmin) {\n $scope.state.formValidationError = '';\n var error = '';\n error = FormValidator.validateAccessControl(accessControlData, isAdmin) || $scope.formValues.Secrets.$error || $scope.formValues.Configs.$error;\n\n if (error) {\n $scope.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n $scope.volumesAreValid = volumesAreValid;\n function volumesAreValid() {\n const volumes = $scope.formValues.Volumes;\n return volumes.every((volume) => volume.Target && volume.Source);\n }\n\n $scope.create = function createService() {\n var accessControlData = $scope.formValues.AccessControlData;\n\n if (!validateForm(accessControlData, $scope.isAdmin)) {\n return;\n }\n\n $scope.state.actionInProgress = true;\n var config = prepareConfiguration();\n createNewService(config, accessControlData);\n };\n\n function initSlidersMaxValuesBasedOnNodeData(nodes) {\n var maxCpus = 0;\n var maxMemory = 0;\n for (var n in nodes) {\n if (nodes[n].CPUs && nodes[n].CPUs > maxCpus) {\n maxCpus = nodes[n].CPUs;\n }\n if (nodes[n].Memory && nodes[n].Memory > maxMemory) {\n maxMemory = nodes[n].Memory;\n }\n }\n if (maxCpus > 0) {\n $scope.state.sliderMaxCpu = maxCpus / 1000000000;\n } else {\n $scope.state.sliderMaxCpu = 32;\n }\n if (maxMemory > 0) {\n $scope.state.sliderMaxMemory = Math.floor(maxMemory / 1000 / 1000);\n } else {\n $scope.state.sliderMaxMemory = 32768;\n }\n }\n\n function initView() {\n var apiVersion = $scope.applicationState.endpoint.apiVersion;\n\n $q.all({\n volumes: VolumeService.volumes(),\n networks: NetworkService.networks(true, true, false),\n secrets: apiVersion >= 1.25 ? SecretService.secrets() : [],\n configs: apiVersion >= 1.3 ? ConfigService.configs() : [],\n nodes: NodeService.nodes(),\n availableLoggingDrivers: PluginService.loggingPlugins(apiVersion < 1.25),\n allowBindMounts: checkIfAllowedBindMounts(),\n })\n .then(function success(data) {\n $scope.availableVolumes = data.volumes;\n $scope.availableNetworks = data.networks;\n $scope.availableSecrets = data.secrets;\n $scope.availableConfigs = data.configs;\n $scope.availableLoggingDrivers = data.availableLoggingDrivers;\n initSlidersMaxValuesBasedOnNodeData(data.nodes);\n $scope.isAdmin = Authentication.isAdmin();\n $scope.allowBindMounts = data.allowBindMounts;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to initialize view');\n });\n }\n\n initView();\n\n async function checkIfAllowedBindMounts() {\n const isAdmin = Authentication.isAdmin();\n\n const { allowBindMountsForRegularUsers } = endpoint.SecuritySettings;\n\n return isAdmin || allowBindMountsForRegularUsers;\n }\n },\n]);\n","require('./includes/configs.html');\nrequire('./includes/constraints.html');\nrequire('./includes/container-specs.html');\nrequire('./includes/containerlabels.html');\nrequire('./includes/environmentvariables.html');\nrequire('./includes/hosts.html');\nrequire('./includes/image.html');\nrequire('./includes/logging.html');\nrequire('./includes/mounts.html');\nrequire('./includes/networks.html');\nrequire('./includes/placementPreferences.html');\nrequire('./includes/ports.html');\nrequire('./includes/resources.html');\nrequire('./includes/restart.html');\nrequire('./includes/secrets.html');\nrequire('./includes/servicelabels.html');\nrequire('./includes/tasks.html');\nrequire('./includes/updateconfig.html');\n\nimport _ from 'lodash-es';\n\nimport * as envVarsUtils from '@/react/components/form-components/EnvironmentVariablesFieldset/utils';\nimport { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\nimport { ResourceControlType } from '@/react/portainer/access-control/types';\nimport { confirmServiceForceUpdate } from '@/react/docker/services/common/update-service-modal';\nimport { confirm, confirmDelete } from '@@/modals/confirm';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nangular.module('portainer.docker').controller('ServiceController', [\n '$q',\n '$scope',\n '$transition$',\n '$state',\n '$location',\n '$timeout',\n '$anchorScroll',\n 'ServiceService',\n 'ConfigService',\n 'ConfigHelper',\n 'SecretService',\n 'ImageService',\n 'SecretHelper',\n 'ServiceHelper',\n 'LabelHelper',\n 'TaskService',\n 'NodeService',\n 'ContainerService',\n 'TaskHelper',\n 'Notifications',\n 'PluginService',\n 'Authentication',\n 'VolumeService',\n 'ImageHelper',\n 'WebhookService',\n 'clipboard',\n 'WebhookHelper',\n 'NetworkService',\n 'RegistryService',\n 'endpoint',\n function (\n $q,\n $scope,\n $transition$,\n $state,\n $location,\n $timeout,\n $anchorScroll,\n ServiceService,\n ConfigService,\n ConfigHelper,\n SecretService,\n ImageService,\n SecretHelper,\n ServiceHelper,\n LabelHelper,\n TaskService,\n NodeService,\n ContainerService,\n TaskHelper,\n Notifications,\n PluginService,\n Authentication,\n VolumeService,\n ImageHelper,\n WebhookService,\n clipboard,\n WebhookHelper,\n NetworkService,\n RegistryService,\n endpoint\n ) {\n $scope.resourceType = ResourceControlType.Service;\n $scope.WebhookExists = false;\n\n $scope.onUpdateResourceControlSuccess = function () {\n $state.reload();\n };\n\n $scope.endpoint = endpoint;\n\n $scope.state = {\n updateInProgress: false,\n deletionInProgress: false,\n rollbackInProgress: false,\n };\n\n $scope.formValues = {\n RegistryModel: new PorImageRegistryModel(),\n };\n\n $scope.tasks = [];\n $scope.availableImages = [];\n\n $scope.lastVersion = 0;\n\n var originalService = {};\n var previousServiceValues = [];\n\n $scope.goToItem = function (hash) {\n if ($location.hash() !== hash) {\n $location.hash(hash);\n } else {\n $anchorScroll();\n }\n };\n\n $scope.addEnvironmentVariable = function addEnvironmentVariable(service) {\n $scope.$evalAsync(() => {\n service.EnvironmentVariables = service.EnvironmentVariables.concat({ name: '', value: '' });\n updateServiceArray(service, 'EnvironmentVariables', service.EnvironmentVariables);\n });\n };\n\n $scope.onChangeEnvVars = onChangeEnvVars;\n\n function onChangeEnvVars(env) {\n const service = $scope.service;\n\n const orgEnv = service.EnvironmentVariables;\n service.EnvironmentVariables = env.map((v) => {\n const orgVar = orgEnv.find(({ name }) => v.name === name);\n const added = orgVar && orgVar.added;\n return { ...v, added };\n });\n\n updateServiceArray(service, 'EnvironmentVariables', service.EnvironmentVariables);\n }\n\n $scope.addConfig = function addConfig(service, config) {\n if (\n config &&\n service.ServiceConfigs.filter(function (serviceConfig) {\n return serviceConfig.Id === config.Id;\n }).length === 0\n ) {\n service.ServiceConfigs.push({ Id: config.Id, Name: config.Name, FileName: config.Name, Uid: '0', Gid: '0', Mode: 292 });\n updateServiceArray(service, 'ServiceConfigs', service.ServiceConfigs);\n }\n };\n $scope.removeConfig = function removeSecret(service, index) {\n var removedElement = service.ServiceConfigs.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'ServiceConfigs', service.ServiceConfigs);\n }\n };\n $scope.updateConfig = function updateConfig(service) {\n updateServiceArray(service, 'ServiceConfigs', service.ServiceConfigs);\n };\n $scope.addSecret = function addSecret(service, newSecret) {\n if (newSecret.secret) {\n var filename = newSecret.secret.Name;\n if (newSecret.override) {\n filename = newSecret.target;\n }\n if (\n service.ServiceSecrets.filter(function (serviceSecret) {\n return serviceSecret.Id === newSecret.secret.Id && serviceSecret.FileName === filename;\n }).length === 0\n ) {\n service.ServiceSecrets.push({ Id: newSecret.secret.Id, Name: newSecret.secret.Name, FileName: filename, Uid: '0', Gid: '0', Mode: 444 });\n updateServiceArray(service, 'ServiceSecrets', service.ServiceSecrets);\n }\n }\n };\n $scope.removeSecret = function removeSecret(service, index) {\n var removedElement = service.ServiceSecrets.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'ServiceSecrets', service.ServiceSecrets);\n }\n };\n $scope.addLabel = function addLabel(service) {\n service.ServiceLabels.push({ key: '', value: '', originalValue: '' });\n updateServiceArray(service, 'ServiceLabels', service.ServiceLabels);\n };\n $scope.removeLabel = function removeLabel(service, index) {\n var removedElement = service.ServiceLabels.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'ServiceLabels', service.ServiceLabels);\n }\n };\n $scope.updateLabel = function updateLabel(service, label) {\n if (label.value !== label.originalValue || label.key !== label.originalKey) {\n updateServiceArray(service, 'ServiceLabels', service.ServiceLabels);\n }\n };\n $scope.addContainerLabel = function addContainerLabel(service) {\n service.ServiceContainerLabels.push({ key: '', value: '', originalValue: '' });\n updateServiceArray(service, 'ServiceContainerLabels', service.ServiceContainerLabels);\n };\n $scope.removeContainerLabel = function removeLabel(service, index) {\n var removedElement = service.ServiceContainerLabels.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'ServiceContainerLabels', service.ServiceContainerLabels);\n }\n };\n $scope.updateContainerLabel = function updateLabel(service, label) {\n if (label.value !== label.originalValue || label.key !== label.originalKey) {\n updateServiceArray(service, 'ServiceContainerLabels', service.ServiceContainerLabels);\n }\n };\n $scope.addMount = function addMount(service) {\n service.ServiceMounts.push({ Type: 'volume', Source: null, Target: '', ReadOnly: false });\n updateServiceArray(service, 'ServiceMounts', service.ServiceMounts);\n };\n $scope.removeMount = function removeMount(service, index) {\n var removedElement = service.ServiceMounts.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'ServiceMounts', service.ServiceMounts);\n }\n };\n\n $scope.onChangeMountType = function onChangeMountType(service, mount) {\n mount.Source = null;\n $scope.updateMount(service, mount);\n };\n\n $scope.updateMount = function updateMount(service) {\n updateServiceArray(service, 'ServiceMounts', service.ServiceMounts);\n };\n\n $scope.toggleMountReadOnly = function toggleMountReadOnly(isReadOnly, index) {\n $scope.$evalAsync(function () {\n updateServiceArray($scope.service, 'ServiceMounts', $scope.service.ServiceMounts);\n $scope.service.ServiceMounts[index].ReadOnly = isReadOnly;\n });\n };\n\n $scope.addNetwork = function addNetwork(service) {\n if (!service.Networks) {\n service.Networks = [];\n }\n service.Networks.push({ Editable: true });\n };\n\n $scope.removeNetwork = function removeNetwork(service, index) {\n var removedElement = service.Networks.splice(index, 1);\n if (removedElement && removedElement.length && removedElement[0].Id) {\n updateServiceArray(service, 'Networks', service.Networks);\n }\n };\n\n $scope.updateNetwork = function updateNetwork(service) {\n updateServiceArray(service, 'Networks', service.Networks);\n };\n\n $scope.addPlacementConstraint = function addPlacementConstraint(service) {\n service.ServiceConstraints.push({ key: '', operator: '==', value: '' });\n updateServiceArray(service, 'ServiceConstraints', service.ServiceConstraints);\n };\n $scope.removePlacementConstraint = function removePlacementConstraint(service, index) {\n var removedElement = service.ServiceConstraints.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'ServiceConstraints', service.ServiceConstraints);\n }\n };\n $scope.updatePlacementConstraint = function (service) {\n updateServiceArray(service, 'ServiceConstraints', service.ServiceConstraints);\n };\n\n $scope.addPlacementPreference = function (service) {\n service.ServicePreferences.push({ strategy: 'spread', value: '' });\n updateServiceArray(service, 'ServicePreferences', service.ServicePreferences);\n };\n $scope.removePlacementPreference = function (service, index) {\n var removedElement = service.ServicePreferences.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'ServicePreferences', service.ServicePreferences);\n }\n };\n $scope.updatePlacementPreference = function (service) {\n updateServiceArray(service, 'ServicePreferences', service.ServicePreferences);\n };\n\n $scope.addPublishedPort = function addPublishedPort(service) {\n if (!service.Ports) {\n service.Ports = [];\n }\n service.Ports.push({ PublishedPort: '', TargetPort: '', Protocol: 'tcp', PublishMode: 'ingress' });\n };\n $scope.updatePublishedPort = function updatePublishedPort(service) {\n updateServiceArray(service, 'Ports', service.Ports);\n };\n $scope.removePortPublishedBinding = function removePortPublishedBinding(service, index) {\n var removedElement = service.Ports.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'Ports', service.Ports);\n }\n };\n\n $scope.addLogDriverOpt = function addLogDriverOpt(service) {\n service.LogDriverOpts.push({ key: '', value: '', originalValue: '' });\n updateServiceArray(service, 'LogDriverOpts', service.LogDriverOpts);\n };\n $scope.removeLogDriverOpt = function removeLogDriverOpt(service, index) {\n var removedElement = service.LogDriverOpts.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'LogDriverOpts', service.LogDriverOpts);\n }\n };\n $scope.updateLogDriverOpt = function updateLogDriverOpt(service, variable) {\n if (variable.value !== variable.originalValue || variable.key !== variable.originalKey) {\n updateServiceArray(service, 'LogDriverOpts', service.LogDriverOpts);\n }\n };\n $scope.updateLogDriverName = function updateLogDriverName(service) {\n updateServiceArray(service, 'LogDriverName', service.LogDriverName);\n };\n\n $scope.addHostsEntry = function (service) {\n if (!service.Hosts) {\n service.Hosts = [];\n }\n service.Hosts.push({ hostname: '', ip: '' });\n };\n $scope.removeHostsEntry = function (service, index) {\n var removedElement = service.Hosts.splice(index, 1);\n if (removedElement !== null) {\n updateServiceArray(service, 'Hosts', service.Hosts);\n }\n };\n $scope.updateHostsEntry = function (service) {\n updateServiceArray(service, 'Hosts', service.Hosts);\n };\n\n $scope.onWebhookChange = function (enabled) {\n enabled = enabled | '';\n $scope.$evalAsync(() => {\n $scope.updateWebhook($scope.service);\n $scope.WebhookExists = enabled;\n updateServiceAttribute($scope.service, 'Webhooks', enabled);\n });\n };\n\n $scope.updateWebhook = function updateWebhook(service) {\n if ($scope.WebhookExists) {\n WebhookService.deleteWebhook($scope.webhookID)\n .then(function success() {\n $scope.webhookURL = null;\n $scope.webhookID = null;\n $scope.WebhookExists = false;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to delete webhook');\n });\n } else {\n WebhookService.createServiceWebhook(service.Id, endpoint.Id, $scope.initialRegistryID)\n .then(function success(data) {\n $scope.WebhookExists = true;\n $scope.webhookID = data.Id;\n $scope.webhookURL = WebhookHelper.returnWebhookUrl(data.Token);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to create webhook');\n });\n }\n };\n\n $scope.updateWebhookRegistryId = function () {\n const newRegistryID = _.get($scope.formValues.RegistryModel, 'Registry.Id', 0);\n const registryChanged = $scope.initialRegistryID != newRegistryID;\n\n if ($scope.WebhookExists && registryChanged) {\n WebhookService.updateServiceWebhook($scope.webhookID, newRegistryID).catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to update webhook');\n });\n }\n };\n\n $scope.copyWebhook = function copyWebhook() {\n clipboard.copyText($scope.webhookURL);\n $('#copyNotification').show();\n $('#copyNotification').fadeOut(2000);\n };\n\n $scope.cancelChanges = async function cancelChanges(service, keys) {\n if (keys) {\n // clean out the keys only from the list of modified keys\n for (const key of keys) {\n if (key === 'Image') {\n $scope.formValues.RegistryModel = await RegistryService.retrievePorRegistryModelFromRepository(originalService.Image, endpoint.Id);\n } else {\n var index = previousServiceValues.indexOf(key);\n if (index >= 0) {\n previousServiceValues.splice(index, 1);\n }\n }\n }\n } else {\n // clean out all changes\n $scope.formValues.RegistryModel = await RegistryService.retrievePorRegistryModelFromRepository(originalService.Image, endpoint.Id);\n keys = Object.keys(service);\n previousServiceValues = [];\n }\n keys.forEach(function (attribute) {\n service[attribute] = originalService[attribute]; // reset service values\n });\n service.hasChanges = false;\n };\n\n $scope.hasChanges = function (service, elements) {\n var hasChanges = false;\n elements.forEach(function (key) {\n if (key === 'Image') {\n const originalImage = service ? service.Model.Spec.TaskTemplate.ContainerSpec.Image : null;\n const currentImage = ImageHelper.createImageConfigForContainer($scope.formValues.RegistryModel).fromImage;\n hasChanges = hasChanges || originalImage !== currentImage;\n } else {\n hasChanges = hasChanges || previousServiceValues.indexOf(key) >= 0;\n }\n });\n return hasChanges;\n };\n\n $scope.mountsAreValid = mountsAreValid;\n function mountsAreValid() {\n const mounts = $scope.service.ServiceMounts;\n return mounts.every((mount) => mount.Source && mount.Target);\n }\n\n function buildChanges(service) {\n var config = ServiceHelper.serviceToConfig(service.Model);\n config.Name = service.Name;\n config.Labels = LabelHelper.fromKeyValueToLabelHash(service.ServiceLabels);\n config.TaskTemplate.ContainerSpec.Env = envVarsUtils.convertToArrayOfStrings(service.EnvironmentVariables);\n config.TaskTemplate.ContainerSpec.Labels = LabelHelper.fromKeyValueToLabelHash(service.ServiceContainerLabels);\n\n if ($scope.hasChanges(service, ['Image'])) {\n const image = ImageHelper.createImageConfigForContainer($scope.formValues.RegistryModel);\n config.TaskTemplate.ContainerSpec.Image = image.fromImage;\n config.registryId = $scope.formValues.RegistryModel.Registry.Id;\n } else {\n config.TaskTemplate.ContainerSpec.Image = service.Image;\n }\n\n if ($scope.hasChanges(service, ['Networks'])) {\n config.Networks = _.map(\n _.filter(service.Networks, (item) => item.Id && item.Editable),\n (item) => ({ Target: item.Id })\n );\n config.TaskTemplate.Networks = config.Networks;\n }\n\n config.TaskTemplate.ContainerSpec.Secrets = service.ServiceSecrets ? service.ServiceSecrets.map(SecretHelper.secretConfig) : [];\n config.TaskTemplate.ContainerSpec.Configs = service.ServiceConfigs ? service.ServiceConfigs.map(ConfigHelper.configConfig) : [];\n\n // support removal and (future) editing of credential specs\n const credSpec = service.ServiceConfigs.find((config) => config.credSpec);\n const credSpecId = credSpec ? credSpec.Id : '';\n const oldCredSpecId =\n (config.TaskTemplate.ContainerSpec.Privileges &&\n config.TaskTemplate.ContainerSpec.Privileges.CredentialSpec &&\n config.TaskTemplate.ContainerSpec.Privileges.CredentialSpec.Config) ||\n '';\n if (oldCredSpecId && !credSpecId) {\n delete config.TaskTemplate.ContainerSpec.Privileges.CredentialSpec;\n } else if (credSpec && oldCredSpecId !== credSpec) {\n config.TaskTemplate.ContainerSpec.Privileges = {\n ...(config.TaskTemplate.ContainerSpec.Privileges || {}),\n CredentialSpec: {\n ...((config.TaskTemplate.ContainerSpec.Privileges && config.TaskTemplate.ContainerSpec.Privileges.CredentialSpec) || {}),\n Config: credSpec,\n },\n };\n }\n\n config.TaskTemplate.ContainerSpec.Hosts = service.Hosts ? ServiceHelper.translateHostnameIPToHostsEntries(service.Hosts) : [];\n\n if (service.Mode === 'replicated') {\n config.Mode.Replicated.Replicas = service.Replicas;\n }\n config.TaskTemplate.ContainerSpec.Mounts = service.ServiceMounts;\n if (typeof config.TaskTemplate.Placement === 'undefined') {\n config.TaskTemplate.Placement = {};\n }\n config.TaskTemplate.Placement.Constraints = ServiceHelper.translateKeyValueToPlacementConstraints(service.ServiceConstraints);\n config.TaskTemplate.Placement.Preferences = ServiceHelper.translateKeyValueToPlacementPreferences(service.ServicePreferences);\n\n if ($scope.hasChanges(service, ['LimitNanoCPUs', 'LimitMemoryBytes', 'ReservationNanoCPUs', 'ReservationMemoryBytes'])) {\n // Round memory values to 0.125 and convert MB to B\n var memoryLimit = (Math.round(service.LimitMemoryBytes * 8) / 8).toFixed(3);\n memoryLimit *= 1024 * 1024;\n var memoryReservation = (Math.round(service.ReservationMemoryBytes * 8) / 8).toFixed(3);\n memoryReservation *= 1024 * 1024;\n config.TaskTemplate.Resources = {\n Limits: {\n NanoCPUs: service.LimitNanoCPUs * 1000000000,\n MemoryBytes: memoryLimit,\n },\n Reservations: {\n NanoCPUs: service.ReservationNanoCPUs * 1000000000,\n MemoryBytes: memoryReservation,\n },\n };\n }\n\n if ($scope.hasChanges(service, ['UpdateFailureAction', 'UpdateDelay', 'UpdateParallelism', 'UpdateOrder'])) {\n config.UpdateConfig = {\n Parallelism: service.UpdateParallelism,\n Delay: ServiceHelper.translateHumanDurationToNanos(service.UpdateDelay) || 0,\n FailureAction: service.UpdateFailureAction,\n Order: service.UpdateOrder,\n };\n }\n\n if ($scope.hasChanges(service, ['RestartCondition', 'RestartDelay', 'RestartMaxAttempts', 'RestartWindow'])) {\n config.TaskTemplate.RestartPolicy = {\n Condition: service.RestartCondition,\n Delay: ServiceHelper.translateHumanDurationToNanos(service.RestartDelay) || 5000000000,\n MaxAttempts: service.RestartMaxAttempts,\n Window: ServiceHelper.translateHumanDurationToNanos(service.RestartWindow) || 0,\n };\n }\n\n config.TaskTemplate.LogDriver = null;\n if (service.LogDriverName) {\n config.TaskTemplate.LogDriver = { Name: service.LogDriverName };\n if (service.LogDriverName !== 'none') {\n var logOpts = ServiceHelper.translateKeyValueToLogDriverOpts(service.LogDriverOpts);\n if (Object.keys(logOpts).length !== 0 && logOpts.constructor === Object) {\n config.TaskTemplate.LogDriver.Options = logOpts;\n }\n }\n }\n\n if (service.Ports) {\n service.Ports.forEach(function (binding) {\n if (binding.PublishedPort === null || binding.PublishedPort === '') {\n delete binding.PublishedPort;\n }\n });\n }\n\n config.EndpointSpec = {\n Mode: (config.EndpointSpec && config.EndpointSpec.Mode) || 'vip',\n Ports: service.Ports,\n };\n return service, config;\n }\n\n function rollbackService(service) {\n $scope.state.rollbackInProgress = true;\n let config = {};\n service, (config = buildChanges(service));\n ServiceService.update(service, config, 'previous')\n .then(function (data) {\n if (data.message && data.message.match(/^rpc error:/)) {\n Notifications.error('Failure', data, 'Error');\n } else {\n Notifications.success('Success', 'Service successfully rolled back');\n $scope.cancelChanges({});\n initView();\n }\n })\n .catch(function (e) {\n if (e.data.message && e.data.message.includes('does not have a previous spec')) {\n Notifications.error('Failure', { message: 'No previous config to rollback to.' });\n } else {\n Notifications.error('Failure', e, 'Unable to rollback service');\n }\n })\n .finally(function () {\n $scope.state.rollbackInProgress = false;\n });\n }\n\n $scope.rollbackService = function (service) {\n confirm({\n title: 'Rollback service',\n message: 'Are you sure you want to rollback?',\n modalType: ModalType.Warn,\n confirmButton: buildConfirmButton('Yes', 'danger'),\n }).then((confirmed) => {\n if (!confirmed) {\n return;\n }\n rollbackService(service);\n });\n };\n\n $scope.setPullImageValidity = setPullImageValidity;\n function setPullImageValidity(validity) {\n $scope.state.pullImageValidity = validity;\n }\n\n $scope.updateService = function updateService(service) {\n const config = buildChanges(service);\n ServiceService.update(service, config).then(\n function (data) {\n if (data.message && data.message.match(/^rpc error:/)) {\n Notifications.error('Failure', data, 'Error');\n } else {\n Notifications.success('Service successfully updated', 'Service updated');\n $scope.updateWebhookRegistryId();\n }\n $scope.cancelChanges({});\n initView();\n },\n function (e) {\n Notifications.error('Failure', e, 'Unable to update service');\n }\n );\n };\n\n $scope.removeService = function () {\n confirmDelete('Do you want to remove this service? All the containers associated to this service will be removed too.').then((confirmed) => {\n if (!confirmed) {\n return;\n }\n removeService();\n });\n };\n\n function removeService() {\n $scope.state.deletionInProgress = true;\n ServiceService.remove($scope.service)\n .then(function success() {\n return $q.when($scope.webhookID && WebhookService.deleteWebhook($scope.webhookID));\n })\n .then(function success() {\n Notifications.success('Success', 'Service successfully deleted');\n $state.go('docker.services', {});\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove service');\n })\n .finally(function final() {\n $scope.state.deletionInProgress = false;\n });\n }\n\n $scope.forceUpdateService = function (service) {\n confirmServiceForceUpdate('Do you want to force an update of the service? All the tasks associated to the service will be recreated.').then(function (result) {\n if (!result) {\n return;\n }\n\n forceUpdateService(service, result.pullLatest);\n });\n };\n\n function forceUpdateService(service, pullImage) {\n var config = ServiceHelper.serviceToConfig(service.Model);\n if (pullImage) {\n config.TaskTemplate.ContainerSpec.Image = ImageHelper.removeDigestFromRepository(config.TaskTemplate.ContainerSpec.Image);\n }\n\n // As explained in https://github.com/docker/swarmkit/issues/2364 ForceUpdate can accept a random\n // value or an increment of the counter value to force an update.\n config.TaskTemplate.ForceUpdate++;\n $scope.state.updateInProgress = true;\n ServiceService.update(service, config)\n .then(function success() {\n Notifications.success('Service successfully updated', service.Name);\n $scope.cancelChanges({});\n initView();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to force update service', service.Name);\n })\n .finally(function final() {\n $scope.state.updateInProgress = false;\n });\n }\n\n function translateServiceArrays(service) {\n service.ServiceSecrets = service.Secrets ? service.Secrets.map(SecretHelper.flattenSecret) : [];\n service.ServiceConfigs = service.Configs ? service.Configs.map(ConfigHelper.flattenConfig) : [];\n service.EnvironmentVariables = envVarsUtils\n .parseArrayOfStrings(service.Env)\n .map((v) => ({ ...v, added: true }))\n .sort((v1, v2) => (v1.name > v2.name ? 1 : -1));\n service.LogDriverOpts = ServiceHelper.translateLogDriverOptsToKeyValue(service.LogDriverOpts);\n service.ServiceLabels = LabelHelper.fromLabelHashToKeyValue(service.Labels);\n service.ServiceContainerLabels = LabelHelper.fromLabelHashToKeyValue(service.ContainerLabels);\n service.ServiceMounts = angular.copy(service.Mounts);\n service.ServiceConstraints = ServiceHelper.translateConstraintsToKeyValue(service.Constraints);\n service.ServicePreferences = ServiceHelper.translatePreferencesToKeyValue(service.Preferences);\n service.Hosts = ServiceHelper.translateHostsEntriesToHostnameIP(service.Hosts);\n }\n\n function transformResources(service) {\n service.LimitNanoCPUs = service.LimitNanoCPUs / 1000000000 || 0;\n service.ReservationNanoCPUs = service.ReservationNanoCPUs / 1000000000 || 0;\n service.LimitMemoryBytes = service.LimitMemoryBytes / 1024 / 1024 || 0;\n service.ReservationMemoryBytes = service.ReservationMemoryBytes / 1024 / 1024 || 0;\n }\n\n function transformDurations(service) {\n service.RestartDelay = ServiceHelper.translateNanosToHumanDuration(service.RestartDelay) || '5s';\n service.RestartWindow = ServiceHelper.translateNanosToHumanDuration(service.RestartWindow) || '0s';\n service.UpdateDelay = ServiceHelper.translateNanosToHumanDuration(service.UpdateDelay) || '0s';\n service.StopGracePeriod = service.StopGracePeriod ? ServiceHelper.translateNanosToHumanDuration(service.StopGracePeriod) : '';\n }\n\n function initView() {\n var apiVersion = $scope.applicationState.endpoint.apiVersion;\n var agentProxy = $scope.applicationState.endpoint.mode.agentProxy;\n\n var service = null;\n ServiceService.service($transition$.params().id)\n .then(function success(data) {\n service = data;\n $scope.isUpdating = $scope.lastVersion >= service.Version;\n if (!$scope.isUpdating) {\n $scope.lastVersion = service.Version;\n }\n\n transformResources(service);\n translateServiceArrays(service);\n transformDurations(service);\n $scope.service = service;\n originalService = angular.copy(service);\n\n return $q.all({\n volumes: VolumeService.volumes(),\n tasks: TaskService.tasks({ service: [service.Name] }),\n containers: agentProxy ? ContainerService.containers() : [],\n nodes: NodeService.nodes(),\n secrets: apiVersion >= 1.25 ? SecretService.secrets() : [],\n configs: apiVersion >= 1.3 ? ConfigService.configs() : [],\n availableImages: ImageService.images(),\n availableLoggingDrivers: PluginService.loggingPlugins(apiVersion < 1.25),\n availableNetworks: NetworkService.networks(true, true, apiVersion >= 1.25),\n webhooks: WebhookService.webhooks(service.Id, endpoint.Id),\n });\n })\n .then(async function success(data) {\n $scope.nodes = data.nodes;\n $scope.configs = data.configs;\n $scope.secrets = data.secrets;\n $scope.availableImages = ImageService.getUniqueTagListFromImages(data.availableImages);\n $scope.availableLoggingDrivers = data.availableLoggingDrivers;\n $scope.availableVolumes = data.volumes;\n $scope.allowBindMounts = endpoint.SecuritySettings.allowBindMountsForRegularUsers;\n $scope.isAdmin = Authentication.isAdmin();\n $scope.availableNetworks = data.availableNetworks;\n $scope.swarmNetworks = _.filter($scope.availableNetworks, (network) => network.Scope === 'swarm');\n\n const serviceNetworks = _.uniqBy(_.concat($scope.service.Model.Spec.Networks || [], $scope.service.Model.Spec.TaskTemplate.Networks || []), 'Target');\n const networks = _.filter(\n _.map(serviceNetworks, ({ Target }) => _.find(data.availableNetworks, { Id: Target })),\n Boolean\n );\n\n if (_.some($scope.service.Ports, (port) => port.PublishMode === 'ingress')) {\n const ingressNetwork = _.find($scope.availableNetworks, (network) => network.Ingress);\n if (ingressNetwork) {\n networks.unshift(ingressNetwork);\n }\n }\n\n $scope.service.Networks = await Promise.all(\n _.map(networks, async (item) => {\n let addr = '';\n if (item.IPAM.Config.length) {\n addr = item.IPAM.Config[0].Subnet;\n } else {\n const network = await NetworkService.network(item.Id);\n addr = (network && network.IPAM && network.IPAM.Config && network.IPAM.Config.length && network.IPAM.Config[0].Subnet) || '';\n }\n return { Id: item.Id, Name: item.Name, Addr: addr, Editable: !item.Ingress };\n })\n );\n\n originalService.Networks = angular.copy($scope.service.Networks);\n\n if (data.webhooks.length > 0) {\n var webhook = data.webhooks[0];\n $scope.WebhookExists = true;\n $scope.webhookID = webhook.Id;\n $scope.webhookURL = WebhookHelper.returnWebhookUrl(webhook.Token);\n }\n\n var tasks = data.tasks;\n\n if (agentProxy) {\n var containers = data.containers;\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n TaskHelper.associateContainerToTask(task, containers);\n }\n }\n\n ServiceHelper.associateTasksToService(service, tasks);\n\n $scope.tasks = data.tasks;\n\n // Set max cpu value\n var maxCpus = 0;\n for (var n in data.nodes) {\n if (data.nodes[n].CPUs && data.nodes[n].CPUs > maxCpus) {\n maxCpus = data.nodes[n].CPUs;\n }\n }\n if (maxCpus > 0) {\n $scope.state.sliderMaxCpu = maxCpus / 1000000000;\n } else {\n $scope.state.sliderMaxCpu = 32;\n }\n\n const image = $scope.service.Model.Spec.TaskTemplate.ContainerSpec.Image;\n RegistryService.retrievePorRegistryModelFromRepository(image, endpoint.Id).then((model) => {\n $scope.formValues.RegistryModel = model;\n $scope.initialRegistryID = _.get(model, 'Registry.Id', 0);\n });\n\n // Default values\n $scope.state.addSecret = { override: false };\n\n $timeout(function () {\n $anchorScroll();\n });\n })\n .catch(function error(err) {\n $scope.secrets = [];\n $scope.configs = [];\n Notifications.error('Failure', err, 'Unable to retrieve service details');\n });\n }\n\n $scope.updateServiceAttribute = updateServiceAttribute;\n function updateServiceAttribute(service, name) {\n if (service[name] !== originalService[name] || !(name in originalService)) {\n service.hasChanges = true;\n }\n previousServiceValues.push(name);\n }\n\n $scope.filterNetworks = filterNetworks;\n function filterNetworks(networks, current) {\n return networks.filter((network) => !network.Ingress && (network.Id === current.Id || $scope.service.Networks.every((serviceNetwork) => network.Id !== serviceNetwork.Id)));\n }\n\n $scope.filterConfigs = filterConfigs;\n function filterConfigs(configs) {\n if (!configs) {\n return [];\n }\n\n return configs.filter((config) => $scope.service.ServiceConfigs.every((serviceConfig) => config.Id !== serviceConfig.Id));\n }\n\n function updateServiceArray(service, name) {\n previousServiceValues.push(name);\n service.hasChanges = true;\n }\n\n initView();\n },\n]);\n","import moment from 'moment';\n\nangular.module('portainer.docker').controller('ServiceLogsController', [\n '$scope',\n '$transition$',\n '$interval',\n 'ServiceService',\n 'Notifications',\n function ($scope, $transition$, $interval, ServiceService, Notifications) {\n $scope.state = {\n refreshRate: 3,\n lineCount: 100,\n sinceTimestamp: '',\n displayTimestamps: false,\n };\n\n $scope.changeLogCollection = function (logCollectionStatus) {\n if (!logCollectionStatus) {\n stopRepeater();\n } else {\n setUpdateRepeater();\n }\n };\n\n $scope.$on('$destroy', function () {\n stopRepeater();\n });\n\n function stopRepeater() {\n var repeater = $scope.repeater;\n if (angular.isDefined(repeater)) {\n $interval.cancel(repeater);\n repeater = null;\n }\n }\n\n function setUpdateRepeater() {\n var refreshRate = $scope.state.refreshRate;\n $scope.repeater = $interval(function () {\n ServiceService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment($scope.state.sinceTimestamp).unix(), $scope.state.lineCount)\n .then(function success(data) {\n $scope.logs = data;\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve service logs');\n });\n }, refreshRate * 1000);\n }\n\n function startLogPolling() {\n ServiceService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment($scope.state.sinceTimestamp).unix(), $scope.state.lineCount)\n .then(function success(data) {\n $scope.logs = data;\n setUpdateRepeater();\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve service logs');\n });\n }\n\n function initView() {\n ServiceService.service($transition$.params().id)\n .then(function success(data) {\n $scope.service = data;\n startLogPolling();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve service information');\n });\n }\n\n initView();\n },\n]);\n","angular.module('portainer.docker').controller('ServicesController', [\n '$q',\n '$scope',\n 'ServiceService',\n 'ServiceHelper',\n 'Notifications',\n 'TaskService',\n 'TaskHelper',\n 'NodeService',\n 'ContainerService',\n 'endpoint',\n function ($q, $scope, ServiceService, ServiceHelper, Notifications, TaskService, TaskHelper, NodeService, ContainerService, endpoint) {\n $scope.getServices = getServices;\n $scope.endpoint = endpoint;\n\n function getServices() {\n var agentProxy = $scope.applicationState.endpoint.mode.agentProxy;\n\n return $q\n .all({\n services: ServiceService.services(),\n tasks: TaskService.tasks(),\n containers: agentProxy ? ContainerService.containers(1) : [],\n nodes: NodeService.nodes(),\n })\n .then(function success(data) {\n var services = data.services;\n var tasks = data.tasks;\n\n if (agentProxy) {\n var containers = data.containers;\n for (var j = 0; j < tasks.length; j++) {\n var task = tasks[j];\n TaskHelper.associateContainerToTask(task, containers);\n }\n }\n\n for (var i = 0; i < services.length; i++) {\n var service = services[i];\n ServiceHelper.associateTasksToService(service, tasks);\n }\n\n $scope.nodes = data.nodes;\n $scope.tasks = tasks;\n $scope.services = services;\n })\n .catch(function error(err) {\n $scope.services = [];\n Notifications.error('Failure', err, 'Unable to retrieve services');\n });\n }\n\n function initView() {\n getServices();\n }\n\n initView();\n },\n]);\n","angular.module('portainer.docker').controller('SwarmController', [\n '$q',\n '$scope',\n 'SystemService',\n 'NodeService',\n 'Notifications',\n 'StateManager',\n 'Authentication',\n function ($q, $scope, SystemService, NodeService, Notifications, StateManager, Authentication) {\n $scope.info = {};\n $scope.docker = {};\n $scope.swarm = {};\n $scope.totalCPU = 0;\n $scope.totalMemory = 0;\n\n function extractSwarmInfo(info) {\n // Swarm info is available in SystemStatus object\n var systemStatus = info.SystemStatus;\n // Swarm strategy\n $scope.swarm[systemStatus[1][0]] = systemStatus[1][1];\n // Swarm filters\n $scope.swarm[systemStatus[2][0]] = systemStatus[2][1];\n // Swarm node count\n var nodes = systemStatus[0][1] === 'primary' ? systemStatus[3][1] : systemStatus[4][1];\n var node_count = parseInt(nodes, 10);\n $scope.swarm[systemStatus[3][0]] = node_count;\n\n $scope.swarm.Status = [];\n extractNodesInfo(systemStatus, node_count);\n }\n\n function extractNodesInfo(info, node_count) {\n // First information for node1 available at element #4 of SystemStatus if connected to a primary\n // If connected to a replica, information for node1 is available at element #5\n // The next 10 elements are information related to the node\n var node_offset = info[0][1] === 'primary' ? 4 : 5;\n for (let i = 0; i < node_count; i++) {\n extractNodeInfo(info, node_offset);\n node_offset += 9;\n }\n }\n\n function extractNodeInfo(info, offset) {\n var node = {};\n node.name = info[offset][0];\n node.ip = info[offset][1];\n node.Id = info[offset + 1][1];\n node.status = info[offset + 2][1];\n node.containers = info[offset + 3][1];\n node.cpu = info[offset + 4][1].split('/')[1];\n node.memory = info[offset + 5][1].split('/')[1];\n node.labels = info[offset + 6][1];\n node.version = info[offset + 8][1];\n $scope.swarm.Status.push(node);\n }\n\n function processTotalCPUAndMemory(nodes) {\n var CPU = 0,\n memory = 0;\n angular.forEach(nodes, function (node) {\n CPU += node.CPUs;\n memory += node.Memory;\n });\n $scope.totalCPU = CPU / 1000000000;\n $scope.totalMemory = memory;\n }\n\n $scope.getNodes = getNodes;\n function getNodes() {\n var provider = $scope.applicationState.endpoint.mode.provider;\n if (provider === 'DOCKER_SWARM_MODE') {\n NodeService.nodes()\n .then(function (data) {\n var nodes = data;\n processTotalCPUAndMemory(nodes);\n $scope.nodes = nodes;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve cluster details');\n });\n }\n }\n\n function initView() {\n $scope.isAdmin = Authentication.isAdmin();\n\n var provider = $scope.applicationState.endpoint.mode.provider;\n $q.all({\n version: SystemService.version(),\n info: SystemService.info(),\n })\n .then(function success(data) {\n $scope.docker = data.version;\n $scope.info = data.info;\n if (provider === 'DOCKER_SWARM_MODE') {\n getNodes();\n } else {\n extractSwarmInfo(data.info);\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve cluster details');\n });\n }\n\n initView();\n },\n]);\n","angular.module('portainer.docker').controller('SwarmVisualizerController', [\n '$q',\n '$scope',\n '$document',\n '$interval',\n 'NodeService',\n 'ServiceService',\n 'TaskService',\n 'Notifications',\n 'LocalStorage',\n function ($q, $scope, $document, $interval, NodeService, ServiceService, TaskService, Notifications, LocalStorage) {\n $scope.state = {\n ShowInformationPanel: true,\n DisplayOnlyRunningTasks: false,\n DisplayNodeLabels: false,\n refreshRate: '5',\n };\n\n $scope.handleChangeDisplayOnlyRunningTasks = function handleChangeDisplayOnlyRunningTasks(enabled) {\n $scope.$evalAsync(() => {\n $scope.state.DisplayOnlyRunningTasks = enabled;\n $scope.changeDisplayOnlyRunningTasks();\n });\n };\n\n $scope.handleChangeDisplayNodeLabels = function handleChangeDisplayNodeLabels(enabled) {\n $scope.$evalAsync(() => {\n $scope.state.DisplayNodeLabels = enabled;\n $scope.changeDisplayNodeLabels();\n });\n };\n\n $scope.$on('$destroy', function () {\n stopRepeater();\n });\n\n $scope.changeShowInformationPanel = function (value) {\n $scope.state.ShowInformationPanel = value;\n LocalStorage.storeSwarmVisualizerSettings('show_info_panel', value);\n };\n\n $scope.changeDisplayOnlyRunningTasks = function () {\n var value = $scope.state.DisplayOnlyRunningTasks;\n LocalStorage.storeSwarmVisualizerSettings('display_only_running_tasks', value);\n };\n\n $scope.changeDisplayNodeLabels = function () {\n var value = $scope.state.DisplayNodeLabels;\n LocalStorage.storeSwarmVisualizerSettings('display_node_labels', value);\n };\n\n $scope.changeUpdateRepeater = function () {\n stopRepeater();\n setUpdateRepeater();\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(1500);\n LocalStorage.storeSwarmVisualizerSettings('refresh_rate', $scope.state.refreshRate);\n };\n\n function stopRepeater() {\n var repeater = $scope.repeater;\n if (angular.isDefined(repeater)) {\n $interval.cancel(repeater);\n repeater = null;\n }\n }\n\n function setUpdateRepeater() {\n var refreshRate = $scope.state.refreshRate;\n $scope.repeater = $interval(function () {\n $q.all({\n nodes: NodeService.nodes(),\n services: ServiceService.services(),\n tasks: TaskService.tasks(),\n })\n .then(function success(data) {\n var nodes = data.nodes;\n $scope.nodes = nodes;\n var services = data.services;\n $scope.services = services;\n var tasks = data.tasks;\n $scope.tasks = tasks;\n prepareVisualizerData(nodes, services, tasks);\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve cluster information');\n });\n }, refreshRate * 1000);\n }\n\n function assignServiceInfo(services, tasks) {\n for (var i = 0; i < services.length; i++) {\n var service = services[i];\n\n for (var j = 0; j < tasks.length; j++) {\n var task = tasks[j];\n\n if (task.ServiceId === service.Id) {\n task.ServiceName = service.Name;\n }\n }\n }\n }\n\n function assignTasksToNode(nodes, tasks) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n node.Tasks = [];\n\n for (var j = 0; j < tasks.length; j++) {\n var task = tasks[j];\n\n if (task.NodeId === node.Id) {\n node.Tasks.push(task);\n }\n }\n }\n }\n\n function prepareVisualizerData(nodes, services, tasks) {\n var visualizerData = {};\n\n assignServiceInfo(services, tasks);\n assignTasksToNode(nodes, tasks);\n\n visualizerData.nodes = nodes;\n $scope.visualizerData = visualizerData;\n }\n\n function loadState() {\n var showInfoPanel = LocalStorage.getSwarmVisualizerSettings('show_info_panel');\n if (showInfoPanel !== undefined && showInfoPanel !== null) $scope.state.ShowInformationPanel = showInfoPanel;\n\n var displayOnlyRunningTasks = LocalStorage.getSwarmVisualizerSettings('display_only_running_tasks');\n if (displayOnlyRunningTasks !== undefined && displayOnlyRunningTasks !== null) $scope.state.DisplayOnlyRunningTasks = displayOnlyRunningTasks;\n\n var displayNodeLabels = LocalStorage.getSwarmVisualizerSettings('display_node_labels');\n if (displayNodeLabels !== undefined && displayNodeLabels !== null) $scope.state.DisplayNodeLabels = displayNodeLabels;\n\n var refreshRate = LocalStorage.getSwarmVisualizerSettings('refresh_rate');\n if (refreshRate !== undefined && refreshRate !== null) $scope.state.refreshRate = refreshRate;\n }\n\n function initView() {\n $q.all({\n nodes: NodeService.nodes(),\n services: ServiceService.services(),\n tasks: TaskService.tasks(),\n })\n .then(function success(data) {\n var nodes = data.nodes;\n $scope.nodes = nodes;\n var services = data.services;\n $scope.services = services;\n var tasks = data.tasks;\n $scope.tasks = tasks;\n prepareVisualizerData(nodes, services, tasks);\n setUpdateRepeater();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to initialize cluster visualizer');\n });\n\n loadState();\n }\n\n initView();\n },\n]);\n","angular.module('portainer.docker').controller('TaskController', [\n '$scope',\n '$transition$',\n 'TaskService',\n 'ServiceService',\n 'Notifications',\n function ($scope, $transition$, TaskService, ServiceService, Notifications) {\n function initView() {\n TaskService.task($transition$.params().id)\n .then(function success(data) {\n var task = data;\n $scope.task = task;\n return ServiceService.service(task.ServiceId);\n })\n .then(function success(data) {\n var service = data;\n $scope.service = service;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve task details');\n });\n }\n\n initView();\n },\n]);\n","import moment from 'moment';\n\nangular.module('portainer.docker').controller('TaskLogsController', [\n '$scope',\n '$transition$',\n '$interval',\n 'TaskService',\n 'ServiceService',\n 'Notifications',\n function ($scope, $transition$, $interval, TaskService, ServiceService, Notifications) {\n $scope.state = {\n refreshRate: 3,\n lineCount: 100,\n sinceTimestamp: '',\n displayTimestamps: false,\n };\n\n $scope.changeLogCollection = function (logCollectionStatus) {\n if (!logCollectionStatus) {\n stopRepeater();\n } else {\n setUpdateRepeater();\n }\n };\n\n $scope.$on('$destroy', function () {\n stopRepeater();\n });\n\n function stopRepeater() {\n var repeater = $scope.repeater;\n if (angular.isDefined(repeater)) {\n $interval.cancel(repeater);\n repeater = null;\n }\n }\n\n function setUpdateRepeater() {\n var refreshRate = $scope.state.refreshRate;\n $scope.repeater = $interval(function () {\n TaskService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment($scope.state.sinceTimestamp).unix(), $scope.state.lineCount)\n .then(function success(data) {\n $scope.logs = data;\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve task logs');\n });\n }, refreshRate * 1000);\n }\n\n function startLogPolling() {\n TaskService.logs($transition$.params().id, 1, 1, $scope.state.displayTimestamps ? 1 : 0, moment($scope.state.sinceTimestamp).unix(), $scope.state.lineCount)\n .then(function success(data) {\n $scope.logs = data;\n setUpdateRepeater();\n })\n .catch(function error(err) {\n stopRepeater();\n Notifications.error('Failure', err, 'Unable to retrieve task logs');\n });\n }\n\n function initView() {\n TaskService.task($transition$.params().id)\n .then(function success(data) {\n var task = data;\n $scope.task = task;\n return ServiceService.service(task.ServiceId);\n })\n .then(function success(data) {\n var service = data;\n $scope.service = service;\n startLogPolling();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve task details');\n });\n }\n\n initView();\n },\n]);\n","angular.module('portainer.docker').controller('BrowseVolumeController', BrowseVolumeController);\n\n/* @ngInject */\nfunction BrowseVolumeController($scope, $transition$, StateManager, endpoint) {\n function initView() {\n $scope.volumeId = $transition$.params().id;\n $scope.nodeName = $transition$.params().nodeName;\n $scope.agentApiVersion = StateManager.getAgentApiVersion();\n $scope.endpointId = endpoint.Id;\n }\n\n initView();\n}\n","import { AccessControlFormData } from '../../../../portainer/components/accessControlForm/porAccessControlFormModel';\nimport { VolumesNFSFormData } from '../../../components/volumesNFSForm/volumesNFSFormModel';\nimport { VolumesCIFSFormData } from '../../../components/volumesCIFSForm/volumesCifsFormModel';\n\nangular.module('portainer.docker').controller('CreateVolumeController', [\n '$q',\n '$scope',\n '$state',\n 'VolumeService',\n 'PluginService',\n 'ResourceControlService',\n 'Authentication',\n 'Notifications',\n 'FormValidator',\n 'HttpRequestHelper',\n 'endpoint',\n function ($q, $scope, $state, VolumeService, PluginService, ResourceControlService, Authentication, Notifications, FormValidator, HttpRequestHelper, endpoint) {\n $scope.endpoint = endpoint;\n\n $scope.formValues = {\n Driver: 'local',\n DriverOptions: [],\n AccessControlData: new AccessControlFormData(),\n NodeName: null,\n NFSData: new VolumesNFSFormData(),\n CIFSData: new VolumesCIFSFormData(),\n };\n\n $scope.state = {\n formValidationError: '',\n actionInProgress: false,\n };\n\n $scope.availableVolumeDrivers = [];\n\n $scope.addDriverOption = function () {\n $scope.formValues.DriverOptions.push({ name: '', value: '' });\n };\n\n $scope.removeDriverOption = function (index) {\n $scope.formValues.DriverOptions.splice(index, 1);\n };\n\n $scope.onUseNFSChange = onUseNFSChange;\n\n function onUseNFSChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.formValues.NFSData.useNFS = checked;\n $scope.formValues.CIFSData.useCIFS = false;\n });\n }\n\n $scope.onUseCIFSChange = onUseCIFSChange;\n\n function onUseCIFSChange(checked) {\n return $scope.$evalAsync(() => {\n $scope.formValues.CIFSData.useCIFS = checked;\n $scope.formValues.NFSData.useNFS = false;\n });\n }\n\n function validateForm(accessControlData, isAdmin) {\n $scope.state.formValidationError = '';\n var error = '';\n error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n $scope.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n function prepareCIFSConfiguration(driverOptions) {\n const data = $scope.formValues.CIFSData;\n\n driverOptions.push({ name: 'type', value: 'cifs' });\n\n let share = data.share.replace('\\\\', '/');\n if (share[0] !== '/') {\n share = '/' + share;\n }\n const device = '//' + data.serverAddress + share;\n driverOptions.push({ name: 'device', value: device });\n\n const versionNumber = data.versionsNumber[data.versions.indexOf(data.version)];\n const options = 'addr=' + data.serverAddress + ',username=' + data.username + ',password=' + data.password + ',vers=' + versionNumber;\n driverOptions.push({ name: 'o', value: options });\n }\n\n function prepareNFSConfiguration(driverOptions) {\n var data = $scope.formValues.NFSData;\n\n driverOptions.push({ name: 'type', value: 'nfs' });\n\n var options = 'addr=' + data.serverAddress + ',' + data.options;\n if (data.version === 'NFS4') {\n options = options + ',nfsvers=4';\n }\n driverOptions.push({ name: 'o', value: options });\n\n var mountPoint = data.mountPoint[0] === ':' ? data.mountPoint : ':' + data.mountPoint;\n driverOptions.push({ name: 'device', value: mountPoint });\n }\n\n $scope.create = function () {\n var name = $scope.formValues.Name;\n var driver = $scope.formValues.Driver;\n var driverOptions = $scope.formValues.DriverOptions;\n\n if ($scope.formValues.NFSData.useNFS) {\n prepareNFSConfiguration(driverOptions);\n }\n\n if ($scope.formValues.CIFSData.useCIFS) {\n prepareCIFSConfiguration(driverOptions);\n }\n\n var volumeConfiguration = VolumeService.createVolumeConfiguration(name, driver, driverOptions);\n var accessControlData = $scope.formValues.AccessControlData;\n var userDetails = Authentication.getUserDetails();\n var isAdmin = Authentication.isAdmin();\n\n if (!validateForm(accessControlData, isAdmin)) {\n return;\n }\n\n var nodeName = $scope.formValues.NodeName;\n HttpRequestHelper.setPortainerAgentTargetHeader(nodeName);\n\n $scope.state.actionInProgress = true;\n VolumeService.createVolume(volumeConfiguration)\n .then(function success(data) {\n const userId = userDetails.ID;\n const resourceControl = data.ResourceControl;\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n })\n .then(function success() {\n Notifications.success('Success', 'Volume successfully created');\n $state.go('docker.volumes', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'An error occurred during volume creation');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n\n function initView() {\n var apiVersion = $scope.applicationState.endpoint.apiVersion;\n\n PluginService.volumePlugins(apiVersion < 1.25)\n .then(function success(data) {\n $scope.availableVolumeDrivers = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve volume drivers');\n });\n }\n\n initView();\n },\n]);\n","import { ResourceControlType } from '@/react/portainer/access-control/types';\nimport { confirmDelete } from '@@/modals/confirm';\n\nangular.module('portainer.docker').controller('VolumeController', [\n '$scope',\n '$state',\n '$transition$',\n 'VolumeService',\n 'ContainerService',\n 'Notifications',\n 'HttpRequestHelper',\n function ($scope, $state, $transition$, VolumeService, ContainerService, Notifications, HttpRequestHelper) {\n $scope.resourceType = ResourceControlType.Volume;\n\n $scope.onUpdateResourceControlSuccess = function () {\n $state.reload();\n };\n\n $scope.removeVolume = function removeVolume() {\n confirmDelete('Do you want to remove this volume?').then((confirmed) => {\n if (confirmed) {\n VolumeService.remove($scope.volume)\n .then(function success() {\n Notifications.success('Volume successfully removed', $transition$.params().id);\n $state.go('docker.volumes', {});\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove volume');\n });\n }\n });\n };\n\n function getVolumeDataFromContainer(container, volumeId) {\n return container.Mounts.find(function (volume) {\n return volume.Name === volumeId;\n });\n }\n\n function initView() {\n HttpRequestHelper.setPortainerAgentTargetHeader($transition$.params().nodeName);\n\n VolumeService.volume($transition$.params().id)\n .then(function success(data) {\n var volume = data;\n $scope.volume = volume;\n var containerFilter = { volume: [volume.Id] };\n\n return ContainerService.containers(1, containerFilter);\n })\n .then(function success(data) {\n var dataContainers = $scope.isCioDriver ? data.containers : data;\n\n var containers = dataContainers.map(function (container) {\n container.volumeData = getVolumeDataFromContainer(container, $scope.volume.Id);\n return container;\n });\n $scope.containersUsingVolume = containers;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve volume details');\n });\n }\n\n initView();\n },\n]);\n","import { confirmDelete } from '@@/modals/confirm';\n\nangular.module('portainer.docker').controller('VolumesController', [\n '$q',\n '$scope',\n '$state',\n 'VolumeService',\n 'ServiceService',\n 'VolumeHelper',\n 'Notifications',\n 'HttpRequestHelper',\n 'Authentication',\n 'endpoint',\n function ($q, $scope, $state, VolumeService, ServiceService, VolumeHelper, Notifications, HttpRequestHelper, Authentication, endpoint) {\n $scope.removeAction = function (selectedItems) {\n confirmDelete('Do you want to remove the selected volume(s)?').then((confirmed) => {\n if (confirmed) {\n var actionCount = selectedItems.length;\n angular.forEach(selectedItems, function (volume) {\n HttpRequestHelper.setPortainerAgentTargetHeader(volume.NodeName);\n VolumeService.remove(volume)\n .then(function success() {\n Notifications.success('Volume successfully removed', volume.Id);\n var index = $scope.volumes.indexOf(volume);\n $scope.volumes.splice(index, 1);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove volume');\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n }\n });\n };\n\n $scope.getVolumes = getVolumes;\n function getVolumes() {\n var endpointProvider = $scope.applicationState.endpoint.mode.provider;\n var endpointRole = $scope.applicationState.endpoint.mode.role;\n\n $q.all({\n attached: VolumeService.volumes({ filters: { dangling: ['false'] } }),\n dangling: VolumeService.volumes({ filters: { dangling: ['true'] } }),\n services: endpointProvider === 'DOCKER_SWARM_MODE' && endpointRole === 'MANAGER' ? ServiceService.services() : [],\n })\n .then(function success(data) {\n var services = data.services;\n $scope.volumes = data.attached\n .map(function (volume) {\n volume.dangling = false;\n return volume;\n })\n .concat(\n data.dangling.map(function (volume) {\n volume.dangling = true;\n if (VolumeHelper.isVolumeUsedByAService(volume, services)) {\n volume.dangling = false;\n }\n return volume;\n })\n );\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve volumes');\n });\n }\n\n function initView() {\n getVolumes();\n\n $scope.showBrowseAction = $scope.applicationState.endpoint.mode.agentProxy && (Authentication.isAdmin() || endpoint.SecuritySettings.allowVolumeBrowserForRegularUsers);\n }\n\n initView();\n },\n]);\n","import _ from 'lodash';\n\nimport { EditorType } from '@/react/edge/edge-stacks/types';\nimport NomadIcon from '@/assets/ico/vendor/nomad.svg?c';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { BoxSelector } from '@@/BoxSelector';\nimport { BoxSelectorOption } from '@@/BoxSelector/types';\nimport {\n compose,\n kubernetes,\n} from '@@/BoxSelector/common-options/deployment-methods';\n\ninterface Props {\n value: number;\n onChange(value: number): void;\n hasDockerEndpoint: boolean;\n hasKubeEndpoint: boolean;\n hasNomadEndpoint: boolean;\n allowKubeToSelectCompose?: boolean;\n}\n\nexport function EdgeStackDeploymentTypeSelector({\n value,\n onChange,\n hasDockerEndpoint,\n hasKubeEndpoint,\n hasNomadEndpoint,\n allowKubeToSelectCompose,\n}: Props) {\n const deploymentOptions: BoxSelectorOption<number>[] = _.compact([\n {\n ...compose,\n value: EditorType.Compose,\n disabled: () =>\n allowKubeToSelectCompose\n ? hasNomadEndpoint\n : hasNomadEndpoint || hasKubeEndpoint,\n tooltip: () =>\n hasNomadEndpoint || hasKubeEndpoint\n ? 'Cannot use this option with Edge Kubernetes or Edge Nomad environments'\n : '',\n },\n {\n ...kubernetes,\n value: EditorType.Kubernetes,\n disabled: () => hasDockerEndpoint || hasNomadEndpoint,\n tooltip: () =>\n hasDockerEndpoint || hasNomadEndpoint\n ? 'Cannot use this option with Edge Docker or Edge Nomad environments'\n : '',\n iconType: 'logo',\n },\n isBE && {\n id: 'deployment_nomad',\n icon: NomadIcon,\n label: 'Nomad',\n description: 'Nomad HCL format',\n value: EditorType.Nomad,\n disabled: () => hasDockerEndpoint || hasKubeEndpoint,\n tooltip: () =>\n hasDockerEndpoint || hasKubeEndpoint\n ? 'Cannot use this option with Edge Docker or Edge Kubernetes environments'\n : '',\n },\n ]);\n\n return (\n <>\n <div className=\"col-sm-12 form-section-title\"> Deployment type</div>\n <BoxSelector\n radioName=\"deploymentType\"\n value={value}\n options={deploymentOptions}\n onChange={onChange}\n />\n </>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { RefreshCw } from 'lucide-react';\n\nimport { Registry } from '@/react/portainer/registries/types';\n\nimport { Select } from '@@/form-components/ReactSelect';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Button } from '@@/buttons';\nimport { FormError } from '@@/form-components/FormError';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { FormSection } from '@@/form-components/FormSection';\n\ninterface Props {\n value?: number;\n registries: Registry[];\n onChange?: () => void;\n formInvalid?: boolean;\n errorMessage?: string;\n onSelect: (value?: number) => void;\n isActive?: boolean;\n clearRegistries?: () => void;\n method?: 'repository' | string;\n}\n\nexport function PrivateRegistryFieldset({\n value,\n registries,\n onChange = () => {},\n formInvalid,\n errorMessage,\n onSelect,\n isActive,\n clearRegistries = () => {},\n method,\n}: Props) {\n const [checked, setChecked] = useState(isActive || false);\n const [selected, setSelected] = useState(value);\n\n const tooltipMessage =\n 'This allows you to provide credentials when using a private registry that requires authentication';\n\n useEffect(() => {\n if (checked) {\n onChange();\n } else {\n clearRegistries();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checked]);\n\n useEffect(() => {\n setSelected(value);\n }, [value]);\n\n function reload() {\n onChange();\n setSelected(value);\n }\n\n return (\n <FormSection title=\"Registry\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n checked={checked}\n onChange={(value) => setChecked(value)}\n tooltip={tooltipMessage}\n label=\"Use Credentials\"\n labelClass=\"col-sm-3 col-lg-2\"\n disabled={formInvalid}\n />\n </div>\n </div>\n\n {checked && (\n <>\n {method !== 'repository' && (\n <TextTip color=\"blue\">\n If you make any changes to the image urls in your yaml, please\n reload or select registry manually\n </TextTip>\n )}\n\n {!errorMessage ? (\n <FormControl label=\"Registry\" inputId=\"users-selector\">\n <div className=\"flex\">\n <Select\n value={registries.filter(\n (registry) => registry.Id === selected\n )}\n options={registries}\n getOptionLabel={(registry) => registry.Name}\n getOptionValue={(registry) => registry.Id.toString()}\n onChange={(value) => onSelect(value?.Id)}\n className=\"w-full\"\n />\n {method !== 'repository' && (\n <Button\n onClick={reload}\n title=\"Reload\"\n icon={RefreshCw}\n color=\"light\"\n />\n )}\n </div>\n </FormControl>\n ) : (\n <FormError>{errorMessage}</FormError>\n )}\n </>\n )}\n </FormSection>\n );\n}\n","import { EdgeStack } from '../types';\n\nexport function buildUrl(id?: EdgeStack['Id'], action?: string) {\n const baseUrl = '/edge_stacks';\n const url = id ? `${baseUrl}/${id}` : baseUrl;\n return action ? `${url}/${action}` : url;\n}\n","import { useMutation } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\nimport { RegistryId } from '@/react/portainer/registries/types';\n\nimport { EdgeGroup } from '../../edge-groups/types';\nimport { DeploymentType, EdgeStack } from '../types';\n\nimport { buildUrl } from './buildUrl';\n\nexport function useCreateStackFromFileContent() {\n return useMutation(createStackFromFileContent, {\n ...withError('Failed creating Edge stack'),\n });\n}\n\ninterface FileContentPayload {\n name: string;\n stackFileContent: string;\n edgeGroups: EdgeGroup['Id'][];\n deploymentType: DeploymentType;\n registries?: RegistryId[];\n useManifestNamespaces?: boolean;\n prePullImage?: boolean;\n dryRun?: boolean;\n}\n\nexport async function createStackFromFileContent({\n dryRun,\n ...payload\n}: FileContentPayload) {\n try {\n const { data } = await axios.post<EdgeStack>(\n buildUrl(undefined, 'create/string'),\n payload,\n {\n params: { dryrun: dryRun ? 'true' : 'false' },\n }\n );\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import { RegistryId } from '../types/registry';\n\nexport const queryKeys = {\n base: () => ['registries'] as const,\n item: (registryId: RegistryId) => [...queryKeys.base(), registryId] as const,\n};\n","import { QueryKey, useQuery } from 'react-query';\n\nimport { withError } from '@/react-tools/react-query';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { Registry, RegistryTypes } from '../types/registry';\nimport { usePublicSettings } from '../../settings/queries';\n\nimport { queryKeys } from './query-keys';\n\nexport function useRegistries<T = Registry[]>(\n queryOptions: {\n enabled?: boolean;\n select?: (registries: Registry[]) => T;\n onSuccess?: (data: T) => void;\n } = {}\n) {\n return useGenericRegistriesQuery(\n queryKeys.base(),\n getRegistries,\n queryOptions\n );\n}\n\nexport function useGenericRegistriesQuery<T = Registry[]>(\n queryKey: QueryKey,\n fetcher: () => Promise<Array<Registry>>,\n {\n enabled,\n select,\n onSuccess,\n }: {\n enabled?: boolean;\n select?: (registries: Registry[]) => T;\n onSuccess?: (data: T) => void;\n } = {}\n) {\n const hideDefaultRegistryQuery = usePublicSettings({\n select: (settings) => settings.DefaultRegistry?.Hide,\n enabled,\n });\n\n const hideDefault = !!hideDefaultRegistryQuery.data;\n\n return useQuery(\n queryKey,\n async () => {\n const registries = await fetcher();\n\n if (\n hideDefault ||\n registries.some((r) => r.Type === RegistryTypes.DOCKERHUB)\n ) {\n return registries;\n }\n\n return [\n {\n Name: 'Docker Hub (anonymous)',\n Id: 0,\n Type: RegistryTypes.DOCKERHUB,\n } as Registry,\n ...registries,\n ];\n },\n {\n select,\n ...withError('Unable to retrieve registries'),\n enabled: hideDefaultRegistryQuery.isSuccess && enabled,\n onSuccess,\n }\n );\n}\n\nexport async function getRegistries() {\n try {\n const { data } = await axios.get<Registry[]>('/registries');\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve registries');\n }\n}\n","import _ from 'lodash';\n\nimport { notifyError } from '@/portainer/services/notifications';\nimport { PrivateRegistryFieldset } from '@/react/edge/edge-stacks/components/PrivateRegistryFieldset';\nimport { useCreateStackFromFileContent } from '@/react/edge/edge-stacks/queries/useCreateStackFromFileContent';\nimport { useRegistries } from '@/react/portainer/registries/queries/useRegistries';\n\nimport { FormValues } from './types';\n\nexport function PrivateRegistryFieldsetWrapper({\n value,\n isValid,\n error,\n onChange,\n values,\n stackName,\n onFieldError,\n}: {\n value: FormValues['privateRegistryId'];\n isValid: boolean;\n error?: string;\n onChange: (value?: number) => void;\n values: FormValues;\n stackName: string;\n onFieldError: (message: string) => void;\n}) {\n const dryRunMutation = useCreateStackFromFileContent();\n\n const registriesQuery = useRegistries();\n\n if (!registriesQuery.data) {\n return null;\n }\n\n return (\n <PrivateRegistryFieldset\n value={value}\n formInvalid={!isValid}\n errorMessage={error}\n registries={registriesQuery.data}\n onChange={() => matchRegistry()}\n onSelect={(value) => onChange(value)}\n isActive={!!value}\n clearRegistries={() => onChange(undefined)}\n />\n );\n\n async function matchRegistry() {\n try {\n const response = await dryRunMutation.mutateAsync({\n name: `${stackName}-dryrun`,\n stackFileContent: values.content,\n edgeGroups: values.edgeGroups,\n deploymentType: values.deploymentType,\n dryRun: true,\n });\n\n if (response.Registries.length === 0) {\n onChange(undefined);\n return;\n }\n\n const validRegistry = onlyOne(response.Registries);\n if (validRegistry) {\n onChange(response.Registries[0]);\n } else {\n onChange(undefined);\n onFieldError(\n 'Images need to be from a single registry, please edit and reload'\n );\n }\n } catch (err) {\n notifyError('Failure', err as Error, 'Unable to retrieve registries');\n }\n }\n\n function onlyOne<T extends string | number>(arr: Array<T>) {\n return _.uniq(arr).length === 1;\n }\n}\n","import { PropsWithChildren } from 'react';\n\nimport { BROWSER_OS_PLATFORM } from '@/react/constants';\n\nimport { CodeEditor } from '@@/CodeEditor';\nimport { Tooltip } from '@@/Tip/Tooltip';\n\nimport { FormSectionTitle } from './form-components/FormSectionTitle';\n\nconst otherEditorConfig = {\n tooltip: (\n <>\n <div>Ctrl+F - Start searching</div>\n <div>Ctrl+G - Find next</div>\n <div>Ctrl+Shift+G - Find previous</div>\n <div>Ctrl+Shift+F - Replace</div>\n <div>Ctrl+Shift+R - Replace all</div>\n <div>Alt+G - Jump to line</div>\n <div>Persistent search:</div>\n <div className=\"ml-5\">Enter - Find next</div>\n <div className=\"ml-5\">Shift+Enter - Find previous</div>\n </>\n ),\n searchCmdLabel: 'Ctrl+F for search',\n} as const;\n\nconst editorConfig = {\n mac: {\n tooltip: (\n <>\n <div>Cmd+F - Start searching</div>\n <div>Cmd+G - Find next</div>\n <div>Cmd+Shift+G - Find previous</div>\n <div>Cmd+Option+F - Replace</div>\n <div>Cmd+Option+R - Replace all</div>\n <div>Option+G - Jump to line</div>\n <div>Persistent search:</div>\n <div className=\"ml-5\">Enter - Find next</div>\n <div className=\"ml-5\">Shift+Enter - Find previous</div>\n </>\n ),\n searchCmdLabel: 'Cmd+F for search',\n },\n\n lin: otherEditorConfig,\n win: otherEditorConfig,\n} as const;\n\ninterface Props {\n value: string;\n onChange: (value: string) => void;\n\n id: string;\n placeholder?: string;\n yaml?: boolean;\n readonly?: boolean;\n hideTitle?: boolean;\n error?: string;\n}\n\nexport function WebEditorForm({\n id,\n onChange,\n placeholder,\n value,\n hideTitle,\n readonly,\n yaml,\n children,\n error,\n}: PropsWithChildren<Props>) {\n return (\n <div>\n <div className=\"web-editor overflow-x-hidden\">\n {!hideTitle && (\n <FormSectionTitle htmlFor={id}>\n Web editor\n <div className=\"text-muted small vertical-center ml-auto\">\n {editorConfig[BROWSER_OS_PLATFORM].searchCmdLabel}\n\n <Tooltip message={editorConfig[BROWSER_OS_PLATFORM].tooltip} />\n </div>\n </FormSectionTitle>\n )}\n\n {children && (\n <div className=\"form-group text-muted small\">\n <div className=\"col-sm-12 col-lg-12\">{children}</div>\n </div>\n )}\n\n <div className=\"form-group\">\n <div className=\"col-sm-12 col-lg-12\">\n <CodeEditor\n id={id}\n placeholder={placeholder}\n readonly={readonly}\n yaml={yaml}\n value={value}\n onChange={onChange}\n />\n </div>\n </div>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12 col-lg-12\">{error}</div>\n </div>\n </div>\n </div>\n );\n}\n","import { GitAuthenticationResponse, GitAuthModel } from '../types';\n\nexport function parseAuthResponse(\n auth?: GitAuthenticationResponse\n): GitAuthModel {\n if (!auth) {\n return {\n RepositoryAuthentication: false,\n NewCredentialName: '',\n RepositoryGitCredentialID: 0,\n RepositoryPassword: '',\n RepositoryUsername: '',\n SaveCredential: false,\n };\n }\n\n return {\n RepositoryAuthentication: true,\n NewCredentialName: '',\n RepositoryGitCredentialID: auth.GitCredentialID,\n RepositoryPassword: '',\n RepositoryUsername: auth.Username,\n };\n}\n\nexport function transformGitAuthenticationViewModel(\n auth?: GitAuthModel\n): GitAuthenticationResponse | null {\n if (\n !auth ||\n !auth.RepositoryAuthentication ||\n typeof auth.RepositoryGitCredentialID === 'undefined' ||\n (auth.RepositoryGitCredentialID === 0 && auth.RepositoryPassword === '')\n ) {\n return null;\n }\n\n if (auth.RepositoryGitCredentialID !== 0) {\n return {\n GitCredentialID: auth.RepositoryGitCredentialID,\n };\n }\n\n return {\n Username: auth.RepositoryUsername,\n Password: auth.RepositoryPassword,\n };\n}\n","import _ from 'lodash';\nimport { useCallback } from 'react';\n\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\nimport { EnvironmentType } from '@/react/portainer/environments/types';\n\nexport function useValidateEnvironmentTypes(groupIds: Array<EdgeGroup['Id']>) {\n const edgeGroupsQuery = useEdgeGroups();\n\n const edgeGroups = edgeGroupsQuery.data || [];\n\n const modelEdgeGroups = _.compact(\n groupIds.map((id) => edgeGroups.find((e) => e.Id === id))\n );\n const endpointTypes = modelEdgeGroups.flatMap((group) => group.EndpointTypes);\n\n const hasType = useCallback(\n (type: EnvironmentType) => endpointTypes.includes(type),\n [endpointTypes]\n );\n\n return {\n hasType,\n };\n}\n","export function atLeastTwo(a: boolean, b: boolean, c: boolean) {\n return (a && b) || (a && c) || (b && c);\n}\n","import { useMutation } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { mutationOptions, withError } from '@/react-tools/react-query';\nimport {\n AutoUpdateResponse,\n GitAuthenticationResponse,\n} from '@/react/portainer/gitops/types';\nimport { buildUrl } from '@/react/edge/edge-stacks/queries/buildUrl';\nimport { DeploymentType, EdgeStack } from '@/react/edge/edge-stacks/types';\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\nimport { Registry } from '@/react/portainer/registries/types';\n\nexport interface UpdateEdgeStackGitPayload {\n id: EdgeStack['Id'];\n autoUpdate: AutoUpdateResponse | null;\n refName: string;\n authentication: GitAuthenticationResponse | null;\n groupIds: EdgeGroup['Id'][];\n deploymentType: DeploymentType;\n updateVersion: boolean;\n registries?: Array<Registry['Id']>;\n}\n\nexport function useUpdateEdgeStackGitMutation() {\n return useMutation(\n updateEdgeStackGit,\n mutationOptions(withError('Failed updating stack'))\n );\n}\n\nasync function updateEdgeStackGit({\n id,\n ...payload\n}: UpdateEdgeStackGitPayload) {\n try {\n await axios.put(buildUrl(id, 'git'), payload);\n } catch (err) {\n throw parseAxiosError(err as Error, 'Failed updating stack');\n }\n}\n","import { Form, Formik, useFormikContext } from 'formik';\nimport { useRouter } from '@uirouter/react';\n\nimport { AuthFieldset } from '@/react/portainer/gitops/AuthFieldset';\nimport { AutoUpdateFieldset } from '@/react/portainer/gitops/AutoUpdateFieldset';\nimport {\n parseAutoUpdateResponse,\n transformAutoUpdateViewModel,\n} from '@/react/portainer/gitops/AutoUpdateFieldset/utils';\nimport { InfoPanel } from '@/react/portainer/gitops/InfoPanel';\nimport { RefField } from '@/react/portainer/gitops/RefField';\nimport { AutoUpdateModel, GitAuthModel } from '@/react/portainer/gitops/types';\nimport {\n baseEdgeStackWebhookUrl,\n createWebhookId,\n} from '@/portainer/helpers/webhookHelper';\nimport {\n parseAuthResponse,\n transformGitAuthenticationViewModel,\n} from '@/react/portainer/gitops/AuthFieldset/utils';\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\nimport { DeploymentType, EdgeStack } from '@/react/edge/edge-stacks/types';\nimport { EdgeGroupsSelector } from '@/react/edge/edge-stacks/components/EdgeGroupsSelector';\nimport { EdgeStackDeploymentTypeSelector } from '@/react/edge/edge-stacks/components/EdgeStackDeploymentTypeSelector';\nimport { useCurrentUser } from '@/react/hooks/useUser';\nimport { useCreateGitCredentialMutation } from '@/react/portainer/account/git-credentials/git-credentials.service';\nimport { notifyError, notifySuccess } from '@/portainer/services/notifications';\nimport { EnvironmentType } from '@/react/portainer/environments/types';\nimport { Registry } from '@/react/portainer/registries/types';\nimport { useRegistries } from '@/react/portainer/registries/queries/useRegistries';\n\nimport { LoadingButton } from '@@/buttons';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { FormError } from '@@/form-components/FormError';\nimport { EnvironmentVariablesPanel } from '@@/form-components/EnvironmentVariablesFieldset';\nimport { EnvVar } from '@@/form-components/EnvironmentVariablesFieldset/types';\n\nimport { useValidateEnvironmentTypes } from '../useEdgeGroupHasType';\nimport { atLeastTwo } from '../atLeastTwo';\nimport { PrivateRegistryFieldset } from '../../../components/PrivateRegistryFieldset';\n\nimport {\n UpdateEdgeStackGitPayload,\n useUpdateEdgeStackGitMutation,\n} from './useUpdateEdgeStackGitMutation';\n\ninterface FormValues {\n groupIds: EdgeGroup['Id'][];\n deploymentType: DeploymentType;\n autoUpdate: AutoUpdateModel;\n refName: string;\n authentication: GitAuthModel;\n envVars: EnvVar[];\n privateRegistryId?: Registry['Id'];\n}\n\nexport function GitForm({ stack }: { stack: EdgeStack }) {\n const router = useRouter();\n const updateStackMutation = useUpdateEdgeStackGitMutation();\n const saveCredentialsMutation = useCreateGitCredentialMutation();\n const { user } = useCurrentUser();\n\n if (!stack.GitConfig) {\n return null;\n }\n\n const gitConfig = stack.GitConfig;\n\n const initialValues: FormValues = {\n groupIds: stack.EdgeGroups,\n deploymentType: stack.DeploymentType,\n autoUpdate: parseAutoUpdateResponse(stack.AutoUpdate),\n refName: stack.GitConfig.ReferenceName,\n authentication: parseAuthResponse(stack.GitConfig.Authentication),\n envVars: stack.EnvVars || [],\n };\n\n const webhookId = stack.AutoUpdate?.Webhook || createWebhookId();\n\n return (\n <Formik initialValues={initialValues} onSubmit={handleSubmit}>\n {({ values, isValid }) => {\n return (\n <InnerForm\n webhookId={webhookId}\n onUpdateSettingsClick={handleUpdateSettings}\n gitPath={gitConfig.ConfigFilePath}\n gitUrl={gitConfig.URL}\n isLoading={updateStackMutation.isLoading}\n isUpdateVersion={!!updateStackMutation.variables?.updateVersion}\n />\n );\n\n async function handleUpdateSettings() {\n if (!isValid) {\n return;\n }\n\n const credentialId = await saveCredentialsIfRequired(\n values.authentication\n );\n\n updateStackMutation.mutate(getPayload(values, credentialId, false), {\n onSuccess() {\n notifySuccess('Success', 'Stack updated successfully');\n router.stateService.reload();\n },\n });\n }\n }}\n </Formik>\n );\n\n async function handleSubmit(values: FormValues) {\n const credentialId = await saveCredentialsIfRequired(values.authentication);\n\n updateStackMutation.mutate(getPayload(values, credentialId, true), {\n onSuccess() {\n notifySuccess('Success', 'Stack updated successfully');\n router.stateService.reload();\n },\n });\n }\n\n function getPayload(\n { authentication, autoUpdate, privateRegistryId, ...values }: FormValues,\n credentialId: number | undefined,\n updateVersion: boolean\n ): UpdateEdgeStackGitPayload {\n return {\n updateVersion,\n id: stack.Id,\n authentication: transformGitAuthenticationViewModel({\n ...authentication,\n RepositoryGitCredentialID: credentialId,\n }),\n autoUpdate: transformAutoUpdateViewModel(autoUpdate, webhookId),\n registries:\n typeof privateRegistryId !== 'undefined'\n ? [privateRegistryId]\n : undefined,\n ...values,\n };\n }\n\n async function saveCredentialsIfRequired(authentication: GitAuthModel) {\n if (\n !authentication.SaveCredential ||\n !authentication.RepositoryPassword ||\n !authentication.NewCredentialName\n ) {\n return authentication.RepositoryGitCredentialID;\n }\n\n try {\n const credential = await saveCredentialsMutation.mutateAsync({\n userId: user.Id,\n username: authentication.RepositoryUsername,\n password: authentication.RepositoryPassword,\n name: authentication.NewCredentialName,\n });\n return credential.id;\n } catch (err) {\n notifyError('Error', err as Error, 'Unable to save credentials');\n return undefined;\n }\n }\n}\n\nfunction InnerForm({\n gitUrl,\n gitPath,\n isLoading,\n isUpdateVersion,\n onUpdateSettingsClick,\n webhookId,\n}: {\n gitUrl: string;\n gitPath: string;\n\n isLoading: boolean;\n isUpdateVersion: boolean;\n onUpdateSettingsClick(): void;\n webhookId: string;\n}) {\n const registriesQuery = useRegistries();\n const { values, setFieldValue, isValid, handleSubmit, errors, dirty } =\n useFormikContext<FormValues>();\n\n const { hasType } = useValidateEnvironmentTypes(values.groupIds);\n\n const hasKubeEndpoint = hasType(EnvironmentType.EdgeAgentOnKubernetes);\n const hasDockerEndpoint = hasType(EnvironmentType.EdgeAgentOnDocker);\n const hasNomadEndpoint = hasType(EnvironmentType.EdgeAgentOnNomad);\n\n return (\n <Form className=\"form-horizontal\" onSubmit={handleSubmit}>\n <EdgeGroupsSelector\n value={values.groupIds}\n onChange={(value) => setFieldValue('groupIds', value)}\n error={errors.groupIds}\n />\n\n {atLeastTwo(hasKubeEndpoint, hasDockerEndpoint, hasNomadEndpoint) && (\n <TextTip>\n There are no available deployment types when there is more than one\n type of environment in your edge group selection (e.g. Kubernetes and\n Docker environments). Please select edge groups that have environments\n of the same type.\n </TextTip>\n )}\n\n {values.deploymentType === DeploymentType.Compose && hasKubeEndpoint && (\n <FormError>\n Edge groups with kubernetes environments no longer support compose\n deployment types in Portainer. Please select edge groups that only\n have docker environments when using compose deployment types.\n </FormError>\n )}\n <EdgeStackDeploymentTypeSelector\n value={values.deploymentType}\n hasDockerEndpoint={hasType(EnvironmentType.EdgeAgentOnDocker)}\n hasKubeEndpoint={hasType(EnvironmentType.EdgeAgentOnKubernetes)}\n hasNomadEndpoint={hasType(EnvironmentType.EdgeAgentOnNomad)}\n onChange={(value) => {\n setFieldValue('deploymentType', value);\n }}\n />\n\n <FormSection title=\"Update from git repository\">\n <InfoPanel\n className=\"text-muted small\"\n url={gitUrl}\n type=\"Edge stack\"\n configFilePath={gitPath}\n />\n\n <AutoUpdateFieldset\n webhookId={webhookId}\n value={values.autoUpdate}\n onChange={(value) =>\n setFieldValue('autoUpdate', {\n ...values.autoUpdate,\n ...value,\n })\n }\n baseWebhookUrl={baseEdgeStackWebhookUrl()}\n errors={errors.autoUpdate}\n />\n </FormSection>\n\n <FormSection title=\"Advanced configuration\" isFoldable>\n <RefField\n value={values.refName}\n onChange={(value) => setFieldValue('refName', value)}\n model={{ ...values.authentication, RepositoryURL: gitUrl }}\n error={errors.refName}\n isUrlValid\n />\n\n <AuthFieldset\n value={values.authentication}\n isAuthExplanationVisible\n onChange={(value) =>\n Object.entries(value).forEach(([key, value]) => {\n setFieldValue(`authentication.${key}`, value);\n })\n }\n errors={errors.authentication}\n />\n\n <EnvironmentVariablesPanel\n onChange={(value) => setFieldValue('envVars', value)}\n values={values.envVars}\n errors={errors.envVars}\n />\n </FormSection>\n\n <PrivateRegistryFieldset\n value={values.privateRegistryId}\n onSelect={(value) => setFieldValue('privateRegistryId', value)}\n registries={registriesQuery.data ?? []}\n formInvalid={!isValid}\n method=\"repository\"\n errorMessage={errors.privateRegistryId}\n />\n\n <FormSection title=\"Actions\">\n <LoadingButton\n disabled={dirty || !isValid || isLoading}\n isLoading={isUpdateVersion && isLoading}\n loadingText=\"updating stack...\"\n >\n Pull and update stack\n </LoadingButton>\n\n <LoadingButton\n type=\"button\"\n disabled={!dirty || !isValid || isLoading}\n isLoading={!isUpdateVersion && isLoading}\n loadingText=\"updating settings...\"\n onClick={onUpdateSettingsClick}\n >\n Update settings\n </LoadingButton>\n </FormSection>\n </Form>\n );\n}\n","import { Form, Formik, useFormikContext } from 'formik';\nimport { useState } from 'react';\nimport { array, boolean, number, object, SchemaOf, string } from 'yup';\n\nimport { EdgeGroupsSelector } from '@/react/edge/edge-stacks/components/EdgeGroupsSelector';\nimport { EdgeStackDeploymentTypeSelector } from '@/react/edge/edge-stacks/components/EdgeStackDeploymentTypeSelector';\nimport { DeploymentType, EdgeStack } from '@/react/edge/edge-stacks/types';\nimport { EnvironmentType } from '@/react/portainer/environments/types';\nimport { WebhookSettings } from '@/react/portainer/gitops/AutoUpdateFieldset/WebhookSettings';\nimport { baseEdgeStackWebhookUrl } from '@/portainer/helpers/webhookHelper';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { FormSection } from '@@/form-components/FormSection';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { LoadingButton } from '@@/buttons';\nimport { FormError } from '@@/form-components/FormError';\nimport {\n EnvironmentVariablesPanel,\n envVarValidation,\n} from '@@/form-components/EnvironmentVariablesFieldset';\n\nimport { PrivateRegistryFieldsetWrapper } from './PrivateRegistryFieldsetWrapper';\nimport { FormValues } from './types';\nimport { ComposeForm } from './ComposeForm';\nimport { KubernetesForm } from './KubernetesForm';\nimport { NomadForm } from './NomadForm';\nimport { GitForm } from './GitForm';\nimport { useValidateEnvironmentTypes } from './useEdgeGroupHasType';\nimport { atLeastTwo } from './atLeastTwo';\n\ninterface Props {\n edgeStack: EdgeStack;\n isSubmitting: boolean;\n onSubmit: (values: FormValues) => void;\n onEditorChange: (content: string) => void;\n fileContent: string;\n allowKubeToSelectCompose: boolean;\n}\n\nconst forms = {\n [DeploymentType.Compose]: ComposeForm,\n [DeploymentType.Kubernetes]: KubernetesForm,\n [DeploymentType.Nomad]: NomadForm,\n};\n\nexport function EditEdgeStackForm({\n isSubmitting,\n edgeStack,\n onSubmit,\n onEditorChange,\n fileContent,\n allowKubeToSelectCompose,\n}: Props) {\n if (edgeStack.GitConfig) {\n return <GitForm stack={edgeStack} />;\n }\n\n const formValues: FormValues = {\n edgeGroups: edgeStack.EdgeGroups,\n deploymentType: edgeStack.DeploymentType,\n privateRegistryId: edgeStack.Registries?.[0],\n content: fileContent,\n useManifestNamespaces: edgeStack.UseManifestNamespaces,\n prePullImage: edgeStack.PrePullImage,\n retryDeploy: edgeStack.RetryDeploy,\n webhookEnabled: !!edgeStack.Webhook,\n envVars: edgeStack.EnvVars || [],\n };\n\n return (\n <Formik\n initialValues={formValues}\n onSubmit={onSubmit}\n validationSchema={formValidation()}\n >\n <InnerForm\n edgeStack={edgeStack}\n isSubmitting={isSubmitting}\n onEditorChange={onEditorChange}\n allowKubeToSelectCompose={allowKubeToSelectCompose}\n />\n </Formik>\n );\n}\n\nfunction InnerForm({\n onEditorChange,\n edgeStack,\n isSubmitting,\n allowKubeToSelectCompose,\n}: {\n edgeStack: EdgeStack;\n isSubmitting: boolean;\n onEditorChange: (content: string) => void;\n allowKubeToSelectCompose: boolean;\n}) {\n const {\n values,\n setFieldValue,\n isValid,\n\n errors,\n setFieldError,\n } = useFormikContext<FormValues>();\n const { getCachedContent, setContentCache } = useCachedContent();\n const { hasType } = useValidateEnvironmentTypes(values.edgeGroups);\n\n const hasKubeEndpoint = hasType(EnvironmentType.EdgeAgentOnKubernetes);\n const hasDockerEndpoint = hasType(EnvironmentType.EdgeAgentOnDocker);\n const hasNomadEndpoint = hasType(EnvironmentType.EdgeAgentOnNomad);\n\n const DeploymentForm = forms[values.deploymentType];\n\n return (\n <Form className=\"form-horizontal\">\n <EdgeGroupsSelector\n value={values.edgeGroups}\n onChange={(value) => setFieldValue('edgeGroups', value)}\n error={errors.edgeGroups}\n />\n\n {atLeastTwo(hasKubeEndpoint, hasDockerEndpoint, hasNomadEndpoint) && (\n <TextTip>\n There are no available deployment types when there is more than one\n type of environment in your edge group selection (e.g. Kubernetes and\n Docker environments). Please select edge groups that have environments\n of the same type.\n </TextTip>\n )}\n\n {values.deploymentType === DeploymentType.Compose && hasKubeEndpoint && (\n <FormError>\n Edge groups with kubernetes environments no longer support compose\n deployment types in Portainer. Please select edge groups that only\n have docker environments when using compose deployment types.\n </FormError>\n )}\n\n <EdgeStackDeploymentTypeSelector\n allowKubeToSelectCompose={allowKubeToSelectCompose}\n value={values.deploymentType}\n hasDockerEndpoint={hasType(EnvironmentType.EdgeAgentOnDocker)}\n hasKubeEndpoint={hasType(EnvironmentType.EdgeAgentOnKubernetes)}\n hasNomadEndpoint={hasType(EnvironmentType.EdgeAgentOnNomad)}\n onChange={(value) => {\n setFieldValue('content', getCachedContent(value));\n setFieldValue('deploymentType', value);\n }}\n />\n\n <DeploymentForm\n hasKubeEndpoint={hasType(EnvironmentType.EdgeAgentOnKubernetes)}\n handleContentChange={handleContentChange}\n />\n\n {isBE && (\n <>\n <FormSection title=\"Webhooks\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Create an Edge stack webhook\"\n checked={values.webhookEnabled}\n labelClass=\"col-sm-3 col-lg-2\"\n onChange={(value) => setFieldValue('webhookEnabled', value)}\n tooltip=\"Create a webhook (or callback URI) to automate the update of this stack. Sending a POST request to this callback URI (without requiring any authentication) will pull the most up-to-date version of the associated image and re-deploy this stack.\"\n />\n </div>\n </div>\n\n {edgeStack.Webhook && (\n <WebhookSettings\n baseUrl={baseEdgeStackWebhookUrl()}\n value={edgeStack.Webhook}\n docsLink=\"todo\"\n />\n )}\n </FormSection>\n <PrivateRegistryFieldsetWrapper\n value={values.privateRegistryId}\n onChange={(value) => setFieldValue('privateRegistryId', value)}\n isValid={isValid}\n values={values}\n stackName={edgeStack.Name}\n onFieldError={(error) => setFieldError('privateRegistryId', error)}\n error={errors.privateRegistryId}\n />\n\n <EnvironmentVariablesPanel\n onChange={(value) => setFieldValue('envVars', value)}\n values={values.envVars}\n errors={errors.envVars}\n />\n\n {values.deploymentType === DeploymentType.Compose && (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n checked={values.prePullImage}\n name=\"prePullImage\"\n label=\"Pre-pull images\"\n tooltip=\"When enabled, redeployment will be executed when image(s) is pulled successfully\"\n labelClass=\"col-sm-3 col-lg-2\"\n onChange={(value) => setFieldValue('prePullImage', value)}\n />\n </div>\n </div>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n checked={values.retryDeploy}\n name=\"retryDeploy\"\n label=\"Retry deployment\"\n tooltip=\"When enabled, this will allow the edge agent to retry deployment if failed to deploy initially\"\n labelClass=\"col-sm-3 col-lg-2\"\n onChange={(value) => setFieldValue('retryDeploy', value)}\n />\n </div>\n </div>\n </>\n )}\n </>\n )}\n\n <FormSection title=\"Actions\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n className=\"!ml-0\"\n size=\"small\"\n disabled={!isValid}\n isLoading={isSubmitting}\n button-spinner=\"$ctrl.actionInProgress\"\n loadingText=\"Update in progress...\"\n >\n Update the stack\n </LoadingButton>\n </div>\n </div>\n </FormSection>\n </Form>\n );\n\n function handleContentChange(type: DeploymentType, content: string) {\n setFieldValue('content', content);\n setContentCache(type, content);\n onEditorChange(content);\n }\n}\n\nfunction useCachedContent() {\n const [cachedContent, setCachedContent] = useState({\n [DeploymentType.Compose]: '',\n [DeploymentType.Kubernetes]: '',\n [DeploymentType.Nomad]: '',\n });\n\n function handleChangeContent(type: DeploymentType, content: string) {\n setCachedContent((cache) => ({ ...cache, [type]: content }));\n }\n\n return {\n setContentCache: handleChangeContent,\n getCachedContent: (type: DeploymentType) => cachedContent[type],\n };\n}\n\nfunction formValidation(): SchemaOf<FormValues> {\n return object({\n content: string().required('Content is required'),\n deploymentType: number()\n .oneOf([0, 1, 2])\n .required('Deployment type is required'),\n privateRegistryId: number().optional(),\n prePullImage: boolean().default(false),\n retryDeploy: boolean().default(false),\n useManifestNamespaces: boolean().default(false),\n edgeGroups: array()\n .of(number().required())\n .required()\n .min(1, 'At least one edge group is required'),\n webhookEnabled: boolean().default(false),\n envVars: envVarValidation(),\n });\n}\n","import { useFormikContext } from 'formik';\n\nimport { TextTip } from '@@/Tip/TextTip';\nimport { WebEditorForm } from '@@/WebEditorForm';\n\nimport { DeploymentType } from '../../types';\n\nimport { FormValues } from './types';\n\nexport function ComposeForm({\n handleContentChange,\n hasKubeEndpoint,\n}: {\n hasKubeEndpoint: boolean;\n handleContentChange: (type: DeploymentType, content: string) => void;\n}) {\n const { errors, values } = useFormikContext<FormValues>();\n\n return (\n <>\n {hasKubeEndpoint && (\n <TextTip>\n <p>\n Portainer no longer supports{' '}\n <a\n href=\"https://docs.docker.com/compose/compose-file/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n docker-compose\n </a>{' '}\n format manifests for Kubernetes deployments, and we have removed the{' '}\n <a href=\"https://kompose.io/\" target=\"_blank\" rel=\"noreferrer\">\n Kompose\n </a>{' '}\n conversion tool which enables this. The reason for this is because\n Kompose now poses a security risk, since it has a number of Common\n Vulnerabilities and Exposures (CVEs).\n </p>\n <p>\n Unfortunately, while the Kompose project has a maintainer and is\n part of the CNCF, it is not being actively maintained. Releases are\n very infrequent and new pull requests to the project (including ones\n we've submitted) are taking months to be merged, with new CVEs\n arising in the meantime.\n </p>\n <p>\n We advise installing your own instance of Kompose in a sandbox\n environment, performing conversions of your Docker Compose files to\n Kubernetes manifests and using those manifests to set up\n applications.\n </p>\n </TextTip>\n )}\n\n <WebEditorForm\n value={values.content}\n yaml\n id=\"compose-editor\"\n placeholder=\"Define or paste the content of your docker compose file here\"\n onChange={(value) => handleContentChange(DeploymentType.Compose, value)}\n error={errors.content}\n readonly={hasKubeEndpoint}\n >\n <div>\n You can get more information about Compose file format in the{' '}\n <a\n href=\"https://docs.docker.com/compose/compose-file/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n official documentation\n </a>\n .\n </div>\n </WebEditorForm>\n </>\n );\n}\n","import { useFormikContext } from 'formik';\n\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { WebEditorForm } from '@@/WebEditorForm';\n\nimport { DeploymentType } from '../../types';\n\nimport { FormValues } from './types';\n\nexport function KubernetesForm({\n handleContentChange,\n}: {\n handleContentChange: (type: DeploymentType, content: string) => void;\n}) {\n const { errors, values, setFieldValue } = useFormikContext<FormValues>();\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Use namespace(s) specified from manifest\"\n tooltip=\"If you have defined namespaces in your deployment file turning this on will enforce the use of those only in the deployment\"\n checked={values.useManifestNamespaces}\n onChange={(value) => setFieldValue('useManifestNamespaces', value)}\n />\n </div>\n </div>\n\n <WebEditorForm\n value={values.content}\n yaml\n id=\"kube-manifest-editor\"\n placeholder=\"Define or paste the content of your manifest here\"\n onChange={(value) =>\n handleContentChange(DeploymentType.Kubernetes, value)\n }\n error={errors.content}\n >\n <p>\n You can get more information about Kubernetes file format in the{' '}\n <a\n href=\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n official documentation\n </a>\n .\n </p>\n </WebEditorForm>\n </>\n );\n}\n","import { useFormikContext } from 'formik';\n\nimport { WebEditorForm } from '@@/WebEditorForm';\n\nimport { DeploymentType } from '../../types';\n\nimport { FormValues } from './types';\n\nexport function NomadForm({\n handleContentChange,\n}: {\n handleContentChange: (type: DeploymentType, content: string) => void;\n}) {\n const { errors, values } = useFormikContext<FormValues>();\n\n return (\n <WebEditorForm\n value={values.content}\n yaml\n id=\"kube-manifest-editor\"\n placeholder=\"Define or paste the content of your manifest here\"\n onChange={(value) => handleContentChange(DeploymentType.Nomad, value)}\n error={errors.content}\n >\n <p>\n You can get more information about Nomad file format in the{' '}\n <a\n href=\"https://www.nomadproject.io/docs/job-specification\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n official documentation\n </a>\n .\n </p>\n </WebEditorForm>\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { truncate } from 'lodash';\nimport { useMemo, useState } from 'react';\n\nimport { useEnvironmentList } from '@/react/portainer/environments/queries';\nimport { Environment } from '@/react/portainer/environments/types';\nimport { useGroups } from '@/react/portainer/environments/environment-groups/queries';\nimport { useTags } from '@/portainer/tags/queries';\nimport { EnvironmentsQueryParams } from '@/react/portainer/environments/environment.service';\nimport { AutomationTestingProps } from '@/types';\n\nimport { useTableStateWithoutStorage } from '@@/datatables/useTableState';\nimport { Datatable, TableRow } from '@@/datatables';\n\ntype DecoratedEnvironment = Environment & {\n Tags: string[];\n Group: string;\n};\n\nconst columHelper = createColumnHelper<DecoratedEnvironment>();\n\nconst columns = [\n columHelper.accessor('Name', {\n header: 'Name',\n id: 'Name',\n cell: ({ getValue }) => truncate(getValue(), { length: 64 }),\n }),\n columHelper.accessor('Group', {\n header: 'Group',\n id: 'Group',\n cell: ({ getValue }) => truncate(getValue(), { length: 64 }),\n }),\n columHelper.accessor((row) => row.Tags.join(','), {\n header: 'Tags',\n id: 'tags',\n enableSorting: false,\n cell: ({ getValue }) => truncate(getValue(), { length: 64 }),\n }),\n];\n\nexport function EdgeGroupAssociationTable({\n title,\n query,\n emptyContentLabel,\n onClickRow,\n 'data-cy': dataCy,\n}: {\n title: string;\n query: EnvironmentsQueryParams;\n emptyContentLabel: string;\n onClickRow: (env: Environment) => void;\n} & AutomationTestingProps) {\n const tableState = useTableStateWithoutStorage('Name');\n const [page, setPage] = useState(0);\n const environmentsQuery = useEnvironmentList({\n pageLimit: tableState.pageSize,\n page: page + 1,\n search: tableState.search,\n sort: tableState.sortBy.id as 'Group' | 'Name',\n order: tableState.sortBy.desc ? 'desc' : 'asc',\n ...query,\n });\n const groupsQuery = useGroups({\n enabled: environmentsQuery.environments.length > 0,\n });\n const tagsQuery = useTags({\n enabled: environmentsQuery.environments.length > 0,\n });\n\n const environments: Array<DecoratedEnvironment> = useMemo(\n () =>\n environmentsQuery.environments.map((env) => ({\n ...env,\n Group: groupsQuery.data?.find((g) => g.Id === env.GroupId)?.Name || '',\n Tags: env.TagIds.map(\n (tagId) => tagsQuery.data?.find((t) => t.ID === tagId)?.Name || ''\n ),\n })),\n [environmentsQuery.environments, groupsQuery.data, tagsQuery.data]\n );\n\n const { totalCount } = environmentsQuery;\n\n return (\n <Datatable<DecoratedEnvironment>\n title={title}\n columns={columns}\n settingsManager={tableState}\n dataset={environments}\n isServerSidePagination\n page={page}\n onPageChange={setPage}\n totalCount={totalCount}\n renderRow={(row) => (\n <TableRow<DecoratedEnvironment>\n cells={row.getVisibleCells()}\n onClick={() => onClickRow(row.original)}\n />\n )}\n emptyContentLabel={emptyContentLabel}\n data-cy={dataCy}\n disableSelect\n />\n );\n}\n","import { EdgeStack } from '../types';\n\nexport const queryKeys = {\n base: () => ['edge-stacks'] as const,\n item: (id: EdgeStack['Id']) => [...queryKeys.base(), id] as const,\n};\n","import { useQuery } from 'react-query';\n\nimport { withError } from '@/react-tools/react-query';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { EdgeStack } from '../types';\n\nimport { buildUrl } from './buildUrl';\nimport { queryKeys } from './query-keys';\n\nexport function useEdgeStack(\n id?: EdgeStack['Id'],\n {\n refetchInterval,\n }: {\n /**\n * If set to a number, the query will continuously refetch at this frequency in milliseconds. If set to a function, the function will be executed with the latest data and query to compute a frequency Defaults to false.\n */\n refetchInterval?:\n | number\n | false\n | ((data?: Awaited<ReturnType<typeof getEdgeStack>>) => false | number);\n } = {}\n) {\n return useQuery(id ? queryKeys.item(id) : [], () => getEdgeStack(id), {\n ...withError('Failed loading Edge stack'),\n enabled: !!id,\n refetchInterval,\n });\n}\n\nexport async function getEdgeStack(id?: EdgeStack['Id']) {\n if (!id) {\n return null;\n }\n\n try {\n const { data } = await axios.get<EdgeStack>(buildUrl(id));\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgIconUpdatesAvailable = function SvgIconUpdatesAvailable(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 15 14\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#icon_updates-available_svg__a)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 14,\n height: 14,\n x: 0.5,\n fill: \"#F79009\",\n rx: 7\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n d: \"M4.817 4.559a.75.75 0 0 1 1.06 0l1.681 1.68 1.68-1.68a.75.75 0 1 1 1.06 1.06L8.619 7.3l1.68 1.68a.75.75 0 1 1-1.06 1.061l-1.68-1.68-1.68 1.68a.75.75 0 1 1-1.06-1.06l1.68-1.68-1.68-1.68a.75.75 0 0 1 0-1.061Z\",\n clipRule: \"evenodd\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"icon_updates-available_svg__a\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 14,\n height: 14,\n x: 0.5,\n fill: \"#fff\",\n rx: 7\n })))));\n};\nexport default SvgIconUpdatesAvailable;","var _rect, _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgIconUpToDate = function SvgIconUpToDate(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 15 14\"\n }, props), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 14,\n height: 14,\n x: 0.5,\n fill: \"#039855\",\n rx: 7\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0BA5EC\",\n fillRule: \"evenodd\",\n d: \"M10.473 4.31 6.296 8.343 5.188 7.158a.606.606 0 0 0-.758-.041.535.535 0 0 0-.152.706L5.59 9.958c.129.198.35.32.601.32.24 0 .467-.122.595-.32.21-.275 4.218-5.052 4.218-5.052.525-.537-.111-1.01-.531-.601v.006Z\",\n clipRule: \"evenodd\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n fillRule: \"evenodd\",\n d: \"M11.14 4.305c-.128-.18-.432-.229-.667 0v.006l-.083.08-4.094 3.95-1.108-1.183a.606.606 0 0 0-.758-.041.535.535 0 0 0-.152.706L5.59 9.958a.701.701 0 0 0 .601.32.716.716 0 0 0 .608-.337c.059-.074.233-.285.48-.582.791-.952 2.327-2.786 3.158-3.777l.567-.676a1.215 1.215 0 0 0 .026-.028c.202-.222.207-.43.114-.567l-.004-.006Z\",\n clipRule: \"evenodd\"\n })));\n};\nexport default SvgIconUpToDate;","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EdgeStack } from '@/react/edge/edge-stacks/types';\n\nimport { queryKeys } from '../../queries/query-keys';\n\nexport function logsStatusQueryKey(\n edgeStackId: EdgeStack['Id'],\n environmentId: EnvironmentId\n) {\n return [...queryKeys.item(edgeStackId), 'logs', environmentId] as const;\n}\n\nexport function useLogsStatus(\n edgeStackId: EdgeStack['Id'],\n environmentId: EnvironmentId\n) {\n return useQuery(\n logsStatusQueryKey(edgeStackId, environmentId),\n () => getLogsStatus(edgeStackId, environmentId),\n {\n refetchInterval(status) {\n if (status === 'pending') {\n return 30 * 1000;\n }\n\n return false;\n },\n }\n );\n}\n\ninterface LogsStatusResponse {\n status: 'collected' | 'idle' | 'pending';\n}\n\nasync function getLogsStatus(\n edgeStackId: EdgeStack['Id'],\n environmentId: EnvironmentId\n) {\n try {\n const { data } = await axios.get<LogsStatusResponse>(\n `/edge_stacks/${edgeStackId}/logs/${environmentId}`\n );\n return data.status;\n } catch (error) {\n throw parseAxiosError(error as Error, 'Unable to retrieve logs status');\n }\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { EdgeStack } from '../../types';\n\nimport { logsStatusQueryKey } from './useLogsStatus';\n\nexport function useCollectLogsMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(collectLogs, {\n onSuccess(data, variables) {\n return queryClient.invalidateQueries(\n logsStatusQueryKey(variables.edgeStackId, variables.environmentId)\n );\n },\n ...withError('Unable to retrieve logs'),\n });\n}\n\ninterface CollectLogs {\n edgeStackId: EdgeStack['Id'];\n environmentId: EnvironmentId;\n}\n\nasync function collectLogs({ edgeStackId, environmentId }: CollectLogs) {\n try {\n await axios.put(`/edge_stacks/${edgeStackId}/logs/${environmentId}`);\n } catch (error) {\n throw parseAxiosError(error as Error, 'Unable to start logs collection');\n }\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { EdgeStack } from '../../types';\n\nimport { logsStatusQueryKey } from './useLogsStatus';\n\nexport function useDeleteLogsMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(deleteLogs, {\n onSuccess(data, variables) {\n return queryClient.invalidateQueries(\n logsStatusQueryKey(variables.edgeStackId, variables.environmentId)\n );\n },\n ...withError('Unable to delete logs'),\n });\n}\n\ninterface DeleteLogs {\n edgeStackId: EdgeStack['Id'];\n environmentId: EnvironmentId;\n}\n\nasync function deleteLogs({ edgeStackId, environmentId }: DeleteLogs) {\n try {\n await axios.delete(`/edge_stacks/${edgeStackId}/logs/${environmentId}`, {\n responseType: 'blob',\n headers: {\n Accept: 'text/yaml',\n },\n });\n } catch (e) {\n throw parseAxiosError(e as Error, '');\n }\n}\n","import { saveAs } from 'file-saver';\nimport { useMutation } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { mutationOptions, withError } from '@/react-tools/react-query';\n\nimport { EdgeStack } from '../../types';\n\nexport function useDownloadLogsMutation() {\n return useMutation(\n downloadLogs,\n mutationOptions(withError('Unable to download logs'))\n );\n}\n\ninterface DownloadLogs {\n edgeStackId: EdgeStack['Id'];\n environmentId: EnvironmentId;\n}\n\nasync function downloadLogs({ edgeStackId, environmentId }: DownloadLogs) {\n try {\n const { headers, data } = await axios.get<Blob>(\n `/edge_stacks/${edgeStackId}/logs/${environmentId}/file`,\n {\n responseType: 'blob',\n headers: {\n Accept: 'text/yaml',\n },\n }\n );\n const contentDispositionHeader = headers['content-disposition'];\n const filename = contentDispositionHeader\n .replace('attachment; filename=', '')\n .trim();\n saveAs(data, filename);\n } catch (e) {\n throw parseAxiosError(e as Error, '');\n }\n}\n","import clsx from 'clsx';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\n\nimport { EdgeStack } from '../../types';\n\nimport { useCollectLogsMutation } from './useCollectLogsMutation';\nimport { useDeleteLogsMutation } from './useDeleteLogsMutation';\nimport { useDownloadLogsMutation } from './useDownloadLogsMutation';\nimport { useLogsStatus } from './useLogsStatus';\n\ninterface Props {\n environmentId: EnvironmentId;\n edgeStackId: EdgeStack['Id'];\n}\n\nexport function LogsActions({ environmentId, edgeStackId }: Props) {\n const logsStatusQuery = useLogsStatus(edgeStackId, environmentId);\n const collectLogsMutation = useCollectLogsMutation();\n const downloadLogsMutation = useDownloadLogsMutation();\n const deleteLogsMutation = useDeleteLogsMutation();\n\n if (!logsStatusQuery.isSuccess) {\n return null;\n }\n\n const status = logsStatusQuery.data;\n\n const collecting = collectLogsMutation.isLoading || status === 'pending';\n\n return (\n <>\n <Button color=\"none\" title=\"Retrieve logs\" onClick={handleCollectLogs}>\n <Icon\n icon={clsx({\n 'file-text': !collecting,\n loader: collecting,\n })}\n />\n </Button>\n <Button\n color=\"none\"\n title=\"Download logs\"\n disabled={status !== 'collected'}\n onClick={handleDownloadLogs}\n >\n <Icon\n icon={clsx({\n 'download-cloud': !downloadLogsMutation.isLoading,\n loader: downloadLogsMutation.isLoading,\n })}\n />\n </Button>\n <Button\n color=\"none\"\n title=\"Delete logs\"\n disabled={status !== 'collected'}\n onClick={handleDeleteLogs}\n >\n <Icon\n icon={clsx({\n delete: !deleteLogsMutation.isLoading,\n loader: deleteLogsMutation.isLoading,\n })}\n />\n </Button>\n </>\n );\n\n function handleCollectLogs() {\n if (status === 'pending') {\n return;\n }\n\n collectLogsMutation.mutate(\n {\n edgeStackId,\n environmentId,\n },\n {\n onSuccess() {\n notifySuccess('Success', 'Logs Collection started');\n },\n }\n );\n }\n\n function handleDownloadLogs() {\n downloadLogsMutation.mutate({\n edgeStackId,\n environmentId,\n });\n }\n\n function handleDeleteLogs() {\n deleteLogsMutation.mutate(\n {\n edgeStackId,\n environmentId,\n },\n {\n onSuccess() {\n notifySuccess('Success', 'Logs Deleted');\n },\n }\n );\n }\n}\n","import { Search } from 'lucide-react';\nimport { useCurrentStateAndParams } from '@uirouter/react';\n\nimport { Environment } from '@/react/portainer/environments/types';\n\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { Icon } from '@@/Icon';\n\nimport { LogsActions } from './LogsActions';\n\ninterface Props {\n environment: Environment;\n}\n\nexport function EnvironmentActions({ environment }: Props) {\n const {\n params: { stackId: edgeStackId },\n } = useCurrentStateAndParams();\n\n return (\n <div className=\"space-x-2\">\n {environment.Snapshots.length > 0 && (\n <Link\n to=\"edge.browse.containers\"\n params={{ environmentId: environment.Id, edgeStackId }}\n className=\"!text-inherit hover:!no-underline\"\n >\n <Button color=\"none\" title=\"Browse Snapshot\">\n <Icon icon={Search} className=\"searchIcon\" />\n </Button>\n </Link>\n )}\n {environment.Edge.AsyncMode && (\n <LogsActions environmentId={environment.Id} edgeStackId={edgeStackId} />\n )}\n </div>\n );\n}\n","import { useCurrentStateAndParams } from '@uirouter/react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { useLogsStatus } from './useLogsStatus';\n\ninterface Props {\n environmentId: EnvironmentId;\n}\n\nexport function ActionStatus({ environmentId }: Props) {\n const {\n params: { stackId: edgeStackId },\n } = useCurrentStateAndParams();\n\n const logsStatusQuery = useLogsStatus(edgeStackId, environmentId);\n\n return <>{getStatusText(logsStatusQuery.data)}</>;\n}\n\nfunction getStatusText(status?: 'pending' | 'collected' | 'idle') {\n switch (status) {\n case 'collected':\n return 'Logs available for download';\n case 'pending':\n return 'Logs marked for collection, please wait until the logs are available';\n default:\n return null;\n }\n}\n","import { CellContext, createColumnHelper } from '@tanstack/react-table';\nimport { ChevronDown, ChevronRight } from 'lucide-react';\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport _ from 'lodash';\n\nimport UpdatesAvailable from '@/assets/ico/icon_updates-available.svg?c';\nimport UpToDate from '@/assets/ico/icon_up-to-date.svg?c';\nimport { isoDateFromTimestamp } from '@/portainer/filters/filters';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { getDashboardRoute } from '@/react/portainer/environments/utils';\n\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\nimport { Link } from '@@/Link';\n\nimport { DeploymentStatus, EdgeStackStatus, StatusType } from '../../types';\n\nimport { EnvironmentActions } from './EnvironmentActions';\nimport { ActionStatus } from './ActionStatus';\nimport { EdgeStackEnvironment } from './types';\n\nconst columnHelper = createColumnHelper<EdgeStackEnvironment>();\n\nexport const columns = _.compact([\n columnHelper.accessor('Name', {\n id: 'name',\n header: 'Name',\n cell({ row: { original: env } }) {\n const { to, params } = getDashboardRoute(env);\n return (\n <Link to={to} params={params}>\n {env.Name}\n </Link>\n );\n },\n }),\n columnHelper.accessor((env) => endpointStatusLabel(env.StackStatus.Status), {\n id: 'status',\n header: 'Status',\n cell({ row: { original: env } }) {\n return (\n <ul className=\"list-none space-y-2\">\n {env.StackStatus.Status.map((s) => (\n <li key={`status-${s.Type}-${s.Time}`}>\n <Status value={s.Type} />\n </li>\n ))}\n </ul>\n );\n },\n }),\n columnHelper.accessor((env) => _.last(env.StackStatus.Status)?.Time, {\n id: 'statusDate',\n header: 'Time',\n cell({ row: { original: env } }) {\n return (\n <ul className=\"list-none space-y-2\">\n {env.StackStatus.Status.map((s) => (\n <li key={`time-${s.Type}-${s.Time}`}>\n {isoDateFromTimestamp(s.Time)}\n </li>\n ))}\n </ul>\n );\n },\n }),\n ...(isBE\n ? [\n columnHelper.accessor((env) => endpointTargetVersionLabel(env), {\n id: 'targetVersion',\n header: 'Target version',\n cell: TargetVersionCell,\n }),\n columnHelper.accessor(\n (env) => endpointDeployedVersionLabel(env.StackStatus),\n {\n id: 'deployedVersion',\n header: 'Deployed version',\n cell: DeployedVersionCell,\n }\n ),\n ]\n : []),\n columnHelper.accessor(\n (env) =>\n env.StackStatus.Status.find((s) => s.Type === StatusType.Error)?.Error,\n {\n id: 'error',\n header: 'Error',\n cell: ErrorCell,\n }\n ),\n ...(isBE\n ? [\n columnHelper.display({\n id: 'actions',\n header: 'Actions',\n cell({ row: { original: env } }) {\n return <EnvironmentActions environment={env} />;\n },\n }),\n columnHelper.display({\n id: 'actionStatus',\n header: 'Action Status',\n cell({ row: { original: env } }) {\n return <ActionStatus environmentId={env.Id} />;\n },\n }),\n ]\n : []),\n]);\n\nfunction ErrorCell({ getValue }: CellContext<EdgeStackEnvironment, string>) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const value = getValue();\n if (!value) {\n return '-';\n }\n\n return (\n <Button\n color=\"none\"\n className=\"flex cursor-pointer\"\n onClick={() => setIsExpanded(!isExpanded)}\n >\n <div className=\"pt-0.5 pr-1\">\n <Icon icon={isExpanded ? ChevronDown : ChevronRight} />\n </div>\n <div\n className={clsx('overflow-hidden whitespace-normal', {\n 'h-[1.5em]': isExpanded,\n })}\n >\n {value}\n </div>\n </Button>\n );\n}\n\nfunction endpointStatusLabel(statusArray: Array<DeploymentStatus>) {\n const labels = [];\n\n statusArray.forEach((status) => {\n if (status.Type === StatusType.Acknowledged) {\n labels.push('Acknowledged');\n }\n if (status.Type === StatusType.ImagesPulled) {\n labels.push('Images pre-pulled');\n }\n if (status.Type === StatusType.Running) {\n labels.push('Deployed');\n }\n if (status.Type === StatusType.Error) {\n labels.push('Failed');\n }\n if (status.Type === StatusType.PausedDeploying) {\n labels.push('Paused');\n }\n if (status.Type === StatusType.RollingBack) {\n labels.push('Rolling Back');\n }\n if (status.Type === StatusType.RolledBack) {\n labels.push('Rolled Back');\n }\n });\n\n if (!labels.length) {\n labels.push('Pending');\n }\n\n return _.uniq(labels).join(', ');\n}\n\nfunction TargetVersionCell({\n row,\n getValue,\n}: CellContext<EdgeStackEnvironment, string>) {\n const value = getValue();\n if (!value) {\n return '';\n }\n\n return (\n <>\n {row.original.TargetCommitHash ? (\n <div>\n <a\n href={`${row.original.GitConfigURL}/commit/${row.original.TargetCommitHash}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {value}\n </a>\n </div>\n ) : (\n <div>{value}</div>\n )}\n </>\n );\n}\n\nfunction endpointTargetVersionLabel(env: EdgeStackEnvironment) {\n if (env.TargetCommitHash) {\n return env.TargetCommitHash.slice(0, 7).toString();\n }\n return env.TargetFileVersion.toString() || '';\n}\n\nfunction DeployedVersionCell({\n row,\n getValue,\n}: CellContext<EdgeStackEnvironment, string>) {\n const value = getValue();\n if (!value || value === '0') {\n return (\n <div>\n <Icon icon={UpdatesAvailable} className=\"!mr-2\" />\n </div>\n );\n }\n\n let statusIcon = <Icon icon={UpToDate} className=\"!mr-2\" />;\n if (\n (row.original.TargetCommitHash &&\n row.original.TargetCommitHash.slice(0, 7) !== value) ||\n (!row.original.TargetCommitHash && row.original.TargetFileVersion !== value)\n ) {\n statusIcon = <Icon icon={UpdatesAvailable} className=\"!mr-2\" />;\n }\n\n return (\n <>\n {row.original.TargetCommitHash ? (\n <div>\n {statusIcon}\n <a\n href={`${row.original.GitConfigURL}/commit/${row.original.TargetCommitHash}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {value}\n </a>\n </div>\n ) : (\n <div>\n {statusIcon}\n {value}\n </div>\n )}\n </>\n );\n}\n\nfunction endpointDeployedVersionLabel(status: EdgeStackStatus) {\n if (status.DeploymentInfo?.ConfigHash) {\n return status.DeploymentInfo?.ConfigHash.slice(0, 7).toString();\n }\n return status.DeploymentInfo?.FileVersion.toString() || '';\n}\n\nfunction Status({ value }: { value: StatusType }) {\n const color = getStateColor(value);\n\n return (\n <div className=\"flex items-center gap-2\">\n <span\n className={clsx('h-2 w-2 rounded-full', {\n 'bg-orange-5': color === 'orange',\n 'bg-green-5': color === 'green',\n 'bg-error-5': color === 'red',\n })}\n />\n\n <span>{_.startCase(StatusType[value])}</span>\n </div>\n );\n}\n\nfunction getStateColor(type: StatusType): 'orange' | 'green' | 'red' {\n switch (type) {\n case StatusType.Acknowledged:\n case StatusType.ImagesPulled:\n case StatusType.DeploymentReceived:\n case StatusType.Running:\n case StatusType.RemoteUpdateSuccess:\n case StatusType.Removed:\n return 'green';\n case StatusType.Error:\n return 'red';\n case StatusType.Pending:\n case StatusType.Deploying:\n case StatusType.Removing:\n case StatusType.PausedDeploying:\n case StatusType.RollingBack:\n case StatusType.RolledBack:\n default:\n return 'orange';\n }\n}\n","import angular from 'angular';\n\nimport { EdgeGroupsSelector } from '@/react/edge/edge-stacks/components/EdgeGroupsSelector';\nimport { r2a } from '@/react-tools/react2angular';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { EdgeCheckinIntervalField } from '@/react/edge/components/EdgeCheckInIntervalField';\nimport { EdgeScriptForm } from '@/react/edge/components/EdgeScriptForm';\nimport { EdgeAsyncIntervalsForm } from '@/react/edge/components/EdgeAsyncIntervalsForm';\nimport { EdgeStackDeploymentTypeSelector } from '@/react/edge/edge-stacks/components/EdgeStackDeploymentTypeSelector';\nimport { EditEdgeStackForm } from '@/react/edge/edge-stacks/ItemView/EditEdgeStackForm/EditEdgeStackForm';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { EdgeGroupAssociationTable } from '@/react/edge/components/EdgeGroupAssociationTable';\nimport { AssociatedEdgeEnvironmentsSelector } from '@/react/edge/components/AssociatedEdgeEnvironmentsSelector';\nimport { EnvironmentsDatatable } from '@/react/edge/edge-stacks/ItemView/EnvironmentsDatatable';\n\nexport const componentsModule = angular\n .module('portainer.edge.react.components', [])\n .component(\n 'edgeStackEnvironmentsDatatable',\n r2a(withUIRouter(withReactQuery(EnvironmentsDatatable)), [])\n )\n .component(\n 'edgeGroupsSelector',\n r2a(withUIRouter(withReactQuery(EdgeGroupsSelector)), [\n 'onChange',\n 'value',\n 'error',\n 'horizontal',\n 'isGroupVisible',\n ])\n )\n .component(\n 'edgeScriptForm',\n r2a(withReactQuery(EdgeScriptForm), [\n 'edgeInfo',\n 'commands',\n 'isNomadTokenVisible',\n 'asyncMode',\n 'showMetaFields',\n ])\n )\n .component(\n 'edgeCheckinIntervalField',\n r2a(withReactQuery(EdgeCheckinIntervalField), [\n 'value',\n 'onChange',\n 'isDefaultHidden',\n 'tooltip',\n 'label',\n 'readonly',\n 'size',\n ])\n )\n .component(\n 'edgeAsyncIntervalsForm',\n r2a(withReactQuery(EdgeAsyncIntervalsForm), [\n 'values',\n 'onChange',\n 'isDefaultHidden',\n 'readonly',\n 'fieldSettings',\n ])\n )\n .component(\n 'edgeStackDeploymentTypeSelector',\n r2a(withReactQuery(EdgeStackDeploymentTypeSelector), [\n 'value',\n 'onChange',\n 'hasDockerEndpoint',\n 'hasKubeEndpoint',\n 'hasNomadEndpoint',\n 'allowKubeToSelectCompose',\n ])\n )\n .component(\n 'editEdgeStackForm',\n r2a(withUIRouter(withReactQuery(withCurrentUser(EditEdgeStackForm))), [\n 'edgeStack',\n 'fileContent',\n 'isSubmitting',\n 'onEditorChange',\n 'onSubmit',\n 'allowKubeToSelectCompose',\n ])\n )\n .component(\n 'edgeGroupAssociationTable',\n r2a(withReactQuery(EdgeGroupAssociationTable), [\n 'emptyContentLabel',\n 'onClickRow',\n 'query',\n 'title',\n 'data-cy',\n ])\n )\n .component(\n 'associatedEdgeEnvironmentsSelector',\n r2a(withReactQuery(AssociatedEdgeEnvironmentsSelector), [\n 'onChange',\n 'value',\n ])\n ).name;\n","import { useCurrentStateAndParams } from '@uirouter/react';\nimport { HardDrive } from 'lucide-react';\nimport { useMemo, useState } from 'react';\n\nimport { EdgeStackStatus, StatusType } from '@/react/edge/edge-stacks/types';\nimport { useEnvironmentList } from '@/react/portainer/environments/queries';\nimport { useParamState } from '@/react/hooks/useParamState';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { Datatable } from '@@/datatables';\nimport { useTableStateWithoutStorage } from '@@/datatables/useTableState';\nimport { PortainerSelect } from '@@/form-components/PortainerSelect';\n\nimport { useEdgeStack } from '../../queries/useEdgeStack';\n\nimport { EdgeStackEnvironment } from './types';\nimport { columns } from './columns';\n\nexport function EnvironmentsDatatable() {\n const {\n params: { stackId },\n } = useCurrentStateAndParams();\n const edgeStackQuery = useEdgeStack(stackId, {\n refetchInterval(data) {\n if (!data) {\n return 0;\n }\n\n return Object.values(data.Status).some((status) =>\n status.Status.every((s) => s.Type === StatusType.Running)\n )\n ? 0\n : 10000;\n },\n });\n\n const [page, setPage] = useState(0);\n const [statusFilter, setStatusFilter] = useParamState<StatusType>(\n 'status',\n (value) => (value ? parseInt(value, 10) : undefined)\n );\n const tableState = useTableStateWithoutStorage('name');\n const environmentsQuery = useEnvironmentList({\n pageLimit: tableState.pageSize,\n page: page + 1,\n search: tableState.search,\n sort: tableState.sortBy.id as 'Group' | 'Name',\n order: tableState.sortBy.desc ? 'desc' : 'asc',\n edgeStackId: stackId,\n edgeStackStatus: statusFilter,\n });\n\n const currentFileVersion =\n edgeStackQuery.data?.StackFileVersion?.toString() || '';\n const gitConfigURL = edgeStackQuery.data?.GitConfig?.URL || '';\n const gitConfigCommitHash = edgeStackQuery.data?.GitConfig?.ConfigHash || '';\n const environments: Array<EdgeStackEnvironment> = useMemo(\n () =>\n environmentsQuery.environments.map(\n (env) =>\n ({\n ...env,\n TargetFileVersion: currentFileVersion,\n GitConfigURL: gitConfigURL,\n TargetCommitHash: gitConfigCommitHash,\n StackStatus: getEnvStackStatus(\n env.Id,\n edgeStackQuery.data?.Status[env.Id]\n ),\n } satisfies EdgeStackEnvironment)\n ),\n [\n currentFileVersion,\n edgeStackQuery.data?.Status,\n environmentsQuery.environments,\n gitConfigCommitHash,\n gitConfigURL,\n ]\n );\n\n const envStatusSelectOptions = [\n { value: StatusType.Pending, label: 'Pending' },\n { value: StatusType.Acknowledged, label: 'Acknowledged' },\n { value: StatusType.ImagesPulled, label: 'Images pre-pulled' },\n { value: StatusType.Running, label: 'Deployed' },\n { value: StatusType.Error, label: 'Failed' },\n ];\n if (isBE) {\n envStatusSelectOptions.concat([\n { value: StatusType.PausedDeploying, label: 'Paused' },\n { value: StatusType.RollingBack, label: 'Rolling back' },\n { value: StatusType.RolledBack, label: 'Rolled back' },\n ]);\n }\n\n return (\n <Datatable\n columns={columns}\n isLoading={environmentsQuery.isLoading}\n dataset={environments}\n settingsManager={tableState}\n title=\"Environments Status\"\n titleIcon={HardDrive}\n isServerSidePagination\n page={page}\n onPageChange={setPage}\n totalCount={environmentsQuery.totalCount}\n emptyContentLabel=\"No environment available.\"\n disableSelect\n description={\n <div className=\"w-1/4\">\n <PortainerSelect<StatusType | undefined>\n isClearable\n bindToBody\n value={statusFilter}\n onChange={(e) => setStatusFilter(e ?? undefined)}\n options={envStatusSelectOptions}\n />\n </div>\n }\n />\n );\n}\n\nfunction getEnvStackStatus(\n envId: EnvironmentId,\n envStatus: EdgeStackStatus | undefined\n) {\n const pendingStatus = {\n Type: StatusType.Pending,\n Error: '',\n Time: new Date().valueOf() / 1000,\n };\n\n let status = envStatus;\n if (!status) {\n status = {\n EndpointID: envId,\n DeploymentInfo: {\n ConfigHash: '',\n FileVersion: 0,\n },\n Status: [],\n };\n }\n\n if (status.Status.length === 0) {\n status.Status.push(pendingStatus);\n }\n\n return status;\n}\n","import { useCurrentStateAndParams, useRouter } from '@uirouter/react';\n\nexport function useParamState<T>(\n param: string,\n parseParam: (param: string | undefined) => T | undefined\n) {\n const {\n params: { [param]: paramValue },\n } = useCurrentStateAndParams();\n const router = useRouter();\n const state = parseParam(paramValue);\n\n return [\n state,\n (value: T | undefined) => {\n router.stateService.go('.', { [param]: value });\n },\n ] as const;\n}\n","import { EdgeTypes, EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { EdgeGroupAssociationTable } from './EdgeGroupAssociationTable';\n\nexport function AssociatedEdgeEnvironmentsSelector({\n onChange,\n value,\n}: {\n onChange: (\n value: EnvironmentId[],\n meta: { type: 'add' | 'remove'; value: EnvironmentId }\n ) => void;\n value: EnvironmentId[];\n}) {\n return (\n <>\n <div className=\"col-sm-12 small text-muted\">\n You can select which environment should be part of this group by moving\n them to the associated environments table. Simply click on any\n environment entry to move it from one table to the other.\n </div>\n\n <div className=\"col-sm-12 mt-4\">\n <div className=\"flex\">\n <div className=\"w-1/2\">\n <EdgeGroupAssociationTable\n title=\"Available environments\"\n emptyContentLabel=\"No environment available\"\n query={{\n types: EdgeTypes,\n excludeIds: value,\n }}\n onClickRow={(env) => {\n if (!value.includes(env.Id)) {\n onChange([...value, env.Id], { type: 'add', value: env.Id });\n }\n }}\n data-cy=\"edgeGroupCreate-availableEndpoints\"\n />\n </div>\n <div className=\"w-1/2\">\n <EdgeGroupAssociationTable\n title=\"Associated environments\"\n emptyContentLabel=\"No associated environment'\"\n query={{\n types: EdgeTypes,\n endpointIds: value,\n }}\n onClickRow={(env) => {\n if (value.includes(env.Id)) {\n onChange(\n value.filter((id) => id !== env.Id),\n { type: 'remove', value: env.Id }\n );\n }\n }}\n />\n </div>\n </div>\n </div>\n </>\n );\n}\n","import moment from 'moment';\nimport { createColumnHelper } from '@tanstack/react-table';\n\nimport { WaitingRoomEnvironment } from '../types';\n\nconst columnHelper = createColumnHelper<WaitingRoomEnvironment>();\n\nexport const columns = [\n columnHelper.accessor('Name', {\n header: 'Name',\n id: 'name',\n }),\n columnHelper.accessor('EdgeID', {\n header: 'Edge ID',\n id: 'edge-id',\n }),\n columnHelper.accessor((row) => row.EdgeGroups.join(', ') || '-', {\n header: 'Edge Groups',\n id: 'edge-groups',\n }),\n columnHelper.accessor((row) => row.Group || '-', {\n header: 'Group',\n id: 'group',\n }),\n columnHelper.accessor((row) => row.Tags.join(', ') || '-', {\n header: 'Tags',\n id: 'tags',\n }),\n columnHelper.accessor((row) => row.LastCheckInDate, {\n header: 'Last Check-in',\n id: 'last-check-in',\n cell: ({ getValue }) => {\n const value = getValue();\n return value ? moment(value * 1000).fromNow() : '-';\n },\n }),\n];\n","import createStore from 'zustand';\nimport { persist } from 'zustand/middleware';\n\nimport { keyBuilder } from '@/react/hooks/useLocalStorage';\n\ninterface TableFiltersStore {\n groups: number[];\n setGroups(value: number[]): void;\n edgeGroups: number[];\n setEdgeGroups(value: number[]): void;\n tags: number[];\n setTags(value: number[]): void;\n checkIn: number;\n setCheckIn(value: number): void;\n}\n\nexport const useFilterStore = createStore<TableFiltersStore>()(\n persist(\n (set) => ({\n edgeGroups: [],\n setEdgeGroups(edgeGroups: number[]) {\n set({ edgeGroups });\n },\n groups: [],\n setGroups(groups: number[]) {\n set({ groups });\n },\n tags: [],\n setTags(tags: number[]) {\n set({ tags });\n },\n checkIn: 0,\n setCheckIn(checkIn: number) {\n set({ checkIn });\n },\n }),\n {\n name: keyBuilder('edge-devices-meta-filters'),\n }\n )\n);\n","import { HomepageFilter } from '@/react/portainer/HomeView/EnvironmentList/HomepageFilter';\nimport { useGroups } from '@/react/portainer/environments/environment-groups/queries';\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\nimport { useTags } from '@/portainer/tags/queries';\n\nimport { PortainerSelect } from '@@/form-components/PortainerSelect';\n\nimport { useFilterStore } from './filter-store';\n\nconst checkInOptions = [\n { value: 0, label: 'Show all time' },\n { value: 60 * 60, label: 'Show past hour' },\n { value: 60 * 60 * 24, label: 'Show past day' },\n { value: 60 * 60 * 24 * 7, label: 'Show past week' },\n { value: 60 * 60 * 24 * 14, label: 'Show past 14 days' },\n];\n\nexport function Filter() {\n const edgeGroupsQuery = useEdgeGroups();\n const groupsQuery = useGroups();\n const tagsQuery = useTags();\n\n const filterStore = useFilterStore();\n\n if (!edgeGroupsQuery.data || !groupsQuery.data || !tagsQuery.data) {\n return null;\n }\n\n return (\n <div className=\"flex w-full gap-5 [&>*]:w-1/5\">\n <HomepageFilter\n onChange={(f) => filterStore.setEdgeGroups(f)}\n placeHolder=\"Edge groups\"\n value={filterStore.edgeGroups}\n filterOptions={edgeGroupsQuery.data.map((g) => ({\n label: g.Name,\n value: g.Id,\n }))}\n />\n <HomepageFilter\n onChange={(f) => filterStore.setGroups(f)}\n placeHolder=\"Group\"\n value={filterStore.groups}\n filterOptions={groupsQuery.data.map((g) => ({\n label: g.Name,\n value: g.Id,\n }))}\n />\n <HomepageFilter\n onChange={(f) => filterStore.setTags(f)}\n placeHolder=\"Tags\"\n value={filterStore.tags}\n filterOptions={tagsQuery.data.map((g) => ({\n label: g.Name,\n value: g.ID,\n }))}\n />\n\n <div className=\"ml-auto\" />\n <PortainerSelect\n onChange={(f) => filterStore.setCheckIn(f || 0)}\n value={filterStore.checkIn}\n options={checkInOptions}\n bindToBody\n />\n </div>\n );\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport { EdgeTypes, EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport { useIntegratedLicenseInfo } from '@/react/portainer/licenses/use-license.service';\nimport { useEnvironmentList } from '@/react/portainer/environments/queries';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\nimport { queryKey as nodesCountQueryKey } from '@/react/portainer/system/useNodesCount';\nimport { LicenseType } from '@/react/portainer/licenses/types';\nimport { queryKeys } from '@/react/portainer/environments/queries/query-keys';\n\nexport function useAssociateDeviceMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n (ids: EnvironmentId[]) =>\n promiseSequence(ids.map((id) => () => associateDevice(id))),\n mutationOptions(\n withError('Failed to associate devices'),\n withInvalidate(queryClient, [queryKeys.base(), nodesCountQueryKey])\n )\n );\n}\n\nasync function associateDevice(environmentId: EnvironmentId) {\n try {\n await axios.post(`/endpoints/${environmentId}/edge/trust`);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Failed to associate device');\n }\n}\n\nexport function useLicenseOverused(moreNodes: number) {\n const integratedInfo = useIntegratedLicenseInfo();\n\n return (\n !!integratedInfo &&\n integratedInfo.licenseInfo.type === LicenseType.Essentials &&\n integratedInfo.usedNodes + moreNodes > integratedInfo.licenseInfo.nodes\n );\n}\n\nexport function useUntrustedCount() {\n const query = useEnvironmentList({\n edgeDeviceUntrusted: true,\n types: EdgeTypes,\n });\n return query.totalCount;\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\nimport { TagId } from '@/portainer/tags/types';\nimport { queryKeys as edgeGroupQueryKeys } from '@/react/edge/edge-groups/queries/query-keys';\nimport { queryKeys as groupQueryKeys } from '@/react/portainer/environments/environment-groups/queries/query-keys';\nimport { tagKeys } from '@/portainer/tags/queries';\n\nimport { EnvironmentId } from '../types';\nimport { buildUrl } from '../environment.service/utils';\nimport { EnvironmentGroupId } from '../environment-groups/types';\n\nimport { queryKeys } from './query-keys';\n\nexport function useUpdateEnvironmentsRelationsMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n updateEnvironmentRelations,\n mutationOptions(\n withInvalidate(queryClient, [\n queryKeys.base(),\n edgeGroupQueryKeys.base(),\n groupQueryKeys.base(),\n tagKeys.all,\n ]),\n withError('Unable to update environment relations')\n )\n );\n}\n\nexport interface EnvironmentRelationsPayload {\n edgeGroups: Array<EdgeGroup['Id']>;\n group: EnvironmentGroupId;\n tags: Array<TagId>;\n}\n\nexport async function updateEnvironmentRelations(\n relations: Record<EnvironmentId, EnvironmentRelationsPayload>\n) {\n try {\n await axios.put(buildUrl(undefined, 'relations'), { relations });\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update environment relations');\n }\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { TagId } from '@/portainer/tags/types';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { EdgeGroup } from '../types';\n\nimport { buildUrl } from './build-url';\nimport { queryKeys } from './query-keys';\n\ninterface CreateGroupPayload {\n name: string;\n dynamic: boolean;\n tagIds?: TagId[];\n endpoints?: EnvironmentId[];\n partialMatch?: boolean;\n}\n\nexport async function createEdgeGroup(requestPayload: CreateGroupPayload) {\n try {\n const { data: group } = await axios.post<EdgeGroup>(\n buildUrl(),\n requestPayload\n );\n return group;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Failed to create Edge group');\n }\n}\n\nexport function useCreateGroupMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n createEdgeGroup,\n mutationOptions(\n withError('Failed to create Edge group'),\n withInvalidate(queryClient, [queryKeys.base()])\n )\n );\n}\n","import { useField } from 'formik';\nimport _ from 'lodash';\n\nimport { Select } from '@@/form-components/ReactSelect';\nimport {\n Option,\n Option as OptionType,\n} from '@@/form-components/PortainerSelect';\n\nexport function CreatableSelector({\n name,\n options,\n onCreate,\n isLoading,\n}: {\n name: string;\n options: Array<OptionType<number>>;\n onCreate: (label: string) => Promise<number>;\n isLoading: boolean;\n}) {\n const [{ onBlur, value }, , { setValue }] = useField<Array<number>>(name);\n\n const selectedValues = value.reduce(\n (acc: Array<OptionType<number>>, cur) =>\n _.compact([...acc, findOption(cur, options)]),\n []\n );\n\n return (\n <Select\n isCreatable\n options={options}\n value={\n isLoading\n ? [...selectedValues, { label: 'Creating...', value: 0 }]\n : selectedValues\n }\n isMulti\n onCreateOption={handleCreate}\n onChange={handleChange}\n onBlur={onBlur}\n isLoading={isLoading}\n isDisabled={isLoading}\n closeMenuOnSelect={false}\n />\n );\n\n async function handleCreate(label: string) {\n const id = await onCreate(label);\n setValue([...value, id]);\n }\n\n function handleChange(value: ReadonlyArray<{ value: number }>) {\n setValue(value.map((v) => v.value));\n }\n}\n\nfunction findOption<T>(option: T, options: Array<Option<T>>) {\n return options.find((t) => t.value === option);\n}\n","import { notifySuccess } from '@/portainer/services/notifications';\nimport { useCreateGroupMutation } from '@/react/edge/edge-groups/queries/useCreateEdgeGroupMutation';\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\n\nimport { CreatableSelector } from './CreatableSelector';\n\nexport function EdgeGroupsSelector() {\n const createMutation = useCreateGroupMutation();\n\n const edgeGroupsQuery = useEdgeGroups({\n select: (edgeGroups) =>\n edgeGroups\n .filter((g) => !g.Dynamic)\n .map((opt) => ({ label: opt.Name, value: opt.Id })),\n });\n\n if (!edgeGroupsQuery.data) {\n return null;\n }\n\n const edgeGroups = edgeGroupsQuery.data;\n\n return (\n <CreatableSelector\n name=\"edgeGroups\"\n options={edgeGroups}\n onCreate={handleCreate}\n isLoading={createMutation.isLoading}\n />\n );\n\n async function handleCreate(newGroup: string) {\n const group = await createMutation.mutateAsync({\n name: newGroup,\n dynamic: false,\n });\n\n notifySuccess('Edge group created', `Group ${group.Name} created`);\n return group.Id;\n }\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { TagId } from '@/portainer/tags/types';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\n\nimport { EnvironmentId } from '../../types';\nimport { EnvironmentGroup } from '../types';\n\nimport { buildUrl } from './build-url';\nimport { queryKeys } from './query-keys';\n\ninterface CreateGroupPayload {\n name: string;\n description?: string;\n associatedEndpoints?: EnvironmentId[];\n tagIds?: TagId[];\n}\n\nexport async function createGroup(requestPayload: CreateGroupPayload) {\n try {\n const { data: group } = await axios.post<EnvironmentGroup>(\n buildUrl(),\n requestPayload\n );\n return group;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Failed to create group');\n }\n}\n\nexport function useCreateGroupMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n createGroup,\n mutationOptions(\n withError('Failed to create group'),\n withInvalidate(queryClient, [queryKeys.base()])\n )\n );\n}\n","import { useCallback, useState } from 'react';\nimport { useField } from 'formik';\n\nimport { useGroups } from '@/react/portainer/environments/environment-groups/queries';\nimport { EnvironmentGroupId } from '@/react/portainer/environments/environment-groups/types';\nimport { useCreateGroupMutation } from '@/react/portainer/environments/environment-groups/queries/useCreateGroupMutation';\nimport { notifySuccess } from '@/portainer/services/notifications';\n\nimport { Select } from '@@/form-components/ReactSelect';\nimport { Option } from '@@/form-components/PortainerSelect';\n\nimport { FormValues } from '../types';\n\nexport function GroupSelector() {\n const [{ value, onBlur }, , { setValue }] =\n useField<FormValues['group']>('group');\n const createMutation = useCreateGroupMutation();\n\n const groupsQuery = useGroups({\n select: (groups) =>\n groups\n .filter((g) => g.Id !== 1)\n .map((opt) => ({ label: opt.Name, value: opt.Id })),\n });\n\n const { onInputChange, clearInputValue } = useCreateOnBlur({\n options: groupsQuery.data || [],\n setValue,\n createValue: handleCreate,\n });\n\n if (!groupsQuery.data) {\n return null;\n }\n\n const options = groupsQuery.data;\n const selectedValue = value ? options.find((g) => g.value === value) : null;\n\n return (\n <Select\n isCreatable\n options={options}\n value={\n createMutation.isLoading\n ? { label: 'Creating...', value: 0 }\n : selectedValue\n }\n onCreateOption={handleCreate}\n onChange={handleChange}\n onInputChange={onInputChange}\n onBlur={onBlur}\n isLoading={createMutation.isLoading}\n isDisabled={createMutation.isLoading}\n placeholder=\"Select a group\"\n isClearable\n />\n );\n\n function handleCreate(newGroup: string) {\n createMutation.mutate(\n { name: newGroup },\n {\n onSuccess: (data) => {\n setValue(data.Id);\n notifySuccess('Group created', `Group ${data.Name} created`);\n },\n }\n );\n }\n\n function handleChange(value: { value: EnvironmentGroupId } | null) {\n setValue(value ? value.value : 1);\n clearInputValue();\n }\n}\n\nfunction useCreateOnBlur({\n options,\n setValue,\n createValue,\n}: {\n options: Option<number>[];\n setValue: (value: number) => void;\n createValue: (value: string) => void;\n}) {\n const [inputValue, setInputValue] = useState('');\n\n const handleBlur = useCallback(() => {\n const label = inputValue?.trim() || '';\n if (!label) {\n return;\n }\n\n const option = options.find((opt) => opt.label === label);\n if (option) {\n setValue(option.value);\n } else {\n createValue(label);\n }\n setInputValue('');\n }, [createValue, inputValue, options, setValue]);\n\n const handleInputChange = useCallback(\n (inputValue, { action }) => {\n if (action === 'input-change') {\n setInputValue(inputValue);\n }\n if (action === 'input-blur') {\n handleBlur();\n }\n },\n [handleBlur]\n );\n\n const clearInputValue = useCallback(() => {\n setInputValue('');\n }, []);\n\n return {\n onInputChange: handleInputChange,\n clearInputValue,\n };\n}\n","import { notifySuccess } from '@/portainer/services/notifications';\nimport { useCreateTagMutation, useTags } from '@/portainer/tags/queries';\n\nimport { CreatableSelector } from './CreatableSelector';\n\nexport function TagSelector() {\n const createMutation = useCreateTagMutation();\n\n const tagsQuery = useTags({\n select: (tags) => tags.map((opt) => ({ label: opt.Name, value: opt.ID })),\n });\n\n if (!tagsQuery.data) {\n return null;\n }\n\n const tags = tagsQuery.data;\n\n return (\n <CreatableSelector\n name=\"tags\"\n options={tags}\n onCreate={handleCreate}\n isLoading={createMutation.isLoading}\n />\n );\n\n async function handleCreate(newTag: string) {\n const tag = await createMutation.mutateAsync(newTag);\n\n notifySuccess('Tag created', `Tag ${tag.Name} created`);\n\n return tag.ID;\n }\n}\n","import { Environment } from '@/react/portainer/environments/types';\n\nexport function isAssignedToGroup(environment: Environment) {\n return ![0, 1].includes(environment.GroupId);\n}\n","import { Form, Formik } from 'formik';\n\nimport { addPlural } from '@/portainer/helpers/strings';\nimport { useUpdateEnvironmentsRelationsMutation } from '@/react/portainer/environments/queries/useUpdateEnvironmentsRelationsMutation';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { BetaAlert } from '@/react/portainer/environments/update-schedules/common/BetaAlert';\n\nimport { Checkbox } from '@@/form-components/Checkbox';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { OnSubmit, Modal } from '@@/modals';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Button, LoadingButton } from '@@/buttons';\n\nimport { WaitingRoomEnvironment } from '../../types';\n\nimport { GroupSelector, EdgeGroupsSelector, TagSelector } from './Selectors';\nimport { FormValues } from './types';\nimport { isAssignedToGroup } from './utils';\nimport { createPayload } from './createPayload';\n\nexport function AssignmentDialog({\n onSubmit,\n environments,\n}: {\n onSubmit: OnSubmit<boolean>;\n environments: Array<WaitingRoomEnvironment>;\n}) {\n const assignRelationsMutation = useUpdateEnvironmentsRelationsMutation();\n\n const initialValues: FormValues = {\n group: 1,\n overrideGroup: false,\n edgeGroups: [],\n overrideEdgeGroups: false,\n tags: [],\n overrideTags: false,\n };\n\n const hasPreAssignedEdgeGroups = environments.some(\n (e) => e.EdgeGroups?.length > 0\n );\n const hasPreAssignedTags = environments.some((e) => e.TagIds.length > 0);\n const hasPreAssignedGroup = environments.some((e) => isAssignedToGroup(e));\n\n return (\n <Modal\n aria-label=\"Associate and assignment\"\n onDismiss={() => onSubmit()}\n size=\"lg\"\n >\n <Modal.Header\n title={`Associate with assignment (${addPlural(\n environments.length,\n 'selected edge environment'\n )})`}\n />\n <Formik onSubmit={handleSubmit} initialValues={initialValues}>\n {({ values, setFieldValue, errors }) => (\n <Form noValidate>\n <Modal.Body>\n <div>\n <FormControl\n size=\"vertical\"\n label=\"Group\"\n tooltip=\"For managing RBAC with user access\"\n errors={errors.group}\n >\n <GroupSelector />\n\n {hasPreAssignedGroup && (\n <div className=\"mt-2\">\n <Checkbox\n label=\"Override pre-assigned group\"\n id=\"overrideGroup\"\n bold={false}\n checked={values.overrideGroup}\n onChange={(e) =>\n setFieldValue('overrideGroup', e.target.checked)\n }\n />\n </div>\n )}\n </FormControl>\n\n <FormControl\n size=\"vertical\"\n label=\"Edge Groups\"\n tooltip=\"Required to manage edge job and edge stack deployments\"\n errors={errors.edgeGroups}\n >\n <EdgeGroupsSelector />\n\n {hasPreAssignedEdgeGroups && (\n <div className=\"mt-2\">\n <Checkbox\n label=\"Override pre-assigned edge groups\"\n bold={false}\n id=\"overrideEdgeGroups\"\n checked={values.overrideEdgeGroups}\n onChange={(e) =>\n setFieldValue('overrideEdgeGroups', e.target.checked)\n }\n />\n </div>\n )}\n </FormControl>\n\n <div className=\"mb-3\">\n <TextTip color=\"blue\">\n Edge group(s) created here are static only, use tags to\n assign to dynamic edge groups\n </TextTip>\n </div>\n\n <FormControl\n size=\"vertical\"\n label=\"Tags\"\n tooltip=\"Assigning tags will auto populate environments to dynamic edge groups that these tags are assigned to and any ege jobs or stacks that are deployed to that edge group\"\n errors={errors.tags}\n >\n <TagSelector />\n\n {hasPreAssignedTags && (\n <div className=\"mt-2\">\n <Checkbox\n label=\"Override pre-assigned tags\"\n bold={false}\n id=\"overrideTags\"\n checked={values.overrideTags}\n onChange={(e) =>\n setFieldValue('overrideTags', e.target.checked)\n }\n />\n </div>\n )}\n </FormControl>\n </div>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => onSubmit()} color=\"default\">\n Cancel\n </Button>\n <LoadingButton\n isLoading={assignRelationsMutation.isLoading}\n loadingText=\"Associating...\"\n >\n Associate\n </LoadingButton>\n </Modal.Footer>\n <div className=\"mt-2\">\n <BetaAlert\n message={\n <>\n <b>Beta Feature</b> - This feature is currently in beta,\n some functions might not work as expected.\n </>\n }\n />\n </div>\n </Form>\n )}\n </Formik>\n </Modal>\n );\n\n function handleSubmit(values: FormValues) {\n assignRelationsMutation.mutate(\n Object.fromEntries(environments.map((e) => createPayload(e, values))),\n {\n onSuccess: () => {\n notifySuccess('Success', 'Edge environments assigned successfully');\n onSubmit(true);\n },\n }\n );\n }\n}\n","import { EnvironmentRelationsPayload } from '@/react/portainer/environments/queries/useUpdateEnvironmentsRelationsMutation';\n\nimport { WaitingRoomEnvironment } from '../../types';\n\nimport { FormValues } from './types';\nimport { isAssignedToGroup } from './utils';\n\nexport function createPayload(\n environment: WaitingRoomEnvironment,\n values: FormValues\n) {\n const relations: Partial<EnvironmentRelationsPayload> = {};\n\n if (environment.TagIds.length === 0 || values.overrideTags) {\n relations.tags = values.tags;\n }\n\n if (environment.EdgeGroups.length === 0 || values.overrideEdgeGroups) {\n relations.edgeGroups = values.edgeGroups;\n }\n\n if (\n (!isAssignedToGroup(environment) || values.overrideGroup) &&\n values.group\n ) {\n relations.group = values.group;\n }\n\n return [environment.Id, relations];\n}\n","import { Check, CheckCircle, Trash2 } from 'lucide-react';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { useDeleteEnvironmentsMutation } from '@/react/portainer/environments/queries/useDeleteEnvironmentsMutation';\nimport { Environment } from '@/react/portainer/environments/types';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\n\nimport { Button } from '@@/buttons';\nimport { ModalType, openModal } from '@@/modals';\nimport { confirm } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';\n\nimport { useAssociateDeviceMutation, useLicenseOverused } from '../queries';\nimport { WaitingRoomEnvironment } from '../types';\n\nimport { AssignmentDialog } from './AssignmentDialog/AssignmentDialog';\n\nconst overusedTooltip = (\n <>\n Associating devices is disabled as your node count exceeds your license\n limit\n </>\n);\n\nexport function TableActions({\n selectedRows,\n}: {\n selectedRows: WaitingRoomEnvironment[];\n}) {\n const associateMutation = useAssociateDeviceMutation();\n const removeMutation = useDeleteEnvironmentsMutation();\n const licenseOverused = useLicenseOverused(selectedRows.length);\n\n return (\n <>\n <Button\n onClick={() => handleRemoveDevice(selectedRows)}\n disabled={selectedRows.length === 0}\n color=\"dangerlight\"\n icon={Trash2}\n >\n Remove Device\n </Button>\n\n <TooltipWithChildren\n message={\n licenseOverused ? (\n overusedTooltip\n ) : (\n <>\n Associate device(s) and assigning edge groups, group and tags with\n overriding options\n </>\n )\n }\n >\n <span>\n <Button\n onClick={() => handleAssociateAndAssign(selectedRows)}\n disabled={selectedRows.length === 0 || licenseOverused}\n color=\"secondary\"\n icon={CheckCircle}\n >\n Associate and assignment\n </Button>\n </span>\n </TooltipWithChildren>\n\n <TooltipWithChildren\n message={\n licenseOverused ? (\n overusedTooltip\n ) : (\n <>\n Associate device(s) based on their pre-assigned edge groups, group\n and tags\n </>\n )\n }\n >\n <span>\n <Button\n onClick={() => handleAssociateDevice(selectedRows)}\n disabled={selectedRows.length === 0 || licenseOverused}\n icon={Check}\n >\n Associate Device\n </Button>\n </span>\n </TooltipWithChildren>\n </>\n );\n\n async function handleAssociateAndAssign(\n environments: WaitingRoomEnvironment[]\n ) {\n const assigned = await openModal(withReactQuery(AssignmentDialog), {\n environments,\n });\n\n if (!assigned) {\n return;\n }\n\n handleAssociateDevice(environments);\n }\n\n function handleAssociateDevice(devices: Environment[]) {\n associateMutation.mutate(\n devices.map((d) => d.Id),\n {\n onSuccess() {\n notifySuccess('Success', 'Edge devices associated successfully');\n },\n }\n );\n }\n\n async function handleRemoveDevice(devices: Environment[]) {\n const confirmed = await confirm({\n title: 'Are you sure?',\n message:\n \"You're about to remove edge device(s) from waiting room, which will not be shown until next agent startup.\",\n confirmButton: buildConfirmButton('Remove', 'danger'),\n modalType: ModalType.Destructive,\n });\n\n if (!confirmed) {\n return;\n }\n\n removeMutation.mutate(\n devices.map((d) => d.Id),\n {\n onSuccess() {\n notifySuccess('Success', 'Edge devices were hidden successfully');\n },\n }\n );\n }\n}\n","import { useQueryClient, useMutation } from 'react-query';\n\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { deleteEndpoint } from '../environment.service';\n\nexport function useDeleteEnvironmentsMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n (ids: Array<EnvironmentId>) =>\n promiseSequence(ids.map((id) => () => deleteEndpoint(id))),\n mutationOptions(\n withError('Failed to remove environments'),\n withInvalidate(queryClient, [['environments']])\n )\n );\n}\n","import { Datatable as GenericDatatable } from '@@/datatables';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { columns } from './columns';\nimport { Filter } from './Filter';\nimport { TableActions } from './TableActions';\nimport { useEnvironments } from './useEnvironments';\n\nconst storageKey = 'edge-devices-waiting-room';\n\nconst settingsStore = createPersistedStore(storageKey);\n\nexport function Datatable() {\n const tableState = useTableState(settingsStore, storageKey);\n const {\n data: environments,\n totalCount,\n isLoading,\n page,\n setPage,\n } = useEnvironments({\n pageLimit: tableState.pageSize,\n search: tableState.search,\n });\n\n return (\n <GenericDatatable\n settingsManager={tableState}\n columns={columns}\n dataset={environments}\n title=\"Edge Devices Waiting Room\"\n emptyContentLabel=\"No Edge Devices found\"\n renderTableActions={(selectedRows) => (\n <TableActions selectedRows={selectedRows} />\n )}\n isLoading={isLoading}\n isServerSidePagination\n page={page}\n onPageChange={setPage}\n totalCount={totalCount}\n description={<Filter />}\n />\n );\n}\n","import _ from 'lodash';\nimport { useEffect, useMemo, useState } from 'react';\n\nimport { useTags } from '@/portainer/tags/queries';\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\nimport { useGroups } from '@/react/portainer/environments/environment-groups/queries';\nimport { useEnvironmentList } from '@/react/portainer/environments/queries';\nimport { EdgeTypes } from '@/react/portainer/environments/types';\n\nimport { WaitingRoomEnvironment } from '../types';\n\nimport { useFilterStore } from './filter-store';\n\nexport function useEnvironments({\n pageLimit = 10,\n search,\n}: {\n pageLimit: number;\n search: string;\n}) {\n const [page, setPage] = useState(0);\n const filterStore = useFilterStore();\n const edgeGroupsQuery = useEdgeGroups();\n\n const filterByEnvironmentsIds = useMemo(\n () =>\n filterStore.edgeGroups.length\n ? _.compact(\n filterStore.edgeGroups.flatMap(\n (groupId) =>\n edgeGroupsQuery.data?.find((g) => g.Id === groupId)?.Endpoints\n )\n )\n : undefined,\n [edgeGroupsQuery.data, filterStore.edgeGroups]\n );\n\n const query = useMemo(\n () => ({\n pageLimit,\n edgeDeviceUntrusted: true,\n excludeSnapshots: true,\n types: EdgeTypes,\n tagIds: filterStore.tags.length ? filterStore.tags : undefined,\n groupIds: filterStore.groups.length ? filterStore.groups : undefined,\n endpointIds: filterByEnvironmentsIds,\n edgeCheckInPassedSeconds: filterStore.checkIn,\n search,\n }),\n [\n filterByEnvironmentsIds,\n filterStore.checkIn,\n filterStore.groups,\n filterStore.tags,\n pageLimit,\n search,\n ]\n );\n\n useEffect(() => {\n setPage(0);\n }, [query]);\n\n const environmentsQuery = useEnvironmentList({\n page: page + 1,\n ...query,\n });\n\n const groupsQuery = useGroups({\n select: (groups) =>\n Object.fromEntries(groups.map((g) => [g.Id, g.Name] as const)),\n });\n const environmentEdgeGroupsQuery = useEdgeGroups({\n select: (groups) =>\n _.groupBy(\n groups.flatMap((group) => {\n const envs = group.Endpoints;\n return envs.map((id) => ({ id, group: group.Name }));\n }),\n (env) => env.id\n ),\n });\n const tagsQuery = useTags({\n select: (tags) =>\n Object.fromEntries(tags.map((tag) => [tag.ID, tag.Name] as const)),\n });\n\n const envs: Array<WaitingRoomEnvironment> = useMemo(\n () =>\n environmentsQuery.environments.map((env) => ({\n ...env,\n Group: (env.GroupId !== 1 && groupsQuery.data?.[env.GroupId]) || '',\n EdgeGroups:\n environmentEdgeGroupsQuery.data?.[env.Id]?.map((env) => env.group) ||\n [],\n Tags:\n _.compact(env.TagIds?.map((tagId) => tagsQuery.data?.[tagId])) || [],\n })),\n [\n environmentEdgeGroupsQuery.data,\n environmentsQuery.environments,\n groupsQuery.data,\n tagsQuery.data,\n ]\n );\n\n return useMemo(\n () => ({\n data: envs,\n isLoading:\n environmentsQuery.isLoading ||\n groupsQuery.isLoading ||\n environmentEdgeGroupsQuery.isLoading ||\n tagsQuery.isLoading,\n totalCount: environmentsQuery.totalCount,\n page,\n setPage,\n }),\n [\n environmentEdgeGroupsQuery.isLoading,\n environmentsQuery.isLoading,\n environmentsQuery.totalCount,\n envs,\n groupsQuery.isLoading,\n page,\n tagsQuery.isLoading,\n ]\n );\n}\n","import { withLimitToBE } from '@/react/hooks/useLimitToBE';\n\nimport { InformationPanel } from '@@/InformationPanel';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { PageHeader } from '@@/PageHeader';\nimport { Link } from '@@/Link';\nimport { Alert } from '@@/Alert';\n\nimport { Datatable } from './Datatable';\nimport { useLicenseOverused, useUntrustedCount } from './queries';\n\nexport default withLimitToBE(WaitingRoomView);\n\nfunction WaitingRoomView() {\n const untrustedCount = useUntrustedCount();\n const licenseOverused = useLicenseOverused(untrustedCount);\n return (\n <>\n <PageHeader\n title=\"Waiting Room\"\n breadcrumbs={[{ label: 'Waiting Room' }]}\n />\n\n <InformationPanel>\n <TextTip color=\"blue\">\n Only environments generated from the AEEC script will appear here,\n manually added environments and edge devices will bypass the waiting\n room.\n </TextTip>\n </InformationPanel>\n\n {licenseOverused && (\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Alert color=\"warn\">\n Associating all nodes in waiting room will exceed the node limit\n of your current license. Go to{' '}\n <Link to=\"portainer.licenses\">Licenses</Link> page to view the\n current usage.\n </Alert>\n </div>\n </div>\n )}\n\n <Datatable />\n </>\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { withError } from '@/react-tools/react-query';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { EdgeStack } from '../types';\n\nimport { buildUrl } from './buildUrl';\nimport { queryKeys } from './query-keys';\n\nexport function useEdgeStacks<T = Array<EdgeStack>>({\n select,\n /**\n * If set to a number, the query will continuously refetch at this frequency in milliseconds.\n * If set to a function, the function will be executed with the latest data and query to compute a frequency\n * Defaults to `false`.\n */\n refetchInterval,\n}: {\n select?: (stacks: EdgeStack[]) => T;\n refetchInterval?: number | false | ((data?: T) => false | number);\n} = {}) {\n return useQuery(queryKeys.base(), () => getEdgeStacks(), {\n ...withError('Failed loading Edge stack'),\n select,\n refetchInterval,\n });\n}\n\nexport async function getEdgeStacks() {\n try {\n const { data } = await axios.get<EdgeStack[]>(buildUrl());\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import _ from 'lodash';\nimport {\n AlertTriangle,\n CheckCircle,\n type Icon as IconType,\n Loader2,\n XCircle,\n MinusCircle,\n} from 'lucide-react';\n\nimport { useEnvironmentList } from '@/react/portainer/environments/queries';\nimport { isVersionSmaller } from '@/react/common/semver-utils';\n\nimport { Icon, IconMode } from '@@/Icon';\nimport { Tooltip } from '@@/Tip/Tooltip';\n\nimport { DeploymentStatus, EdgeStack, StatusType } from '../../types';\n\nexport function EdgeStackStatus({ edgeStack }: { edgeStack: EdgeStack }) {\n const status = Object.values(edgeStack.Status);\n const lastStatus = _.compact(status.map((s) => _.last(s.Status)));\n\n const environmentsQuery = useEnvironmentList({ edgeStackId: edgeStack.Id });\n\n if (environmentsQuery.isLoading) {\n return null;\n }\n\n const hasOldVersion = environmentsQuery.environments.some((env) =>\n isVersionSmaller(env.Agent.Version, '2.19.0')\n );\n\n const { icon, label, mode, spin, tooltip } = getStatus(\n edgeStack.NumDeployments,\n lastStatus,\n hasOldVersion\n );\n\n return (\n <div className=\"mx-auto inline-flex items-center gap-2\">\n {icon && <Icon icon={icon} spin={spin} mode={mode} />}\n {label}\n {tooltip && <Tooltip message={tooltip} />}\n </div>\n );\n}\n\nfunction getStatus(\n numDeployments: number,\n envStatus: Array<DeploymentStatus>,\n hasOldVersion: boolean\n): {\n label: string;\n icon?: IconType;\n spin?: boolean;\n mode?: IconMode;\n tooltip?: string;\n} {\n if (!numDeployments || hasOldVersion) {\n return {\n label: 'Unavailable',\n icon: MinusCircle,\n mode: 'secondary',\n tooltip: getUnavailableTooltip(),\n };\n }\n\n if (envStatus.length < numDeployments) {\n return {\n label: 'Deploying',\n icon: Loader2,\n spin: true,\n mode: 'primary',\n };\n }\n\n const allFailed = envStatus.every((s) => s.Type === StatusType.Error);\n\n if (allFailed) {\n return {\n label: 'Failed',\n icon: XCircle,\n mode: 'danger',\n };\n }\n\n const allRunning = envStatus.every(\n (s) =>\n s.Type === StatusType.Running ||\n (s.Type === StatusType.DeploymentReceived && hasOldVersion)\n );\n\n if (allRunning) {\n return {\n label: 'Running',\n icon: CheckCircle,\n mode: 'success',\n };\n }\n\n const hasDeploying = envStatus.some((s) => s.Type === StatusType.Deploying);\n const hasRunning = envStatus.some((s) => s.Type === StatusType.Running);\n const hasFailed = envStatus.some((s) => s.Type === StatusType.Error);\n\n if (hasRunning && hasFailed && !hasDeploying) {\n return {\n label: 'Partially Running',\n icon: AlertTriangle,\n mode: 'warning',\n };\n }\n\n return {\n label: 'Deploying',\n icon: Loader2,\n spin: true,\n mode: 'primary',\n };\n\n function getUnavailableTooltip() {\n if (!numDeployments) {\n return 'Your edge stack is currently unavailable due to the absence of an available environment in your edge group';\n }\n\n if (hasOldVersion) {\n return 'Please note that the new status feature for the Edge stack is only available for Edge Agent versions 2.19.0 and above. To access the status of your edge stack, it is essential to upgrade your Edge Agent to a corresponding version that is compatible with your Portainer server.';\n }\n\n return '';\n }\n}\n","import clsx from 'clsx';\nimport { ReactNode } from 'react';\n\nimport { Link } from '@@/Link';\nimport { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';\n\nimport { EdgeStack, StatusType } from '../../types';\n\nexport function DeploymentCounterLink({\n count,\n total,\n type,\n stackId,\n}: {\n count: number;\n total: number;\n type: StatusType;\n stackId: EdgeStack['Id'];\n}) {\n return (\n <div className=\"w-full text-center\">\n <Link\n className=\"hover:no-underline\"\n to=\"edge.stacks.edit\"\n params={{ stackId, tab: 1, status: type }}\n >\n <DeploymentCounter count={count} type={type} total={total} />\n </Link>\n </div>\n );\n}\n\nexport function DeploymentCounter({\n count,\n total,\n type,\n}: {\n count: number;\n total: number;\n type?: StatusType;\n}) {\n return (\n <TooltipWithChildren message={getTooltip(count, total, type)}>\n <div className=\"h-2 w-full overflow-hidden rounded-lg bg-gray-4\">\n <div\n style={{ width: `${(count / total) * 100}%` }}\n className={clsx('h-full rounded-lg', {\n 'bg-success-7': type === StatusType.Running,\n 'bg-error-7': type === StatusType.Error,\n 'bg-blue-9': type === StatusType.Acknowledged,\n 'bg-yellow-7': type === StatusType.ImagesPulled,\n })}\n />\n </div>\n </TooltipWithChildren>\n );\n}\n\nfunction getTooltip(count: number, total: number, type?: StatusType) {\n const label = getLabel(type);\n return `${count} of ${total} ${label}`;\n\n function getLabel(type?: StatusType): ReactNode {\n switch (type) {\n case StatusType.Running:\n return 'deployments running';\n case StatusType.DeploymentReceived:\n return 'deployments received';\n case StatusType.Error:\n return 'deployments failed';\n case StatusType.Acknowledged:\n return 'deployments acknowledged';\n case StatusType.ImagesPulled:\n return 'images pre-pulled';\n default:\n return '';\n }\n }\n}\n","import { createColumnHelper } from '@tanstack/react-table';\nimport _ from 'lodash';\n\nimport { isoDateFromTimestamp } from '@/portainer/filters/filters';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { buildNameColumn } from '@@/datatables/NameCell';\nimport { Link } from '@@/Link';\n\nimport { StatusType } from '../../types';\n\nimport { EdgeStackStatus } from './EdgeStacksStatus';\nimport { DecoratedEdgeStack } from './types';\nimport { DeploymentCounter } from './DeploymentCounter';\n\nconst columnHelper = createColumnHelper<DecoratedEdgeStack>();\n\nexport const columns = _.compact([\n buildNameColumn<DecoratedEdgeStack>(\n 'Name',\n 'Id',\n 'edge.stacks.edit',\n 'stackId'\n ),\n columnHelper.accessor(\n (item) => item.aggregatedStatus[StatusType.Acknowledged] || 0,\n {\n header: 'Acknowledged',\n enableSorting: false,\n enableHiding: false,\n cell: ({ getValue, row }) => (\n <DeploymentCounter\n count={getValue()}\n type={StatusType.Acknowledged}\n total={row.original.NumDeployments}\n />\n ),\n meta: {\n className: '[&>*]:justify-center',\n },\n }\n ),\n isBE &&\n columnHelper.accessor(\n (item) => item.aggregatedStatus[StatusType.ImagesPulled] || 0,\n {\n header: 'Images pre-pulled',\n cell: ({ getValue, row: { original: item } }) => {\n if (!item.PrePullImage) {\n return <div className=\"text-center\">-</div>;\n }\n\n return (\n <DeploymentCounter\n count={getValue()}\n type={StatusType.ImagesPulled}\n total={item.NumDeployments}\n />\n );\n },\n enableSorting: false,\n enableHiding: false,\n meta: {\n className: '[&>*]:justify-center',\n },\n }\n ),\n columnHelper.accessor(\n (item) => item.aggregatedStatus[StatusType.DeploymentReceived] || 0,\n {\n header: 'Deployments received',\n cell: ({ getValue, row }) => (\n <DeploymentCounter\n count={getValue()}\n type={StatusType.Running}\n total={row.original.NumDeployments}\n />\n ),\n enableSorting: false,\n enableHiding: false,\n meta: {\n className: '[&>*]:justify-center',\n },\n }\n ),\n columnHelper.accessor(\n (item) => item.aggregatedStatus[StatusType.Error] || 0,\n {\n header: 'Deployments failed',\n cell: ({ getValue, row }) => {\n const count = getValue();\n\n return (\n <div className=\"flex items-center gap-2\">\n <DeploymentCounter\n count={count}\n type={StatusType.Error}\n total={row.original.NumDeployments}\n />\n {count > 0 && (\n <Link\n className=\"hover:no-underline\"\n to=\"edge.stacks.edit\"\n params={{\n stackId: row.original.Id,\n tab: 1,\n status: StatusType.Error,\n }}\n >\n ({count}/{row.original.NumDeployments})\n </Link>\n )}\n </div>\n );\n },\n enableSorting: false,\n enableHiding: false,\n meta: {\n className: '[&>*]:justify-center',\n },\n }\n ),\n columnHelper.accessor('Status', {\n header: 'Status',\n cell: ({ row }) => (\n <div className=\"w-full text-center\">\n <EdgeStackStatus edgeStack={row.original} />\n </div>\n ),\n enableSorting: false,\n enableHiding: false,\n meta: {\n className: '[&>*]:justify-center',\n },\n }),\n columnHelper.accessor('CreationDate', {\n header: 'Creation Date',\n cell: ({ getValue }) => isoDateFromTimestamp(getValue()),\n enableHiding: false,\n }),\n isBE &&\n columnHelper.accessor(\n (item) =>\n item.GitConfig ? item.GitConfig.ConfigHash : item.StackFileVersion,\n {\n header: 'Target Version',\n enableSorting: false,\n cell: ({ row: { original: item } }) => {\n if (item.GitConfig) {\n return (\n <div className=\"text-center\">\n <a\n target=\"_blank\"\n href={`${item.GitConfig.URL}/commit/${item.GitConfig.ConfigHash}`}\n rel=\"noreferrer\"\n >\n {item.GitConfig.ConfigHash.slice(0, 7)}\n </a>\n </div>\n );\n }\n\n return <div className=\"text-center\">{item.StackFileVersion}</div>;\n },\n meta: {\n className: '[&>*]:justify-center',\n },\n }\n ),\n]);\n","import { Table } from '@tanstack/react-table';\n\nimport { ColumnVisibilityMenu } from '@@/datatables/ColumnVisibilityMenu';\nimport { TableSettingsMenu } from '@@/datatables';\nimport { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';\n\nimport { DecoratedEdgeStack } from './types';\nimport { TableSettings } from './store';\n\nexport function TableSettingsMenus({\n tableInstance,\n tableState,\n}: {\n tableInstance: Table<DecoratedEdgeStack>;\n tableState: TableSettings;\n}) {\n const columnsToHide = tableInstance\n .getAllColumns()\n .filter((col) => col.getCanHide());\n\n return (\n <>\n {columnsToHide && columnsToHide.length > 0 && (\n <ColumnVisibilityMenu<DecoratedEdgeStack>\n columns={columnsToHide}\n onChange={(hiddenColumns) => {\n tableState.setHiddenColumns(hiddenColumns);\n tableInstance.setColumnVisibility(\n Object.fromEntries(hiddenColumns.map((col) => [col, false]))\n );\n }}\n value={tableState.hiddenColumns}\n />\n )}\n <TableSettingsMenu>\n <TableSettingsMenuAutoRefresh\n value={tableState.autoRefreshRate}\n onChange={(value) => tableState.setAutoRefreshRate(value)}\n />\n </TableSettingsMenu>\n </>\n );\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\n\nimport { EdgeStack } from '../../types';\nimport { buildUrl } from '../../queries/buildUrl';\nimport { queryKeys } from '../../queries/query-keys';\n\nexport function useDeleteEdgeStacksMutation() {\n const queryClient = useQueryClient();\n return useMutation(\n (edgeStackIds: Array<EdgeStack['Id']>) =>\n promiseSequence(\n edgeStackIds.map((edgeStackId) => () => deleteEdgeStack(edgeStackId))\n ),\n mutationOptions(\n withError('Unable to delete Edge stack(s)'),\n withInvalidate(queryClient, [queryKeys.base()])\n )\n );\n}\n\nasync function deleteEdgeStack(id: EdgeStack['Id']) {\n try {\n await axios.delete(buildUrl(id));\n } catch (e) {\n throw parseAxiosError(e, 'Unable to delete edge stack');\n }\n}\n","import { Trash2, Plus } from 'lucide-react';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\n\nimport { Button } from '@@/buttons';\nimport { confirmDestructive } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { Link } from '@@/Link';\n\nimport { useDeleteEdgeStacksMutation } from './useDeleteEdgeStacksMutation';\nimport { DecoratedEdgeStack } from './types';\n\nexport function TableActions({\n selectedItems,\n}: {\n selectedItems: Array<DecoratedEdgeStack>;\n}) {\n const removeMutation = useDeleteEdgeStacksMutation();\n\n return (\n <div className=\"flex items-center gap-2\">\n <Button\n color=\"dangerlight\"\n disabled={selectedItems.length === 0}\n onClick={() => handleRemove(selectedItems)}\n icon={Trash2}\n className=\"!m-0\"\n >\n Remove\n </Button>\n\n <Button\n as={Link}\n props={{ to: 'edge.stacks.new' }}\n icon={Plus}\n className=\"!m-0\"\n data-cy=\"edgeStack-addStackButton\"\n >\n Add stack\n </Button>\n </div>\n );\n\n async function handleRemove(selectedItems: Array<DecoratedEdgeStack>) {\n const confirmed = await confirmDestructive({\n title: 'Are you sure?',\n message: 'Are you sure you want to remove the selected Edge stack(s)?',\n confirmButton: buildConfirmButton('Remove', 'danger'),\n });\n\n if (!confirmed) {\n return;\n }\n\n const ids = selectedItems.map((item) => item.Id);\n removeMutation.mutate(ids, {\n onSuccess: () => {\n notifySuccess('Success', 'Edge stack(s) removed');\n },\n });\n }\n}\n","import { Layers } from 'lucide-react';\n\nimport { Datatable } from '@@/datatables';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { useEdgeStacks } from '../../queries/useEdgeStacks';\nimport { EdgeStack, StatusType } from '../../types';\n\nimport { createStore } from './store';\nimport { columns } from './columns';\nimport { DecoratedEdgeStack } from './types';\nimport { TableSettingsMenus } from './TableSettingsMenus';\nimport { TableActions } from './TableActions';\n\nconst tableKey = 'edge-stacks';\n\nconst settingsStore = createStore(tableKey);\n\nexport function EdgeStacksDatatable() {\n const tableState = useTableState(settingsStore, tableKey);\n const edgeStacksQuery = useEdgeStacks<Array<DecoratedEdgeStack>>({\n select: (edgeStacks) =>\n edgeStacks.map((edgeStack) => ({\n ...edgeStack,\n aggregatedStatus: aggregateStackStatus(edgeStack.Status),\n })),\n refetchInterval: tableState.autoRefreshRate * 1000,\n });\n\n return (\n <Datatable\n title=\"Edge Stacks\"\n titleIcon={Layers}\n columns={columns}\n dataset={edgeStacksQuery.data || []}\n settingsManager={tableState}\n emptyContentLabel=\"No stack available.\"\n isLoading={edgeStacksQuery.isLoading}\n renderTableSettings={(tableInstance) => (\n <TableSettingsMenus\n tableInstance={tableInstance}\n tableState={tableState}\n />\n )}\n renderTableActions={(selectedItems) => (\n <TableActions selectedItems={selectedItems} />\n )}\n />\n );\n}\n\nfunction aggregateStackStatus(stackStatus: EdgeStack['Status']) {\n const aggregateStatus: Partial<Record<StatusType, number>> = {};\n return Object.values(stackStatus).reduce(\n (acc, envStatus) =>\n envStatus.Status.reduce((acc, status) => {\n const { Type } = status;\n acc[Type] = (acc[Type] || 0) + 1;\n return acc;\n }, acc),\n aggregateStatus\n );\n}\n","import {\n BasicTableSettings,\n RefreshableTableSettings,\n SettableColumnsTableSettings,\n createPersistedStore,\n hiddenColumnsSettings,\n refreshableSettings,\n} from '@@/datatables/types';\n\nexport interface TableSettings\n extends BasicTableSettings,\n SettableColumnsTableSettings,\n RefreshableTableSettings {}\n\nexport function createStore(storageKey: string) {\n return createPersistedStore<TableSettings>(storageKey, 'name', (set) => ({\n ...hiddenColumnsSettings(set),\n ...refreshableSettings(set),\n }));\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { WaitingRoomView } from '@/react/edge/edge-devices/WaitingRoomView';\nimport { ListView } from '@/react/edge/edge-stacks/ListView';\n\nexport const viewsModule = angular\n .module('portainer.edge.react.views', [])\n .component(\n 'waitingRoomView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(WaitingRoomView))), [])\n )\n .component(\n 'edgeStacksView',\n r2a(withUIRouter(withCurrentUser(ListView)), [])\n ).name;\n","import { useQueryClient } from 'react-query';\n\nimport { PageHeader } from '@@/PageHeader';\n\nimport { queryKeys } from '../queries/query-keys';\n\nimport { EdgeStacksDatatable } from './EdgeStacksDatatable';\n\nexport function ListView() {\n const queryClient = useQueryClient();\n\n return (\n <>\n <PageHeader\n title=\"Edge Stacks list\"\n breadcrumbs=\"Edge Stacks\"\n reload\n onReload={() => queryClient.invalidateQueries(queryKeys.base())}\n />\n\n <EdgeStacksDatatable />\n </>\n );\n}\n","import angular from 'angular';\n\nimport { componentsModule } from './components';\nimport { viewsModule } from './views';\n\nexport const reactModule = angular.module('portainer.edge.react', [\n viewsModule,\n componentsModule,\n]).name;\n","import angular from 'angular';\n\nimport edgeStackModule from './views/edge-stacks';\nimport { reactModule } from './react';\n\nangular\n .module('portainer.edge', [edgeStackModule, reactModule])\n\n .config(function config($stateRegistryProvider) {\n const edge = {\n name: 'edge',\n url: '/edge',\n parent: 'root',\n abstract: true,\n };\n\n const groups = {\n name: 'edge.groups',\n url: '/groups',\n views: {\n 'content@': {\n component: 'edgeGroupsView',\n },\n },\n };\n\n const groupsNew = {\n name: 'edge.groups.new',\n url: '/new',\n views: {\n 'content@': {\n component: 'createEdgeGroupView',\n },\n },\n };\n\n const groupsEdit = {\n name: 'edge.groups.edit',\n url: '/:groupId',\n views: {\n 'content@': {\n component: 'editEdgeGroupView',\n },\n },\n };\n\n const stacks = {\n name: 'edge.stacks',\n url: '/stacks',\n views: {\n 'content@': {\n component: 'edgeStacksView',\n },\n },\n };\n\n const stacksNew = {\n name: 'edge.stacks.new',\n url: '/new',\n views: {\n 'content@': {\n component: 'createEdgeStackView',\n },\n },\n };\n\n const stacksEdit = {\n name: 'edge.stacks.edit',\n url: '/:stackId?tab&status',\n views: {\n 'content@': {\n component: 'editEdgeStackView',\n },\n },\n params: {\n status: {\n dynamic: true,\n },\n },\n };\n\n const edgeJobs = {\n name: 'edge.jobs',\n url: '/jobs',\n views: {\n 'content@': {\n component: 'edgeJobsView',\n },\n },\n };\n\n const edgeJob = {\n name: 'edge.jobs.job',\n url: '/:id',\n views: {\n 'content@': {\n component: 'edgeJobView',\n },\n },\n params: {\n tab: 0,\n },\n };\n\n const edgeJobCreation = {\n name: 'edge.jobs.new',\n url: '/new',\n views: {\n 'content@': {\n component: 'createEdgeJobView',\n },\n },\n };\n\n $stateRegistryProvider.register({\n name: 'edge.devices',\n url: '/devices',\n abstract: true,\n });\n\n if (process.env.PORTAINER_EDITION === 'BE') {\n $stateRegistryProvider.register({\n name: 'edge.devices.waiting-room',\n url: '/waiting-room',\n views: {\n 'content@': {\n component: 'waitingRoomView',\n },\n },\n });\n }\n\n $stateRegistryProvider.register(edge);\n\n $stateRegistryProvider.register(groups);\n $stateRegistryProvider.register(groupsNew);\n $stateRegistryProvider.register(groupsEdit);\n\n $stateRegistryProvider.register(stacks);\n $stateRegistryProvider.register(stacksNew);\n $stateRegistryProvider.register(stacksEdit);\n\n $stateRegistryProvider.register(edgeJobs);\n $stateRegistryProvider.register(edgeJob);\n $stateRegistryProvider.register(edgeJobCreation);\n });\n","import angular from 'angular';\n\nexport class AssociatedEndpointsDatatableController {\n /* @ngInject */\n constructor($scope, $controller, DatatableService, PaginationService) {\n this.extendGenericController($controller, $scope);\n this.DatatableService = DatatableService;\n this.PaginationService = PaginationService;\n\n this.state = Object.assign(this.state, {\n orderBy: this.orderBy,\n loading: true,\n filteredDataSet: [],\n totalFilteredDataset: 0,\n pageNumber: 1,\n });\n\n this.onPageChange = this.onPageChange.bind(this);\n this.paginationChanged = this.paginationChanged.bind(this);\n }\n\n extendGenericController($controller, $scope) {\n // extending the controller overrides the current controller functions\n const $onInit = this.$onInit.bind(this);\n const changePaginationLimit = this.changePaginationLimit.bind(this);\n const onTextFilterChange = this.onTextFilterChange.bind(this);\n angular.extend(this, $controller('GenericDatatableController', { $scope }));\n this.$onInit = $onInit;\n this.changePaginationLimit = changePaginationLimit;\n this.onTextFilterChange = onTextFilterChange;\n }\n\n $onInit() {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n var storedOrder = this.DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = this.DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = this.DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n this.paginationChanged();\n }\n\n $onChanges({ updateKey }) {\n if (updateKey.currentValue && !updateKey.isFirstChange()) {\n this.paginationChanged();\n }\n }\n\n onPageChange(newPageNumber) {\n this.state.pageNumber = newPageNumber;\n this.paginationChanged();\n }\n\n /**\n * Overridden\n */\n changePaginationLimit() {\n this.PaginationService.setPaginationLimit(this.tableKey, this.state.paginatedItemLimit);\n this.paginationChanged();\n }\n\n /**\n * Overridden\n */\n onTextFilterChange() {\n var filterValue = this.state.textFilter;\n this.DatatableService.setDataTableTextFilters(this.tableKey, filterValue);\n this.paginationChanged();\n }\n\n paginationChanged() {\n this.state.loading = true;\n this.state.filteredDataSet = [];\n const start = (this.state.pageNumber - 1) * this.state.paginatedItemLimit + 1;\n this.retrievePage(start, this.state.paginatedItemLimit, this.state.textFilter)\n .then((data) => {\n this.state.filteredDataSet = data.endpoints;\n this.state.totalFilteredDataSet = data.totalCount;\n })\n .finally(() => {\n this.state.loading = false;\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./associatedEndpointsDatatable.html');\n\nimport angular from 'angular';\n\nimport { AssociatedEndpointsDatatableController } from './associatedEndpointsDatatableController';\n\nangular.module('portainer.edge').component('associatedEndpointsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: AssociatedEndpointsDatatableController,\n bindings: {\n titleText: '@',\n titleIcon: '@',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n retrievePage: '<',\n updateKey: '<',\n },\n});\n","import { Calendar, Edit } from 'lucide-react';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport const cronMethodOptions: ReadonlyArray<BoxSelectorOption<string>> = [\n {\n id: 'config_basic',\n value: 'basic',\n icon: Calendar,\n iconType: 'badge',\n label: 'Basic configuration',\n description: 'Select date from calendar',\n },\n {\n id: 'config_advanced',\n value: 'advanced',\n icon: Edit,\n iconType: 'badge',\n label: 'Advanced configuration',\n description: 'Write your own cron rule',\n },\n] as const;\n","import moment from 'moment';\nimport { editor, upload } from '@@/BoxSelector/common-options/build-methods';\n\nimport { cronMethodOptions } from '@/react/edge/edge-jobs/CreateView/cron-method-options';\n\nexport class EdgeJobFormController {\n /* @ngInject */\n constructor($async, $scope) {\n this.$scope = $scope;\n this.$async = $async;\n\n this.cronMethods = cronMethodOptions;\n this.buildMethods = [editor, upload];\n\n this.state = {\n formValidationError: '',\n };\n\n this.scheduleValues = [\n {\n displayed: 'Every hour',\n cron: '0 * * * *',\n },\n {\n displayed: 'Every 2 hours',\n cron: '0 */2 * * *',\n },\n {\n displayed: 'Every day',\n cron: '0 0 * * *',\n },\n ];\n\n this.formValues = {\n datetime: moment(),\n scheduleValue: this.scheduleValues[0],\n cronMethod: 'basic',\n method: 'editor',\n };\n\n // see https://regexr.com/573i2\n this.cronRegex =\n /(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\\d+(ns|us|µs|ms|s|m|h))+)|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ){4,6}((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*))/;\n\n this.action = this.action.bind(this);\n this.editorUpdate = this.editorUpdate.bind(this);\n this.onChangeEnvironments = this.onChangeEnvironments.bind(this);\n this.onChangeGroups = this.onChangeGroups.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onCronMethodChange = this.onCronMethodChange.bind(this);\n this.onBuildMethodChange = this.onBuildMethodChange.bind(this);\n }\n\n onChange(values) {\n this.$scope.$evalAsync(() => {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n });\n }\n\n onBuildMethodChange(value) {\n this.onChange({ method: value });\n }\n\n onCronMethodChange(value) {\n this.onChange({ cronMethod: value });\n }\n\n onChangeModel(model) {\n const defaultTime = moment().add('hours', 1);\n this.formValues = {\n datetime: model.CronExpression ? cronToDatetime(model.CronExpression, defaultTime) : defaultTime,\n scheduleValue: this.formValues.scheduleValue,\n cronMethod: model.Recurring ? 'advanced' : 'basic',\n method: this.formValues.method,\n };\n }\n\n onChangeGroups(groups) {\n return this.$scope.$evalAsync(() => {\n this.model.EdgeGroups = groups ? groups : [];\n });\n }\n\n action() {\n this.state.formValidationError = '';\n\n if (this.formValues.method === 'editor' && this.model.FileContent === '') {\n this.state.formValidationError = 'Script file content must not be empty';\n return;\n }\n\n if (this.formValues.cronMethod === 'basic') {\n if (!this.model.Recurring && (this.formValues.datetime === undefined || !this.formValues.datetime.isValid())) {\n this.state.formValidationError = 'Schedule date must not be empty';\n return;\n } else if (!this.model.Recurring) {\n this.model.CronExpression = datetimeToCron(this.formValues.datetime);\n } else {\n this.model.CronExpression = this.formValues.scheduleValue.cron;\n }\n } else {\n this.model.Recurring = true;\n }\n\n this.formAction(this.formValues.method);\n }\n\n editorUpdate(value) {\n this.model.FileContent = value;\n this.isEditorDirty = true;\n }\n\n onChangeEnvironments(value) {\n return this.$scope.$evalAsync(() => {\n this.model.Endpoints = value;\n });\n }\n\n $onInit() {\n this.onChangeModel(this.model);\n }\n}\n\nfunction cronToDatetime(cron, defaultTime = moment()) {\n var strings = cron.split(' ');\n if (strings.length > 4) {\n strings = strings.slice(0, 4);\n } else {\n return defaultTime;\n }\n return moment(cron, 'm H D M');\n}\n\nfunction datetimeToCron(datetime) {\n var date = moment(datetime);\n return [date.minutes(), date.hours(), date.date(), date.month() + 1, '*'].join(' ');\n}\n","const autoNgTemplateLoaderTemplate1 = require('./edgeJobForm.html');\n\nimport angular from 'angular';\n\nimport { EdgeJobFormController } from './edgeJobFormController';\n\nangular.module('portainer.edge').component('edgeJobForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EdgeJobFormController,\n bindings: {\n model: '=',\n groups: '<',\n tags: '<',\n edgeGroups: '<',\n addLabelAction: '<',\n removeLabelAction: '<',\n formAction: '<',\n formActionLabel: '@',\n actionInProgress: '<',\n isEditorDirty: '=',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\n\nexport class EdgeJobResultsDatatableController {\n /* @ngInject */\n constructor($controller, $scope, $state) {\n this.$state = $state;\n angular.extend(this, $controller('GenericDatatableController', { $scope }));\n }\n\n collectLogs(...args) {\n this.settings.repeater.autoRefresh = true;\n this.settings.repeater.refreshRate = '5';\n this.onSettingsRepeaterChange();\n this.onCollectLogsClick(...args);\n }\n\n $onChanges({ dataset }) {\n if (dataset && dataset.currentValue) {\n this.onDatasetChange(dataset.currentValue);\n }\n }\n\n onDatasetChange(dataset) {\n const anyCollecting = _.some(dataset, (item) => item.LogsStatus === 2);\n this.settings.repeater.autoRefresh = anyCollecting;\n this.settings.repeater.refreshRate = '5';\n this.onSettingsRepeaterChange();\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./edgeJobResultsDatatable.html');\n\nimport angular from 'angular';\n\nimport { EdgeJobResultsDatatableController } from './edgeJobResultsDatatableController';\nimport './edgeJobResultsDatatable.css';\n\nangular.module('portainer.edge').component('edgeJobResultsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EdgeJobResultsDatatableController,\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n onDownloadLogsClick: '<',\n onCollectLogsClick: '<',\n onClearLogsClick: '<',\n refreshCallback: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./edgeJobsDatatable.html');\n\nimport angular from 'angular';\n\nangular.module('portainer.edge').component('edgeJobsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n },\n});\n","const statusMap = {\n 1: 'ok',\n 2: 'error',\n 3: 'acknowledged',\n};\n\nexport class EdgeStackStatusController {\n $onChanges({ stackStatus }) {\n if (!stackStatus || !stackStatus.currentValue) {\n return;\n }\n const aggregateStatus = { ok: 0, error: 0, acknowledged: 0 };\n for (let endpointId in stackStatus.currentValue) {\n const endpoint = stackStatus.currentValue[endpointId];\n const endpointStatusKey = statusMap[endpoint.Type];\n aggregateStatus[endpointStatusKey]++;\n }\n this.status = aggregateStatus;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./edgeStackStatus.html');\n\nimport angular from 'angular';\n\nimport { EdgeStackStatusController } from './edgeStackStatusController';\nimport './edgeStackStatus.css';\n\nangular.module('portainer.edge').component('edgeStackStatus', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EdgeStackStatusController,\n bindings: {\n stackStatus: '<',\n },\n});\n","import { Tag } from 'lucide-react';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport const tagOptions: ReadonlyArray<BoxSelectorOption<boolean>> = [\n {\n id: 'or-selector',\n value: true,\n label: 'Partial Match',\n description:\n 'Associate any environment matching at least one of the selected tags',\n icon: Tag,\n iconType: 'badge',\n },\n {\n id: 'and-selector',\n value: false,\n label: 'Full Match',\n description: 'Associate any environment matching all of the selected tags',\n icon: Tag,\n iconType: 'badge',\n },\n];\n","import { List, Tag } from 'lucide-react';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport const groupTypeOptions: ReadonlyArray<BoxSelectorOption<boolean>> = [\n {\n id: 'static-group',\n value: false,\n label: 'Static',\n description: 'Manually select Edge environments',\n icon: List,\n iconType: 'badge',\n },\n {\n id: 'dynamic-group',\n value: true,\n label: 'Dynamic',\n description: 'Automatically associate environments via tags',\n icon: Tag,\n iconType: 'badge',\n },\n] as const;\n","import { confirmDestructive } from '@@/modals/confirm';\nimport { EdgeTypes } from '@/react/portainer/environments/types';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { tagOptions } from '@/react/edge/edge-groups/CreateView/tag-options';\nimport { groupTypeOptions } from '@/react/edge/edge-groups/CreateView/group-type-options';\n\nexport class EdgeGroupFormController {\n /* @ngInject */\n constructor($async, $scope) {\n this.$async = $async;\n this.$scope = $scope;\n\n this.groupTypeOptions = groupTypeOptions;\n this.tagOptions = tagOptions;\n\n this.dynamicQuery = {\n types: EdgeTypes,\n tagIds: [],\n tagsPartialMatch: false,\n };\n\n this.onChangeEnvironments = this.onChangeEnvironments.bind(this);\n this.onChangeTags = this.onChangeTags.bind(this);\n this.onChangeDynamic = this.onChangeDynamic.bind(this);\n this.onChangeModel = this.onChangeModel.bind(this);\n this.onChangePartialMatch = this.onChangePartialMatch.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n\n $scope.$watch(\n () => this.model,\n () => {\n if (this.model.Dynamic) {\n this.dynamicQuery = {\n types: EdgeTypes,\n tagIds: this.model.TagIds,\n tagsPartialMatch: this.model.PartialMatch,\n };\n }\n },\n true\n );\n }\n\n onChangeModel(model) {\n return this.$scope.$evalAsync(() => {\n this.model = {\n ...this.model,\n ...model,\n };\n });\n }\n\n onChangePartialMatch(value) {\n return this.onChangeModel({ PartialMatch: value });\n }\n\n onChangeDynamic(value) {\n this.onChangeModel({ Dynamic: value });\n }\n\n onChangeTags(value) {\n this.onChangeModel({ TagIds: value });\n }\n\n onChangeEnvironments(value, meta) {\n return this.$async(async () => {\n if (meta.type === 'remove' && this.pageType === 'edit') {\n const confirmed = await confirmDestructive({\n title: 'Confirm action',\n message: 'Removing the environment from this group will remove its corresponding edge stacks',\n confirmButton: buildConfirmButton('Confirm'),\n });\n\n if (!confirmed) {\n return;\n }\n }\n\n this.onChangeModel({ Endpoints: value });\n });\n }\n\n handleSubmit() {\n this.formAction(this.model);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./groupForm.html');\n\nimport angular from 'angular';\n\nimport { EdgeGroupFormController } from './groupFormController';\n\nangular.module('portainer.edge').component('edgeGroupForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EdgeGroupFormController,\n bindings: {\n model: '<',\n formActionLabel: '@',\n formAction: '<',\n actionInProgress: '<',\n loaded: '<',\n pageType: '@',\n },\n});\n","import angular from 'angular';\n\nexport class EdgeGroupsDatatableController {\n /* @ngInject */\n constructor($scope, $controller) {\n const allowSelection = this.allowSelection;\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n this.allowSelection = allowSelection.bind(this);\n }\n\n /**\n * Override this method to allow/deny selection\n */\n allowSelection(item) {\n return !item.HasEdgeStack;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./groupsDatatable.html');\n\nimport angular from 'angular';\n\nimport { EdgeGroupsDatatableController } from './groupsDatatableController';\n\nangular.module('portainer.edge').component('edgeGroupsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EdgeGroupsDatatableController,\n bindings: {\n dataset: '<',\n titleIcon: '@',\n tableKey: '@',\n orderBy: '@',\n removeAction: '<',\n updateAction: '<',\n reverseOrder: '<',\n },\n});\n","import angular from 'angular';\n\nangular.module('portainer.edge').factory('EdgeGroups', function EdgeGroupsFactory($resource, API_ENDPOINT_EDGE_GROUPS) {\n return $resource(\n API_ENDPOINT_EDGE_GROUPS + '/:id/:action',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true },\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'PUT', params: { id: '@Id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n});\n","angular.module('portainer.edge').factory('EdgeJobResults', EdgeJobResultsFactory);\n\nfunction EdgeJobResultsFactory($resource, API_ENDPOINT_EDGE_JOBS) {\n return $resource(\n API_ENDPOINT_EDGE_JOBS + '/:id/tasks/:taskId/:action',\n {},\n {\n query: { method: 'GET', isArray: true, params: { id: '@id' } },\n logFile: { method: 'GET', params: { id: '@id', taskId: '@taskId', action: 'logs' } },\n clearLogs: { method: 'DELETE', params: { id: '@id', taskId: '@taskId', action: 'logs' } },\n collectLogs: { method: 'POST', params: { id: '@id', taskId: '@taskId', action: 'logs' } },\n }\n );\n}\n","angular.module('portainer.edge').factory('EdgeJobs', EdgeJobsFactory);\n\nfunction EdgeJobsFactory($resource, API_ENDPOINT_EDGE_JOBS) {\n return $resource(\n API_ENDPOINT_EDGE_JOBS + '/:id/:action',\n {},\n {\n create: { method: 'POST', params: { id: 'create', action: '@method' } },\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'PUT', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n file: { method: 'GET', params: { id: '@id', action: 'file' } },\n tasks: { method: 'GET', isArray: true, params: { id: '@id', action: 'tasks' } },\n }\n );\n}\n","import angular from 'angular';\n\nangular.module('portainer.edge').factory('EdgeStacks', function EdgeStacksFactory($resource, API_ENDPOINT_EDGE_STACKS) {\n return $resource(\n API_ENDPOINT_EDGE_STACKS + '/:id/:action',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true, params: { id: 'create', action: '@method' } },\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'PUT', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n file: { method: 'GET', params: { id: '@id', action: 'file' } },\n }\n );\n});\n","import angular from 'angular';\n\nangular.module('portainer.edge').factory('EdgeTemplates', function EdgeStacksFactory($resource, API_ENDPOINT_EDGE_TEMPLATES) {\n return $resource(\n API_ENDPOINT_EDGE_TEMPLATES,\n {},\n {\n query: { method: 'GET', isArray: true },\n }\n );\n});\n","import angular from 'angular';\n\nangular.module('portainer.edge').factory('EdgeGroupService', function EdgeGroupServiceFactory(EdgeGroups) {\n var service = {};\n\n service.group = function group(groupId) {\n return EdgeGroups.get({ id: groupId }).$promise;\n };\n\n service.groups = function groups() {\n return EdgeGroups.query({}).$promise;\n };\n\n service.remove = function remove(groupId) {\n return EdgeGroups.remove({ id: groupId }).$promise;\n };\n\n service.create = function create(group) {\n return EdgeGroups.create(group).$promise;\n };\n\n service.update = function update(group) {\n return EdgeGroups.update(group).$promise;\n };\n\n return service;\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\n\nimport { ScheduleCreateRequest, ScheduleUpdateRequest } from '@/portainer/models/schedule';\n\nfunction EdgeJobService(EdgeJobs, EdgeJobResults, FileUploadService) {\n var service = {};\n\n service.edgeJob = edgeJob;\n async function edgeJob(edgeJobId) {\n try {\n return await EdgeJobs.get({ id: edgeJobId }).$promise;\n } catch (err) {\n throw { msg: 'Unable to retrieve edgeJob', err: err };\n }\n }\n\n service.edgeJobs = edgeJobs;\n async function edgeJobs() {\n try {\n return await EdgeJobs.query().$promise;\n } catch (err) {\n throw { msg: 'Unable to retrieve edgeJobs', err: err };\n }\n }\n\n service.jobResults = jobResults;\n async function jobResults(edgeJobId) {\n try {\n const results = await EdgeJobResults.query({ id: edgeJobId }).$promise;\n\n return _.sortBy(results, ['Id']);\n } catch (err) {\n throw { msg: 'Unable to retrieve results associated to the edgeJob', err: err };\n }\n }\n\n service.logFile = logFile;\n function logFile(id, taskId) {\n return EdgeJobResults.logFile({ id, taskId }).$promise;\n }\n\n service.collectLogs = collectLogs;\n function collectLogs(id, taskId) {\n return EdgeJobResults.collectLogs({ id, taskId }).$promise;\n }\n\n service.clearLogs = clearLogs;\n function clearLogs(id, taskId) {\n return EdgeJobResults.clearLogs({ id, taskId }).$promise;\n }\n\n service.createEdgeJobFromFileContent = function (model) {\n var payload = new ScheduleCreateRequest(model);\n return EdgeJobs.create({}, { method: 'string', ...payload }).$promise;\n };\n\n service.createEdgeJobFromFileUpload = function (model) {\n var payload = new ScheduleCreateRequest(model);\n return FileUploadService.createSchedule(payload);\n };\n\n service.updateEdgeJob = function (model) {\n var payload = new ScheduleUpdateRequest(model);\n return EdgeJobs.update(payload).$promise;\n };\n\n service.remove = function (edgeJobId) {\n return EdgeJobs.remove({ id: edgeJobId }).$promise;\n };\n\n service.getScriptFile = function (edgeJobId) {\n return EdgeJobs.file({ id: edgeJobId }).$promise;\n };\n\n return service;\n}\n\nangular.module('portainer.edge').factory('EdgeJobService', EdgeJobService);\n","import angular from 'angular';\n\nangular.module('portainer.edge').factory('EdgeStackService', function EdgeStackServiceFactory(EdgeStacks, FileUploadService) {\n var service = {};\n\n service.stack = function stack(id) {\n return EdgeStacks.get({ id }).$promise;\n };\n\n service.stacks = function stacks() {\n return EdgeStacks.query({}).$promise;\n };\n\n service.remove = function remove(id) {\n return EdgeStacks.remove({ id }).$promise;\n };\n\n service.stackFile = async function stackFile(id) {\n try {\n const { StackFileContent } = await EdgeStacks.file({ id }).$promise;\n return StackFileContent;\n } catch (err) {\n throw { msg: 'Unable to retrieve stack content', err };\n }\n };\n\n service.updateStack = async function updateStack(id, stack) {\n return EdgeStacks.update({ id }, stack).$promise;\n };\n\n service.createStackFromFileContent = async function createStackFromFileContent(payload) {\n try {\n return await EdgeStacks.create({}, { method: 'string', ...payload }).$promise;\n } catch (err) {\n throw { msg: 'Unable to create the stack', err };\n }\n };\n\n service.createStackFromFileUpload = async function createStackFromFileUpload(payload, file) {\n try {\n return await FileUploadService.createEdgeStack(payload, file);\n } catch (err) {\n throw { msg: 'Unable to create the stack', err };\n }\n };\n\n service.createStackFromGitRepository = async function createStackFromGitRepository(payload, repositoryOptions) {\n try {\n return await EdgeStacks.create(\n {},\n {\n ...payload,\n method: 'repository',\n RepositoryURL: repositoryOptions.RepositoryURL,\n RepositoryReferenceName: repositoryOptions.RepositoryReferenceName,\n FilePathInRepository: repositoryOptions.FilePathInRepository,\n RepositoryAuthentication: repositoryOptions.RepositoryAuthentication,\n RepositoryUsername: repositoryOptions.RepositoryUsername,\n RepositoryPassword: repositoryOptions.RepositoryPassword,\n TLSSkipVerify: repositoryOptions.TLSSkipVerify,\n }\n ).$promise;\n } catch (err) {\n throw { msg: 'Unable to create the stack', err };\n }\n };\n\n return service;\n});\n","import angular from 'angular';\n\nclass EdgeTemplateService {\n /* @ngInject */\n constructor(EdgeTemplates) {\n this.EdgeTemplates = EdgeTemplates;\n }\n\n edgeTemplates() {\n return this.EdgeTemplates.query().$promise;\n }\n\n async edgeTemplate(template) {\n const response = await fetch(template.stackFile);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n\n return response.text();\n }\n}\n\nangular.module('portainer.edge').service('EdgeTemplateService', EdgeTemplateService);\n","export class CreateEdgeGroupController {\n /* @ngInject */\n constructor(EdgeGroupService, GroupService, Notifications, $state, $async) {\n this.EdgeGroupService = EdgeGroupService;\n this.GroupService = GroupService;\n this.Notifications = Notifications;\n this.$state = $state;\n this.$async = $async;\n\n this.state = {\n actionInProgress: false,\n loaded: false,\n };\n\n this.model = {\n Name: '',\n Endpoints: [],\n Dynamic: false,\n TagIds: [],\n PartialMatch: false,\n };\n\n this.createGroup = this.createGroup.bind(this);\n }\n\n async $onInit() {\n const endpointGroups = await this.GroupService.groups();\n\n this.endpointGroups = endpointGroups;\n this.state.loaded = true;\n }\n\n async createGroup(model) {\n return this.$async(async () => {\n this.state.actionInProgress = true;\n try {\n await this.EdgeGroupService.create(model);\n this.Notifications.success('Success', 'Edge group successfully created');\n this.$state.go('edge.groups');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create edge group');\n } finally {\n this.state.actionInProgress = false;\n }\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./createEdgeGroupView.html');\n\nimport angular from 'angular';\n\nimport { CreateEdgeGroupController } from './createEdgeGroupViewController';\n\nangular.module('portainer.edge').component('createEdgeGroupView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: CreateEdgeGroupController,\n});\n","import _ from 'lodash-es';\nimport { confirmDelete } from '@@/modals/confirm';\n\nexport class EdgeGroupsController {\n /* @ngInject */\n constructor($async, $state, EdgeGroupService, Notifications) {\n this.$async = $async;\n this.$state = $state;\n this.EdgeGroupService = EdgeGroupService;\n this.Notifications = Notifications;\n\n this.removeAction = this.removeAction.bind(this);\n this.removeActionAsync = this.removeActionAsync.bind(this);\n }\n\n async $onInit() {\n try {\n this.items = await this.EdgeGroupService.groups();\n } catch (err) {\n this.items = [];\n this.Notifications.error('Failure', err, 'Unable to retrieve Edge groups');\n }\n }\n\n removeAction(selectedItems) {\n return this.$async(this.removeActionAsync, selectedItems);\n }\n\n async removeActionAsync(selectedItems) {\n if (!(await confirmDelete('Do you want to remove the selected Edge Group(s)?'))) {\n return;\n }\n\n for (let item of selectedItems) {\n try {\n await this.EdgeGroupService.remove(item.Id);\n\n this.Notifications.success('Edge Group successfully removed', item.Name);\n _.remove(this.items, item);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove Edge Group');\n }\n }\n\n this.$state.reload();\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./edgeGroupsView.html');\n\nimport angular from 'angular';\n\nimport { EdgeGroupsController } from './edgeGroupsViewController';\n\nangular.module('portainer.edge').component('edgeGroupsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EdgeGroupsController,\n});\n","export class EditEdgeGroupController {\n /* @ngInject */\n constructor(EdgeGroupService, GroupService, Notifications, $state, $async) {\n this.EdgeGroupService = EdgeGroupService;\n this.GroupService = GroupService;\n this.Notifications = Notifications;\n this.$state = $state;\n this.$async = $async;\n\n this.state = {\n actionInProgress: false,\n loaded: false,\n };\n\n this.updateGroup = this.updateGroup.bind(this);\n }\n\n async $onInit() {\n const [endpointGroups, group] = await Promise.all([this.GroupService.groups(), this.EdgeGroupService.group(this.$state.params.groupId)]);\n\n if (!group) {\n this.Notifications.error('Failed to find edge group', {});\n this.$state.go('edge.groups');\n }\n this.endpointGroups = endpointGroups;\n this.model = group;\n this.state.loaded = true;\n }\n\n updateGroup(group) {\n return this.$async(async () => {\n this.state.actionInProgress = true;\n try {\n await this.EdgeGroupService.update(group);\n this.Notifications.success('Success', 'Edge group successfully updated');\n this.$state.go('edge.groups');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to update edge group');\n } finally {\n this.state.actionInProgress = false;\n }\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./editEdgeGroupView.html');\n\nimport angular from 'angular';\n\nimport { EditEdgeGroupController } from './editEdgeGroupViewController';\n\nangular.module('portainer.edge').component('editEdgeGroupView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EditEdgeGroupController,\n});\n","import { confirmWebEditorDiscard } from '@@/modals/confirm';\n\nexport class CreateEdgeJobViewController {\n /* @ngInject */\n constructor($async, $q, $state, $window, EdgeJobService, GroupService, Notifications, TagService) {\n this.state = {\n actionInProgress: false,\n isEditorDirty: false,\n };\n\n this.model = {\n Name: '',\n Recurring: false,\n CronExpression: '',\n Endpoints: [],\n FileContent: '',\n File: null,\n EdgeGroups: [],\n };\n\n this.$async = $async;\n this.$q = $q;\n this.$state = $state;\n this.$window = $window;\n this.Notifications = Notifications;\n this.GroupService = GroupService;\n this.EdgeJobService = EdgeJobService;\n this.TagService = TagService;\n\n this.create = this.create.bind(this);\n this.createEdgeJob = this.createEdgeJob.bind(this);\n this.createAsync = this.createAsync.bind(this);\n }\n\n create(method) {\n return this.$async(this.createAsync, method);\n }\n\n async createAsync(method) {\n this.state.actionInProgress = true;\n\n try {\n await this.createEdgeJob(method, this.model);\n this.Notifications.success('Success', 'Edge job successfully created');\n this.state.isEditorDirty = false;\n this.$state.go('edge.jobs', {}, { reload: true });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create Edge job');\n }\n\n this.state.actionInProgress = false;\n }\n\n createEdgeJob(method, model) {\n if (method === 'editor') {\n return this.EdgeJobService.createEdgeJobFromFileContent(model);\n }\n return this.EdgeJobService.createEdgeJobFromFileUpload(model);\n }\n\n async uiCanExit() {\n if (this.model.FileContent && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async $onInit() {\n try {\n const [groups, tags] = await Promise.all([this.GroupService.groups(), this.TagService.tags()]);\n this.groups = groups;\n this.tags = tags;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve page data');\n }\n\n this.$window.onbeforeunload = () => {\n if (this.model.FileContent && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./createEdgeJobView.html');\n\nimport angular from 'angular';\nimport { CreateEdgeJobViewController } from './createEdgeJobViewController';\n\nangular.module('portainer.edge').component('createEdgeJobView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: CreateEdgeJobViewController,\n});\n","import _ from 'lodash-es';\nimport { getEnvironments } from '@/react/portainer/environments/environment.service';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\n\nexport class EdgeJobController {\n /* @ngInject */\n constructor($async, $q, $state, $window, EdgeJobService, FileSaver, GroupService, HostBrowserService, Notifications, TagService) {\n this.state = {\n actionInProgress: false,\n showEditorTab: false,\n isEditorDirty: false,\n };\n\n this.$async = $async;\n this.$q = $q;\n this.$state = $state;\n this.$window = $window;\n this.EdgeJobService = EdgeJobService;\n this.FileSaver = FileSaver;\n this.GroupService = GroupService;\n this.HostBrowserService = HostBrowserService;\n this.Notifications = Notifications;\n this.TagService = TagService;\n\n this.update = this.update.bind(this);\n this.updateAsync = this.updateAsync.bind(this);\n this.downloadLogs = this.downloadLogs.bind(this);\n this.downloadLogsAsync = this.downloadLogsAsync.bind(this);\n this.collectLogs = this.collectLogs.bind(this);\n this.collectLogsAsync = this.collectLogsAsync.bind(this);\n this.clearLogs = this.clearLogs.bind(this);\n this.clearLogsAsync = this.clearLogsAsync.bind(this);\n this.refresh = this.refresh.bind(this);\n this.refreshAsync = this.refreshAsync.bind(this);\n this.showEditor = this.showEditor.bind(this);\n }\n\n update() {\n return this.$async(this.updateAsync);\n }\n\n async updateAsync() {\n const model = this.edgeJob;\n this.state.actionInProgress = true;\n\n try {\n await this.EdgeJobService.updateEdgeJob(model);\n this.Notifications.success('Success', 'Edge job successfully updated');\n this.state.isEditorDirty = false;\n this.$state.go('edge.jobs', {}, { reload: true });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to update Edge job');\n }\n\n this.state.actionInProgress = false;\n }\n\n downloadLogs(endpointId) {\n return this.$async(this.downloadLogsAsync, endpointId);\n }\n async downloadLogsAsync(endpointId) {\n try {\n const data = await this.EdgeJobService.logFile(this.edgeJob.Id, endpointId);\n const downloadData = new Blob([data.FileContent], {\n type: 'text/plain;charset=utf-8',\n });\n const logFileName = `job_${this.edgeJob.Id}_task_${endpointId}.log`;\n this.FileSaver.saveAs(downloadData, logFileName);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to download file');\n }\n }\n\n associateEndpointsToResults(results, endpoints) {\n return _.map(results, (result) => {\n const endpoint = _.find(endpoints, (endpoint) => endpoint.Id === result.EndpointId);\n result.Endpoint = endpoint;\n return result;\n });\n }\n\n collectLogs(endpointId) {\n return this.$async(this.collectLogsAsync, endpointId);\n }\n\n async collectLogsAsync(endpointId) {\n try {\n await this.EdgeJobService.collectLogs(this.edgeJob.Id, endpointId);\n const result = _.find(this.results, (result) => result.EndpointId === endpointId);\n result.LogsStatus = 2;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to collect logs');\n }\n }\n\n clearLogs(endpointId) {\n return this.$async(this.clearLogsAsync, endpointId);\n }\n async clearLogsAsync(endpointId) {\n try {\n await this.EdgeJobService.clearLogs(this.edgeJob.Id, endpointId);\n const result = _.find(this.results, (result) => result.EndpointId === endpointId);\n result.LogsStatus = 1;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to clear logs');\n }\n }\n\n refresh() {\n return this.$async(this.refreshAsync);\n }\n async refreshAsync() {\n const { id } = this.$state.params;\n const results = await this.EdgeJobService.jobResults(id);\n if (results.length > 0) {\n const endpointIds = _.map(results, (result) => result.EndpointId);\n const endpoints = await getEnvironments({ query: { endpointIds } });\n this.results = this.associateEndpointsToResults(results, endpoints.value);\n } else {\n this.results = results;\n }\n }\n\n showEditor() {\n this.state.showEditorTab = true;\n }\n\n async uiCanExit() {\n if (this.edgeJob && this.edgeJob.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async $onInit() {\n const { id, tab } = this.$state.params;\n this.state.activeTab = tab;\n if (!tab || tab === 0) {\n this.state.showEditorTab = true;\n }\n\n try {\n const [edgeJob, file, results, groups, tags] = await Promise.all([\n this.EdgeJobService.edgeJob(id),\n this.EdgeJobService.getScriptFile(id),\n this.EdgeJobService.jobResults(id),\n this.GroupService.groups(),\n this.TagService.tags(),\n ]);\n\n edgeJob.FileContent = file.FileContent;\n this.oldFileContent = edgeJob.FileContent;\n this.edgeJob = edgeJob;\n this.groups = groups;\n this.tags = tags;\n\n this.edgeJob.EdgeGroups = this.edgeJob.EdgeGroups ? this.edgeJob.EdgeGroups : [];\n this.edgeJob.Endpoints = this.edgeJob.Endpoints ? this.edgeJob.Endpoints : [];\n\n if (results.length > 0) {\n const endpointIds = _.map(results, (result) => result.EndpointId);\n const endpoints = await getEnvironments({ query: { endpointIds } });\n this.results = this.associateEndpointsToResults(results, endpoints.value);\n } else {\n this.results = results;\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve environment list');\n }\n\n this.$window.onbeforeunload = () => {\n if (this.edgeJob && this.edgeJob.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./edgeJob.html');\n\nimport angular from 'angular';\nimport { EdgeJobController } from './edgeJobController';\n\nangular.module('portainer.edge').component('edgeJobView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EdgeJobController,\n});\n","import _ from 'lodash-es';\nimport { confirmDelete } from '@@/modals/confirm';\n\nexport class EdgeJobsViewController {\n /* @ngInject */\n constructor($async, $state, EdgeJobService, Notifications) {\n this.$async = $async;\n this.$state = $state;\n this.EdgeJobService = EdgeJobService;\n this.Notifications = Notifications;\n\n this.removeAction = this.removeAction.bind(this);\n this.deleteJobsAsync = this.deleteJobsAsync.bind(this);\n this.deleteJobs = this.deleteJobs.bind(this);\n }\n\n removeAction(selectedItems) {\n confirmDelete('Do you want to remove the selected Edge job(s)?').then((confirmed) => {\n if (!confirmed) {\n return;\n }\n this.deleteJobs(selectedItems);\n });\n }\n\n deleteJobs(edgeJobs) {\n return this.$async(this.deleteJobsAsync, edgeJobs);\n }\n\n async deleteJobsAsync(edgeJobs) {\n for (let edgeJob of edgeJobs) {\n try {\n await this.EdgeJobService.remove(edgeJob.Id);\n this.Notifications.success('Edge job successfully removed', edgeJob.Name);\n _.remove(this.edgeJobs, edgeJob);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove Edge job ' + edgeJob.Name);\n }\n }\n\n this.$state.reload();\n }\n\n async $onInit() {\n try {\n const edgeJobs = await this.EdgeJobService.edgeJobs();\n this.edgeJobs = edgeJobs;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve Edge jobs');\n this.edgeJobs = [];\n }\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./edgeJobsView.html');\n\nimport angular from 'angular';\nimport { EdgeJobsViewController } from './edgeJobsViewController';\n\nangular.module('portainer.edge').component('edgeJobsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EdgeJobsViewController,\n});\n","import { EditorType } from '@/react/edge/edge-stacks/types';\nimport { getValidEditorTypes } from '@/react/edge/edge-stacks/utils';\nimport { STACK_NAME_VALIDATION_REGEX } from '@/react/constants';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { baseEdgeStackWebhookUrl } from '@/portainer/helpers/webhookHelper';\nimport { EnvironmentType } from '@/react/portainer/environments/types';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nexport default class CreateEdgeStackViewController {\n /* @ngInject */\n constructor($state, $window, EdgeStackService, EdgeGroupService, EdgeTemplateService, Notifications, FormHelper, $async, $scope) {\n Object.assign(this, { $state, $window, EdgeStackService, EdgeGroupService, EdgeTemplateService, Notifications, FormHelper, $async, $scope });\n\n this.formValues = {\n Name: '',\n StackFileContent: '',\n StackFile: null,\n RepositoryURL: '',\n RepositoryReferenceName: '',\n RepositoryAuthentication: false,\n RepositoryUsername: '',\n RepositoryPassword: '',\n ComposeFilePathInRepository: '',\n Groups: [],\n DeploymentType: 0,\n UseManifestNamespaces: false,\n TLSSkipVerify: false,\n envVars: [],\n };\n\n this.EditorType = EditorType;\n this.EnvironmentType = EnvironmentType;\n this.isBE = isBE;\n\n this.state = {\n Method: 'editor',\n formValidationError: '',\n actionInProgress: false,\n StackType: null,\n isEditorDirty: false,\n hasKubeEndpoint: false,\n endpointTypes: [],\n baseWebhookUrl: baseEdgeStackWebhookUrl(),\n };\n\n this.edgeGroups = null;\n\n $scope.STACK_NAME_VALIDATION_REGEX = STACK_NAME_VALIDATION_REGEX;\n\n this.createStack = this.createStack.bind(this);\n this.validateForm = this.validateForm.bind(this);\n this.createStackByMethod = this.createStackByMethod.bind(this);\n this.createStackFromFileContent = this.createStackFromFileContent.bind(this);\n this.createStackFromFileUpload = this.createStackFromFileUpload.bind(this);\n this.createStackFromGitRepository = this.createStackFromGitRepository.bind(this);\n this.onChangeGroups = this.onChangeGroups.bind(this);\n this.hasType = this.hasType.bind(this);\n this.onChangeDeploymentType = this.onChangeDeploymentType.bind(this);\n this.onEnvVarChange = this.onEnvVarChange.bind(this);\n }\n\n onEnvVarChange(envVars) {\n return this.$scope.$evalAsync(() => {\n this.formValues.envVars = envVars;\n });\n }\n\n buildAnalyticsProperties() {\n const format = 'compose';\n const metadata = { type: methodLabel(this.state.Method), format };\n\n if (metadata.type === 'template') {\n metadata.templateName = this.selectedTemplate.title;\n }\n\n return { metadata };\n\n function methodLabel(method) {\n switch (method) {\n case 'editor':\n return 'web-editor';\n case 'repository':\n return 'git';\n case 'upload':\n return 'file-upload';\n case 'template':\n return 'template';\n }\n }\n }\n\n uiCanExit() {\n if (this.state.Method === 'editor' && this.formValues.StackFileContent && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async $onInit() {\n try {\n this.edgeGroups = await this.EdgeGroupService.groups();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve Edge groups');\n }\n\n this.$window.onbeforeunload = () => {\n if (this.state.Method === 'editor' && this.formValues.StackFileContent && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n\n createStack() {\n return this.$async(async () => {\n const name = this.formValues.Name;\n let method = this.state.Method;\n\n if (method === 'template') {\n method = 'editor';\n }\n\n if (!this.validateForm(method)) {\n return;\n }\n\n this.state.actionInProgress = true;\n try {\n await this.createStackByMethod(name, method);\n\n this.Notifications.success('Success', 'Stack successfully deployed');\n this.state.isEditorDirty = false;\n this.$state.go('edge.stacks');\n } catch (err) {\n this.Notifications.error('Deployment error', err, 'Unable to deploy stack');\n } finally {\n this.state.actionInProgress = false;\n }\n });\n }\n\n onChangeGroups(groups) {\n return this.$scope.$evalAsync(() => {\n this.formValues.Groups = groups;\n\n this.checkIfEndpointTypes(groups);\n });\n }\n\n checkIfEndpointTypes(groups) {\n return this.$scope.$evalAsync(() => {\n const edgeGroups = groups.map((id) => this.edgeGroups.find((e) => e.Id === id));\n this.state.endpointTypes = edgeGroups.flatMap((group) => group.EndpointTypes);\n this.selectValidDeploymentType();\n });\n }\n\n selectValidDeploymentType() {\n const validTypes = getValidEditorTypes(this.state.endpointTypes);\n\n if (!validTypes.includes(this.formValues.DeploymentType)) {\n this.onChangeDeploymentType(validTypes[0]);\n }\n }\n\n hasType(envType) {\n return this.state.endpointTypes.includes(envType);\n }\n\n validateForm(method) {\n this.state.formValidationError = '';\n\n if (method === 'editor' && this.formValues.StackFileContent === '') {\n this.state.formValidationError = 'Stack file content must not be empty';\n return;\n }\n\n return true;\n }\n\n createStackByMethod(name, method) {\n switch (method) {\n case 'editor':\n return this.createStackFromFileContent(name);\n case 'upload':\n return this.createStackFromFileUpload(name);\n case 'repository':\n return this.createStackFromGitRepository(name);\n }\n }\n\n createStackFromFileContent(name) {\n const { StackFileContent, Groups, DeploymentType, UseManifestNamespaces, envVars } = this.formValues;\n\n return this.EdgeStackService.createStackFromFileContent({\n name,\n StackFileContent,\n EdgeGroups: Groups,\n DeploymentType,\n UseManifestNamespaces,\n envVars,\n });\n }\n\n createStackFromFileUpload(name) {\n const { StackFile, Groups, DeploymentType, UseManifestNamespaces, envVars } = this.formValues;\n return this.EdgeStackService.createStackFromFileUpload(\n {\n Name: name,\n EdgeGroups: Groups,\n DeploymentType,\n UseManifestNamespaces,\n envVars,\n },\n StackFile\n );\n }\n\n createStackFromGitRepository(name) {\n const { Groups, DeploymentType, UseManifestNamespaces, envVars } = this.formValues;\n const repositoryOptions = {\n RepositoryURL: this.formValues.RepositoryURL,\n RepositoryReferenceName: this.formValues.RepositoryReferenceName,\n FilePathInRepository: this.formValues.ComposeFilePathInRepository,\n RepositoryAuthentication: this.formValues.RepositoryAuthentication,\n RepositoryUsername: this.formValues.RepositoryUsername,\n RepositoryPassword: this.formValues.RepositoryPassword,\n TLSSkipVerify: this.formValues.TLSSkipVerify,\n };\n return this.EdgeStackService.createStackFromGitRepository(\n {\n name,\n EdgeGroups: Groups,\n DeploymentType,\n UseManifestNamespaces,\n envVars,\n },\n repositoryOptions\n );\n }\n\n onChangeDeploymentType(deploymentType) {\n return this.$scope.$evalAsync(() => {\n this.formValues.DeploymentType = deploymentType;\n this.state.Method = 'editor';\n this.formValues.StackFileContent = '';\n });\n }\n\n formIsInvalid() {\n return (\n this.form.$invalid ||\n !this.formValues.Groups.length ||\n (['template', 'editor'].includes(this.state.Method) && !this.formValues.StackFileContent) ||\n ('upload' === this.state.Method && !this.formValues.StackFile)\n );\n }\n}\n","import _ from 'lodash';\n\nimport { EnvironmentType } from '@/react/portainer/environments/types';\n\nimport { EditorType } from './types';\n\nexport function getValidEditorTypes(\n endpointTypes: EnvironmentType[],\n allowKubeToSelectCompose?: boolean\n) {\n const right: Partial<Record<EnvironmentType, EditorType[]>> = {\n [EnvironmentType.EdgeAgentOnDocker]: [EditorType.Compose],\n [EnvironmentType.EdgeAgentOnKubernetes]: allowKubeToSelectCompose\n ? [EditorType.Kubernetes, EditorType.Compose]\n : [EditorType.Kubernetes],\n };\n\n return endpointTypes.length\n ? _.intersection(...endpointTypes.map((type) => right[type]))\n : [EditorType.Compose, EditorType.Kubernetes];\n}\n","const autoNgTemplateLoaderTemplate1 = require('./create-edge-stack-view.html');\n\nimport controller from './create-edge-stack-view.controller';\n\nexport const createEdgeStackView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","import { editor, git, edgeStackTemplate, upload } from '@@/BoxSelector/common-options/build-methods';\n\nclass DockerComposeFormController {\n /* @ngInject */\n constructor($async, EdgeTemplateService, Notifications) {\n Object.assign(this, { $async, EdgeTemplateService, Notifications });\n\n this.methodOptions = [editor, upload, git, edgeStackTemplate];\n\n this.selectedTemplate = null;\n\n this.onChangeFileContent = this.onChangeFileContent.bind(this);\n this.onChangeFile = this.onChangeFile.bind(this);\n this.onChangeTemplate = this.onChangeTemplate.bind(this);\n this.onChangeMethod = this.onChangeMethod.bind(this);\n this.onChangeFormValues = this.onChangeFormValues.bind(this);\n }\n\n onChangeFormValues(newValues) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...newValues,\n };\n });\n }\n\n onChangeMethod(method) {\n this.state.Method = method;\n this.formValues.StackFileContent = '';\n this.selectedTemplate = null;\n }\n\n onChangeTemplate(template) {\n return this.$async(async () => {\n this.formValues.StackFileContent = '';\n try {\n const fileContent = await this.EdgeTemplateService.edgeTemplate(template);\n this.formValues.StackFileContent = fileContent;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve Template');\n }\n });\n }\n\n onChangeFileContent(value) {\n this.formValues.StackFileContent = value;\n this.state.isEditorDirty = true;\n }\n\n onChangeFile(value) {\n return this.$async(async () => {\n this.formValues.StackFile = value;\n });\n }\n\n async $onInit() {\n return this.$async(async () => {\n try {\n const templates = await this.EdgeTemplateService.edgeTemplates();\n this.templates = templates.map((template) => ({ ...template, label: `${template.title} - ${template.description}` }));\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve Templates');\n }\n });\n }\n}\n\nexport default DockerComposeFormController;\n","const autoNgTemplateLoaderTemplate1 = require('./docker-compose-form.html');\n\nimport controller from './docker-compose-form.controller.js';\n\nexport const edgeStacksDockerComposeForm = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n\n bindings: {\n formValues: '=',\n state: '=',\n },\n};\n","import angular from 'angular';\n\nimport { createEdgeStackView } from './create-edge-stack-view';\nimport { edgeStacksDockerComposeForm } from './docker-compose-form';\nimport { kubeManifestForm } from './kube-manifest-form';\nimport { kubeDeployDescription } from './kube-deploy-description';\n\nexport default angular\n .module('portainer.edge.stacks.create', [])\n .component('createEdgeStackView', createEdgeStackView)\n .component('edgeStacksDockerComposeForm', edgeStacksDockerComposeForm)\n .component('edgeStacksKubeManifestForm', kubeManifestForm)\n .component('kubeDeployDescription', kubeDeployDescription).name;\n","const autoNgTemplateLoaderTemplate1 = require('./kube-deploy-description.html');\n\nexport const kubeDeployDescription = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n};\n","const autoNgTemplateLoaderTemplate1 = require('./kube-manifest-form.html');\n\nimport controller from './kube-manifest-form.controller.js';\n\nexport const kubeManifestForm = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n\n bindings: {\n formValues: '=',\n state: '=',\n },\n};\n","import { editor, git, upload } from '@@/BoxSelector/common-options/build-methods';\n\nclass KubeManifestFormController {\n /* @ngInject */\n constructor($async) {\n Object.assign(this, { $async });\n\n this.methodOptions = [editor, upload, git];\n\n this.onChangeFileContent = this.onChangeFileContent.bind(this);\n this.onChangeFormValues = this.onChangeFormValues.bind(this);\n this.onChangeFile = this.onChangeFile.bind(this);\n this.onChangeMethod = this.onChangeMethod.bind(this);\n this.onChangeUseManifestNamespaces = this.onChangeUseManifestNamespaces.bind(this);\n }\n\n onChangeFormValues(newValues) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...newValues,\n };\n });\n }\n\n onChangeUseManifestNamespaces(value) {\n this.onChangeFormValues({ UseManifestNamespaces: value });\n }\n\n onChangeFileContent(value) {\n this.state.isEditorDirty = true;\n this.formValues.StackFileContent = value;\n }\n\n onChangeFile(value) {\n return this.$async(async () => {\n this.formValues.StackFile = value;\n });\n }\n\n onChangeMethod(method) {\n return this.$async(async () => {\n this.state.Method = method;\n });\n }\n}\n\nexport default KubeManifestFormController;\n","import { confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { EnvironmentType } from '@/react/portainer/environments/types';\nimport { createWebhookId } from '@/portainer/helpers/webhookHelper';\n\nexport class EditEdgeStackViewController {\n /* @ngInject */\n constructor($async, $state, $window, EdgeGroupService, EdgeStackService, Notifications) {\n this.$async = $async;\n this.$state = $state;\n this.$window = $window;\n this.EdgeGroupService = EdgeGroupService;\n this.EdgeStackService = EdgeStackService;\n this.Notifications = Notifications;\n\n this.stack = null;\n this.edgeGroups = null;\n\n this.state = {\n actionInProgress: false,\n activeTab: 0,\n isStackDeployed: false,\n };\n\n this.formValues = {\n content: null,\n };\n\n this.deployStack = this.deployStack.bind(this);\n this.deployStackAsync = this.deployStackAsync.bind(this);\n this.onEditorChange = this.onEditorChange.bind(this);\n this.isEditorDirty = this.isEditorDirty.bind(this);\n }\n\n async $onInit() {\n return this.$async(async () => {\n const { stackId, tab } = this.$state.params;\n this.state.activeTab = tab ? parseInt(tab, 10) : 0;\n try {\n const [edgeGroups, model, file] = await Promise.all([\n this.EdgeGroupService.groups(),\n this.EdgeStackService.stack(stackId),\n this.EdgeStackService.stackFile(stackId).catch(() => ''),\n ]);\n\n this.edgeGroups = edgeGroups;\n this.stack = model;\n this.originalFileContent = file;\n this.formValues = {\n content: file,\n };\n\n const stackEdgeGroups = model.EdgeGroups.map((id) => this.edgeGroups.find((e) => e.Id === id));\n const endpointTypes = stackEdgeGroups.flatMap((group) => group.EndpointTypes);\n const initiallyContainsKubeEnv = endpointTypes.includes(EnvironmentType.EdgeAgentOnKubernetes);\n const isComposeStack = this.stack.DeploymentType === 0;\n\n this.allowKubeToSelectCompose = initiallyContainsKubeEnv && isComposeStack;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve stack data');\n }\n\n this.oldFileContent = this.formValues.StackFileContent;\n\n this.$window.onbeforeunload = () => {\n if (this.isEditorDirty()) {\n return '';\n }\n };\n });\n }\n\n $onDestroy() {\n this.$window.onbeforeunload = undefined;\n }\n\n async uiCanExit() {\n if (this.isEditorDirty()) {\n return confirmWebEditorDiscard();\n }\n }\n\n onEditorChange(content) {\n this.formValues.content = content;\n }\n\n isEditorDirty() {\n return !this.state.isStackDeployed && this.formValues.content.replace(/(\\r\\n|\\n|\\r)/gm, '') !== this.originalFileContent.replace(/(\\r\\n|\\n|\\r)/gm, '');\n }\n\n deployStack(values) {\n return this.deployStackAsync(values);\n }\n\n async deployStackAsync(values) {\n this.state.actionInProgress = true;\n try {\n const updateVersion = !!(this.originalFileContent != values.content || values.useManifestNamespaces !== this.stack.UseManifestNamespaces);\n\n await this.EdgeStackService.updateStack(this.stack.Id, {\n stackFileContent: values.content,\n edgeGroups: values.edgeGroups,\n deploymentType: values.deploymentType,\n updateVersion,\n webhook: values.webhookEnabled ? this.stack.Webhook || createWebhookId() : '',\n envVars: values.envVars,\n });\n this.Notifications.success('Success', 'Stack successfully deployed');\n this.state.isStackDeployed = true;\n this.$state.go('edge.stacks');\n } catch (err) {\n this.Notifications.error('Deployment error', err, 'Unable to deploy stack');\n } finally {\n this.state.actionInProgress = false;\n }\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./editEdgeStackView.html');\n\nimport angular from 'angular';\n\nimport { EditEdgeStackViewController } from './editEdgeStackViewController';\n\nangular.module('portainer.edge').component('editEdgeStackView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EditEdgeStackViewController,\n});\n","import angular from 'angular';\n\nimport createModule from './createEdgeStackView';\n\nexport default angular.module('portainer.edge.stacks', [createModule]).name;\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport Backend from 'i18next-http-backend';\n\ni18n\n .use(Backend)\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n debug: true,\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n });\n\nexport default i18n;\n","import angular from 'angular';\n\nexport const componentsModule = angular.module(\n 'portainer.azure.react.components',\n []\n).name;\n","// extracted by mini-css-extract-plugin\nexport default {\"item\":\"app-react-azure-container-instances-CreateView-PortsMappingField-module__item\",\"errors\":\"app-react-azure-container-instances-CreateView-PortsMappingField-module__errors\"};","import { FormikErrors } from 'formik';\nimport { ArrowRight } from 'lucide-react';\n\nimport { ButtonSelector } from '@@/form-components/ButtonSelector/ButtonSelector';\nimport { FormError } from '@@/form-components/FormError';\nimport { InputGroup } from '@@/form-components/InputGroup';\nimport { InputList } from '@@/form-components/InputList';\nimport { ItemProps } from '@@/form-components/InputList/InputList';\nimport { Icon } from '@@/Icon';\n\nimport styles from './PortsMappingField.module.css';\n\ntype Protocol = 'TCP' | 'UDP';\n\nexport interface PortMapping {\n host?: number;\n container?: number;\n protocol: Protocol;\n}\n\ninterface Props {\n value: PortMapping[];\n onChange?(value: PortMapping[]): void;\n errors?: FormikErrors<PortMapping>[] | string | string[];\n disabled?: boolean;\n readOnly?: boolean;\n}\n\nexport function PortsMappingField({\n value,\n onChange = () => {},\n errors,\n disabled,\n readOnly,\n}: Props) {\n return (\n <>\n <InputList<PortMapping>\n label=\"Port mapping\"\n value={value}\n onChange={onChange}\n addLabel=\"map additional port\"\n itemBuilder={() => ({\n host: 0,\n container: 0,\n protocol: 'TCP',\n })}\n item={Item}\n errors={errors}\n disabled={disabled}\n readOnly={readOnly}\n />\n {typeof errors === 'string' && (\n <div className=\"form-group col-md-12\">\n <FormError>{errors}</FormError>\n </div>\n )}\n </>\n );\n}\n\nfunction Item({\n onChange,\n item,\n error,\n disabled,\n readOnly,\n}: ItemProps<PortMapping>) {\n return (\n <div className={styles.item}>\n <div className=\"flex items-center gap-2\">\n <InputGroup size=\"small\">\n <InputGroup.Addon>host</InputGroup.Addon>\n <InputGroup.Input\n placeholder=\"e.g. 80\"\n value={item.host}\n onChange={(e) =>\n handleChange('host', parseInt(e.target.value || '0', 10))\n }\n disabled={disabled}\n readOnly={readOnly}\n type=\"number\"\n />\n </InputGroup>\n\n <span className=\"mx-3\">\n <Icon icon={ArrowRight} />\n </span>\n\n <InputGroup size=\"small\">\n <InputGroup.Addon>container</InputGroup.Addon>\n <InputGroup.Input\n placeholder=\"e.g. 80\"\n value={item.container}\n onChange={(e) =>\n handleChange('container', parseInt(e.target.value || '0', 10))\n }\n disabled={disabled}\n readOnly={readOnly}\n type=\"number\"\n />\n </InputGroup>\n\n <ButtonSelector<Protocol>\n onChange={(value) => handleChange('protocol', value)}\n value={item.protocol}\n options={[{ value: 'TCP' }, { value: 'UDP' }]}\n disabled={disabled}\n readOnly={readOnly}\n />\n </div>\n {!!error && (\n <div className={styles.errors}>\n <FormError>{Object.values(error)[0]}</FormError>\n </div>\n )}\n </div>\n );\n\n function handleChange(name: keyof PortMapping, value: string | number) {\n onChange({ ...item, [name]: value });\n }\n}\n","import { AxiosError } from 'axios';\n\nexport function azureErrorParser(axiosError: AxiosError) {\n const message =\n (axiosError.response?.data?.error?.message as string) ||\n 'Failed azure request';\n\n return {\n error: new Error(message),\n details: message,\n };\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport const queryKeys = {\n subscriptions: (environmentId: EnvironmentId) =>\n ['azure', environmentId, 'subscriptions'] as const,\n subscription: (environmentId: EnvironmentId, subscriptionId: string) =>\n [...queryKeys.subscriptions(environmentId), subscriptionId] as const,\n resourceGroups: (environmentId: EnvironmentId, subscriptionId: string) =>\n [\n ...queryKeys.subscription(environmentId, subscriptionId),\n 'resourceGroups',\n ] as const,\n resourceGroup: (\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName: string\n ) =>\n [\n ...queryKeys.resourceGroups(environmentId, subscriptionId),\n resourceGroupName,\n ] as const,\n provider: (environmentId: EnvironmentId, subscriptionId: string) =>\n [\n ...queryKeys.subscription(environmentId, subscriptionId),\n 'provider',\n ] as const,\n containerGroups: (environmentId: EnvironmentId, subscriptionId: string) =>\n [\n ...queryKeys.subscription(environmentId, subscriptionId),\n 'containerGroups',\n ] as const,\n containerGroup: (\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName: string,\n containerGroupName: string\n ) =>\n [\n ...queryKeys.resourceGroup(\n environmentId,\n subscriptionId,\n resourceGroupName\n ),\n 'containerGroups',\n containerGroupName,\n ] as const,\n};\n","import _ from 'lodash';\nimport { useQueries } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { ProviderViewModel, Subscription } from '../types';\nimport { azureErrorParser } from '../services/utils';\n\nimport { queryKeys } from './query-keys';\n\nexport function useProvider(\n environmentId: EnvironmentId,\n subscriptions: Subscription[] = []\n) {\n const queries = useQueries(\n subscriptions.map((subscription) => ({\n queryKey: queryKeys.provider(environmentId, subscription.subscriptionId),\n queryFn: async () => {\n const provider = await getContainerInstanceProvider(\n environmentId,\n subscription.subscriptionId\n );\n return [subscription.subscriptionId, provider] as const;\n },\n ...withError('Unable to retrieve Azure providers'),\n }))\n );\n\n return {\n providers: Object.fromEntries(\n _.compact(\n queries.map((q) => {\n if (q.data) {\n return q.data;\n }\n\n return null;\n })\n )\n ),\n isLoading: queries.some((q) => q.isLoading),\n };\n}\n\ninterface ResourceType {\n resourceType: 'containerGroups' | string;\n locations: string[];\n}\n\ninterface ProviderResponse {\n id: string;\n namespace: string;\n resourceTypes: ResourceType[];\n}\n\nasync function getContainerInstanceProvider(\n environmentId: EnvironmentId,\n subscriptionId: string\n) {\n try {\n const url = `/endpoints/${environmentId}/azure/subscriptions/${subscriptionId}/providers/Microsoft.ContainerInstance`;\n const { data } = await axios.get<ProviderResponse>(url, {\n params: { 'api-version': '2018-02-01' },\n });\n\n return parseViewModel(data);\n } catch (error) {\n throw parseAxiosError(\n error as Error,\n 'Unable to retrieve provider',\n azureErrorParser\n );\n }\n}\nfunction parseViewModel({\n id,\n namespace,\n resourceTypes,\n}: ProviderResponse): ProviderViewModel {\n const containerGroupType = _.find(resourceTypes, {\n resourceType: 'containerGroups',\n });\n const { locations = [] } = containerGroupType || {};\n return { id, namespace, locations };\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport function buildSubscriptionsUrl(\n environmentId: EnvironmentId,\n id?: string\n) {\n let url = `/endpoints/${environmentId}/azure/subscriptions`;\n if (id) {\n url += `/${id}`;\n }\n\n return url;\n}\n\nexport function buildResourceGroupUrl(\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName?: string\n) {\n let url = `${buildSubscriptionsUrl(\n environmentId,\n subscriptionId\n )}/resourcegroups`;\n\n if (resourceGroupName) {\n url += `/${resourceGroupName}`;\n }\n\n return url;\n}\n\nexport function buildContainerGroupUrl(\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName?: string,\n containerGroupName?: string\n) {\n let url = buildSubscriptionsUrl(environmentId, subscriptionId);\n\n if (resourceGroupName) {\n url += `/resourceGroups/${resourceGroupName}`;\n }\n\n url += `/providers/Microsoft.ContainerInstance/containerGroups`;\n\n if (containerGroupName) {\n url += `/${containerGroupName}`;\n }\n\n return url;\n}\n","import _ from 'lodash';\nimport { useQueries } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { azureErrorParser } from '../services/utils';\nimport { Subscription, ResourceGroup } from '../types';\n\nimport { queryKeys } from './query-keys';\nimport { buildResourceGroupUrl } from './utils';\n\nexport function useResourceGroups(\n environmentId: EnvironmentId,\n subscriptions: Subscription[] = []\n) {\n const queries = useQueries(\n subscriptions.map((subscription) => ({\n queryKey: queryKeys.resourceGroups(\n environmentId,\n subscription.subscriptionId\n ),\n queryFn: async () => {\n const groups = await getResourceGroups(\n environmentId,\n subscription.subscriptionId\n );\n return [subscription.subscriptionId, groups] as const;\n },\n ...withError('Unable to retrieve Azure resource groups'),\n }))\n );\n\n return {\n resourceGroups: Object.fromEntries(\n _.compact(\n queries.map((q) => {\n if (q.data) {\n return q.data;\n }\n\n return null;\n })\n )\n ),\n isLoading: queries.some((q) => q.isLoading),\n isError: queries.some((q) => q.isError),\n };\n}\n\nasync function getResourceGroups(\n environmentId: EnvironmentId,\n subscriptionId: string\n) {\n try {\n const {\n data: { value },\n } = await axios.get<{ value: ResourceGroup[] }>(\n buildResourceGroupUrl(environmentId, subscriptionId),\n { params: { 'api-version': '2018-02-01' } }\n );\n\n return value;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Unable to retrieve resource groups',\n azureErrorParser\n );\n }\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { withError } from '@/react-tools/react-query';\n\nimport { azureErrorParser } from '../services/utils';\nimport { Subscription } from '../types';\n\nimport { queryKeys } from './query-keys';\nimport { buildSubscriptionsUrl } from './utils';\n\nexport function useSubscriptions(environmentId: EnvironmentId) {\n return useQuery(\n queryKeys.subscriptions(environmentId),\n () => getSubscriptions(environmentId),\n {\n ...withError('Unable to retrieve Azure subscriptions'),\n }\n );\n}\n\nasync function getSubscriptions(environmentId: EnvironmentId) {\n try {\n const { data } = await axios.get<{ value: Subscription[] }>(\n buildSubscriptionsUrl(environmentId),\n { params: { 'api-version': '2016-06-01' } }\n );\n return data.value;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve subscriptions',\n azureErrorParser\n );\n }\n}\n","import { ProviderViewModel, ResourceGroup } from '@/react/azure/types';\n\nexport function getSubscriptionResourceGroups(\n subscriptionId?: string,\n resourceGroups?: Record<string, ResourceGroup[]>\n) {\n if (!subscriptionId || !resourceGroups || !resourceGroups[subscriptionId]) {\n return [];\n }\n\n return resourceGroups[subscriptionId].map(({ name, id }) => ({\n value: id,\n label: name,\n }));\n}\n\nexport function getSubscriptionLocations(\n subscriptionId?: string,\n containerInstanceProviders?: Record<string, ProviderViewModel | undefined>\n) {\n if (!subscriptionId || !containerInstanceProviders) {\n return [];\n }\n\n const provider = containerInstanceProviders[subscriptionId];\n if (!provider) {\n return [];\n }\n\n return provider.locations.map((location) => ({\n value: location,\n label: location,\n }));\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { buildContainerGroupUrl } from '../queries/utils';\nimport { ContainerGroup, ContainerInstanceFormValues } from '../types';\n\nexport async function createContainerGroup(\n model: ContainerInstanceFormValues,\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName: string\n) {\n const payload = transformToPayload(model);\n try {\n const { data } = await axios.put<ContainerGroup>(\n buildContainerGroupUrl(\n environmentId,\n subscriptionId,\n resourceGroupName,\n model.name\n ),\n payload,\n { params: { 'api-version': '2018-04-01' } }\n );\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n\nexport async function deleteContainerGroup(\n environmentId: EnvironmentId,\n containerGroupId: string\n) {\n try {\n await axios.delete(`/endpoints/${environmentId}/azure${containerGroupId}`, {\n params: { 'api-version': '2018-04-01' },\n });\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to remove container group');\n }\n}\n\nfunction transformToPayload(model: ContainerInstanceFormValues) {\n const containerPorts = [];\n const addressPorts = [];\n\n const ports = model.ports.filter((p) => p.container && p.host);\n\n for (let i = 0; i < ports.length; i += 1) {\n const binding = ports[i];\n\n containerPorts.push({\n port: binding.container,\n });\n\n addressPorts.push({\n port: binding.host,\n protocol: binding.protocol,\n });\n }\n\n return {\n location: model.location,\n properties: {\n osType: model.os,\n containers: [\n {\n name: model.name,\n properties: {\n image: model.image,\n ports: containerPorts,\n resources: {\n requests: {\n cpu: model.cpu,\n memoryInGB: model.memory,\n },\n },\n },\n },\n ],\n ipAddress: {\n type: model.allocatePublicIP ? 'Public' : 'Private',\n ports: addressPorts,\n },\n },\n };\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport { createContainerGroup } from '@/react/azure/services/container-groups.service';\nimport { queryKeys } from '@/react/azure/queries/query-keys';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport PortainerError from '@/portainer/error';\nimport {\n ContainerGroup,\n ContainerInstanceFormValues,\n ResourceGroup,\n} from '@/react/azure/types';\nimport { applyResourceControl } from '@/react/portainer/access-control/access-control.service';\n\nimport { getSubscriptionResourceGroups } from './utils';\n\nexport function useCreateInstanceMutation(\n resourceGroups: {\n [k: string]: ResourceGroup[];\n },\n environmentId: EnvironmentId\n) {\n const queryClient = useQueryClient();\n return useMutation<ContainerGroup, unknown, ContainerInstanceFormValues>(\n (values) => {\n if (!values.subscription) {\n throw new PortainerError('subscription is required');\n }\n\n const subscriptionResourceGroup = getSubscriptionResourceGroups(\n values.subscription,\n resourceGroups\n );\n const resourceGroup = subscriptionResourceGroup.find(\n (r) => r.value === values.resourceGroup\n );\n if (!resourceGroup) {\n throw new PortainerError('resource group not found');\n }\n\n return createContainerGroup(\n values,\n environmentId,\n values.subscription,\n resourceGroup.label\n );\n },\n {\n async onSuccess(containerGroup, values) {\n const resourceControl = containerGroup.Portainer?.ResourceControl;\n if (!resourceControl) {\n throw new PortainerError('resource control expected after creation');\n }\n\n const accessControlData = values.accessControl;\n await applyResourceControl(accessControlData, resourceControl);\n return queryClient.invalidateQueries(\n queryKeys.subscriptions(environmentId)\n );\n },\n }\n );\n}\n","import { Field, Form, Formik } from 'formik';\nimport { useRouter } from '@uirouter/react';\nimport { Plus } from 'lucide-react';\n\nimport { ContainerInstanceFormValues } from '@/react/azure/types';\nimport * as notifications from '@/portainer/services/notifications';\nimport { useUser } from '@/react/hooks/useUser';\nimport { AccessControlForm } from '@/react/portainer/access-control/AccessControlForm';\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input, Select } from '@@/form-components/Input';\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\n\nimport { validationSchema } from './CreateContainerInstanceForm.validation';\nimport { PortsMappingField } from './PortsMappingField';\nimport { useFormState, useLoadFormState } from './useLoadFormState';\nimport {\n getSubscriptionLocations,\n getSubscriptionResourceGroups,\n} from './utils';\nimport { useCreateInstanceMutation } from './useCreateInstanceMutation';\n\nexport function CreateContainerInstanceForm() {\n const environmentId = useEnvironmentId();\n const { isAdmin } = useUser();\n\n const { providers, subscriptions, resourceGroups, isLoading } =\n useLoadFormState(environmentId);\n\n const { initialValues, subscriptionOptions } = useFormState(\n subscriptions,\n resourceGroups,\n providers\n );\n\n const router = useRouter();\n\n const { mutateAsync } = useCreateInstanceMutation(\n resourceGroups,\n environmentId\n );\n\n if (isLoading) {\n return null;\n }\n\n return (\n <Formik<ContainerInstanceFormValues>\n initialValues={initialValues}\n validationSchema={() => validationSchema(isAdmin)}\n onSubmit={onSubmit}\n validateOnMount\n validateOnChange\n enableReinitialize\n >\n {({\n errors,\n handleSubmit,\n isSubmitting,\n isValid,\n values,\n setFieldValue,\n }) => (\n <Form className=\"form-horizontal\" onSubmit={handleSubmit} noValidate>\n <FormSectionTitle>Azure settings</FormSectionTitle>\n <FormControl\n label=\"Subscription\"\n inputId=\"subscription-input\"\n errors={errors.subscription}\n >\n <Field\n name=\"subscription\"\n as={Select}\n id=\"subscription-input\"\n options={subscriptionOptions}\n />\n </FormControl>\n\n <FormControl\n label=\"Resource group\"\n inputId=\"resourceGroup-input\"\n errors={errors.resourceGroup}\n >\n <Field\n name=\"resourceGroup\"\n as={Select}\n id=\"resourceGroup-input\"\n options={getSubscriptionResourceGroups(\n values.subscription,\n resourceGroups\n )}\n />\n </FormControl>\n\n <FormControl\n label=\"Location\"\n inputId=\"location-input\"\n errors={errors.location}\n >\n <Field\n name=\"location\"\n as={Select}\n id=\"location-input\"\n options={getSubscriptionLocations(values.subscription, providers)}\n />\n </FormControl>\n\n <FormSectionTitle>Container configuration</FormSectionTitle>\n\n <FormControl label=\"Name\" inputId=\"name-input\" errors={errors.name}>\n <Field\n name=\"name\"\n as={Input}\n id=\"name-input\"\n placeholder=\"e.g. myContainer\"\n />\n </FormControl>\n\n <FormControl\n label=\"Image\"\n inputId=\"image-input\"\n errors={errors.image}\n >\n <Field\n name=\"image\"\n as={Input}\n id=\"image-input\"\n placeholder=\"e.g. nginx:alpine\"\n />\n </FormControl>\n\n <FormControl label=\"OS\" inputId=\"os-input\" errors={errors.os}>\n <Field\n name=\"os\"\n as={Select}\n id=\"os-input\"\n options={[\n { label: 'Linux', value: 'Linux' },\n { label: 'Windows', value: 'Windows' },\n ]}\n />\n </FormControl>\n\n <PortsMappingField\n value={values.ports}\n onChange={(value) => setFieldValue('ports', value)}\n errors={errors.ports}\n />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12 small text-muted\">\n This will automatically deploy a container with a public IP\n address\n </div>\n </div>\n\n <FormSectionTitle>Container Resources</FormSectionTitle>\n\n <FormControl label=\"CPU\" inputId=\"cpu-input\" errors={errors.cpu}>\n <Field\n name=\"cpu\"\n as={Input}\n id=\"cpu-input\"\n type=\"number\"\n placeholder=\"1\"\n />\n </FormControl>\n\n <FormControl\n label=\"Memory\"\n inputId=\"cpu-input\"\n errors={errors.memory}\n >\n <Field\n name=\"memory\"\n as={Input}\n id=\"memory-input\"\n type=\"number\"\n placeholder=\"1\"\n />\n </FormControl>\n\n <AccessControlForm\n formNamespace=\"accessControl\"\n onChange={(values) => setFieldValue('accessControl', values)}\n values={values.accessControl}\n errors={errors.accessControl}\n />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n disabled={!isValid}\n isLoading={isSubmitting}\n loadingText=\"Deployment in progress...\"\n icon={Plus}\n >\n Deploy the container\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n\n async function onSubmit(values: ContainerInstanceFormValues) {\n try {\n await mutateAsync(values);\n notifications.success('Container successfully created', values.name);\n router.stateService.go('azure.containerinstances');\n } catch (e) {\n notifications.error('Failure', e as Error, 'Unable to create container');\n }\n }\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\nimport {\n ContainerInstanceFormValues,\n ProviderViewModel,\n ResourceGroup,\n Subscription,\n} from '@/react/azure/types';\nimport { parseAccessControlFormData } from '@/react/portainer/access-control/utils';\nimport { useCurrentUser } from '@/react/hooks/useUser';\nimport { useProvider } from '@/react/azure/queries/useProvider';\nimport { useResourceGroups } from '@/react/azure/queries/useResourceGroups';\nimport { useSubscriptions } from '@/react/azure/queries/useSubscriptions';\n\nimport {\n getSubscriptionLocations,\n getSubscriptionResourceGroups,\n} from './utils';\n\nexport function useLoadFormState(environmentId: EnvironmentId) {\n const { data: subscriptions, isLoading: isLoadingSubscriptions } =\n useSubscriptions(environmentId);\n const { resourceGroups, isLoading: isLoadingResourceGroups } =\n useResourceGroups(environmentId, subscriptions);\n const { providers, isLoading: isLoadingProviders } = useProvider(\n environmentId,\n subscriptions\n );\n\n const isLoading =\n isLoadingSubscriptions || isLoadingResourceGroups || isLoadingProviders;\n\n return { isLoading, subscriptions, resourceGroups, providers };\n}\n\nexport function useFormState(\n subscriptions: Subscription[] = [],\n resourceGroups: Record<string, ResourceGroup[]> = {},\n providers: Record<string, ProviderViewModel> = {}\n) {\n const { isAdmin, user } = useCurrentUser();\n\n const subscriptionOptions = subscriptions.map((s) => ({\n value: s.subscriptionId,\n label: s.displayName,\n }));\n\n const initSubscriptionId = getFirstValue(subscriptionOptions);\n\n const subscriptionResourceGroups = getSubscriptionResourceGroups(\n initSubscriptionId,\n resourceGroups\n );\n\n const subscriptionLocations = getSubscriptionLocations(\n initSubscriptionId,\n providers\n );\n\n const initialValues: ContainerInstanceFormValues = {\n name: '',\n location: getFirstValue(subscriptionLocations),\n subscription: initSubscriptionId,\n resourceGroup: getFirstValue(subscriptionResourceGroups),\n image: '',\n os: 'Linux',\n memory: 1,\n cpu: 1,\n ports: [{ container: 80, host: 80, protocol: 'TCP' }],\n allocatePublicIP: true,\n accessControl: parseAccessControlFormData(isAdmin, user.Id),\n };\n\n return {\n initialValues,\n subscriptionOptions,\n };\n\n function getFirstValue<T>(arr: { value: T }[]) {\n if (arr.length === 0) {\n return undefined;\n }\n\n return arr[0].value;\n }\n}\n","import { object, string, number, boolean } from 'yup';\n\nimport { validationSchema as accessControlSchema } from '@/react/portainer/access-control/AccessControlForm/AccessControlForm.validation';\n\nimport { validationSchema as portsSchema } from './PortsMappingField.validation';\n\nexport function validationSchema(isAdmin: boolean) {\n return object().shape({\n name: string().required('Name is required.'),\n image: string().required('Image is required.'),\n subscription: string().required('Subscription is required.'),\n resourceGroup: string().required('Resource group is required.'),\n location: string().required('Location is required.'),\n os: string().oneOf(['Linux', 'Windows']),\n cpu: number().positive(),\n memory: number().positive(),\n allocatePublicIP: boolean(),\n ports: portsSchema(),\n accessControl: accessControlSchema(isAdmin),\n });\n}\n","import { array, object, string } from 'yup';\n\nexport function validationSchema() {\n return array(\n object().shape({\n host: string().required('host is required'),\n container: string().required('container is required'),\n protocol: string().oneOf(['TCP', 'UDP']),\n })\n ).min(1, 'At least one port binding is required');\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { withError } from '@/react-tools/react-query';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { ContainerGroup } from '../types';\n\nimport { queryKeys } from './query-keys';\nimport { buildContainerGroupUrl } from './utils';\n\nexport function useContainerGroup(\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName: string,\n containerGroupName: string\n) {\n return useQuery(\n queryKeys.containerGroup(\n environmentId,\n subscriptionId,\n resourceGroupName,\n containerGroupName\n ),\n () =>\n getContainerGroup(\n environmentId,\n subscriptionId,\n resourceGroupName,\n containerGroupName\n ),\n {\n ...withError('Unable to retrieve Azure container group'),\n }\n );\n}\n\nasync function getContainerGroup(\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName: string,\n containerGroupName: string\n) {\n try {\n const { data } = await axios.get<ContainerGroup>(\n buildContainerGroupUrl(\n environmentId,\n subscriptionId,\n resourceGroupName,\n containerGroupName\n ),\n { params: { 'api-version': '2018-04-01' } }\n );\n\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { azureErrorParser } from '../services/utils';\nimport { ResourceGroup } from '../types';\n\nimport { queryKeys } from './query-keys';\nimport { buildResourceGroupUrl } from './utils';\n\nexport function useResourceGroup(\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName: string\n) {\n return useQuery(\n queryKeys.resourceGroup(environmentId, subscriptionId, resourceGroupName),\n () => getResourceGroup(environmentId, subscriptionId, resourceGroupName),\n {\n ...withError('Unable to retrieve Azure resource group'),\n }\n );\n}\n\nexport async function getResourceGroup(\n environmentId: EnvironmentId,\n subscriptionId: string,\n resourceGroupName: string\n) {\n try {\n const { data } = await axios.get<ResourceGroup>(\n buildResourceGroupUrl(environmentId, subscriptionId, resourceGroupName),\n { params: { 'api-version': '2018-02-01' } }\n );\n\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Unable to retrieve resource group',\n azureErrorParser\n );\n }\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { Subscription } from '../types';\nimport { azureErrorParser } from '../services/utils';\n\nimport { queryKeys } from './query-keys';\nimport { buildSubscriptionsUrl } from './utils';\n\nexport function useSubscription(\n environmentId: EnvironmentId,\n subscriptionId: string\n) {\n return useQuery(\n queryKeys.subscription(environmentId, subscriptionId),\n () => getSubscription(environmentId, subscriptionId),\n {\n ...withError('Unable to retrieve Azure subscription'),\n }\n );\n}\n\nasync function getSubscription(\n environmentId: EnvironmentId,\n subscriptionId: string\n) {\n try {\n const { data } = await axios.get<Subscription>(\n buildSubscriptionsUrl(environmentId, subscriptionId),\n { params: { 'api-version': '2016-06-01' } }\n );\n\n return data;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve subscription',\n azureErrorParser\n );\n }\n}\n","import _ from 'lodash';\nimport { useMemo } from 'react';\nimport { useQueries } from 'react-query';\n\nimport { withError } from '@/react-tools/react-query';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Subscription, ContainerGroup } from '../types';\n\nimport { queryKeys } from './query-keys';\nimport { buildContainerGroupUrl } from './utils';\n\nexport function useContainerGroups(\n environmentId: EnvironmentId,\n subscriptions: Subscription[] = [],\n enabled?: boolean\n) {\n const queries = useQueries(\n useMemo(\n () =>\n subscriptions.map((subscription) => ({\n queryKey: queryKeys.containerGroups(\n environmentId,\n subscription.subscriptionId\n ),\n queryFn: async () =>\n getContainerGroups(environmentId, subscription.subscriptionId),\n ...withError('Unable to retrieve Azure container groups'),\n enabled,\n })),\n [subscriptions, enabled, environmentId]\n )\n );\n\n return useMemo(\n () => ({\n containerGroups: _.flatMap(_.compact(queries.map((q) => q.data))),\n isLoading: queries.some((q) => q.isLoading),\n }),\n [queries]\n );\n}\n\nexport async function getContainerGroups(\n environmentId: EnvironmentId,\n subscriptionId: string\n) {\n try {\n const { data } = await axios.get<{ value: ContainerGroup[] }>(\n buildContainerGroupUrl(environmentId, subscriptionId),\n { params: { 'api-version': '2018-04-01' } }\n );\n\n return data.value;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve container groups');\n }\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { ContainerGroup } from '@/react/azure/types';\n\nexport const columnHelper = createColumnHelper<ContainerGroup>();\n","import { CellContext } from '@tanstack/react-table';\n\nimport { ContainerGroup } from '@/react/azure/types';\n\nimport { Link } from '@@/Link';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor('name', {\n header: 'Name',\n cell: NameCell,\n});\n\nexport function NameCell({\n getValue,\n row: { original: container },\n}: CellContext<ContainerGroup, string>) {\n const name = getValue();\n return (\n <Link\n to=\"azure.containerinstances.container\"\n params={{ id: container.id }}\n className=\"hover:underline\"\n >\n {name}\n </Link>\n );\n}\n","import { columnHelper } from './helper';\n\nexport const location = columnHelper.accessor('location', {\n header: 'Location',\n});\n","import { ExternalLink } from 'lucide-react';\nimport { CellContext } from '@tanstack/react-table';\n\nimport { ContainerGroup } from '@/react/azure/types';\nimport { getPorts } from '@/react/azure/utils';\n\nimport { Icon } from '@@/Icon';\n\nimport { columnHelper } from './helper';\n\nexport const ports = columnHelper.accessor(getPorts, {\n header: 'Published Ports',\n cell: PortsCell,\n id: 'ports',\n});\n\nfunction PortsCell({\n getValue,\n row: { original: container },\n}: CellContext<ContainerGroup, ReturnType<typeof getPorts>>) {\n const ports = getValue();\n\n const ip = container.properties.ipAddress\n ? container.properties.ipAddress.ip\n : '';\n if (ports.length === 0 || !ip) {\n return '-';\n }\n\n return ports.map((port) => (\n <a className=\"image-tag\" href={`http://${ip}:${port.host}`} key={port.host}>\n <Icon icon={ExternalLink} className=\"mr-1\" />\n {ip}:{port.host}\n </a>\n ));\n}\n","import { ContainerGroup } from './types';\n\nexport function getPorts(containerGroup: ContainerGroup) {\n const addressPorts = containerGroup.properties.ipAddress\n ? containerGroup.properties.ipAddress.ports\n : [];\n const container = containerGroup.properties.containers.length\n ? containerGroup.properties.containers[0]\n : null;\n const containerPorts = container ? container.properties.ports : [];\n\n return addressPorts.map((binding, index) => {\n const port = containerPorts[index] ? containerPorts[index].port : undefined;\n return {\n container: port,\n host: binding.port,\n protocol: binding.protocol,\n };\n });\n}\n","import { name } from './name';\nimport { location } from './location';\nimport { ports } from './ports';\nimport { ownership } from './ownership';\n\nexport const columns = [name, location, ports, ownership];\n","import clsx from 'clsx';\nimport { CellContext } from '@tanstack/react-table';\n\nimport { ownershipIcon } from '@/portainer/filters/filters';\nimport { ResourceControlOwnership } from '@/react/portainer/access-control/types';\nimport { ContainerGroup } from '@/react/azure/types';\nimport { determineOwnership } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nimport { columnHelper } from './helper';\n\nexport const ownership = columnHelper.accessor(\n (row) =>\n row.Portainer && row.Portainer.ResourceControl\n ? determineOwnership(row.Portainer.ResourceControl)\n : ResourceControlOwnership.ADMINISTRATORS,\n {\n header: 'Ownership',\n cell: OwnershipCell,\n id: 'ownership',\n }\n);\n\nfunction OwnershipCell({\n getValue,\n}: CellContext<ContainerGroup, ResourceControlOwnership>) {\n const value = getValue();\n\n return (\n <>\n <i\n className={clsx(ownershipIcon(value), 'space-right')}\n aria-hidden=\"true\"\n />\n {value}\n </>\n );\n}\n","import { Box, Plus, Trash2 } from 'lucide-react';\n\nimport { ContainerGroup } from '@/react/azure/types';\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { confirmDelete } from '@@/modals/confirm';\nimport { Datatable } from '@@/datatables';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { columns } from './columns';\n\nconst tableKey = 'containergroups';\n\nconst settingsStore = createPersistedStore(tableKey, 'name');\nexport interface Props {\n dataset: ContainerGroup[];\n onRemoveClick(containerIds: string[]): void;\n}\n\nexport function ContainersDatatable({ dataset, onRemoveClick }: Props) {\n const tableState = useTableState(settingsStore, tableKey);\n\n return (\n <Datatable\n dataset={dataset}\n columns={columns}\n settingsManager={tableState}\n title=\"Containers\"\n titleIcon={Box}\n getRowId={(container) => container.id}\n emptyContentLabel=\"No container available.\"\n renderTableActions={(selectedRows) => (\n <>\n <Authorized authorizations=\"AzureContainerGroupDelete\">\n <Button\n color=\"dangerlight\"\n disabled={selectedRows.length === 0}\n onClick={() => handleRemoveClick(selectedRows.map((r) => r.id))}\n icon={Trash2}\n >\n Remove\n </Button>\n </Authorized>\n\n <Authorized authorizations=\"AzureContainerGroupCreate\">\n <Link to=\"azure.containerinstances.new\" className=\"space-left\">\n <Button icon={Plus}>Add container</Button>\n </Link>\n </Authorized>\n </>\n )}\n />\n );\n\n async function handleRemoveClick(containerIds: string[]) {\n const confirmed = await confirmDelete(\n 'Are you sure you want to delete the selected containers?'\n );\n if (!confirmed) {\n return null;\n }\n\n return onRemoveClick(containerIds);\n }\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport { deleteContainerGroup } from '@/react/azure/services/container-groups.service';\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport { notifyError, notifySuccess } from '@/portainer/services/notifications';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport { useContainerGroups } from '@/react/azure/queries/useContainerGroups';\nimport { useSubscriptions } from '@/react/azure/queries/useSubscriptions';\n\nimport { PageHeader } from '@@/PageHeader';\n\nimport { ContainersDatatable } from './ContainersDatatable';\n\nexport function ListView() {\n const environmentId = useEnvironmentId();\n\n const subscriptionsQuery = useSubscriptions(environmentId);\n\n const groupsQuery = useContainerGroups(\n environmentId,\n subscriptionsQuery.data,\n subscriptionsQuery.isSuccess\n );\n\n const { handleRemove } = useRemoveMutation(environmentId);\n\n if (groupsQuery.isLoading || subscriptionsQuery.isLoading) {\n return null;\n }\n\n return (\n <>\n <PageHeader\n breadcrumbs=\"Container instances\"\n reload\n title=\"Container list\"\n />\n\n <ContainersDatatable\n dataset={groupsQuery.containerGroups}\n onRemoveClick={handleRemove}\n />\n </>\n );\n}\n\nfunction useRemoveMutation(environmentId: EnvironmentId) {\n const queryClient = useQueryClient();\n\n const deleteMutation = useMutation(\n (containerGroupIds: string[]) =>\n promiseSequence(\n containerGroupIds.map(\n (id) => () => deleteContainerGroup(environmentId, id)\n )\n ),\n\n {\n onSuccess() {\n return queryClient.invalidateQueries([\n 'azure',\n environmentId,\n 'subscriptions',\n ]);\n },\n onError(err) {\n notifyError(\n 'Failure',\n err as Error,\n 'Unable to remove container groups'\n );\n },\n }\n );\n\n return { handleRemove };\n\n async function handleRemove(groupIds: string[]) {\n deleteMutation.mutate(groupIds, {\n onSuccess: () => {\n notifySuccess('Success', 'Container groups successfully removed');\n },\n });\n }\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { CreateView } from '@/react/azure/container-instances/CreateView';\nimport { ItemView } from '@/react/azure/container-instances/ItemView';\nimport { ListView } from '@/react/azure/container-instances/ListView';\nimport { DashboardView } from '@/react/azure/DashboardView';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\n\nexport const viewsModule = angular\n .module('portainer.azure.react.views', [])\n .component(\n 'containerInstanceView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ItemView))), [])\n )\n .component(\n 'createContainerInstanceView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(CreateView))), [])\n )\n .component(\n 'containerInstancesView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ListView))), [])\n )\n .component(\n 'dashboardView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(DashboardView))), [])\n ).name;\n","import { useCurrentStateAndParams } from '@uirouter/react';\nimport { useQueryClient } from 'react-query';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport { AccessControlPanel } from '@/react/portainer/access-control/AccessControlPanel/AccessControlPanel';\nimport { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\nimport { ResourceControlType } from '@/react/portainer/access-control/types';\nimport {\n ContainerGroup,\n ResourceGroup,\n Subscription,\n} from '@/react/azure/types';\nimport { useContainerGroup } from '@/react/azure/queries/useContainerGroup';\nimport { useResourceGroup } from '@/react/azure/queries/useResourceGroup';\nimport { useSubscription } from '@/react/azure/queries/useSubscription';\n\nimport { Input } from '@@/form-components/Input';\nimport { Widget, WidgetBody } from '@@/Widget';\nimport { PageHeader } from '@@/PageHeader';\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\nimport { FormControl } from '@@/form-components/FormControl';\n\nimport { PortsMappingField } from '../CreateView/PortsMappingField';\n\nexport function ItemView() {\n const {\n params: { id },\n } = useCurrentStateAndParams();\n const { subscriptionId, resourceGroupId, containerGroupId } = parseId(id);\n\n const environmentId = useEnvironmentId();\n\n const queryClient = useQueryClient();\n\n const subscriptionQuery = useSubscription(environmentId, subscriptionId);\n const resourceGroupQuery = useResourceGroup(\n environmentId,\n subscriptionId,\n resourceGroupId\n );\n\n const containerQuery = useContainerGroup(\n environmentId,\n subscriptionId,\n resourceGroupId,\n containerGroupId\n );\n\n if (\n !subscriptionQuery.isSuccess ||\n !resourceGroupQuery.isSuccess ||\n !containerQuery.isSuccess\n ) {\n return null;\n }\n\n const container = aggregateContainerData(\n subscriptionQuery.data,\n resourceGroupQuery.data,\n containerQuery.data\n );\n\n return (\n <>\n <PageHeader\n title=\"Container Instance\"\n breadcrumbs={[\n { link: 'azure.containerinstances', label: 'Container instances' },\n { label: container.name },\n ]}\n />\n\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Widget>\n <WidgetBody className=\"form-horizontal\">\n <FormSectionTitle>Azure settings</FormSectionTitle>\n <FormControl label=\"Subscription\" inputId=\"subscription-input\">\n <Input\n name=\"subscription\"\n id=\"subscription-input\"\n value={container.subscriptionName}\n readOnly\n />\n </FormControl>\n\n <FormControl label=\"Resource group\" inputId=\"resourceGroup-input\">\n <Input\n name=\"resourceGroup\"\n id=\"resourceGroup-input\"\n value={container.resourceGroupName}\n readOnly\n />\n </FormControl>\n\n <FormControl label=\"Location\" inputId=\"location-input\">\n <Input\n name=\"location\"\n id=\"location-input\"\n value={container.location}\n readOnly\n />\n </FormControl>\n\n <FormSectionTitle>Container configuration</FormSectionTitle>\n\n <FormControl label=\"Name\" inputId=\"name-input\">\n <Input\n name=\"name\"\n id=\"name-input\"\n readOnly\n value={container.name}\n />\n </FormControl>\n\n <FormControl label=\"Image\" inputId=\"image-input\">\n <Input\n name=\"image\"\n id=\"image-input\"\n value={container.imageName}\n readOnly\n />\n </FormControl>\n\n <FormControl label=\"OS\" inputId=\"os-input\">\n <Input\n name=\"os\"\n id=\"os-input\"\n readOnly\n value={container.osType}\n />\n </FormControl>\n\n <PortsMappingField value={container.ports} readOnly />\n\n <FormControl label=\"Public IP\" inputId=\"public-ip\">\n <Input\n name=\"public-ip\"\n id=\"public-ip\"\n readOnly\n value={container.ipAddress}\n />\n </FormControl>\n\n <FormSectionTitle>Container Resources</FormSectionTitle>\n\n <FormControl label=\"CPU\" inputId=\"cpu-input\">\n <Input\n name=\"cpu\"\n id=\"cpu-input\"\n type=\"number\"\n placeholder=\"1\"\n readOnly\n value={container.cpu}\n />\n </FormControl>\n\n <FormControl label=\"Memory\" inputId=\"cpu-input\">\n <Input\n name=\"memory\"\n id=\"memory-input\"\n type=\"number\"\n placeholder=\"1\"\n readOnly\n value={container.memory}\n />\n </FormControl>\n </WidgetBody>\n </Widget>\n </div>\n </div>\n\n <AccessControlPanel\n onUpdateSuccess={() =>\n queryClient.invalidateQueries([\n 'azure',\n environmentId,\n 'subscriptions',\n subscriptionId,\n 'resourceGroups',\n resourceGroupQuery.data.name,\n 'containerGroups',\n containerQuery.data.name,\n ])\n }\n resourceId={id}\n resourceControl={container.resourceControl}\n resourceType={ResourceControlType.ContainerGroup}\n environmentId={environmentId}\n />\n </>\n );\n}\n\nfunction parseId(id: string) {\n const match = id.match(\n /^\\/subscriptions\\/(.+)\\/resourceGroups\\/(.+)\\/providers\\/(.+)\\/containerGroups\\/(.+)$/\n );\n\n if (!match) {\n throw new Error('container id is missing details');\n }\n\n const [, subscriptionId, resourceGroupId, , containerGroupId] = match;\n\n return { subscriptionId, resourceGroupId, containerGroupId };\n}\n\nfunction aggregateContainerData(\n subscription: Subscription,\n resourceGroup: ResourceGroup,\n containerGroup: ContainerGroup\n) {\n const containerInstanceData = aggregateContainerInstance();\n\n const resourceControl = containerGroup.Portainer?.ResourceControl\n ? new ResourceControlViewModel(containerGroup.Portainer.ResourceControl)\n : undefined;\n\n return {\n name: containerGroup.name,\n subscriptionName: subscription.displayName,\n resourceGroupName: resourceGroup.name,\n location: containerGroup.location,\n osType: containerGroup.properties.osType,\n ipAddress: containerGroup.properties.ipAddress.ip,\n resourceControl,\n ...containerInstanceData,\n };\n\n function aggregateContainerInstance() {\n const containerInstanceData = containerGroup.properties.containers[0];\n\n if (!containerInstanceData) {\n return {\n ports: [],\n };\n }\n\n const containerInstanceProperties = containerInstanceData.properties;\n\n const containerPorts = containerInstanceProperties.ports;\n\n const imageName = containerInstanceProperties.image;\n\n const ports = containerGroup.properties.ipAddress.ports.map(\n (binding, index) => {\n const port =\n containerPorts && containerPorts[index]\n ? containerPorts[index].port\n : undefined;\n return {\n container: port,\n host: binding.port,\n protocol: binding.protocol,\n };\n }\n );\n\n return {\n imageName,\n ports,\n cpu: containerInstanceProperties.resources.cpu,\n memory: containerInstanceProperties.resources.memoryInGB,\n };\n }\n}\n","import { PageHeader } from '@@/PageHeader';\nimport { Widget, WidgetBody } from '@@/Widget';\n\nimport { CreateContainerInstanceForm } from './CreateContainerInstanceForm';\n\nexport function CreateView() {\n return (\n <>\n <PageHeader\n title=\"Create container instance\"\n breadcrumbs={[\n { link: 'azure.containerinstances', label: 'Container instances' },\n { label: 'Add container' },\n ]}\n />\n\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Widget>\n <WidgetBody>\n <CreateContainerInstanceForm />\n </WidgetBody>\n </Widget>\n </div>\n </div>\n </>\n );\n}\n","import { Package } from 'lucide-react';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport Subscription from '@/assets/ico/subscription.svg?c';\n\nimport { PageHeader } from '@@/PageHeader';\nimport { DashboardItem } from '@@/DashboardItem';\nimport { DashboardGrid } from '@@/DashboardItem/DashboardGrid';\n\nimport { useResourceGroups } from '../queries/useResourceGroups';\nimport { useSubscriptions } from '../queries/useSubscriptions';\n\nexport function DashboardView() {\n const environmentId = useEnvironmentId();\n\n const subscriptionsQuery = useSubscriptions(environmentId);\n\n const resourceGroupsQuery = useResourceGroups(\n environmentId,\n subscriptionsQuery.data\n );\n\n const subscriptionsCount = subscriptionsQuery.data?.length;\n const resourceGroupsCount = Object.values(\n resourceGroupsQuery.resourceGroups\n ).flatMap((x) => Object.values(x)).length;\n\n return (\n <>\n <PageHeader title=\"Home\" breadcrumbs={[{ label: 'Dashboard' }]} />\n\n <div className=\"mx-4\">\n {subscriptionsQuery.data && (\n <DashboardGrid>\n <DashboardItem\n value={subscriptionsCount as number}\n isLoading={subscriptionsQuery.isLoading}\n isRefetching={subscriptionsQuery.isRefetching}\n icon={Subscription}\n type=\"Subscription\"\n />\n {!resourceGroupsQuery.isError && !resourceGroupsQuery.isLoading && (\n <DashboardItem\n value={resourceGroupsCount}\n isLoading={resourceGroupsQuery.isLoading}\n icon={Package}\n type=\"Resource group\"\n />\n )}\n </DashboardGrid>\n )}\n </div>\n </>\n );\n}\n","import angular from 'angular';\n\nimport { componentsModule } from './components';\nimport { viewsModule } from './views';\n\nexport const reactModule = angular.module('portainer.azure.react', [\n viewsModule,\n componentsModule,\n]).name;\n","import angular from 'angular';\nimport { StateRegistry, StateService } from '@uirouter/angularjs';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { notifyError } from '@/portainer/services/notifications';\nimport { StateManager } from '@/portainer/services/types';\n\nimport { reactModule } from './react';\n\nexport const azureModule = angular\n .module('portainer.azure', [reactModule])\n .config(config).name;\n\n/* @ngInject */\nfunction config($stateRegistryProvider: StateRegistry) {\n const azure = {\n name: 'azure',\n url: '/azure',\n parent: 'endpoint',\n abstract: true,\n onEnter: /* @ngInject */ function onEnter(\n $async: (fn: () => Promise<void>) => Promise<void>,\n $state: StateService,\n endpoint: Environment,\n StateManager: StateManager\n ) {\n return $async(async () => {\n if (endpoint.Type !== 3) {\n $state.go('portainer.home');\n return;\n }\n try {\n await StateManager.updateEndpointState(endpoint);\n } catch (e) {\n notifyError('Failed loading environment', e as Error);\n $state.go('portainer.home', {}, { reload: true });\n }\n });\n },\n };\n\n const containerInstances = {\n name: 'azure.containerinstances',\n url: '/containerinstances',\n views: {\n 'content@': {\n component: 'containerInstancesView',\n },\n },\n };\n\n const containerInstance = {\n name: 'azure.containerinstances.container',\n url: '/:id',\n views: {\n 'content@': {\n component: 'containerInstanceView',\n },\n },\n };\n\n const containerInstanceCreation = {\n name: 'azure.containerinstances.new',\n url: '/new/',\n views: {\n 'content@': {\n component: 'createContainerInstanceView',\n },\n },\n };\n\n const dashboard = {\n name: 'azure.dashboard',\n url: '/dashboard',\n views: {\n 'content@': {\n component: 'dashboardView',\n },\n },\n };\n\n $stateRegistryProvider.register(azure);\n $stateRegistryProvider.register(containerInstances);\n $stateRegistryProvider.register(containerInstance);\n $stateRegistryProvider.register(containerInstanceCreation);\n $stateRegistryProvider.register(dashboard);\n}\n","import angular from 'angular';\n\nimport {\n API_ENDPOINT_AUTH,\n API_ENDPOINT_BACKUP,\n API_ENDPOINT_CUSTOM_TEMPLATES,\n API_ENDPOINT_EDGE_GROUPS,\n API_ENDPOINT_EDGE_JOBS,\n API_ENDPOINT_EDGE_STACKS,\n API_ENDPOINT_EDGE_TEMPLATES,\n API_ENDPOINT_ENDPOINTS,\n API_ENDPOINT_ENDPOINT_GROUPS,\n API_ENDPOINT_KUBERNETES,\n API_ENDPOINT_MOTD,\n API_ENDPOINT_REGISTRIES,\n API_ENDPOINT_RESOURCE_CONTROLS,\n API_ENDPOINT_SETTINGS,\n API_ENDPOINT_STACKS,\n API_ENDPOINT_SUPPORT,\n API_ENDPOINT_USERS,\n API_ENDPOINT_TAGS,\n API_ENDPOINT_TEAMS,\n API_ENDPOINT_TEAM_MEMBERSHIPS,\n API_ENDPOINT_TEMPLATES,\n API_ENDPOINT_WEBHOOKS,\n PAGINATION_MAX_ITEMS,\n APPLICATION_CACHE_VALIDITY,\n CONSOLE_COMMANDS_LABEL_PREFIX,\n PREDEFINED_NETWORKS,\n} from './constants';\nimport { BROWSER_OS_PLATFORM } from './react/constants';\n\n// don't declare new constants, either:\n// - if only used in one file or module, declare in that file or module (as a regular js constant)\n// - if needed across modules, declare like in `./constants` and use es6 import for that\n\nexport const constantsModule = angular\n .module('portainer.app.constants', [])\n .constant('API_ENDPOINT_AUTH', API_ENDPOINT_AUTH)\n .constant('API_ENDPOINT_BACKUP', API_ENDPOINT_BACKUP)\n .constant('API_ENDPOINT_CUSTOM_TEMPLATES', API_ENDPOINT_CUSTOM_TEMPLATES)\n .constant('API_ENDPOINT_EDGE_GROUPS', API_ENDPOINT_EDGE_GROUPS)\n .constant('API_ENDPOINT_EDGE_JOBS', API_ENDPOINT_EDGE_JOBS)\n .constant('API_ENDPOINT_EDGE_STACKS', API_ENDPOINT_EDGE_STACKS)\n .constant('API_ENDPOINT_EDGE_TEMPLATES', API_ENDPOINT_EDGE_TEMPLATES)\n .constant('API_ENDPOINT_ENDPOINTS', API_ENDPOINT_ENDPOINTS)\n .constant('API_ENDPOINT_ENDPOINT_GROUPS', API_ENDPOINT_ENDPOINT_GROUPS)\n .constant('API_ENDPOINT_KUBERNETES', API_ENDPOINT_KUBERNETES)\n .constant('API_ENDPOINT_MOTD', API_ENDPOINT_MOTD)\n .constant('API_ENDPOINT_REGISTRIES', API_ENDPOINT_REGISTRIES)\n .constant('API_ENDPOINT_RESOURCE_CONTROLS', API_ENDPOINT_RESOURCE_CONTROLS)\n .constant('API_ENDPOINT_SETTINGS', API_ENDPOINT_SETTINGS)\n .constant('API_ENDPOINT_STACKS', API_ENDPOINT_STACKS)\n .constant('API_ENDPOINT_SUPPORT', API_ENDPOINT_SUPPORT)\n .constant('API_ENDPOINT_USERS', API_ENDPOINT_USERS)\n .constant('API_ENDPOINT_TAGS', API_ENDPOINT_TAGS)\n .constant('API_ENDPOINT_TEAMS', API_ENDPOINT_TEAMS)\n .constant('API_ENDPOINT_TEAM_MEMBERSHIPS', API_ENDPOINT_TEAM_MEMBERSHIPS)\n .constant('API_ENDPOINT_TEMPLATES', API_ENDPOINT_TEMPLATES)\n .constant('API_ENDPOINT_WEBHOOKS', API_ENDPOINT_WEBHOOKS)\n .constant('PAGINATION_MAX_ITEMS', PAGINATION_MAX_ITEMS)\n .constant('APPLICATION_CACHE_VALIDITY', APPLICATION_CACHE_VALIDITY)\n .constant('CONSOLE_COMMANDS_LABEL_PREFIX', CONSOLE_COMMANDS_LABEL_PREFIX)\n .constant('PREDEFINED_NETWORKS', PREDEFINED_NETWORKS)\n .constant('BROWSER_OS_PLATFORM', BROWSER_OS_PLATFORM).name;\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nexport type DashboardResponse = {\n JobCount: number;\n GroupCount: number;\n TaskCount: number;\n RunningTaskCount: number;\n NodeCount: number;\n};\n\nexport function useDashboard(environmentId: EnvironmentId) {\n return useQuery(\n ['environments', environmentId, 'nomad', 'dashboard'],\n () => getDashboard(environmentId),\n {\n meta: {\n error: {\n title: 'Failure',\n message: 'Unable to get dashboard information',\n },\n },\n }\n );\n}\n\nexport async function getDashboard(environmentId: EnvironmentId) {\n try {\n const { data: dashboard } = await axios.get<DashboardResponse>(\n `/nomad/endpoints/${environmentId}/dashboard`,\n {\n params: {},\n }\n );\n return dashboard;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import { Power } from 'lucide-react';\n\nimport { StatsItem } from '@@/StatsItem';\n\ninterface Props {\n running: number;\n stopped: number;\n}\n\nexport function RunningStatus({ running, stopped }: Props) {\n return (\n <div>\n <div>\n <StatsItem\n value={`${running || '-'} running`}\n icon={Power}\n iconClass=\"icon-success\"\n />\n {`${running || '-'} running`}\n </div>\n <div>\n <StatsItem\n value={`${stopped || '-'} stopped`}\n icon={Power}\n iconClass=\"icon-danger\"\n />\n {`${stopped || '-'} stopped`}\n </div>\n </div>\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { NomadEvent } from '@/react/nomad/types';\n\nexport const columnHelper = createColumnHelper<NomadEvent>();\n","import { date } from './date';\nimport { type } from './type';\nimport { message } from './message';\n\nexport const columns = [date, type, message];\n","import { isoDate } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const date = columnHelper.accessor('Date', {\n header: 'Date',\n id: 'date',\n cell: ({ getValue }) => {\n const date = getValue();\n return date ? isoDate(date) : '-';\n },\n});\n","import { columnHelper } from './helper';\n\nexport const type = columnHelper.accessor('Type', {\n header: 'Type',\n id: 'type',\n});\n","import { columnHelper } from './helper';\n\nexport const message = columnHelper.accessor('Message', {\n header: 'Message',\n id: 'message',\n});\n","import { History } from 'lucide-react';\n\nimport { NomadEvent } from '@/react/nomad/types';\n\nimport { Datatable } from '@@/datatables';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { columns } from './columns';\n\nexport interface EventsDatatableProps {\n data: NomadEvent[];\n isLoading: boolean;\n}\n\nconst storageKey = 'nomad_events';\n\nconst settingsStore = createPersistedStore(storageKey, 'date');\n\nexport function EventsDatatable({ data, isLoading }: EventsDatatableProps) {\n const tableState = useTableState(settingsStore, storageKey);\n\n return (\n <Datatable\n isLoading={isLoading}\n settingsManager={tableState}\n columns={columns}\n dataset={data}\n titleIcon={History}\n title=\"Events\"\n getRowId={(row) => `${row.Date}-${row.Message}-${row.Type}`}\n disableSelect\n />\n );\n}\n","import { useQuery, useQueryClient } from 'react-query';\nimport { useCurrentStateAndParams } from '@uirouter/react';\n\nimport * as notifications from '@/portainer/services/notifications';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { NomadEventsList } from '../../types';\n\nexport function useEvents() {\n const queryClient = useQueryClient();\n\n const {\n params: {\n endpointId: environmentID,\n allocationID,\n jobID,\n taskName,\n namespace,\n },\n } = useCurrentStateAndParams();\n\n if (!environmentID) {\n throw new Error('endpointId url param is required');\n }\n\n const key = [\n 'environments',\n environmentID,\n 'nomad',\n 'events',\n allocationID,\n jobID,\n taskName,\n namespace,\n ];\n\n function invalidateQuery() {\n return queryClient.invalidateQueries(key);\n }\n\n const query = useQuery(\n key,\n () =>\n getTaskEvents(environmentID, allocationID, jobID, taskName, namespace),\n {\n refetchOnWindowFocus: false,\n onError: (err) => {\n notifications.error('Failed loading events', err as Error, '');\n },\n }\n );\n\n return { query, invalidateQuery };\n}\n\nexport async function getTaskEvents(\n environmentId: EnvironmentId,\n allocationId: string,\n jobId: string,\n taskName: string,\n namespace: string\n) {\n try {\n const ret = await axios.get<NomadEventsList>(\n `/nomad/endpoints/${environmentId}/allocation/${allocationId}/events`,\n {\n params: { jobId, taskName, namespace },\n }\n );\n return ret.data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { Job } from '@/react/nomad/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nexport function useJobs(environmentId: EnvironmentId) {\n return useQuery<Job[]>(\n ['environments', environmentId, 'nomad', 'jobs'],\n () => listJobs(environmentId),\n {\n meta: {\n error: {\n title: 'Failure',\n message: 'Unable to list jobs',\n },\n },\n }\n );\n}\n\nexport async function listJobs(environmentId: EnvironmentId) {\n try {\n const { data: jobs } = await axios.get<Job[]>(\n `/nomad/endpoints/${environmentId}/jobs`,\n {\n params: {},\n }\n );\n return jobs;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import { ReactNode } from 'react';\nimport { Row } from '@tanstack/react-table';\n\nimport { TableRow } from './TableRow';\n\ninterface Props<D extends Record<string, unknown>> {\n row: Row<D>;\n disableSelect?: boolean;\n renderSubRow(row: Row<D>): ReactNode;\n expandOnClick?: boolean;\n}\n\nexport function ExpandableDatatableTableRow<D extends Record<string, unknown>>({\n row,\n disableSelect,\n renderSubRow,\n expandOnClick,\n}: Props<D>) {\n const cells = row.getVisibleCells();\n\n return (\n <>\n <TableRow<D>\n cells={cells}\n onClick={expandOnClick ? () => row.toggleExpanded() : undefined}\n />\n {row.getIsExpanded() && (\n <tr>\n {!disableSelect && <td />}\n <td colSpan={disableSelect ? cells.length : cells.length - 1}>\n {renderSubRow(row)}\n </td>\n </tr>\n )}\n </>\n );\n}\n","import { Row } from '@tanstack/react-table';\nimport { ReactNode } from 'react';\n\nimport { ExpandableDatatableTableRow } from './ExpandableDatatableRow';\nimport {\n Datatable,\n Props as DatatableProps,\n PaginationProps,\n} from './Datatable';\n\ninterface Props<D extends Record<string, unknown>>\n extends Omit<DatatableProps<D>, 'renderRow' | 'expandable'> {\n renderSubRow(row: Row<D>): ReactNode;\n expandOnRowClick?: boolean;\n}\n\nexport function ExpandableDatatable<D extends Record<string, unknown>>({\n renderSubRow,\n getRowCanExpand = () => true,\n expandOnRowClick,\n ...props\n}: Props<D> & PaginationProps) {\n return (\n <Datatable<D>\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n getRowCanExpand={getRowCanExpand}\n renderRow={(row) => (\n <ExpandableDatatableTableRow<D>\n row={row}\n renderSubRow={renderSubRow}\n expandOnClick={expandOnRowClick}\n />\n )}\n />\n );\n}\n","import { PropsWithChildren } from 'react';\n\nimport './NestedTable.css';\n\nexport function NestedTable({ children }: PropsWithChildren<unknown>) {\n return <div className=\"inner-datatable\">{children}</div>;\n}\n","import {\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n TableOptions,\n TableState,\n useReactTable,\n} from '@tanstack/react-table';\n\nimport { defaultGetRowId } from './defaultGetRowId';\nimport { Table } from './Table';\nimport { NestedTable } from './NestedTable';\nimport { DatatableContent } from './DatatableContent';\nimport { BasicTableSettings } from './types';\n\ninterface Props<D extends Record<string, unknown>> {\n dataset: D[];\n columns: TableOptions<D>['columns'];\n\n getRowId?(row: D): string;\n emptyContentLabel?: string;\n initialTableState?: Partial<TableState>;\n isLoading?: boolean;\n initialSortBy?: BasicTableSettings['sortBy'];\n}\n\nexport function NestedDatatable<D extends Record<string, unknown>>({\n columns,\n dataset,\n getRowId = defaultGetRowId,\n emptyContentLabel,\n initialTableState = {},\n isLoading,\n initialSortBy,\n}: Props<D>) {\n const tableInstance = useReactTable<D>({\n columns,\n data: dataset,\n initialState: {\n sorting: initialSortBy ? [initialSortBy] : [],\n ...initialTableState,\n },\n defaultColumn: {\n enableColumnFilter: false,\n enableHiding: false,\n },\n getRowId,\n autoResetExpanded: false,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n });\n\n return (\n <NestedTable>\n <Table.Container>\n <DatatableContent<D>\n tableInstance={tableInstance}\n isLoading={isLoading}\n emptyContentLabel={emptyContentLabel}\n renderRow={(row) => <Table.Row<D> cells={row.getVisibleCells()} />}\n />\n </Table.Container>\n </NestedTable>\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { Task } from '@/react/nomad/types';\n\nexport const columnHelper = createColumnHelper<Task>();\n","import _ from 'lodash';\nimport clsx from 'clsx';\nimport { CellContext } from '@tanstack/react-table';\n\nimport { Task } from '@/react/nomad/types';\n\nimport { filterHOC } from '@@/datatables/Filter';\n\nimport { columnHelper } from './helper';\n\nexport const taskStatus = columnHelper.accessor('State', {\n header: 'Task Status',\n id: 'status',\n meta: {\n filter: filterHOC('Filter by state'),\n },\n cell: StateCell,\n enableColumnFilter: true,\n});\n\nfunction StateCell({ getValue }: CellContext<Task, string>) {\n const state = getValue();\n const className = getClassName();\n\n return <span className={clsx('label', className)}>{state}</span>;\n\n function getClassName() {\n if (['dead'].includes(_.toLower(state))) {\n return 'label-danger';\n }\n\n if (['pending'].includes(_.toLower(state))) {\n return 'label-warning';\n }\n\n return 'label-success';\n }\n}\n","import { columnHelper } from './helper';\n\nexport const taskName = columnHelper.accessor('TaskName', {\n header: 'Task Name',\n id: 'taskName',\n});\n","import { columnHelper } from './helper';\n\nexport const taskGroup = columnHelper.accessor('TaskGroup', {\n header: 'Task Group',\n id: 'taskGroup',\n cell: ({ getValue }) => {\n const value = getValue();\n return value || '-';\n },\n});\n","import { columnHelper } from './helper';\n\nexport const allocationID = columnHelper.accessor('AllocationID', {\n header: 'Allocation ID',\n id: 'allocationID',\n cell: ({ getValue }) => {\n const value = getValue();\n return value || '-';\n },\n});\n","import moment from 'moment';\n\nimport { Task } from '@/react/nomad/types';\nimport { isoDate } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nfunction accessor(row: Task) {\n const momentDate = moment(row.StartedAt);\n const isValid = momentDate.unix() > 0;\n return isValid ? isoDate(momentDate) : '-';\n}\n\nexport const started = columnHelper.accessor(accessor, {\n header: 'Started',\n id: 'startedName',\n});\n","import { taskStatus } from './taskStatus';\nimport { taskName } from './taskName';\nimport { taskGroup } from './taskGroup';\nimport { allocationID } from './allocationID';\nimport { started } from './started';\nimport { actions } from './actions';\n\nexport const columns = [\n taskStatus,\n taskName,\n taskGroup,\n allocationID,\n actions,\n started,\n];\n","import { Clock, FileText } from 'lucide-react';\nimport { CellContext } from '@tanstack/react-table';\n\nimport { Task } from '@/react/nomad/types';\n\nimport { Link } from '@@/Link';\nimport { Icon } from '@@/Icon';\n\nimport { columnHelper } from './helper';\n\nexport const actions = columnHelper.display({\n header: 'Task Actions',\n id: 'actions',\n meta: {\n width: '5px',\n },\n cell: ActionsCell,\n});\n\nexport function ActionsCell({ row }: CellContext<Task, unknown>) {\n const params = {\n allocationID: row.original.AllocationID,\n taskName: row.original.TaskName,\n namespace: row.original.Namespace,\n jobID: row.original.JobID,\n };\n\n return (\n <div className=\"vertical-center text-center\">\n {/* events */}\n <Link\n to=\"nomad.events\"\n params={params}\n title=\"Events\"\n className=\"space-right\"\n >\n <Icon icon={Clock} className=\"space-right\" />\n </Link>\n\n {/* logs */}\n <Link to=\"nomad.logs\" params={params} title=\"Logs\">\n <Icon icon={FileText} className=\"space-right\" />\n </Link>\n </div>\n );\n}\n","import { Task } from '@/react/nomad/types';\n\nimport { NestedDatatable } from '@@/datatables/NestedDatatable';\n\nimport { columns } from './columns';\n\nexport interface Props {\n data: Task[];\n}\n\nexport function TasksDatatable({ data }: Props) {\n return (\n <NestedDatatable\n columns={columns}\n dataset={data}\n initialSortBy={{ id: 'taskName', desc: false }}\n />\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { Job } from '@/react/nomad/types';\n\nexport const columnHelper = createColumnHelper<Job>();\n","import { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor('ID', {\n header: 'Name',\n id: 'name',\n});\n","import { columnHelper } from './helper';\n\nexport const status = columnHelper.accessor('Status', {\n header: 'Job Status',\n id: 'status',\n cell: ({ getValue }) => {\n const value = getValue();\n return value || '-';\n },\n});\n","import { isoDate } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor('SubmitTime', {\n header: 'Created',\n id: 'created',\n cell: ({ getValue }) => {\n const date = getValue();\n return date ? isoDate(parseInt(date, 10)) : '-';\n },\n});\n","import { Clock } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\n\nimport { columnHelper } from './helper';\n\nexport const actions = columnHelper.display({\n header: 'Job Actions',\n id: 'actions',\n meta: {\n width: '110px',\n },\n cell: ActionsCell,\n});\n\nexport function ActionsCell() {\n return (\n <div className=\"text-center\">\n <Icon icon={Clock} />\n </div>\n );\n}\n","import { Job } from '@/react/nomad/types';\n\nimport { buildExpandColumn } from '@@/datatables/expand-column';\n\nimport { name } from './name';\nimport { status } from './status';\nimport { created } from './created';\nimport { actions } from './actions';\nimport { namespace } from './namespace';\n\nconst expand = buildExpandColumn<Job>();\n\nexport const columns = [expand, name, status, namespace, actions, created];\n","import { ChevronDown, ChevronUp } from 'lucide-react';\nimport { ColumnDef } from '@tanstack/react-table';\n\nimport { Button } from '@@/buttons';\n\nexport function buildExpandColumn<\n T extends Record<string, unknown>\n>(): ColumnDef<T> {\n return {\n id: 'expand',\n header: ({ table }) => {\n const hasExpandableItems = table.getExpandedRowModel().rows.length > 0;\n\n return (\n hasExpandableItems && (\n <Button\n onClick={table.getToggleAllRowsExpandedHandler()}\n color=\"none\"\n icon={table.getIsAllRowsExpanded() ? ChevronDown : ChevronUp}\n />\n )\n );\n },\n cell: ({ row }) =>\n row.getCanExpand() && (\n <Button\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n row.toggleExpanded();\n }}\n color=\"none\"\n icon={row.getIsExpanded() ? ChevronDown : ChevronUp}\n />\n ),\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableHiding: false,\n\n meta: {\n width: 40,\n },\n };\n}\n","import { columnHelper } from './helper';\n\nexport const namespace = columnHelper.accessor('Namespace', {\n header: 'Namespace',\n id: 'namespace',\n cell: ({ getValue }) => {\n const value = getValue();\n return value || '-';\n },\n});\n","import { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';\n\nimport { TableSettings } from './types';\n\ninterface Props {\n settings: TableSettings;\n}\n\nexport function JobsDatatableSettings({ settings }: Props) {\n return (\n <TableSettingsMenuAutoRefresh\n value={settings.autoRefreshRate}\n onChange={handleRefreshRateChange}\n />\n );\n\n function handleRefreshRateChange(autoRefreshRate: number) {\n settings.setAutoRefreshRate(autoRefreshRate);\n }\n}\n","import { Clock } from 'lucide-react';\n\nimport { Job } from '@/react/nomad/types';\n\nimport { useRepeater } from '@@/datatables/useRepeater';\nimport { ExpandableDatatable } from '@@/datatables/ExpandableDatatable';\nimport { TableSettingsMenu } from '@@/datatables/TableSettingsMenu';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { TasksDatatable } from './TasksDatatable';\nimport { columns } from './columns';\nimport { createStore } from './datatable-store';\nimport { JobsDatatableSettings } from './JobsDatatableSettings';\n\nexport interface JobsDatatableProps {\n jobs: Job[];\n refreshData: () => Promise<void>;\n isLoading?: boolean;\n}\n\nconst storageKey = 'nomad_jobs';\nconst settingsStore = createStore(storageKey);\n\nexport function JobsDatatable({\n jobs,\n refreshData,\n isLoading,\n}: JobsDatatableProps) {\n const tableState = useTableState(settingsStore, storageKey);\n useRepeater(tableState.autoRefreshRate, refreshData);\n\n return (\n <ExpandableDatatable\n dataset={jobs}\n columns={columns}\n settingsManager={tableState}\n title=\"Nomad Jobs\"\n titleIcon={Clock}\n disableSelect\n emptyContentLabel=\"No jobs found\"\n renderSubRow={(row) => <TasksDatatable data={row.original.Tasks} />}\n isLoading={isLoading}\n renderTableSettings={() => (\n <TableSettingsMenu>\n <JobsDatatableSettings settings={tableState} />\n </TableSettingsMenu>\n )}\n expandOnRowClick\n />\n );\n}\n","import { refreshableSettings, createPersistedStore } from '@@/datatables/types';\n\nimport { TableSettings } from './types';\n\nexport function createStore(storageKey: string) {\n return createPersistedStore<TableSettings>(storageKey, 'created', (set) => ({\n ...refreshableSettings(set),\n }));\n}\n","import { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\n\nimport { PageHeader } from '@@/PageHeader';\n\nimport { useJobs } from './useJobs';\nimport { JobsDatatable } from './JobsDatatable';\n\nexport function JobsView() {\n const environmentId = useEnvironmentId();\n const jobsQuery = useJobs(environmentId);\n\n async function reloadData() {\n await jobsQuery.refetch();\n }\n\n return (\n <>\n <PageHeader\n title=\"Nomad Job list\"\n breadcrumbs={[{ label: 'Nomad Jobs' }]}\n reload\n loading={jobsQuery.isLoading}\n onReload={reloadData}\n />\n\n <JobsDatatable\n jobs={jobsQuery.data || []}\n refreshData={reloadData}\n isLoading={jobsQuery.isLoading}\n />\n </>\n );\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\ninterface LeaderResponse {\n Leader: string;\n}\n\nexport async function getLeader(environmentId: EnvironmentId) {\n try {\n const { data } = await axios.get<LeaderResponse>(\n `/nomad/endpoints/${environmentId}/leader`,\n {\n params: {},\n }\n );\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import angular from 'angular';\n\nexport const componentsModule = angular.module(\n 'portainer.nomad.react.components',\n []\n).name;\n","import angular from 'angular';\n\nexport const viewsModule = angular.module(\n 'portainer.nomad.react.views',\n []\n).name;\n","import angular from 'angular';\n\nimport { componentsModule } from './components';\nimport { viewsModule } from './views';\n\nexport const reactModule = angular.module('portainer.nomad.react', [\n viewsModule,\n componentsModule,\n]).name;\n","const autoNgTemplateLoaderTemplate1 = require('./logs.html');\n\nimport controller from './logsController';\n\nexport const logsView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","import angular from 'angular';\n\nimport { logsView } from './logs';\nimport { nomadLogViewer } from './nomad-log-viewer';\n\nexport const logsModule = angular\n .module('portainer.app.nomad.logs', [])\n .component('nomadLogViewer', nomadLogViewer)\n .component('nomadLogsView', logsView).name;\n","import angular from 'angular';\nimport { StateRegistry, StateService } from '@uirouter/angularjs';\n\nimport { isNomadEnvironment } from '@/react/portainer/environments/utils';\nimport { DashboardView } from '@/react/nomad/DashboardView';\nimport { r2a } from '@/react-tools/react2angular';\nimport { EventsView } from '@/react/nomad/jobs/EventsView';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { JobsView } from '@/react/nomad/jobs/JobsView';\nimport { getLeader } from '@/react/nomad/nomad.service';\nimport { Environment } from '@/react/portainer/environments/types';\nimport { StateManager } from '@/portainer/services/types';\nimport { notifyError } from '@/portainer/services/notifications';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { reactModule } from './react';\nimport { logsModule } from './logs';\n\nexport const nomadModule = angular\n .module('portainer.nomad', [reactModule, logsModule])\n .config(config)\n\n .component(\n 'nomadDashboardView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(DashboardView))), [])\n )\n .component(\n 'nomadEventsView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(EventsView))), [])\n )\n .component(\n 'nomadJobsView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(JobsView))), [])\n ).name;\n\n/* @ngInject */\nfunction config($stateRegistryProvider: StateRegistry) {\n // limits module to BE only\n if (!isBE) {\n return;\n }\n\n const nomad = {\n name: 'nomad',\n url: '/nomad',\n parent: 'endpoint',\n abstract: true,\n\n onEnter: /* @ngInject */ function onEnter(\n $async: (fn: () => Promise<void>) => Promise<void>,\n $state: StateService,\n endpoint: Environment,\n StateManager: StateManager\n ) {\n return $async(async () => {\n if (!isNomadEnvironment(endpoint.Type)) {\n $state.go('portainer.home');\n return;\n }\n\n try {\n await getLeader(endpoint.Id);\n await StateManager.updateEndpointState(endpoint);\n } catch (e) {\n notifyError(\n 'Unable to contact Edge agent, please ensure that the agent is properly running on the remote environment.'\n );\n $state.go('portainer.home', {}, { reload: true });\n }\n });\n },\n };\n\n const dashboard = {\n name: 'nomad.dashboard',\n url: '/dashboard',\n views: {\n 'content@': {\n component: 'nomadDashboardView',\n },\n },\n };\n\n const jobs = {\n name: 'nomad.jobs',\n url: '/jobs',\n views: {\n 'content@': {\n component: 'nomadJobsView',\n },\n },\n };\n\n const events = {\n name: 'nomad.events',\n url: '/jobs/:jobID/tasks/:taskName/allocations/:allocationID/events?namespace',\n views: {\n 'content@': {\n component: 'nomadEventsView',\n },\n },\n };\n\n const logs = {\n name: 'nomad.logs',\n url: '/jobs/:jobID/tasks/:taskName/allocations/:allocationID/logs?namespace',\n views: {\n 'content@': {\n component: 'nomadLogsView',\n },\n },\n };\n\n $stateRegistryProvider.register(nomad);\n $stateRegistryProvider.register(dashboard);\n $stateRegistryProvider.register(jobs);\n $stateRegistryProvider.register(events);\n $stateRegistryProvider.register(logs);\n}\n","import { List, Settings, Boxes, Gauge } from 'lucide-react';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\n\nimport { DashboardItem } from '@@/DashboardItem';\nimport { Widget, WidgetTitle, WidgetBody } from '@@/Widget';\nimport { PageHeader } from '@@/PageHeader';\nimport { DashboardGrid } from '@@/DashboardItem/DashboardGrid';\nimport { Icon } from '@@/Icon';\n\nimport { useDashboard } from './useDashboard';\nimport { RunningStatus } from './RunningStatus';\n\nexport function DashboardView() {\n const environmentId = useEnvironmentId();\n const dashboardQuery = useDashboard(environmentId);\n\n const running = dashboardQuery.data?.RunningTaskCount || 0;\n const stopped = (dashboardQuery.data?.TaskCount || 0) - running;\n\n return (\n <>\n <PageHeader\n title=\"Dashboard\"\n breadcrumbs={[{ label: 'Environment summary' }]}\n />\n\n {dashboardQuery.isLoading ? (\n <div className=\"text-center\" style={{ marginTop: '30%' }}>\n Connecting to the Edge environment...\n <Icon icon={Settings} className=\"!ml-1 animate-spin-slow\" />\n </div>\n ) : (\n <>\n <div className=\"row\">\n <div className=\"col-sm-12\">\n {/* cluster info */}\n <Widget>\n <WidgetTitle icon={Gauge} title=\"Cluster information\" />\n <WidgetBody className=\"no-padding\">\n <table className=\"table\">\n <tbody>\n <tr>\n <td>Nodes in the cluster</td>\n <td>{dashboardQuery.data?.NodeCount ?? '-'}</td>\n </tr>\n </tbody>\n </table>\n </WidgetBody>\n </Widget>\n </div>\n </div>\n\n <div className=\"mx-4\">\n <DashboardGrid>\n {/* jobs */}\n <DashboardItem\n value={dashboardQuery.data?.JobCount}\n icon={List}\n type=\"Nomad Job\"\n />\n {/* groups */}\n <DashboardItem\n value={dashboardQuery.data?.GroupCount}\n icon={List}\n type=\"Group\"\n />\n {/* tasks */}\n <DashboardItem\n value={dashboardQuery.data?.TaskCount}\n icon={Boxes}\n type=\"Task\"\n >\n {/* running status of tasks */}\n <RunningStatus running={running} stopped={stopped} />\n </DashboardItem>\n </DashboardGrid>\n </div>\n </>\n )}\n </>\n );\n}\n","import { useCurrentStateAndParams } from '@uirouter/react';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\n\nimport { PageHeader } from '@@/PageHeader';\n\nimport { EventsDatatable } from './EventsDatatable';\nimport { useEvents } from './useEvents';\n\nexport function EventsView() {\n const environmentId = useEnvironmentId();\n const { query, invalidateQuery } = useEvents();\n const {\n params: { jobID, taskName },\n } = useCurrentStateAndParams();\n\n const breadcrumbs = [\n {\n label: 'Nomad Jobs',\n link: 'nomad.jobs',\n linkParams: { id: environmentId },\n },\n { label: jobID },\n { label: taskName },\n { label: 'Events' },\n ];\n\n return (\n <>\n <PageHeader\n title=\"Event list\"\n breadcrumbs={breadcrumbs}\n reload\n loading={query.isLoading || query.isFetching}\n onReload={invalidateQuery}\n />\n\n <EventsDatatable data={query.data || []} isLoading={query.isLoading} />\n </>\n );\n}\n","import './assets/css';\n\nimport './i18n';\n\nimport angular from 'angular';\nimport { UI_ROUTER_REACT_HYBRID } from '@uirouter/react-hybrid';\n\nimport './matomo-setup';\n\nimport { Edition } from '@/react/portainer/feature-flags/enums';\nimport { init as initFeatureService } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport analyticsModule from './angulartics.matomo';\nimport './agent';\nimport { azureModule } from './azure';\nimport './docker/__module';\nimport './edge/__module';\nimport './portainer/__module';\n\nimport { onStartupAngular } from './app';\nimport { configApp } from './config';\nimport { constantsModule } from './ng-constants';\n\nimport { nomadModule } from './nomad';\n\ninitFeatureService(Edition[process.env.PORTAINER_EDITION]);\n\nangular\n .module('portainer', [\n 'ui.bootstrap',\n 'ui.router',\n UI_ROUTER_REACT_HYBRID,\n 'ngSanitize',\n 'ngFileUpload',\n 'ngMessages',\n 'ngResource',\n 'angularUtils.directives.dirPagination',\n 'LocalStorageModule',\n 'angular-jwt',\n 'angular-json-tree',\n 'angular-loading-bar',\n 'angular-clipboard',\n 'ngFileSaver',\n 'luegg.directives',\n 'portainer.app',\n 'portainer.agent',\n azureModule,\n 'portainer.docker',\n 'portainer.kubernetes',\n nomadModule,\n 'portainer.edge',\n 'rzModule',\n 'moment-picker',\n 'angulartics',\n analyticsModule,\n constantsModule,\n ])\n .run(onStartupAngular)\n .config(configApp);\n\nif (require) {\n const req = require.context('./', true, /^(.*\\.(js$))[^.]*$/im);\n req\n .keys()\n .filter((path) => !path.includes('.test'))\n .forEach(function (key) {\n req(key);\n });\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Namespaces, SelfSubjectAccessReviewResponse } from './types';\n\n// getNamespace is used to retrieve a namespace using the Portainer backend\nexport async function getNamespace(\n environmentId: EnvironmentId,\n namespace: string\n) {\n try {\n const { data: ns } = await axios.get<Namespaces>(\n buildUrl(environmentId, namespace)\n );\n return ns;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve namespace');\n }\n}\n\n// getNamespaces is used to retrieve namespaces using the Portainer backend with caching\nexport async function getNamespaces(environmentId: EnvironmentId) {\n try {\n const { data: namespaces } = await axios.get<Namespaces>(\n buildUrl(environmentId)\n );\n return namespaces;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve namespaces');\n }\n}\n\nexport async function getSelfSubjectAccessReview(\n environmentId: EnvironmentId,\n namespaceName: string,\n verb = 'list',\n resource = 'deployments',\n group = 'apps'\n) {\n try {\n const { data: accessReview } =\n await axios.post<SelfSubjectAccessReviewResponse>(\n `endpoints/${environmentId}/kubernetes/apis/authorization.k8s.io/v1/selfsubjectaccessreviews`,\n {\n spec: {\n resourceAttributes: {\n group,\n resource,\n verb,\n namespace: namespaceName,\n },\n },\n apiVersion: 'authorization.k8s.io/v1',\n kind: 'SelfSubjectAccessReview',\n }\n );\n return accessReview;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve self subject access review'\n );\n }\n}\n\nfunction buildUrl(environmentId: EnvironmentId, namespace?: string) {\n let url = `kubernetes/${environmentId}/namespaces`;\n\n if (namespace) {\n url += `/${namespace}`;\n }\n\n return url;\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { IngressControllerClassMap } from '../../types';\n\nexport const columnHelper = createColumnHelper<IngressControllerClassMap>();\n","import { CellContext } from '@tanstack/react-table';\nimport { Check, X } from 'lucide-react';\n\nimport { Badge } from '@@/Badge';\nimport { Icon } from '@@/Icon';\n\nimport type { IngressControllerClassMap } from '../../types';\n\nimport { columnHelper } from './helper';\n\nexport const availability = columnHelper.accessor('Availability', {\n header: 'Availability',\n cell: Cell,\n id: 'availability',\n invertSorting: true,\n sortingFn: 'basic',\n});\n\nfunction Cell({ getValue }: CellContext<IngressControllerClassMap, boolean>) {\n const availability = getValue();\n\n return (\n <Badge type={availability ? 'success' : 'danger'}>\n <Icon icon={availability ? Check : X} className=\"!mr-1\" />\n {availability ? 'Allowed' : 'Disallowed'}\n </Badge>\n );\n}\n","import { columnHelper } from './helper';\n\nexport const type = columnHelper.accessor('Type', {\n header: 'Ingress controller type',\n cell: ({ getValue }) => {\n const type = getValue();\n return type || '-';\n },\n id: 'type',\n});\n","import { CellContext } from '@tanstack/react-table';\n\nimport { Badge } from '@@/Badge';\n\nimport type { IngressControllerClassMap } from '../../types';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor('ClassName', {\n header: 'Ingress class',\n cell: NameCell,\n id: 'name',\n});\n\nfunction NameCell({\n row,\n getValue,\n}: CellContext<IngressControllerClassMap, string>) {\n const className = getValue();\n\n return (\n <span className=\"flex flex-nowrap\">\n {className}\n {row.original.New && <Badge className=\"ml-1\">Newly detected</Badge>}\n </span>\n );\n}\n","import { availability } from './availability';\nimport { type } from './type';\nimport { name } from './name';\n\nexport const columns = [name, type, availability];\n","import { useEffect, useState } from 'react';\nimport { Database, AlertTriangle } from 'lucide-react';\n\nimport { confirm } from '@@/modals/confirm';\nimport { ModalType } from '@@/modals';\nimport { Datatable } from '@@/datatables';\nimport { Button, ButtonGroup } from '@@/buttons';\nimport { Icon } from '@@/Icon';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { IngressControllerClassMap } from '../types';\n\nimport { columns } from './columns';\n\nconst storageKey = 'ingressClasses';\nconst settingsStore = createPersistedStore(storageKey);\n\ninterface Props {\n onChangeControllers: (\n controllerClassMap: IngressControllerClassMap[]\n ) => void; // angular function to save the ingress class list\n description: string;\n ingressControllers: IngressControllerClassMap[] | undefined;\n allowNoneIngressClass: boolean;\n isLoading: boolean;\n noIngressControllerLabel: string;\n view: string;\n}\n\nexport function IngressClassDatatable({\n onChangeControllers,\n description,\n ingressControllers,\n allowNoneIngressClass,\n isLoading,\n noIngressControllerLabel,\n view,\n}: Props) {\n const tableState = useTableState(settingsStore, storageKey);\n\n const [ingControllerFormValues, setIngControllerFormValues] = useState(\n ingressControllers || []\n );\n\n useEffect(() => {\n if (allowNoneIngressClass === undefined) {\n return;\n }\n\n let newIngFormValues: IngressControllerClassMap[];\n const isCustomTypeExist = ingControllerFormValues.some(\n (ic) => ic.Type === 'custom'\n );\n if (allowNoneIngressClass) {\n newIngFormValues = [...ingControllerFormValues];\n // add the ingress controller type 'custom' with a 'none' ingress class name\n if (!isCustomTypeExist) {\n newIngFormValues.push({\n Name: 'none',\n ClassName: 'none',\n Type: 'custom',\n Availability: true,\n New: false,\n Used: false,\n });\n }\n } else {\n newIngFormValues = ingControllerFormValues.filter(\n (ingController) => ingController.ClassName !== 'none'\n );\n }\n setIngControllerFormValues(newIngFormValues);\n onChangeControllers(newIngFormValues);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [allowNoneIngressClass, onChangeControllers]);\n\n return (\n <div className=\"-mx-[15px]\">\n <Datatable\n settingsManager={tableState}\n dataset={ingControllerFormValues || []}\n columns={columns}\n isLoading={isLoading}\n emptyContentLabel={noIngressControllerLabel}\n title=\"Ingress Controllers\"\n titleIcon={Database}\n getRowId={(row) => `${row.Name}-${row.ClassName}-${row.Type}`}\n renderTableActions={(selectedRows) => renderTableActions(selectedRows)}\n description={renderIngressClassDescription()}\n />\n </div>\n );\n\n function renderTableActions(selectedRows: IngressControllerClassMap[]) {\n return (\n <div className=\"flex items-start\">\n <ButtonGroup>\n <Button\n disabled={\n selectedRows.filter((row) => row.Availability === true).length ===\n 0\n }\n color=\"dangerlight\"\n size=\"small\"\n onClick={() =>\n updateIngressControllers(\n selectedRows,\n ingControllerFormValues || [],\n false\n )\n }\n >\n Disallow selected\n </Button>\n <Button\n disabled={\n selectedRows.filter((row) => row.Availability === false)\n .length === 0\n }\n color=\"default\"\n size=\"small\"\n onClick={() =>\n updateIngressControllers(\n selectedRows,\n ingControllerFormValues || [],\n true\n )\n }\n >\n Allow selected\n </Button>\n </ButtonGroup>\n </div>\n );\n }\n\n function renderIngressClassDescription() {\n return (\n <div className=\"text-muted flex w-full flex-col !text-xs\">\n <div className=\"mt-1\">{description}</div>\n {ingressControllers &&\n ingControllerFormValues &&\n isUnsavedChanges(ingressControllers, ingControllerFormValues) && (\n <span className=\"text-warning mt-1 flex items-center\">\n <Icon icon={AlertTriangle} className=\"!mr-1\" />\n <span className=\"text-warning\">Unsaved changes.</span>\n </span>\n )}\n </div>\n );\n }\n\n async function updateIngressControllers(\n selectedRows: IngressControllerClassMap[],\n ingControllerFormValues: IngressControllerClassMap[],\n availability: boolean\n ) {\n const updatedIngressControllers = getUpdatedIngressControllers(\n selectedRows,\n ingControllerFormValues || [],\n availability\n );\n\n if (ingressControllers && ingressControllers.length) {\n const newAllowed = updatedIngressControllers.map(\n (ingController) => ingController.Availability\n );\n if (view === 'namespace') {\n setIngControllerFormValues(updatedIngressControllers);\n onChangeControllers(updatedIngressControllers);\n return;\n }\n\n const usedControllersToDisallow = ingressControllers.filter(\n (ingController, index) => {\n // if any of the current controllers are allowed, and are used, then become disallowed, then add the controller to a new list\n if (\n ingController.Availability &&\n ingController.Used &&\n !newAllowed[index]\n ) {\n return true;\n }\n return false;\n }\n );\n\n if (usedControllersToDisallow.length > 0) {\n const confirmed = await confirm({\n title: 'Disallow in-use ingress controllers?',\n modalType: ModalType.Warn,\n message: (\n <div>\n <p>\n There are ingress controllers you want to disallow that are in\n use:\n </p>\n <ul className=\"ml-6\">\n {usedControllersToDisallow.map((controller) => (\n <li key={controller.ClassName}>{controller.ClassName}</li>\n ))}\n </ul>\n <p>\n No new ingress rules can be created for the disallowed\n controllers.\n </p>\n </div>\n ),\n confirmButton: buildConfirmButton('Disallow', 'warning'),\n });\n\n if (!confirmed) {\n return;\n }\n }\n setIngControllerFormValues(updatedIngressControllers);\n onChangeControllers(updatedIngressControllers);\n }\n }\n}\n\nfunction isUnsavedChanges(\n oldIngressControllers: IngressControllerClassMap[],\n newIngressControllers: IngressControllerClassMap[]\n) {\n if (oldIngressControllers.length !== newIngressControllers.length) {\n return true;\n }\n for (let i = 0; i < newIngressControllers.length; i += 1) {\n if (\n oldIngressControllers[i]?.Availability !==\n newIngressControllers[i]?.Availability\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction getUpdatedIngressControllers(\n selectedRows: IngressControllerClassMap[],\n allRows: IngressControllerClassMap[],\n allow: boolean\n) {\n const selectedRowClassNames = selectedRows.map((row) => row.ClassName);\n const updatedIngressControllers = allRows?.map((row) => {\n if (selectedRowClassNames.includes(row.ClassName)) {\n return { ...row, Availability: allow };\n }\n return row;\n });\n return updatedIngressControllers;\n}\n","import { components, MultiValueGenericProps } from 'react-select';\n\nimport { Select } from '@@/form-components/ReactSelect';\n\ninterface Option {\n Name: string;\n Description: string;\n}\n\ninterface Props {\n value: Option[];\n onChange(storageClassName: string, value: readonly Option[]): void;\n options: Option[];\n inputId?: string;\n storageClassName: string;\n}\n\nexport function StorageAccessModeSelector({\n value,\n onChange,\n options,\n inputId,\n storageClassName,\n}: Props) {\n return (\n <Select\n isMulti\n getOptionLabel={(option) => option.Description}\n getOptionValue={(option) => option.Name}\n components={{ MultiValueLabel }}\n options={options}\n value={value}\n closeMenuOnSelect={false}\n onChange={(value) => onChange(storageClassName, value)}\n inputId={inputId}\n placeholder=\"Not configured\"\n data-cy={`kubeSetup-storageAccessSelect${storageClassName}`}\n />\n );\n}\n\nfunction MultiValueLabel({\n data,\n innerProps,\n selectProps,\n}: MultiValueGenericProps<Option>) {\n if (!data || !data.Name) {\n throw new Error('missing option name');\n }\n\n return (\n <components.MultiValueLabel\n data={data}\n innerProps={innerProps}\n selectProps={selectProps}\n >\n {data.Name}\n </components.MultiValueLabel>\n );\n}\n","import { User as UserIcon, Users as TeamIcon } from 'lucide-react';\nimport { OptionProps, components, MultiValueGenericProps } from 'react-select';\n\nimport { Select } from '@@/form-components/ReactSelect';\n\ntype Role = { Name: string };\ntype Option = { Type: 'user' | 'team'; Id: number; Name: string; Role: Role };\n\ninterface Props {\n name?: string;\n value: Option[];\n onChange(value: readonly Option[]): void;\n options: Option[];\n dataCy?: string;\n inputId?: string;\n placeholder?: string;\n}\n\nexport function NamespaceAccessUsersSelector({\n onChange,\n options,\n value,\n dataCy,\n inputId,\n name,\n placeholder,\n}: Props) {\n return (\n <Select\n isMulti\n name={name}\n getOptionLabel={(option) => option.Name}\n getOptionValue={(option) => `${option.Id}-${option.Type}`}\n options={options}\n value={value}\n closeMenuOnSelect={false}\n onChange={onChange}\n data-cy={dataCy}\n inputId={inputId}\n placeholder={placeholder}\n components={{ MultiValueLabel, Option: OptionComponent }}\n />\n );\n}\n\nfunction isOption(option: unknown): option is Option {\n return !!option && typeof option === 'object' && 'Type' in option;\n}\n\nfunction OptionComponent({ data, ...props }: OptionProps<Option, true>) {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <components.Option data={data} {...props}>\n {isOption(data) && <Label option={data} />}\n </components.Option>\n );\n}\n\nfunction MultiValueLabel({\n data,\n ...props\n}: MultiValueGenericProps<Option, true>) {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <components.MultiValueLabel data={data} {...props}>\n {isOption(data) && <Label option={data} />}\n </components.MultiValueLabel>\n );\n}\n\nfunction Label({ option }: { option: Option }) {\n const Icon = option.Type === 'user' ? UserIcon : TeamIcon;\n\n return (\n <div className=\"flex items-center gap-1\">\n <Icon />\n <span>{option.Name}</span>\n <span>|</span>\n <span>{option.Role.Name}</span>\n </div>\n );\n}\n","import { useQuery, useMutation, useQueryClient } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\nimport { getServices } from '@/react/kubernetes/networks/services/service';\nimport { isFulfilled } from '@/portainer/helpers/promise-utils';\n\nimport {\n getIngresses,\n getIngress,\n createIngress,\n deleteIngresses,\n updateIngress,\n getIngressControllers,\n} from './service';\nimport { DeleteIngressesRequest, Ingress } from './types';\n\nconst ingressKeys = {\n all: ['environments', 'kubernetes', 'namespace', 'ingress'] as const,\n namespace: (\n environmentId: EnvironmentId,\n namespace: string,\n ingress: string\n ) => [...ingressKeys.all, String(environmentId), namespace, ingress] as const,\n};\n\nexport function useIngress(\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n) {\n return useQuery(\n [\n 'environments',\n environmentId,\n 'kubernetes',\n 'namespace',\n namespace,\n 'ingress',\n name,\n ],\n async () => {\n const ing = await getIngress(environmentId, namespace, name);\n return ing;\n },\n {\n ...withError('Unable to get ingress'),\n }\n );\n}\n\nexport function useIngresses(\n environmentId: EnvironmentId,\n namespaces?: string[]\n) {\n return useQuery(\n [\n 'environments',\n environmentId,\n 'kubernetes',\n 'namespace',\n namespaces,\n 'ingress',\n ],\n async () => {\n if (!namespaces?.length) {\n return [];\n }\n const settledIngressesPromise = await Promise.allSettled(\n namespaces.map((namespace) => getIngresses(environmentId, namespace))\n );\n const ingresses = settledIngressesPromise\n .filter(isFulfilled)\n ?.map((i) => i.value);\n // flatten the array and remove empty ingresses\n const filteredIngresses = ingresses.flat().filter((ing) => ing);\n\n // get all services in only the namespaces that the ingresses are in to find missing services\n const uniqueNamespacesWithIngress = [\n ...new Set(filteredIngresses.map((ing) => ing?.Namespace)),\n ];\n const settledServicesPromise = await Promise.allSettled(\n uniqueNamespacesWithIngress.map((ns) => getServices(environmentId, ns))\n );\n const services = settledServicesPromise\n .filter(isFulfilled)\n ?.map((s) => s.value)\n .flat();\n\n // check if each ingress path service has a service that still exists\n const updatedFilteredIngresses: Ingress[] = filteredIngresses.map(\n (ing) => {\n const servicesInNamespace = services?.filter(\n (service) => service?.Namespace === ing?.Namespace\n );\n const serviceNamesInNamespace = servicesInNamespace?.map(\n (service) => service.Name\n );\n\n const updatedPaths =\n ing.Paths?.map((path) => {\n const hasService = serviceNamesInNamespace?.includes(\n path.ServiceName\n );\n return { ...path, HasService: hasService };\n }) || null;\n\n return { ...ing, Paths: updatedPaths };\n }\n );\n return updatedFilteredIngresses;\n },\n {\n enabled: !!namespaces?.length,\n ...withError('Unable to get ingresses'),\n }\n );\n}\n\nexport function useCreateIngress() {\n const queryClient = useQueryClient();\n return useMutation(\n ({\n environmentId,\n ingress,\n }: {\n environmentId: EnvironmentId;\n ingress: Ingress;\n }) => createIngress(environmentId, ingress),\n mutationOptions(\n withError('Unable to create ingress controller'),\n withInvalidate(queryClient, [ingressKeys.all])\n )\n );\n}\n\nexport function useUpdateIngress() {\n const queryClient = useQueryClient();\n return useMutation(\n ({\n environmentId,\n ingress,\n }: {\n environmentId: EnvironmentId;\n ingress: Ingress;\n }) => updateIngress(environmentId, ingress),\n mutationOptions(\n withError('Unable to update ingress controller'),\n withInvalidate(queryClient, [ingressKeys.all])\n )\n );\n}\n\nexport function useDeleteIngresses() {\n const queryClient = useQueryClient();\n return useMutation(\n ({\n environmentId,\n data,\n }: {\n environmentId: EnvironmentId;\n data: DeleteIngressesRequest;\n }) => deleteIngresses(environmentId, data),\n mutationOptions(\n withError('Unable to update ingress controller'),\n withInvalidate(queryClient, [ingressKeys.all])\n )\n );\n}\n\n/**\n * Ingress Controllers\n */\nexport function useIngressControllers(\n environmentId: EnvironmentId,\n namespace?: string\n) {\n return useQuery(\n [\n 'environments',\n environmentId,\n 'kubernetes',\n 'namespace',\n namespace,\n 'ingresscontrollers',\n ],\n async () =>\n namespace ? getIngressControllers(environmentId, namespace) : [],\n {\n enabled: !!namespace,\n ...withError('Unable to get ingress controllers'),\n }\n );\n}\n","import clsx from 'clsx';\nimport { PropsWithChildren } from 'react';\n\nexport interface Props {\n className?: string;\n}\n\nexport function Card({ className, children }: PropsWithChildren<Props>) {\n return (\n <div\n className={clsx(\n className,\n 'rounded border border-solid border-gray-5 bg-gray-neutral-3 p-5 th-highcontrast:border-white th-highcontrast:bg-black th-dark:border-legacy-grey-3 th-dark:bg-gray-iron-11'\n )}\n >\n {children}\n </div>\n );\n}\n","import { ChangeEvent } from 'react';\n\nimport { InputGroup } from '@@/form-components/InputGroup';\n\ntype Props = {\n serviceIndex: number;\n portIndex: number;\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\n value?: number;\n};\n\nexport function ContainerPortInput({\n serviceIndex,\n portIndex,\n value,\n onChange,\n}: Props) {\n return (\n <InputGroup size=\"small\">\n <InputGroup.Addon required>Container port</InputGroup.Addon>\n <InputGroup.Input\n type=\"number\"\n className=\"form-control min-w-max\"\n name={`container_port_${portIndex}`}\n placeholder=\"80\"\n min=\"1\"\n max=\"65535\"\n value={value ?? ''}\n onChange={onChange}\n required\n data-cy={`k8sAppCreate-containerPort-${serviceIndex}-${portIndex}`}\n />\n </InputGroup>\n );\n}\n","import { ChangeEvent } from 'react';\n\nimport { InputGroup } from '@@/form-components/InputGroup';\n\ntype Props = {\n serviceIndex: number;\n portIndex: number;\n value?: number;\n onChange: (e: ChangeEvent<HTMLInputElement>) => void;\n};\n\nexport function ServicePortInput({\n serviceIndex,\n portIndex,\n value,\n onChange,\n}: Props) {\n return (\n <InputGroup size=\"small\">\n <InputGroup.Addon required>Service port</InputGroup.Addon>\n <InputGroup.Input\n type=\"number\"\n className=\"form-control min-w-max\"\n name={`service_port_${portIndex}`}\n placeholder=\"80\"\n min=\"1\"\n max=\"65535\"\n value={value ?? ''}\n onChange={onChange}\n required\n data-cy={`k8sAppCreate-servicePort-${serviceIndex}-${portIndex}`}\n />\n </InputGroup>\n );\n}\n","import { RefreshCw, Trash2 } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { UseQueryResult } from 'react-query';\nimport { FormikErrors } from 'formik';\n\nimport { Ingress } from '@/react/kubernetes/ingresses/types';\n\nimport { Select } from '@@/form-components/ReactSelect';\nimport { Button } from '@@/buttons';\nimport { FormError } from '@@/form-components/FormError';\nimport { InputGroup } from '@@/form-components/InputGroup';\nimport { Link } from '@@/Link';\n\nimport { IngressOption, ServicePortIngressPath } from '../types';\n\ntype Props = {\n ingressPath?: ServicePortIngressPath;\n ingressPathErrors?: FormikErrors<ServicePortIngressPath>;\n ingressHostOptions: IngressOption[];\n onChangeIngressPath: (ingressPath: ServicePortIngressPath) => void;\n onRemoveIngressPath: () => void;\n ingressesQuery: UseQueryResult<Ingress[], unknown>;\n namespace?: string;\n isEditMode?: boolean;\n};\n\nexport function AppIngressPathForm({\n ingressPath,\n ingressPathErrors,\n ingressHostOptions,\n onChangeIngressPath,\n onRemoveIngressPath,\n ingressesQuery,\n namespace,\n isEditMode,\n}: Props) {\n const [selectedIngress, setSelectedIngress] = useState<IngressOption | null>(\n ingressHostOptions[0] ?? null\n );\n\n // if editing allow the current value as an option,\n // to handle the case where they disallow the ingress class after creating the path\n const ingressHostOptionsWithCurrentValue = useMemo(() => {\n if (\n ingressHostOptions.length === 0 &&\n ingressPath?.Host &&\n ingressPath?.IngressName &&\n isEditMode\n ) {\n return [\n {\n value: ingressPath.Host,\n label: ingressPath.Host,\n ingressName: ingressPath.IngressName,\n },\n ];\n }\n return ingressHostOptions;\n }, [\n ingressHostOptions,\n ingressPath?.Host,\n ingressPath?.IngressName,\n isEditMode,\n ]);\n\n // when the hostname options change (e.g. after a namespace change) and the host and ingress is no longer available, update the selected ingress to the first available one\n useEffect(() => {\n if (ingressHostOptionsWithCurrentValue) {\n // some rerenders might not be from a namespace or hostname change so keep the current values if they're still valid\n const ingressHosts = ingressHostOptionsWithCurrentValue.map(\n (i) => i.value\n );\n const newIngressHostValue = ingressHosts.includes(ingressPath?.Host ?? '')\n ? ingressPath?.Host\n : ingressHosts[0] ?? '';\n const ingressNames = ingressHostOptionsWithCurrentValue.map(\n (i) => i.ingressName\n );\n const newIngressNameValue = ingressNames.includes(\n ingressPath?.IngressName ?? ''\n )\n ? ingressPath?.IngressName ?? ''\n : ingressNames[0] ?? '';\n\n const newIngressPath = {\n ...ingressPath,\n Host: newIngressHostValue,\n IngressName: newIngressNameValue,\n };\n // the selected option should match the new ingress path\n const newIngressOption = newIngressPath.Host\n ? {\n ingressName: newIngressPath.IngressName,\n value: newIngressPath.Host ?? '',\n label: `${newIngressPath.Host} (${newIngressPath.IngressName})`,\n }\n : null;\n onChangeIngressPath(newIngressPath);\n setSelectedIngress(newIngressOption);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ingressHostOptionsWithCurrentValue]);\n\n return (\n <div className=\"flex w-full flex-wrap gap-x-4 gap-y-1\">\n <div className=\"flex min-w-[250px] basis-1/3 flex-col\">\n <InputGroup size=\"small\">\n <InputGroup.Addon>Hostname</InputGroup.Addon>\n <Select\n options={ingressHostOptions}\n value={selectedIngress}\n defaultValue={ingressHostOptions[0]}\n placeholder=\"Select a hostname...\"\n size=\"sm\"\n onChange={(ingressOption) => {\n setSelectedIngress(ingressOption);\n const newIngressPath = {\n ...ingressPath,\n Host: ingressOption?.value,\n IngressName: ingressOption?.ingressName,\n };\n onChangeIngressPath(newIngressPath);\n }}\n />\n <InputGroup.ButtonWrapper>\n <Button\n icon={RefreshCw}\n color=\"default\"\n onClick={() => ingressesQuery.refetch()}\n />\n </InputGroup.ButtonWrapper>\n </InputGroup>\n {ingressHostOptions.length === 0 && !ingressPath?.Host && (\n <FormError>\n No ingress hostnames are available for the namespace '\n {namespace}'. Please select another namespace or{' '}\n <Link\n to=\"kubernetes.ingresses.create\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n create an ingress\n </Link>\n .\n </FormError>\n )}\n {ingressPathErrors?.Host && ingressHostOptions.length > 0 && (\n <FormError>{ingressPathErrors?.Host}</FormError>\n )}\n </div>\n <div className=\"flex min-w-[250px] basis-1/3 flex-col\">\n <InputGroup size=\"small\">\n <InputGroup.Addon required>Path</InputGroup.Addon>\n <InputGroup.Input\n value={ingressPath?.Path ?? ''}\n placeholder=\"/example\"\n onChange={(e) => {\n const newIngressPath = {\n ...ingressPath,\n Path: e.target.value,\n };\n onChangeIngressPath(newIngressPath);\n }}\n />\n </InputGroup>\n {ingressPathErrors?.Path && (\n <FormError>{ingressPathErrors?.Path}</FormError>\n )}\n </div>\n <div className=\"flex flex-col\">\n <Button\n icon={Trash2}\n color=\"dangerlight\"\n size=\"medium\"\n className=\"!ml-0\"\n onClick={() => onRemoveIngressPath()}\n />\n </div>\n </div>\n );\n}\n","import { Loader2, Plus } from 'lucide-react';\nimport { FormikErrors } from 'formik';\nimport { useMemo } from 'react';\n\nimport {\n useIngressControllers,\n useIngresses,\n} from '@/react/kubernetes/ingresses/queries';\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\n\nimport { FormError } from '@@/form-components/FormError';\nimport { Button } from '@@/buttons';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Link } from '@@/Link';\nimport { Icon } from '@@/Icon';\n\nimport { ServicePortIngressPath } from '../types';\n\nimport { AppIngressPathForm } from './AppIngressPathForm';\n\ntype Props = {\n servicePortIngressPaths?: ServicePortIngressPath[];\n onChangeIngressPaths: (ingressPath: ServicePortIngressPath[]) => void;\n namespace?: string;\n ingressPathsErrors?: FormikErrors<ServicePortIngressPath[]>;\n serviceIndex: number;\n portIndex: number;\n isEditMode?: boolean;\n};\n\nexport function AppIngressPathsForm({\n servicePortIngressPaths,\n onChangeIngressPaths,\n namespace,\n ingressPathsErrors,\n serviceIndex,\n portIndex,\n isEditMode,\n}: Props) {\n const environmentId = useEnvironmentId();\n const ingressesQuery = useIngresses(\n environmentId,\n namespace ? [namespace] : undefined\n );\n const { data: ingresses } = ingressesQuery;\n const { data: ingressControllers, ...ingressControllersQuery } =\n useIngressControllers(environmentId, namespace);\n\n // filter for the ingresses that use allowed ingress controllers\n const allowedIngressHostNameOptions = useMemo(() => {\n const allowedIngressClasses =\n ingressControllers\n ?.filter((ic) => ic.Availability)\n .map((ic) => ic.ClassName) || [];\n const allowedIngresses =\n ingresses?.filter((ing) =>\n allowedIngressClasses.includes(ing.ClassName)\n ) || [];\n return allowedIngresses.flatMap((ing) =>\n ing.Hosts?.length\n ? ing.Hosts.map((host) => ({\n label: `${host} (${ing.Name})`,\n value: host,\n ingressName: ing.Name,\n }))\n : []\n );\n }, [ingressControllers, ingresses]);\n\n if (ingressesQuery.isError || ingressControllersQuery.isError) {\n return <FormError>Unable to load ingresses.</FormError>;\n }\n\n if (ingressesQuery.isLoading || ingressControllersQuery.isLoading) {\n return (\n <p className=\"text-muted mt-2 flex items-center gap-x-2 text-sm\">\n <Icon icon={Loader2} className=\"animate-spin-slow\" />\n Loading ingresses...\n </p>\n );\n }\n\n return (\n <div className=\"flex flex-col gap-y-4\">\n <div className=\"!mb-0 flex w-full flex-wrap items-center gap-x-4 gap-y-2\">\n <SwitchField\n fieldClass=\"w-max gap-x-8\"\n label=\"Expose via ingress\"\n tooltip=\"Expose this ClusterIP service externally using an ingress. This will create a new ingress path for the selected ingress hostname.\"\n labelClass=\"w-max\"\n name=\"publish-ingress\"\n checked={!!servicePortIngressPaths?.length}\n onChange={(value) => {\n const newIngressPathsValue = value\n ? [\n {\n Host: allowedIngressHostNameOptions[0]?.value ?? '',\n IngressName:\n allowedIngressHostNameOptions[0]?.ingressName ?? '',\n Path: '',\n },\n ]\n : [];\n onChangeIngressPaths(newIngressPathsValue);\n }}\n data-cy={`applicationCreate-publishIngress-${serviceIndex}-${portIndex}`}\n />\n {!!servicePortIngressPaths?.length && (\n <TextTip color=\"blue\">\n Select from available ingresses below, or add new or edit existing\n ones via the{' '}\n <Link\n to=\"kubernetes.ingresses\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Ingresses screen\n </Link>{' '}\n and then reload the hostname dropdown.\n </TextTip>\n )}\n </div>\n {ingressesQuery.isSuccess && ingressControllersQuery.isSuccess\n ? servicePortIngressPaths?.map((ingressPath, index) => (\n <AppIngressPathForm\n key={index}\n ingressPath={ingressPath}\n ingressPathErrors={ingressPathsErrors?.[index]}\n ingressHostOptions={allowedIngressHostNameOptions}\n onChangeIngressPath={(ingressPath: ServicePortIngressPath) => {\n const newIngressPaths = structuredClone(\n servicePortIngressPaths\n );\n newIngressPaths[index] = ingressPath;\n onChangeIngressPaths(newIngressPaths);\n }}\n onRemoveIngressPath={() => {\n const newIngressPaths = structuredClone(\n servicePortIngressPaths\n );\n newIngressPaths.splice(index, 1);\n onChangeIngressPaths(newIngressPaths);\n }}\n ingressesQuery={ingressesQuery}\n namespace={namespace}\n isEditMode={isEditMode}\n />\n ))\n : null}\n {!!servicePortIngressPaths?.length && (\n <div className=\"flex w-full flex-wrap gap-2\">\n <Button\n icon={Plus}\n className=\"!ml-0\"\n size=\"small\"\n color=\"default\"\n onClick={() => {\n const newIngressPaths = structuredClone(servicePortIngressPaths);\n newIngressPaths.push({\n Host: allowedIngressHostNameOptions[0]?.value,\n IngressName: allowedIngressHostNameOptions[0]?.ingressName,\n Path: '',\n });\n onChangeIngressPaths(newIngressPaths);\n }}\n >\n Add path\n </Button>\n </div>\n )}\n </div>\n );\n}\n","import { FormikErrors } from 'formik';\nimport { ChangeEvent } from 'react';\nimport { Plus, Trash2 } from 'lucide-react';\n\nimport { FormError } from '@@/form-components/FormError';\nimport { ButtonSelector } from '@@/form-components/ButtonSelector/ButtonSelector';\nimport { Button } from '@@/buttons';\nimport { Card } from '@@/Card';\nimport { Widget } from '@@/Widget';\n\nimport { isErrorType, newPort } from '../utils';\nimport {\n ServiceFormValues,\n ServicePort,\n ServicePortIngressPath,\n} from '../types';\nimport { ContainerPortInput } from '../components/ContainerPortInput';\nimport { ServicePortInput } from '../components/ServicePortInput';\nimport { AppIngressPathsForm } from '../ingress/AppIngressPathsForm';\n\ninterface Props {\n services: ServiceFormValues[];\n serviceIndex: number;\n onChangeService: (services: ServiceFormValues[]) => void;\n servicePorts: ServicePort[];\n onChangePort: (servicePorts: ServicePort[]) => void;\n serviceName?: string;\n errors?: string | string[] | FormikErrors<ServicePort>[];\n namespace?: string;\n isEditMode?: boolean;\n}\n\nexport function ClusterIpServiceForm({\n services,\n serviceIndex,\n onChangeService,\n servicePorts,\n onChangePort,\n errors,\n serviceName,\n namespace,\n isEditMode,\n}: Props) {\n const newClusterIpPort = newPort(serviceName);\n return (\n <Widget key={serviceIndex}>\n <Widget.Body>\n <div className=\"flex justify-between\">\n <div className=\"text-muted vertical-center\">ClusterIP</div>\n <Button\n icon={Trash2}\n color=\"dangerlight\"\n className=\"!ml-0\"\n onClick={() => {\n // remove the service at index in an immutable way\n const newServices = [\n ...services.slice(0, serviceIndex),\n ...services.slice(serviceIndex + 1),\n ];\n onChangeService(newServices);\n }}\n >\n Remove service\n </Button>\n </div>\n <div className=\"control-label !mb-2 !pt-0 text-left\">Ports</div>\n <div className=\"flex flex-col gap-3\">\n {servicePorts.map((servicePort, portIndex) => {\n const error = errors?.[portIndex];\n const servicePortErrors = isErrorType<ServicePort>(error)\n ? error\n : undefined;\n const ingressPathsErrors = isErrorType<ServicePortIngressPath[]>(\n servicePortErrors?.ingressPaths\n )\n ? servicePortErrors?.ingressPaths\n : undefined;\n\n return (\n <Card key={portIndex} className=\"flex flex-col gap-y-3\">\n <div className=\"flex flex-grow flex-wrap justify-between gap-x-4 gap-y-1\">\n <div className=\"inline-flex min-w-min flex-grow basis-3/4 flex-wrap gap-x-4 gap-y-1\">\n <div className=\"flex min-w-min basis-1/3 flex-col\">\n <ContainerPortInput\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n value={servicePort.targetPort}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const newServicePorts = [...servicePorts];\n const newValue =\n e.target.value === ''\n ? undefined\n : Number(e.target.value);\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n targetPort: newValue,\n port: newValue,\n };\n onChangePort(newServicePorts);\n }}\n />\n {servicePortErrors?.targetPort && (\n <FormError>{servicePortErrors.targetPort}</FormError>\n )}\n </div>\n <div className=\"flex min-w-min basis-1/3 flex-col\">\n <ServicePortInput\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n value={servicePort.port}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n port:\n e.target.value === ''\n ? undefined\n : Number(e.target.value),\n };\n onChangePort(newServicePorts);\n }}\n />\n {servicePortErrors?.port && (\n <FormError>{servicePortErrors.port}</FormError>\n )}\n </div>\n <ButtonSelector\n className=\"h-[30px]\"\n onChange={(value) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n protocol: value,\n };\n onChangePort(newServicePorts);\n }}\n value={servicePort.protocol || 'TCP'}\n options={[{ value: 'TCP' }, { value: 'UDP' }]}\n />\n </div>\n <Button\n disabled={servicePorts.length === 1}\n size=\"small\"\n className=\"!ml-0 h-[30px]\"\n color=\"dangerlight\"\n type=\"button\"\n onClick={() => {\n // remove the port at the index in an immutable way\n const newServicePorts = [\n ...servicePorts.slice(0, portIndex),\n ...servicePorts.slice(portIndex + 1),\n ];\n onChangePort(newServicePorts);\n }}\n data-cy={`k8sAppCreate-rmPortButton-${serviceIndex}-${portIndex}`}\n icon={Trash2}\n >\n Remove port\n </Button>\n </div>\n <AppIngressPathsForm\n servicePortIngressPaths={servicePorts[portIndex].ingressPaths}\n onChangeIngressPaths={(\n ingressPaths?: ServicePortIngressPath[]\n ) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex].ingressPaths = ingressPaths;\n onChangePort(newServicePorts);\n }}\n namespace={namespace}\n ingressPathsErrors={ingressPathsErrors}\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n isEditMode={isEditMode}\n />\n </Card>\n );\n })}\n <div className=\"flex\">\n <Button\n icon={Plus}\n color=\"default\"\n className=\"!ml-0\"\n onClick={() => {\n const newServicesPorts = [...servicePorts, newClusterIpPort];\n onChangePort(newServicesPorts);\n }}\n >\n Add port\n </Button>\n </div>\n </div>\n </Widget.Body>\n </Widget>\n );\n}\n","import { Plus } from 'lucide-react';\nimport { FormikErrors } from 'formik';\n\nimport { KubernetesApplicationPublishingTypes } from '@/kubernetes/models/application/models';\n\nimport { Card } from '@@/Card';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Button } from '@@/buttons';\n\nimport {\n generateUniqueName,\n newPort,\n serviceFormDefaultValues,\n} from '../utils';\nimport { ServiceFormValues, ServicePort } from '../types';\n\nimport { ClusterIpServiceForm } from './ClusterIpServiceForm';\n\ninterface Props {\n services: ServiceFormValues[];\n onChangeService: (services: ServiceFormValues[]) => void;\n errors?: FormikErrors<ServiceFormValues[]>;\n appName: string;\n selector: Record<string, string>;\n namespace?: string;\n isEditMode?: boolean;\n}\n\nexport function ClusterIpServicesForm({\n services,\n onChangeService,\n errors,\n appName,\n selector,\n namespace,\n isEditMode,\n}: Props) {\n const clusterIPServiceCount = services.filter(\n (service) =>\n service.Type === KubernetesApplicationPublishingTypes.CLUSTER_IP\n ).length;\n return (\n <Card className=\"pb-5\">\n <div className=\"flex flex-col gap-6\">\n <TextTip color=\"blue\">\n Publish <b>internally</b> in the cluster via a{' '}\n <b>ClusterIP service</b>, optionally exposing <b>externally</b> to the\n outside world via an <b>ingress</b>.\n </TextTip>\n {clusterIPServiceCount > 0 && (\n <div className=\"flex w-full flex-col gap-4\">\n {services.map((service, index) =>\n service.Type ===\n KubernetesApplicationPublishingTypes.CLUSTER_IP ? (\n <ClusterIpServiceForm\n key={index}\n serviceName={service.Name}\n servicePorts={service.Ports}\n errors={errors?.[index]?.Ports}\n onChangePort={(servicePorts: ServicePort[]) => {\n const newServices = [...services];\n newServices[index].Ports = servicePorts;\n onChangeService(newServices);\n }}\n services={services}\n serviceIndex={index}\n onChangeService={onChangeService}\n namespace={namespace}\n isEditMode={isEditMode}\n />\n ) : null\n )}\n </div>\n )}\n <div className=\"flex\">\n <Button\n color=\"secondary\"\n className=\"!ml-0\"\n icon={Plus}\n size=\"small\"\n onClick={() => {\n // create a new service form value and add it to the list of services\n const newService = structuredClone(serviceFormDefaultValues);\n newService.Name = generateUniqueName(\n appName,\n services.length + 1,\n services\n );\n newService.Type = KubernetesApplicationPublishingTypes.CLUSTER_IP;\n const newServicePort = newPort(newService.Name);\n newService.Ports = [newServicePort];\n newService.Selector = selector;\n onChangeService([...services, newService]);\n }}\n data-cy=\"k8sAppCreate-createServiceButton\"\n >\n Create service\n </Button>\n </div>\n </div>\n </Card>\n );\n}\n","import clsx from 'clsx';\n\nimport { ServiceTypeOption, ServiceTypeValue } from '../types';\n\ntype Props = {\n serviceTypeOptions: ServiceTypeOption[];\n selectedServiceType: ServiceTypeValue;\n setSelectedServiceType: (serviceTypeValue: ServiceTypeValue) => void;\n};\n\nexport function ServiceTabs({\n serviceTypeOptions,\n selectedServiceType,\n setSelectedServiceType,\n}: Props) {\n return (\n <div className=\"flex pl-2\">\n {serviceTypeOptions.map(({ label }, index) => (\n <label\n key={index}\n className={clsx(\n '!mb-0 inline-flex cursor-pointer items-center gap-2 border-0 border-b-2 border-solid bg-transparent px-4 py-2 font-medium',\n selectedServiceType === serviceTypeOptions[index].value\n ? 'border-blue-8 text-blue-8 th-highcontrast:border-blue-6 th-highcontrast:text-blue-6 th-dark:border-blue-6 th-dark:text-blue-6'\n : 'border-transparent'\n )}\n >\n <input\n type=\"radio\"\n name=\"widget-tabs\"\n className=\"hidden\"\n value={serviceTypeOptions[index].value}\n checked={selectedServiceType === serviceTypeOptions[index].value}\n onChange={(e) =>\n setSelectedServiceType(e.target.value as ServiceTypeValue)\n }\n />\n {label}\n </label>\n ))}\n </div>\n );\n}\n","import { FormikErrors } from 'formik';\nimport { ChangeEvent, useRef } from 'react';\nimport { Plus, Trash2 } from 'lucide-react';\n\nimport { FormError } from '@@/form-components/FormError';\nimport { ButtonSelector } from '@@/form-components/ButtonSelector/ButtonSelector';\nimport { Button } from '@@/buttons';\nimport { Widget } from '@@/Widget';\nimport { Card } from '@@/Card';\nimport { InputGroup } from '@@/form-components/InputGroup';\n\nimport { isErrorType, newPort } from '../utils';\nimport { ContainerPortInput } from '../components/ContainerPortInput';\nimport {\n ServiceFormValues,\n ServicePort,\n ServicePortIngressPath,\n} from '../types';\nimport { ServicePortInput } from '../components/ServicePortInput';\nimport { AppIngressPathsForm } from '../ingress/AppIngressPathsForm';\n\ninterface Props {\n services: ServiceFormValues[];\n serviceIndex: number;\n onChangeService: (services: ServiceFormValues[]) => void;\n servicePorts: ServicePort[];\n onChangePort: (servicePorts: ServicePort[]) => void;\n serviceName?: string;\n errors?: string | string[] | FormikErrors<ServicePort>[];\n namespace?: string;\n isEditMode?: boolean;\n}\n\nexport function NodePortServiceForm({\n services,\n serviceIndex,\n onChangeService,\n servicePorts,\n onChangePort,\n errors,\n serviceName,\n namespace,\n isEditMode,\n}: Props) {\n const newNodePortPort = newPort(serviceName);\n // If there's initially a ingress path for the service, allow editing it\n const { current: initiallyHasIngressPath } = useRef(\n services[serviceIndex].Ports.some((port) => port.ingressPaths?.length)\n );\n\n return (\n <Widget key={serviceIndex}>\n <Widget.Body>\n <div className=\"flex justify-between\">\n <div className=\"text-muted vertical-center\">NodePort</div>\n <Button\n icon={Trash2}\n color=\"dangerlight\"\n className=\"!ml-0\"\n onClick={() => {\n // remove the service at index in an immutable way\n const newServices = [\n ...services.slice(0, serviceIndex),\n ...services.slice(serviceIndex + 1),\n ];\n onChangeService(newServices);\n }}\n >\n Remove service\n </Button>\n </div>\n <div className=\"control-label !mb-2 !pt-0 text-left\">Ports</div>\n <div className=\"flex flex-col gap-3\">\n {servicePorts.map((servicePort, portIndex) => {\n const error = errors?.[portIndex];\n const servicePortErrors = isErrorType<ServicePort>(error)\n ? error\n : undefined;\n const ingressPathsErrors = isErrorType<ServicePortIngressPath[]>(\n servicePortErrors?.ingressPaths\n )\n ? servicePortErrors?.ingressPaths\n : undefined;\n\n return (\n <Card key={portIndex} className=\"flex flex-col gap-y-3\">\n <div className=\"flex flex-grow flex-wrap justify-between gap-x-4 gap-y-1\">\n <div className=\"inline-flex min-w-min flex-grow basis-3/4 flex-wrap gap-2\">\n <div className=\"flex min-w-min basis-1/4 flex-col\">\n <ContainerPortInput\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n value={servicePort.targetPort}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const newServicePorts = [...servicePorts];\n const newValue =\n e.target.value === ''\n ? undefined\n : Number(e.target.value);\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n targetPort: newValue,\n port: newValue,\n };\n onChangePort(newServicePorts);\n }}\n />\n {servicePortErrors?.targetPort && (\n <FormError>{servicePortErrors.targetPort}</FormError>\n )}\n </div>\n\n <div className=\"flex min-w-min basis-1/4 flex-col\">\n <ServicePortInput\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n value={servicePort.port}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n port:\n e.target.value === ''\n ? undefined\n : Number(e.target.value),\n };\n onChangePort(newServicePorts);\n }}\n />\n {servicePortErrors?.port && (\n <FormError>{servicePortErrors.port}</FormError>\n )}\n </div>\n <div className=\"flex min-w-min basis-1/4 flex-col\">\n <InputGroup size=\"small\">\n <InputGroup.Addon>Nodeport</InputGroup.Addon>\n <InputGroup.Input\n type=\"number\"\n className=\"form-control min-w-max\"\n name={`node_port_${portIndex}`}\n placeholder=\"30080\"\n min=\"30000\"\n max=\"32767\"\n value={servicePort.nodePort ?? ''}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n nodePort:\n e.target.value === ''\n ? undefined\n : Number(e.target.value),\n };\n onChangePort(newServicePorts);\n }}\n data-cy={`k8sAppCreate-nodePort_${portIndex}`}\n />\n </InputGroup>\n {servicePortErrors?.nodePort && (\n <FormError>{servicePortErrors.nodePort}</FormError>\n )}\n </div>\n <ButtonSelector\n className=\"h-[30px]\"\n onChange={(value) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n protocol: value,\n };\n onChangePort(newServicePorts);\n }}\n value={servicePort.protocol || 'TCP'}\n options={[{ value: 'TCP' }, { value: 'UDP' }]}\n />\n </div>\n <Button\n disabled={servicePorts.length === 1}\n size=\"small\"\n className=\"!ml-0 h-[30px]\"\n color=\"dangerlight\"\n type=\"button\"\n onClick={() => {\n // remove the port at the index in an immutable way\n const newServicePorts = [\n ...servicePorts.slice(0, portIndex),\n ...servicePorts.slice(portIndex + 1),\n ];\n onChangePort(newServicePorts);\n }}\n data-cy={`k8sAppCreate-rmPortButton_${portIndex}`}\n icon={Trash2}\n >\n Remove port\n </Button>\n </div>\n {initiallyHasIngressPath && (\n <AppIngressPathsForm\n servicePortIngressPaths={\n servicePorts[portIndex].ingressPaths\n }\n onChangeIngressPaths={(\n ingressPaths?: ServicePortIngressPath[]\n ) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex].ingressPaths = ingressPaths;\n onChangePort(newServicePorts);\n }}\n namespace={namespace}\n ingressPathsErrors={ingressPathsErrors}\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n isEditMode={isEditMode}\n />\n )}\n </Card>\n );\n })}\n <div className=\"flex\">\n <Button\n icon={Plus}\n color=\"default\"\n className=\"!ml-0\"\n onClick={() => {\n const newServicesPorts = [...servicePorts, newNodePortPort];\n onChangePort(newServicesPorts);\n }}\n >\n Add port\n </Button>\n </div>\n </div>\n </Widget.Body>\n </Widget>\n );\n}\n","import { FormikErrors } from 'formik';\nimport { Plus } from 'lucide-react';\n\nimport { KubernetesApplicationPublishingTypes } from '@/kubernetes/models/application/models';\n\nimport { Card } from '@@/Card';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Button } from '@@/buttons';\n\nimport {\n serviceFormDefaultValues,\n generateUniqueName,\n newPort,\n} from '../utils';\nimport { ServiceFormValues, ServicePort } from '../types';\n\nimport { NodePortServiceForm } from './NodePortServiceForm';\n\ninterface Props {\n services: ServiceFormValues[];\n onChangeService: (services: ServiceFormValues[]) => void;\n errors?: FormikErrors<ServiceFormValues[]>;\n appName: string;\n selector: Record<string, string>;\n namespace?: string;\n isEditMode?: boolean;\n}\n\nexport function NodePortServicesForm({\n services,\n onChangeService,\n errors,\n appName,\n selector,\n namespace,\n isEditMode,\n}: Props) {\n const nodePortServiceCount = services.filter(\n (service) => service.Type === KubernetesApplicationPublishingTypes.NODE_PORT\n ).length;\n return (\n <Card className=\"pb-5\">\n <div className=\"flex flex-col gap-6\">\n <TextTip color=\"blue\">\n Allow access to traffic <b>external</b> to the cluster via a{' '}\n <b>NodePort service</b>. Not generally recommended for Production use.\n </TextTip>\n {nodePortServiceCount > 0 && (\n <div className=\"flex w-full flex-col gap-4\">\n {services.map((service, index) =>\n service.Type ===\n KubernetesApplicationPublishingTypes.NODE_PORT ? (\n <NodePortServiceForm\n key={index}\n serviceName={service.Name}\n servicePorts={service.Ports}\n errors={errors?.[index]?.Ports}\n onChangePort={(servicePorts: ServicePort[]) => {\n const newServices = [...services];\n newServices[index].Ports = servicePorts;\n onChangeService(newServices);\n }}\n services={services}\n serviceIndex={index}\n onChangeService={onChangeService}\n namespace={namespace}\n isEditMode={isEditMode}\n />\n ) : null\n )}\n </div>\n )}\n <div className=\"flex\">\n <Button\n color=\"secondary\"\n className=\"!ml-0\"\n icon={Plus}\n size=\"small\"\n onClick={() => {\n // create a new service form value and add it to the list of services\n const newService = structuredClone(serviceFormDefaultValues);\n newService.Name = generateUniqueName(\n appName,\n services.length + 1,\n services\n );\n newService.Type = KubernetesApplicationPublishingTypes.NODE_PORT;\n const newServicePort = newPort(newService.Name);\n newService.Ports = [newServicePort];\n newService.Selector = selector;\n onChangeService([...services, newService]);\n }}\n data-cy=\"k8sAppCreate-createServiceButton\"\n >\n Create service\n </Button>\n </div>\n </div>\n </Card>\n );\n}\n","import { FormikErrors } from 'formik';\nimport { ChangeEvent, useRef } from 'react';\nimport { Plus, Trash2 } from 'lucide-react';\n\nimport { FormError } from '@@/form-components/FormError';\nimport { ButtonSelector } from '@@/form-components/ButtonSelector/ButtonSelector';\nimport { Button } from '@@/buttons';\nimport { Widget } from '@@/Widget';\nimport { Card } from '@@/Card';\nimport { InputGroup } from '@@/form-components/InputGroup';\n\nimport { isErrorType, newPort } from '../utils';\nimport { ContainerPortInput } from '../components/ContainerPortInput';\nimport {\n ServiceFormValues,\n ServicePort,\n ServicePortIngressPath,\n} from '../types';\nimport { ServicePortInput } from '../components/ServicePortInput';\nimport { AppIngressPathsForm } from '../ingress/AppIngressPathsForm';\n\ninterface Props {\n services: ServiceFormValues[];\n serviceIndex: number;\n onChangeService: (services: ServiceFormValues[]) => void;\n servicePorts: ServicePort[];\n onChangePort: (servicePorts: ServicePort[]) => void;\n serviceName?: string;\n errors?: string | string[] | FormikErrors<ServicePort>[];\n namespace?: string;\n isEditMode?: boolean;\n}\n\nexport function LoadBalancerServiceForm({\n services,\n serviceIndex,\n onChangeService,\n servicePorts,\n onChangePort,\n errors,\n serviceName,\n namespace,\n isEditMode,\n}: Props) {\n const newLoadBalancerPort = newPort(serviceName); // If there's initially a ingress path for the service, allow editing it\n const { current: initiallyHasIngressPath } = useRef(\n services[serviceIndex].Ports.some((port) => port.ingressPaths?.length)\n );\n\n return (\n <Widget key={serviceIndex}>\n <Widget.Body>\n <div className=\"flex justify-between\">\n <div className=\"text-muted vertical-center\">LoadBalancer</div>\n <Button\n icon={Trash2}\n color=\"dangerlight\"\n className=\"!ml-0\"\n onClick={() => {\n // remove the service at index in an immutable way\n const newServices = [\n ...services.slice(0, serviceIndex),\n ...services.slice(serviceIndex + 1),\n ];\n onChangeService(newServices);\n }}\n >\n Remove service\n </Button>\n </div>\n <div className=\"control-label !mb-2 !pt-0 text-left\">Ports</div>\n <div className=\"flex flex-col gap-3\">\n {servicePorts.map((servicePort, portIndex) => {\n const error = errors?.[portIndex];\n const servicePortErrors = isErrorType<ServicePort>(error)\n ? error\n : undefined;\n const ingressPathsErrors = isErrorType<ServicePortIngressPath[]>(\n servicePortErrors?.ingressPaths\n )\n ? servicePortErrors?.ingressPaths\n : undefined;\n\n return (\n <Card key={portIndex} className=\"flex flex-col gap-y-3\">\n <div className=\"flex flex-grow flex-wrap justify-between gap-x-4 gap-y-1\">\n <div className=\"inline-flex min-w-min flex-grow basis-3/4 flex-wrap gap-2\">\n <div className=\"flex min-w-min basis-1/4 flex-col\">\n <ContainerPortInput\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n value={servicePort.targetPort}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const newServicePorts = [...servicePorts];\n const newValue =\n e.target.value === ''\n ? undefined\n : Number(e.target.value);\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n targetPort: newValue,\n port: newValue,\n };\n onChangePort(newServicePorts);\n }}\n />\n {servicePortErrors?.targetPort && (\n <FormError>{servicePortErrors.targetPort}</FormError>\n )}\n </div>\n\n <div className=\"flex min-w-min basis-1/4 flex-col\">\n <ServicePortInput\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n value={servicePort.port}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n port:\n e.target.value === ''\n ? undefined\n : Number(e.target.value),\n };\n onChangePort(newServicePorts);\n }}\n />\n {servicePortErrors?.port && (\n <FormError>{servicePortErrors.port}</FormError>\n )}\n </div>\n <div className=\"flex min-w-min basis-1/4 flex-col\">\n <InputGroup size=\"small\">\n <InputGroup.Addon required>\n Loadbalancer port\n </InputGroup.Addon>\n <InputGroup.Input\n type=\"number\"\n className=\"form-control min-w-max\"\n name={`loadbalancer_port_${portIndex}`}\n placeholder=\"80\"\n min=\"1\"\n max=\"65535\"\n value={servicePort.port || ''}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n port:\n e.target.value === ''\n ? undefined\n : Number(e.target.value),\n };\n onChangePort(newServicePorts);\n }}\n required\n data-cy={`k8sAppCreate-loadbalancerPort_${portIndex}`}\n />\n </InputGroup>\n {servicePortErrors?.nodePort && (\n <FormError>{servicePortErrors.nodePort}</FormError>\n )}\n </div>\n <ButtonSelector\n className=\"h-[30px]\"\n onChange={(value) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex] = {\n ...newServicePorts[portIndex],\n protocol: value,\n };\n onChangePort(newServicePorts);\n }}\n value={servicePort.protocol || 'TCP'}\n options={[{ value: 'TCP' }, { value: 'UDP' }]}\n />\n </div>\n <Button\n disabled={servicePorts.length === 1}\n size=\"small\"\n className=\"!ml-0 h-[30px]\"\n color=\"dangerlight\"\n type=\"button\"\n onClick={() => {\n // remove the port at the index in an immutable way\n const newServicePorts = [\n ...servicePorts.slice(0, portIndex),\n ...servicePorts.slice(portIndex + 1),\n ];\n onChangePort(newServicePorts);\n }}\n data-cy={`k8sAppCreate-rmPortButton_${portIndex}`}\n icon={Trash2}\n >\n Remove port\n </Button>\n </div>\n {initiallyHasIngressPath && (\n <AppIngressPathsForm\n servicePortIngressPaths={\n servicePorts[portIndex].ingressPaths\n }\n onChangeIngressPaths={(\n ingressPaths?: ServicePortIngressPath[]\n ) => {\n const newServicePorts = [...servicePorts];\n newServicePorts[portIndex].ingressPaths = ingressPaths;\n onChangePort(newServicePorts);\n }}\n namespace={namespace}\n ingressPathsErrors={ingressPathsErrors}\n serviceIndex={serviceIndex}\n portIndex={portIndex}\n isEditMode={isEditMode}\n />\n )}\n </Card>\n );\n })}\n <div className=\"flex\">\n <Button\n icon={Plus}\n color=\"default\"\n className=\"!ml-0\"\n onClick={() => {\n const newServicesPorts = [...servicePorts, newLoadBalancerPort];\n onChangePort(newServicesPorts);\n }}\n >\n Add port\n </Button>\n </div>\n </div>\n </Widget.Body>\n </Widget>\n );\n}\n","import { Plus, RefreshCw } from 'lucide-react';\nimport { FormikErrors } from 'formik';\n\nimport { KubernetesApplicationPublishingTypes } from '@/kubernetes/models/application/models';\nimport { useCurrentUser } from '@/react/hooks/useUser';\nimport { useEnvironment } from '@/react/portainer/environments/queries';\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\n\nimport { Card } from '@@/Card';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Button } from '@@/buttons';\nimport { FormError } from '@@/form-components/FormError';\nimport { Link } from '@@/Link';\n\nimport {\n generateUniqueName,\n newPort,\n serviceFormDefaultValues,\n} from '../utils';\nimport { ServiceFormValues, ServicePort } from '../types';\n\nimport { LoadBalancerServiceForm } from './LoadBalancerServiceForm';\n\ninterface Props {\n services: ServiceFormValues[];\n onChangeService: (services: ServiceFormValues[]) => void;\n errors?: FormikErrors<ServiceFormValues[]>;\n appName: string;\n selector: Record<string, string>;\n namespace?: string;\n isEditMode?: boolean;\n}\n\nexport function LoadBalancerServicesForm({\n services,\n onChangeService,\n errors,\n appName,\n selector,\n namespace,\n isEditMode,\n}: Props) {\n const { isAdmin } = useCurrentUser();\n const environmentId = useEnvironmentId();\n const { data: loadBalancerEnabled, ...loadBalancerEnabledQuery } =\n useEnvironment(\n environmentId,\n (environment) => environment?.Kubernetes.Configuration.UseLoadBalancer\n );\n\n const loadBalancerServiceCount = services.filter(\n (service) =>\n service.Type === KubernetesApplicationPublishingTypes.LOAD_BALANCER\n ).length;\n return (\n <Card className=\"pb-5\">\n <div className=\"flex flex-col gap-6\">\n <TextTip color=\"blue\">\n Allow access to traffic <b>external</b> to the cluster via a{' '}\n <b>LoadBalancer service</b>. If running on a cloud platform, this auto\n provisions a cloud load balancer.\n </TextTip>\n {!loadBalancerEnabled && loadBalancerEnabledQuery.isSuccess && (\n <div className=\"flex flex-col\">\n <FormError>\n {isAdmin ? (\n <>\n Load balancer use is not currently enabled in this cluster.\n Configure via{' '}\n <Link\n to=\"kubernetes.cluster.setup\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Cluster Setup\n </Link>{' '}\n and then refresh this tab\n </>\n ) : (\n 'Load balancer use is not currently enabled in this cluster, contact your administrator.'\n )}\n </FormError>\n <div className=\"flex\">\n <Button\n icon={RefreshCw}\n color=\"default\"\n className=\"!ml-0\"\n onClick={() => loadBalancerEnabledQuery.refetch()}\n >\n Refresh\n </Button>\n </div>\n </div>\n )}\n {loadBalancerServiceCount > 0 && (\n <div className=\"flex w-full flex-col gap-4\">\n {services.map((service, index) =>\n service.Type ===\n KubernetesApplicationPublishingTypes.LOAD_BALANCER ? (\n <LoadBalancerServiceForm\n key={index}\n serviceName={service.Name}\n servicePorts={service.Ports}\n errors={errors?.[index]?.Ports}\n onChangePort={(servicePorts: ServicePort[]) => {\n const newServices = [...services];\n newServices[index].Ports = servicePorts;\n onChangeService(newServices);\n }}\n services={services}\n serviceIndex={index}\n onChangeService={onChangeService}\n namespace={namespace}\n isEditMode={isEditMode}\n />\n ) : null\n )}\n </div>\n )}\n <div className=\"flex\">\n <Button\n color=\"secondary\"\n className=\"!ml-0\"\n icon={Plus}\n size=\"small\"\n onClick={() => {\n // create a new service form value and add it to the list of services\n const newService = structuredClone(serviceFormDefaultValues);\n newService.Name = generateUniqueName(\n appName,\n services.length + 1,\n services\n );\n newService.Type =\n KubernetesApplicationPublishingTypes.LOAD_BALANCER;\n const newServicePort = newPort(newService.Name);\n newService.Ports = [newServicePort];\n newService.Selector = selector;\n onChangeService([...services, newService]);\n }}\n disabled={!loadBalancerEnabled}\n data-cy=\"k8sAppCreate-createServiceButton\"\n >\n Create service\n </Button>\n </div>\n </div>\n </Card>\n );\n}\n","import { AlertTriangle } from 'lucide-react';\n\nimport { Badge } from '@@/Badge';\nimport { Icon } from '@@/Icon';\n\ntype Props = {\n serviceTypeLabel: string;\n serviceTypeCount: number;\n serviceTypeHasErrors: boolean;\n};\n\nexport function ServiceTabLabel({\n serviceTypeLabel,\n serviceTypeCount,\n serviceTypeHasErrors,\n}: Props) {\n return (\n <div className=\"inline-flex items-center\">\n {serviceTypeLabel}\n {serviceTypeCount && (\n <Badge\n className=\"ml-2 flex-none\"\n type={serviceTypeHasErrors ? 'warn' : 'info'}\n >\n {serviceTypeHasErrors && (\n <Icon icon={AlertTriangle} className=\"!mr-1\" />\n )}\n {serviceTypeCount}\n </Badge>\n )}\n </div>\n );\n}\n","import ingressDiagram from '@/assets/images/ingress-explanatory-diagram.png';\n\nimport { FormSection } from '@@/form-components/FormSection';\n\nexport function PublishingExplaination() {\n return (\n <FormSection title=\"Explanation\" isFoldable titleSize=\"sm\">\n <div className=\"mb-4 flex flex-col items-start lg:flex-row\">\n <img\n src={ingressDiagram}\n alt=\"ingress explaination\"\n width={646}\n className=\"flex w-full max-w-2xl basis-1/2 flex-col rounded border border-solid border-gray-5 object-contain lg:w-1/2\"\n />\n <div className=\"text-muted ml-8 basis-1/2 text-xs\">\n Expose the application workload via{' '}\n <a\n href=\"https://kubernetes.io/docs/concepts/services-networking/service/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n services\n </a>{' '}\n and{' '}\n <a\n href=\"https://kubernetes.io/docs/concepts/services-networking/ingress/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n ingresses\n </a>\n :\n <ul className=\"mt-3 ml-5 [&>li]:mb-3 [&>li>ul>li]:ml-5\">\n <li>\n <b>Inside</b> the cluster{' '}\n <b>\n <i>only</i>\n </b>{' '}\n - via <b>ClusterIP</b> service\n <ul>\n <li>\n <i>The default service type.</i>\n </li>\n </ul>\n </li>\n <li>\n <b>Inside</b> the cluster via <b>ClusterIP</b> service and{' '}\n <b>outside</b> via <b>ingress</b>\n <ul>\n <li>\n <i>\n An ingress manages external access to (usually ClusterIP)\n services within the cluster, and allows defining of routing\n rules, SSL termination and other advanced features.\n </i>\n </li>\n </ul>\n </li>\n <li>\n <b>Inside</b> and <b>outside</b> the cluster via <b>NodePort</b>{' '}\n service\n <ul>\n <li>\n <i>\n This publishes the workload on a static port on each node,\n allowing external access via a nodes' IP address and\n port. Not generally recommended for Production use.\n </i>\n </li>\n </ul>\n </li>\n <li>\n <b>Inside</b> and <b>outside</b> the cluster via{' '}\n <b>LoadBalancer</b> service\n <ul>\n <li>\n <i>\n If running on a cloud platform, this auto provisions a cloud\n load balancer and assigns an external IP address or DNS to\n route traffic to the workload.\n </i>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n </FormSection>\n );\n}\n","import { useEffect, useMemo, useState } from 'react';\nimport { FormikErrors } from 'formik';\n\nimport { KubernetesApplicationPublishingTypes } from '@/kubernetes/models/application/models';\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport {\n useIngressControllers,\n useIngresses,\n} from '@/react/kubernetes/ingresses/queries';\n\nimport { FormSection } from '@@/form-components/FormSection';\n\nimport {\n ServiceFormValues,\n ServiceTypeAngularEnum,\n ServiceTypeOption,\n ServiceTypeValue,\n} from './types';\nimport { generateUniqueName } from './utils';\nimport { ClusterIpServicesForm } from './cluster-ip/ClusterIpServicesForm';\nimport { ServiceTabs } from './components/ServiceTabs';\nimport { NodePortServicesForm } from './node-port/NodePortServicesForm';\nimport { LoadBalancerServicesForm } from './load-balancer/LoadBalancerServicesForm';\nimport { ServiceTabLabel } from './components/ServiceTabLabel';\nimport { PublishingExplaination } from './PublishingExplaination';\n\nconst serviceTypeEnumsToValues: Record<\n ServiceTypeAngularEnum,\n ServiceTypeValue\n> = {\n [KubernetesApplicationPublishingTypes.CLUSTER_IP]: 'ClusterIP',\n [KubernetesApplicationPublishingTypes.NODE_PORT]: 'NodePort',\n [KubernetesApplicationPublishingTypes.LOAD_BALANCER]: 'LoadBalancer',\n};\n\ninterface Props {\n values: ServiceFormValues[];\n onChange: (services: ServiceFormValues[]) => void;\n errors?: FormikErrors<ServiceFormValues[]>;\n appName: string;\n selector: Record<string, string>;\n isEditMode: boolean;\n namespace?: string;\n}\n\nexport function KubeServicesForm({\n values: services,\n onChange,\n errors,\n appName,\n selector,\n isEditMode,\n namespace,\n}: Props) {\n const [selectedServiceType, setSelectedServiceType] =\n useState<ServiceTypeValue>('ClusterIP');\n\n // start loading ingresses and controllers early to reduce perceived loading time\n const environmentId = useEnvironmentId();\n useIngresses(environmentId, namespace ? [namespace] : []);\n useIngressControllers(environmentId, namespace);\n\n // when the appName changes, update the names for each service\n // and the serviceNames for each service port\n const newServiceNames = useMemo(\n () => getUniqNames(appName, services),\n [appName, services]\n );\n useEffect(() => {\n if (!isEditMode) {\n const newServices = services.map((service, index) => {\n const newServiceName = newServiceNames[index];\n const newServicePorts = service.Ports.map((port) => ({\n ...port,\n serviceName: newServiceName,\n }));\n return { ...service, Name: newServiceName, Ports: newServicePorts };\n });\n onChange(newServices);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [appName]);\n\n const serviceTypeCounts = useMemo(\n () => getServiceTypeCounts(services),\n [services]\n );\n\n const serviceTypeHasErrors = useMemo(\n () => getServiceTypeHasErrors(services, errors),\n [services, errors]\n );\n\n const serviceTypeOptions: ServiceTypeOption[] = [\n {\n value: 'ClusterIP',\n label: (\n <ServiceTabLabel\n serviceTypeLabel=\"ClusterIP services\"\n serviceTypeCount={serviceTypeCounts.ClusterIP}\n serviceTypeHasErrors={serviceTypeHasErrors.ClusterIP}\n />\n ),\n },\n {\n value: 'NodePort',\n label: (\n <ServiceTabLabel\n serviceTypeLabel=\"NodePort services\"\n serviceTypeCount={serviceTypeCounts.NodePort}\n serviceTypeHasErrors={serviceTypeHasErrors.NodePort}\n />\n ),\n },\n {\n value: 'LoadBalancer',\n label: (\n <ServiceTabLabel\n serviceTypeLabel=\"LoadBalancer services\"\n serviceTypeCount={serviceTypeCounts.LoadBalancer}\n serviceTypeHasErrors={serviceTypeHasErrors.LoadBalancer}\n />\n ),\n },\n ];\n\n return (\n <div className=\"flex flex-col\">\n <FormSection title=\"Publishing the application\" />\n <PublishingExplaination />\n <ServiceTabs\n serviceTypeOptions={serviceTypeOptions}\n selectedServiceType={selectedServiceType}\n setSelectedServiceType={setSelectedServiceType}\n />\n {selectedServiceType === 'ClusterIP' && (\n <ClusterIpServicesForm\n services={services}\n onChangeService={onChange}\n errors={errors}\n appName={appName}\n selector={selector}\n namespace={namespace}\n isEditMode={isEditMode}\n />\n )}\n {selectedServiceType === 'NodePort' && (\n <NodePortServicesForm\n services={services}\n onChangeService={onChange}\n errors={errors}\n appName={appName}\n selector={selector}\n namespace={namespace}\n isEditMode={isEditMode}\n />\n )}\n {selectedServiceType === 'LoadBalancer' && (\n <LoadBalancerServicesForm\n services={services}\n onChangeService={onChange}\n errors={errors}\n appName={appName}\n selector={selector}\n namespace={namespace}\n isEditMode={isEditMode}\n />\n )}\n </div>\n );\n}\n\nfunction getUniqNames(appName: string, services: ServiceFormValues[]) {\n const sortedServices = [...services].sort((a, b) =>\n a.Name && b.Name ? a.Name.localeCompare(b.Name) : 0\n );\n\n const uniqueNames = sortedServices.reduce(\n (acc: string[]) => {\n const newIndex =\n acc.findIndex((existingName) => existingName === appName) + 1;\n const uniqName = acc.includes(appName)\n ? generateUniqueName(appName, newIndex, services)\n : appName;\n return [...acc, uniqName];\n },\n [appName]\n );\n\n return uniqueNames;\n}\n\n/**\n * getServiceTypeCounts returns a map of service types to the number of services of that type\n */\nfunction getServiceTypeCounts(\n services: ServiceFormValues[]\n): Record<ServiceTypeValue, number> {\n return services.reduce((acc, service) => {\n const type = serviceTypeEnumsToValues[service.Type];\n const count = acc[type];\n return {\n ...acc,\n [type]: count ? count + 1 : 1,\n };\n }, {} as Record<ServiceTypeValue, number>);\n}\n\n/**\n * getServiceTypeHasErrors returns a map of service types to whether or not they have errors\n */\nfunction getServiceTypeHasErrors(\n services: ServiceFormValues[],\n errors: FormikErrors<ServiceFormValues[] | undefined>\n): Record<ServiceTypeValue, boolean> {\n return services.reduce((acc, service, index) => {\n const type = serviceTypeEnumsToValues[service.Type];\n const serviceHasErrors = !!errors?.[index];\n // if the service type already has an error, don't overwrite it\n if (acc[type] === true) return acc;\n // otherwise, set the error to the value of serviceHasErrors\n return {\n ...acc,\n [type]: serviceHasErrors,\n };\n }, {} as Record<ServiceTypeValue, boolean>);\n}\n","import { SchemaOf, array, object, boolean, string, mixed, number } from 'yup';\n\nimport { KubernetesApplicationPublishingTypes } from '@/kubernetes/models/application/models';\n\nimport { ServiceFormValues, ServicePort } from './types';\nimport { prependWithSlash } from './utils';\n\n// values returned from the angular parent component (pascal case instead of camel case keys),\n// these should match the form values, but don't. Future tech debt work to update this would be nice\n\n// to make the converted values and formValues objects to be the same\ninterface NodePortValues {\n Port: number;\n TargetPort: number;\n NodePort: number;\n Name?: string;\n Protocol?: string;\n Ingress?: string;\n}\n\ntype ServiceValues = {\n Type: number;\n Name: string;\n Ports: NodePortValues[];\n};\n\ntype AngularIngressPath = {\n IngressName: string;\n Host: string;\n Path: string;\n};\n\ntype AppServicesValidationData = {\n nodePortServices: ServiceValues[];\n formServices: ServiceFormValues[];\n ingressPaths?: AngularIngressPath[];\n originalIngressPaths?: AngularIngressPath[];\n};\n\nexport function kubeServicesValidation(\n validationData?: AppServicesValidationData\n): SchemaOf<ServiceFormValues[]> {\n return array(\n object({\n Headless: boolean().required(),\n Namespace: string(),\n Name: string(),\n StackName: string(),\n Type: mixed().oneOf([\n KubernetesApplicationPublishingTypes.CLUSTER_IP,\n KubernetesApplicationPublishingTypes.NODE_PORT,\n KubernetesApplicationPublishingTypes.LOAD_BALANCER,\n ]),\n ClusterIP: string(),\n ApplicationName: string(),\n ApplicationOwner: string(),\n Note: string(),\n Ingress: boolean().required(),\n Selector: object(),\n Ports: array(\n object({\n port: number()\n .required('Service port number is required.')\n .min(1, 'Service port number must be inside the range 1-65535.')\n .max(65535, 'Service port number must be inside the range 1-65535.')\n .test(\n 'service-port-is-unique',\n 'Service port number must be unique.',\n (servicePort, context) => {\n // test for duplicate service ports within this service.\n // yup gives access to context.parent which gives one ServicePort object.\n // yup also gives access to all form values through this.options.context.\n // Unfortunately, it doesn't give direct access to all Ports within the current service.\n // To find all ports in the service for validation, I'm filtering the services by the service name,\n // that's stored in the ServicePort object, then getting all Ports in the service.\n if (servicePort === undefined || validationData === undefined) {\n return true;\n }\n const { formServices } = validationData;\n const matchingService = getServiceForPort(\n context.parent as ServicePort,\n formServices\n );\n if (matchingService === undefined) {\n return true;\n }\n const servicePorts = matchingService.Ports;\n const duplicateServicePortCount = servicePorts.filter(\n (port) => port.port === servicePort\n ).length;\n return duplicateServicePortCount <= 1;\n }\n ),\n targetPort: number()\n .required('Container port number is required.')\n .min(1, 'Container port number must be inside the range 1-65535.')\n .max(\n 65535,\n 'Container port number must be inside the range 1-65535.'\n ),\n name: string(),\n serviceName: string(),\n protocol: string(),\n nodePort: number()\n .test(\n 'node-port-is-unique-in-service',\n 'Node port is already used in this service.',\n (nodePort, context) => {\n if (nodePort === undefined || validationData === undefined) {\n return true;\n }\n const { formServices } = validationData;\n const matchingService = getServiceForPort(\n context.parent as ServicePort,\n formServices\n );\n if (\n matchingService === undefined ||\n matchingService.Type !==\n KubernetesApplicationPublishingTypes.NODE_PORT // ignore validation unless the service is of type nodeport\n ) {\n return true;\n }\n const servicePorts = matchingService.Ports;\n const duplicateNodePortCount = servicePorts.filter(\n (port) => port.nodePort === nodePort\n ).length;\n return duplicateNodePortCount <= 1;\n }\n )\n .test(\n 'node-port-is-unique-in-cluster',\n 'Node port is already used.',\n (nodePort, context) => {\n if (nodePort === undefined || validationData === undefined) {\n return true;\n }\n const { formServices, nodePortServices } = validationData;\n const matchingService = getServiceForPort(\n context.parent as ServicePort,\n formServices\n );\n\n if (\n matchingService === undefined ||\n matchingService.Type !==\n KubernetesApplicationPublishingTypes.NODE_PORT // ignore validation unless the service is of type nodeport\n ) {\n return true;\n }\n\n // create a list of all the node ports (number[]) in the cluster, from services that aren't in the application form\n const formServiceNames = formServices.map(\n (formService) => formService.Name\n );\n const clusterNodePortsWithoutFormServices = nodePortServices\n .filter(\n (npService) => !formServiceNames.includes(npService.Name)\n )\n .flatMap((npService) => npService.Ports)\n .map((npServicePorts) => npServicePorts.NodePort);\n // node ports in the current form, excluding the current service\n const formNodePortsWithoutCurrentService = formServices\n .filter(\n (formService) =>\n formService.Type ===\n KubernetesApplicationPublishingTypes.NODE_PORT &&\n formService.Name !== matchingService.Name\n )\n .flatMap((formService) => formService.Ports)\n .map((formServicePorts) => formServicePorts.nodePort);\n return (\n !clusterNodePortsWithoutFormServices.includes(nodePort) && // node port is not in the cluster services that aren't in the application form\n !formNodePortsWithoutCurrentService.includes(nodePort) // and the node port is not in the current form, excluding the current service\n );\n }\n )\n .test(\n 'node-port-minimum',\n 'Nodeport number must be inside the range 30000-32767 or blank for system allocated.',\n (nodePort, context) => {\n if (nodePort === undefined || validationData === undefined) {\n return true;\n }\n const { formServices } = validationData;\n const matchingService = getServiceForPort(\n context.parent as ServicePort,\n formServices\n );\n if (\n !matchingService ||\n matchingService.Type !==\n KubernetesApplicationPublishingTypes.NODE_PORT\n ) {\n return true;\n }\n return nodePort >= 30000;\n }\n )\n .test(\n 'node-port-maximum',\n 'Nodeport number must be inside the range 30000-32767 or blank for system allocated.',\n (nodePort, context) => {\n if (nodePort === undefined || validationData === undefined) {\n return true;\n }\n const { formServices } = validationData;\n const matchingService = getServiceForPort(\n context.parent as ServicePort,\n formServices\n );\n if (\n !matchingService ||\n matchingService.Type !==\n KubernetesApplicationPublishingTypes.NODE_PORT\n ) {\n return true;\n }\n return nodePort <= 32767;\n }\n ),\n ingressPaths: array(\n object({\n IngressName: string().required(),\n Host: string().required('Ingress hostname is required.'),\n Path: string()\n .required('Ingress path is required.')\n .test(\n 'path-is-unique',\n 'Ingress path is already in use for this hostname.',\n (path, context) => {\n if (\n path === undefined ||\n validationData === undefined ||\n !context.parent.Host\n ) {\n return true;\n }\n const ingressHostAndPath = `${\n context.parent.Host\n }${prependWithSlash(path)}`;\n const {\n ingressPaths: ingressPathsInNamespace,\n formServices,\n originalIngressPaths,\n } = validationData;\n\n // get the count of the same ingressHostAndPath in the current form values\n const allFormServicePortIngresses = formServices.flatMap(\n (service) =>\n service.Ports.flatMap((port) => port.ingressPaths)\n );\n const formMatchingIngressHostPathCount =\n allFormServicePortIngresses\n .filter((ingress) => ingress?.Host !== '')\n .map(\n (ingress) =>\n `${ingress?.Host}${prependWithSlash(ingress?.Path)}`\n )\n .filter(\n (formIngressHostAndPath) =>\n formIngressHostAndPath === ingressHostAndPath\n ).length;\n\n // get the count of the same ingressHostAndPath in the namespace and subtract the count from the original form values\n const nsMatchingIngressHostPathCount = (\n ingressPathsInNamespace ?? []\n )\n .map(\n (ingressPath) =>\n `${ingressPath.Host}${ingressPath.Path}`\n )\n .filter(\n (nsIngressHostAndPath) =>\n nsIngressHostAndPath === ingressHostAndPath\n ).length;\n\n // get the count of the same ingressHostAndPath in the original form values\n const originalMatchingIngressHostPathCount = (\n originalIngressPaths ?? []\n )\n .map(\n (ingressPath) =>\n `${ingressPath.Host}${ingressPath.Path}`\n )\n .filter(\n (originalIngressHostAndPath) =>\n originalIngressHostAndPath === ingressHostAndPath\n ).length;\n\n // for the current ingressHostAndPath to be unique, nsMatchingIngressHostPathCount - originalMatchingIngressHostPathCount + formMatchingIngressHostPathCount must be 1 or less.\n const pathIsUnique =\n formMatchingIngressHostPathCount === 1 &&\n nsMatchingIngressHostPathCount -\n originalMatchingIngressHostPathCount +\n formMatchingIngressHostPathCount <=\n 1;\n return pathIsUnique;\n }\n ),\n })\n ),\n })\n ),\n Annotations: array(),\n })\n );\n}\n\nfunction getServiceForPort(\n servicePort: ServicePort,\n services: ServiceFormValues[]\n) {\n return services.find((service) => service.Name === servicePort.serviceName);\n}\n","export const systemNamespaces = [\n 'kube-system',\n 'kube-public',\n 'kube-node-lease',\n 'portainer',\n];\n\nexport function isSystemNamespace(namespace: string) {\n return systemNamespaces.includes(namespace || '');\n}\n","import { AppKind, DeploymentType } from './types';\n\n// Portainer specific labels\nexport const appStackNameLabel = 'io.portainer.kubernetes.application.stack';\nexport const appStackIdLabel = 'io.portainer.kubernetes.application.stackid';\nexport const appOwnerLabel = 'io.portainer.kubernetes.application.owner';\nexport const appNoteAnnotation = 'io.portainer.kubernetes.application.note';\nexport const appDeployMethodLabel = 'io.portainer.kubernetes.application.kind';\nexport const defaultDeploymentUniqueLabel = 'pod-template-hash';\n\nexport const appRevisionAnnotation = 'deployment.kubernetes.io/revision';\n\n// unchangedAnnotationKeysForRollbackPatch lists the annotations that should be preserved from the deployment and not\n// copied from the replicaset when rolling a deployment back\nexport const unchangedAnnotationKeysForRollbackPatch = [\n 'kubectl.kubernetes.io/last-applied-configuration',\n appRevisionAnnotation,\n 'deployment.kubernetes.io/revision-history',\n 'deployment.kubernetes.io/desired-replicas',\n 'deployment.kubernetes.io/max-replicas',\n 'deprecated.deployment.rollback.to',\n 'deprecated.daemonset.template.generation',\n];\n\nexport const appKindToDeploymentTypeMap: Record<\n AppKind,\n DeploymentType | null\n> = {\n Deployment: 'Replicated',\n StatefulSet: 'Replicated',\n DaemonSet: 'Global',\n Pod: null,\n};\n","import {\n Deployment,\n DaemonSet,\n StatefulSet,\n ReplicaSet,\n ReplicaSetList,\n ControllerRevisionList,\n ControllerRevision,\n} from 'kubernetes-types/apps/v1';\nimport { Pod } from 'kubernetes-types/core/v1';\nimport filesizeParser from 'filesize-parser';\n\nimport { Application, ApplicationPatch, Revision } from './types';\nimport {\n appOwnerLabel,\n defaultDeploymentUniqueLabel,\n unchangedAnnotationKeysForRollbackPatch,\n appRevisionAnnotation,\n} from './constants';\n\n// naked pods are pods which are not owned by a deployment, daemonset, statefulset or replicaset\n// https://kubernetes.io/docs/concepts/configuration/overview/#naked-pods-vs-replicasets-deployments-and-jobs\n// getNakedPods returns an array of naked pods from an array of pods, deployments, daemonsets and statefulsets\nexport function getNakedPods(\n pods: Pod[],\n deployments: Deployment[],\n daemonSets: DaemonSet[],\n statefulSets: StatefulSet[]\n) {\n const appLabels = [\n ...deployments.map((deployment) => deployment.spec?.selector.matchLabels),\n ...daemonSets.map((daemonSet) => daemonSet.spec?.selector.matchLabels),\n ...statefulSets.map(\n (statefulSet) => statefulSet.spec?.selector.matchLabels\n ),\n ];\n\n const nakedPods = pods.filter((pod) => {\n const podLabels = pod.metadata?.labels;\n // if the pod has no labels, it is naked\n if (!podLabels) return true;\n // if the pod has labels, but no app labels, it is naked\n return !appLabels.some((appLabel) => {\n if (!appLabel) return false;\n return Object.entries(appLabel).every(\n ([key, value]) => podLabels[key] === value\n );\n });\n });\n\n return nakedPods;\n}\n\n// type guard to check if an application is a deployment, daemonset, statefulset or pod\nexport function applicationIsKind<T extends Application>(\n appKind: 'Deployment' | 'DaemonSet' | 'StatefulSet' | 'Pod',\n application?: Application\n): application is T {\n return application?.kind === appKind;\n}\n\n// the application is external if it has no owner label\nexport function isExternalApplication(application: Application) {\n return !application.metadata?.labels?.[appOwnerLabel];\n}\n\nfunction getDeploymentRunningPods(deployment: Deployment): number {\n const availableReplicas = deployment.status?.availableReplicas ?? 0;\n const totalReplicas = deployment.status?.replicas ?? 0;\n const unavailableReplicas = deployment.status?.unavailableReplicas ?? 0;\n return availableReplicas || totalReplicas - unavailableReplicas;\n}\n\nfunction getDaemonSetRunningPods(daemonSet: DaemonSet): number {\n const numberAvailable = daemonSet.status?.numberAvailable ?? 0;\n const desiredNumberScheduled = daemonSet.status?.desiredNumberScheduled ?? 0;\n const numberUnavailable = daemonSet.status?.numberUnavailable ?? 0;\n return numberAvailable || desiredNumberScheduled - numberUnavailable;\n}\n\nfunction getStatefulSetRunningPods(statefulSet: StatefulSet): number {\n return statefulSet.status?.readyReplicas ?? 0;\n}\n\nexport function getRunningPods(\n application: Deployment | DaemonSet | StatefulSet\n): number {\n switch (application.kind) {\n case 'Deployment':\n return getDeploymentRunningPods(application);\n case 'DaemonSet':\n return getDaemonSetRunningPods(application);\n case 'StatefulSet':\n return getStatefulSetRunningPods(application);\n default:\n throw new Error('Unknown application type');\n }\n}\n\nexport function getTotalPods(\n application: Deployment | DaemonSet | StatefulSet\n): number {\n switch (application.kind) {\n case 'Deployment':\n return application.status?.replicas ?? 0;\n case 'DaemonSet':\n return application.status?.desiredNumberScheduled ?? 0;\n case 'StatefulSet':\n return application.status?.replicas ?? 0;\n default:\n throw new Error('Unknown application type');\n }\n}\n\nfunction parseCpu(cpu: string) {\n let res = parseInt(cpu, 10);\n if (cpu.endsWith('m')) {\n res /= 1000;\n } else if (cpu.endsWith('n')) {\n res /= 1000000000;\n }\n return res;\n}\n\n// bytesToReadableFormat converts bytes to a human readable string (e.g. '1.5 GB'), assuming base 10\n// there's some discussion about whether base 2 or base 10 should be used for memory units\n// https://www.quora.com/Is-1-GB-equal-to-1024-MB-or-1000-MB\nexport function bytesToReadableFormat(memoryBytes: number) {\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n let unitIndex = 0;\n let memoryValue = memoryBytes;\n while (memoryValue > 1000 && unitIndex < units.length) {\n memoryValue /= 1000;\n unitIndex++;\n }\n return `${memoryValue.toFixed(1)} ${units[unitIndex]}`;\n}\n\n// getResourceRequests returns the total cpu and memory requests for all containers in an application\nexport function getResourceRequests(application: Application) {\n const appContainers = applicationIsKind<Pod>('Pod', application)\n ? application.spec?.containers\n : application.spec?.template.spec?.containers;\n\n if (!appContainers) return null;\n\n const requests = appContainers.reduce(\n (acc, container) => {\n const cpu = container.resources?.requests?.cpu;\n const memory = container.resources?.requests?.memory;\n if (cpu) acc.cpu += parseCpu(cpu);\n if (memory) acc.memoryBytes += filesizeParser(memory, { base: 10 });\n return acc;\n },\n { cpu: 0, memoryBytes: 0 }\n );\n\n return requests;\n}\n\n// getResourceLimits returns the total cpu and memory limits for all containers in an application\nexport function getResourceLimits(application: Application) {\n const appContainers = applicationIsKind<Pod>('Pod', application)\n ? application.spec?.containers\n : application.spec?.template.spec?.containers;\n\n if (!appContainers) return null;\n\n const limits = appContainers.reduce(\n (acc, container) => {\n const cpu = container.resources?.limits?.cpu;\n const memory = container.resources?.limits?.memory;\n if (cpu) acc.cpu += parseCpu(cpu);\n if (memory) acc.memory += filesizeParser(memory, { base: 10 });\n return acc;\n },\n { cpu: 0, memory: 0 }\n );\n\n return limits;\n}\n\n// matchLabelsToLabelSelectorValue converts a map of labels to a label selector value that can be used in the\n// labelSelector param for the kube api to filter kube resources by labels\nexport function matchLabelsToLabelSelectorValue(obj?: Record<string, string>) {\n if (!obj) return '';\n return Object.entries(obj)\n .map(([key, value]) => `${key}=${value}`)\n .join(',');\n}\n\n// filterRevisionsByOwnerUid filters a list of revisions to only include revisions that have the given uid in their\n// ownerReferences\nexport function filterRevisionsByOwnerUid<T extends Revision>(\n revisions: T[],\n uid: string\n) {\n return revisions.filter((revision) => {\n const ownerReferencesUids =\n revision.metadata?.ownerReferences?.map((or) => or.uid) || [];\n return ownerReferencesUids.includes(uid);\n });\n}\n\n// getRollbackPatchPayload returns the patch payload to rollback a deployment to the previous revision\n// the patch should be able to update the deployment's template to the previous revision's template\nexport function getRollbackPatchPayload(\n application: Deployment | StatefulSet | DaemonSet,\n revisionList: ReplicaSetList | ControllerRevisionList\n): ApplicationPatch {\n switch (revisionList.kind) {\n case 'ControllerRevisionList': {\n const previousRevision = getPreviousControllerRevision(\n revisionList.items\n );\n if (!previousRevision.data) {\n throw new Error('No data found in the previous revision.');\n }\n return previousRevision.data;\n }\n case 'ReplicaSetList': {\n const previousRevision = getPreviousReplicaSetRevision(\n revisionList.items\n );\n\n // remove hash label before patching back into the deployment\n const revisionTemplate = previousRevision.spec?.template;\n if (revisionTemplate?.metadata?.labels) {\n delete revisionTemplate.metadata.labels[defaultDeploymentUniqueLabel];\n }\n\n // build the patch payload for the deployment from the replica set\n // keep the annotations to skip from the deployment, in the patch\n const applicationAnnotations = application.metadata?.annotations || {};\n const applicationAnnotationsInPatch =\n unchangedAnnotationKeysForRollbackPatch.reduce((acc, annotationKey) => {\n if (applicationAnnotations[annotationKey]) {\n acc[annotationKey] = applicationAnnotations[annotationKey];\n }\n return acc;\n }, {} as Record<string, string>);\n\n // add any annotations from the target revision that shouldn't be skipped\n const revisionAnnotations = previousRevision.metadata?.annotations || {};\n const revisionAnnotationsInPatch = Object.entries(\n revisionAnnotations\n ).reduce((acc, [annotationKey, annotationValue]) => {\n if (!unchangedAnnotationKeysForRollbackPatch.includes(annotationKey)) {\n acc[annotationKey] = annotationValue;\n }\n return acc;\n }, {} as Record<string, string>);\n\n const patchAnnotations = {\n ...applicationAnnotationsInPatch,\n ...revisionAnnotationsInPatch,\n };\n\n // Create a patch of the Deployment that replaces spec.template\n const deploymentRollbackPatch = [\n {\n op: 'replace',\n path: '/spec/template',\n value: revisionTemplate,\n },\n {\n op: 'replace',\n path: '/metadata/annotations',\n value: patchAnnotations,\n },\n ].filter((p) => !!p.value); // remove any patch that has no value\n\n return deploymentRollbackPatch;\n }\n default:\n throw new Error(`Unknown revision list kind ${revisionList.kind}.`);\n }\n}\n\nfunction getPreviousReplicaSetRevision(replicaSets: ReplicaSet[]) {\n // sort replicaset(s) using the revision annotation number (old to new).\n // Kubectl uses the same revision annotation key to determine the previous version\n // (see the Revision function, and where it's used https://github.com/kubernetes/kubectl/blob/27ec3dafa658d8873b3d9287421d636048b51921/pkg/util/deployment/deployment.go#LL70C11-L70C11)\n const sortedReplicaSets = replicaSets.sort((a, b) => {\n const aRevision =\n Number(a.metadata?.annotations?.[appRevisionAnnotation]) || 0;\n const bRevision =\n Number(b.metadata?.annotations?.[appRevisionAnnotation]) || 0;\n return aRevision - bRevision;\n });\n\n // if there are less than 2 revisions, there is no previous revision to rollback to\n if (sortedReplicaSets.length < 2) {\n throw new Error(\n 'There are no previous revisions to rollback to. Please check the application revisions.'\n );\n }\n\n // get the second to last revision\n const previousRevision = sortedReplicaSets[sortedReplicaSets.length - 2];\n return previousRevision;\n}\n\nfunction getPreviousControllerRevision(\n controllerRevisions: ControllerRevision[]\n) {\n // sort the list of ControllerRevisions by revision, using the creationTimestamp as a tie breaker (old to new)\n const sortedControllerRevisions = controllerRevisions.sort((a, b) => {\n if (a.revision === b.revision) {\n return (\n new Date(a.metadata?.creationTimestamp || '').getTime() -\n new Date(b.metadata?.creationTimestamp || '').getTime()\n );\n }\n return a.revision - b.revision;\n });\n\n // if there are less than 2 revisions, there is no previous revision to rollback to\n if (sortedControllerRevisions.length < 2) {\n throw new Error(\n 'There are no previous revisions to rollback to. Please check the application revisions.'\n );\n }\n\n // get the second to last revision\n const previousRevision =\n sortedControllerRevisions[sortedControllerRevisions.length - 2];\n return previousRevision;\n}\n","import { Pod, PodList } from 'kubernetes-types/core/v1';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { ApplicationPatch } from './types';\n\nexport async function getNamespacePods(\n environmentId: EnvironmentId,\n namespace: string,\n labelSelector?: string\n) {\n try {\n const { data } = await axios.get<PodList>(\n buildUrl(environmentId, namespace),\n {\n params: {\n labelSelector,\n },\n }\n );\n return data.items;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve pods');\n }\n}\n\nexport async function getPod(\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n) {\n try {\n const { data } = await axios.get<Pod>(\n buildUrl(environmentId, namespace, name)\n );\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve pod');\n }\n}\n\nexport async function patchPod(\n environmentId: EnvironmentId,\n namespace: string,\n name: string,\n patch: ApplicationPatch\n) {\n try {\n return await axios.patch<Pod>(\n buildUrl(environmentId, namespace, name),\n patch,\n {\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n }\n );\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update pod');\n }\n}\n\nexport async function deletePod(\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n) {\n try {\n return await axios.delete<Pod>(buildUrl(environmentId, namespace, name));\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to delete pod');\n }\n}\n\nexport function buildUrl(\n environmentId: EnvironmentId,\n namespace: string,\n name?: string\n) {\n let baseUrl = `/endpoints/${environmentId}/kubernetes/api/v1/namespaces/${namespace}/pods`;\n if (name) {\n baseUrl += `/${name}`;\n }\n return baseUrl;\n}\n","import {\n DaemonSetList,\n StatefulSetList,\n DeploymentList,\n Deployment,\n DaemonSet,\n StatefulSet,\n ReplicaSetList,\n ControllerRevisionList,\n} from 'kubernetes-types/apps/v1';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { isFulfilled } from '@/portainer/helpers/promise-utils';\n\nimport { getPod, getNamespacePods, patchPod } from './pod.service';\nimport { filterRevisionsByOwnerUid, getNakedPods } from './utils';\nimport {\n AppKind,\n Application,\n ApplicationList,\n ApplicationPatch,\n} from './types';\nimport { appRevisionAnnotation } from './constants';\n\n// This file contains services for Kubernetes apps/v1 resources (Deployments, DaemonSets, StatefulSets)\n\nexport async function getApplicationsForCluster(\n environmentId: EnvironmentId,\n namespaceNames?: string[]\n) {\n try {\n if (!namespaceNames) {\n return [];\n }\n const applications = await Promise.all(\n namespaceNames.map((namespace) =>\n getApplicationsForNamespace(environmentId, namespace)\n )\n );\n return applications.flat();\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve applications for cluster'\n );\n }\n}\n\n// get a list of all Deployments, DaemonSets, StatefulSets and naked pods (https://portainer.atlassian.net/browse/CE-2) in one namespace\nasync function getApplicationsForNamespace(\n environmentId: EnvironmentId,\n namespace: string\n) {\n try {\n const [deployments, daemonSets, statefulSets, pods] = await Promise.all([\n getApplicationsByKind<DeploymentList>(\n environmentId,\n namespace,\n 'Deployment'\n ),\n getApplicationsByKind<DaemonSetList>(\n environmentId,\n namespace,\n 'DaemonSet'\n ),\n getApplicationsByKind<StatefulSetList>(\n environmentId,\n namespace,\n 'StatefulSet'\n ),\n getNamespacePods(environmentId, namespace),\n ]);\n // find all pods which are 'naked' (not owned by a deployment, daemonset or statefulset)\n const nakedPods = getNakedPods(pods, deployments, daemonSets, statefulSets);\n return [...deployments, ...daemonSets, ...statefulSets, ...nakedPods];\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n `Unable to retrieve applications in namespace '${namespace}'`\n );\n }\n}\n\n// if not known, get the type of an application (Deployment, DaemonSet, StatefulSet or naked pod) by name\nexport async function getApplication(\n environmentId: EnvironmentId,\n namespace: string,\n name: string,\n appKind?: AppKind\n) {\n try {\n // if resourceType is known, get the application by type and name\n if (appKind) {\n switch (appKind) {\n case 'Deployment':\n case 'DaemonSet':\n case 'StatefulSet':\n return await getApplicationByKind(\n environmentId,\n namespace,\n appKind,\n name\n );\n case 'Pod':\n return await getPod(environmentId, namespace, name);\n default:\n throw new Error('Unknown resource type');\n }\n }\n\n // if resourceType is not known, get the application by name and return the first one that is fulfilled\n const [deployment, daemonSet, statefulSet, pod] = await Promise.allSettled([\n getApplicationByKind<Deployment>(\n environmentId,\n namespace,\n 'Deployment',\n name\n ),\n getApplicationByKind<DaemonSet>(\n environmentId,\n namespace,\n 'DaemonSet',\n name\n ),\n getApplicationByKind<StatefulSet>(\n environmentId,\n namespace,\n 'StatefulSet',\n name\n ),\n getPod(environmentId, namespace, name),\n ]);\n\n if (isFulfilled(deployment)) {\n return deployment.value;\n }\n if (isFulfilled(daemonSet)) {\n return daemonSet.value;\n }\n if (isFulfilled(statefulSet)) {\n return statefulSet.value;\n }\n if (isFulfilled(pod)) {\n return pod.value;\n }\n throw new Error('Unable to retrieve application');\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n `Unable to retrieve application ${name} in namespace '${namespace}'`\n );\n }\n}\n\nexport async function patchApplication(\n environmentId: EnvironmentId,\n namespace: string,\n appKind: AppKind,\n name: string,\n patch: ApplicationPatch\n) {\n try {\n switch (appKind) {\n case 'Deployment':\n return await patchApplicationByKind<Deployment>(\n environmentId,\n namespace,\n appKind,\n name,\n patch\n );\n case 'DaemonSet':\n return await patchApplicationByKind<DaemonSet>(\n environmentId,\n namespace,\n appKind,\n name,\n patch,\n 'application/strategic-merge-patch+json'\n );\n case 'StatefulSet':\n return await patchApplicationByKind<StatefulSet>(\n environmentId,\n namespace,\n appKind,\n name,\n patch,\n 'application/strategic-merge-patch+json'\n );\n case 'Pod':\n return await patchPod(environmentId, namespace, name, patch);\n default:\n throw new Error(`Unknown application kind ${appKind}`);\n }\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n `Unable to patch application ${name} in namespace '${namespace}'`\n );\n }\n}\n\nasync function patchApplicationByKind<T extends Application>(\n environmentId: EnvironmentId,\n namespace: string,\n appKind: 'Deployment' | 'DaemonSet' | 'StatefulSet',\n name: string,\n patch: ApplicationPatch,\n contentType = 'application/json-patch+json'\n) {\n try {\n const res = await axios.patch<T>(\n buildUrl(environmentId, namespace, `${appKind}s`, name),\n patch,\n {\n headers: {\n 'Content-Type': contentType,\n },\n }\n );\n return res;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to patch application');\n }\n}\n\nasync function getApplicationByKind<T extends Application>(\n environmentId: EnvironmentId,\n namespace: string,\n appKind: 'Deployment' | 'DaemonSet' | 'StatefulSet',\n name: string\n) {\n try {\n const { data } = await axios.get<T>(\n buildUrl(environmentId, namespace, `${appKind}s`, name)\n );\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve application');\n }\n}\n\nasync function getApplicationsByKind<T extends ApplicationList>(\n environmentId: EnvironmentId,\n namespace: string,\n appKind: 'Deployment' | 'DaemonSet' | 'StatefulSet'\n) {\n try {\n const { data } = await axios.get<T>(\n buildUrl(environmentId, namespace, `${appKind}s`)\n );\n return data.items as T['items'];\n } catch (e) {\n throw parseAxiosError(e as Error, `Unable to retrieve ${appKind}s`);\n }\n}\n\nexport async function getApplicationRevisionList(\n environmentId: EnvironmentId,\n namespace: string,\n deploymentUid?: string,\n appKind?: AppKind,\n labelSelector?: string\n) {\n if (!deploymentUid) {\n throw new Error('deploymentUid is required');\n }\n try {\n switch (appKind) {\n case 'Deployment': {\n const replicaSetList = await getReplicaSetList(\n environmentId,\n namespace,\n labelSelector\n );\n const replicaSets = replicaSetList.items;\n // keep only replicaset(s) which are owned by the deployment with the given uid\n const replicaSetsWithOwnerId = filterRevisionsByOwnerUid(\n replicaSets,\n deploymentUid\n );\n // keep only replicaset(s) that have been a version of the Deployment\n const replicaSetsWithRevisionAnnotations =\n replicaSetsWithOwnerId.filter(\n (rs) => !!rs.metadata?.annotations?.[appRevisionAnnotation]\n );\n\n return {\n ...replicaSetList,\n items: replicaSetsWithRevisionAnnotations,\n } as ReplicaSetList;\n }\n case 'DaemonSet':\n case 'StatefulSet': {\n const controllerRevisionList = await getControllerRevisionList(\n environmentId,\n namespace,\n labelSelector\n );\n const controllerRevisions = controllerRevisionList.items;\n // ensure the controller reference(s) is owned by the deployment with the given uid\n const controllerRevisionsWithOwnerId = filterRevisionsByOwnerUid(\n controllerRevisions,\n deploymentUid\n );\n\n return {\n ...controllerRevisionList,\n items: controllerRevisionsWithOwnerId,\n } as ControllerRevisionList;\n }\n default:\n throw new Error(`Unknown application kind ${appKind}`);\n }\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n `Unable to retrieve revisions for ${appKind}`\n );\n }\n}\n\nexport async function getReplicaSetList(\n environmentId: EnvironmentId,\n namespace: string,\n labelSelector?: string\n) {\n try {\n const { data } = await axios.get<ReplicaSetList>(\n buildUrl(environmentId, namespace, 'ReplicaSets'),\n {\n params: {\n labelSelector,\n },\n }\n );\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve ReplicaSets');\n }\n}\n\nexport async function getControllerRevisionList(\n environmentId: EnvironmentId,\n namespace: string,\n labelSelector?: string\n) {\n try {\n const { data } = await axios.get<ControllerRevisionList>(\n buildUrl(environmentId, namespace, 'ControllerRevisions'),\n {\n params: {\n labelSelector,\n },\n }\n );\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve ControllerRevisions');\n }\n}\n\nfunction buildUrl(\n environmentId: EnvironmentId,\n namespace: string,\n appKind:\n | 'Deployments'\n | 'DaemonSets'\n | 'StatefulSets'\n | 'ReplicaSets'\n | 'ControllerRevisions',\n name?: string\n) {\n let baseUrl = `/endpoints/${environmentId}/kubernetes/apis/apps/v1/namespaces/${namespace}/${appKind.toLowerCase()}`;\n if (name) {\n baseUrl += `/${name}`;\n }\n return baseUrl;\n}\n","import { HorizontalPodAutoscalerList } from 'kubernetes-types/autoscaling/v1';\n\nimport axios from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport async function getNamespaceHorizontalPodAutoscalers(\n environmentId: EnvironmentId,\n namespace: string\n) {\n const { data: autoScalarList } = await axios.get<HorizontalPodAutoscalerList>(\n `/endpoints/${environmentId}/kubernetes/apis/autoscaling/v1/namespaces/${namespace}/horizontalpodautoscalers`\n );\n return autoScalarList.items;\n}\n","import { useMutation, useQuery } from 'react-query';\nimport { Pod } from 'kubernetes-types/core/v1';\n\nimport { queryClient, withError } from '@/react-tools/react-query';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { getNamespaceServices } from '../services/service';\n\nimport {\n getApplicationsForCluster,\n getApplication,\n patchApplication,\n getApplicationRevisionList,\n} from './application.service';\nimport type { AppKind, Application, ApplicationPatch } from './types';\nimport { deletePod, getNamespacePods } from './pod.service';\nimport { getNamespaceHorizontalPodAutoscalers } from './autoscaling.service';\nimport { applicationIsKind, matchLabelsToLabelSelectorValue } from './utils';\n\nconst queryKeys = {\n applicationsForCluster: (environmentId: EnvironmentId) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'applications',\n ],\n application: (\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n ) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'applications',\n namespace,\n name,\n ],\n applicationRevisions: (\n environmentId: EnvironmentId,\n namespace: string,\n name: string,\n labelSelector?: string\n ) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'applications',\n namespace,\n name,\n 'revisions',\n labelSelector,\n ],\n applicationServices: (\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n ) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'applications',\n namespace,\n name,\n 'services',\n ],\n ingressesForApplication: (\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n ) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'applications',\n namespace,\n name,\n 'ingresses',\n ],\n applicationHorizontalPodAutoscalers: (\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n ) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'applications',\n namespace,\n name,\n 'horizontalpodautoscalers',\n ],\n applicationPods: (\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n ) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'applications',\n namespace,\n name,\n 'pods',\n ],\n};\n\n// useQuery to get a list of all applications from an array of namespaces\nexport function useApplicationsForCluster(\n environemtId: EnvironmentId,\n namespaces?: string[]\n) {\n return useQuery(\n queryKeys.applicationsForCluster(environemtId),\n () => getApplicationsForCluster(environemtId, namespaces),\n {\n ...withError('Unable to retrieve applications'),\n enabled: !!namespaces?.length,\n }\n );\n}\n\n// useQuery to get an application by environmentId, namespace and name\nexport function useApplication(\n environmentId: EnvironmentId,\n namespace: string,\n name: string,\n appKind?: AppKind\n) {\n return useQuery(\n queryKeys.application(environmentId, namespace, name),\n () => getApplication(environmentId, namespace, name, appKind),\n {\n ...withError('Unable to retrieve application'),\n }\n );\n}\n\n// test if I can get the previous revision\n// useQuery to get an application's previous revision by environmentId, namespace, appKind and labelSelector\nexport function useApplicationRevisionList(\n environmentId: EnvironmentId,\n namespace: string,\n name: string,\n deploymentUid?: string,\n labelSelector?: string,\n appKind?: AppKind\n) {\n return useQuery(\n queryKeys.applicationRevisions(\n environmentId,\n namespace,\n name,\n labelSelector\n ),\n () =>\n getApplicationRevisionList(\n environmentId,\n namespace,\n deploymentUid,\n appKind,\n labelSelector\n ),\n {\n ...withError('Unable to retrieve application revisions'),\n enabled: !!labelSelector && !!appKind && !!deploymentUid,\n }\n );\n}\n\n// useApplicationServices returns a query for services that are related to the application (this doesn't include ingresses)\n// Filtering the services by the application selector labels is done in the front end because:\n// - The label selector query param in the kubernetes API filters by metadata.labels, but we need to filter the services by spec.selector\n// - The field selector query param in the kubernetes API can filter the services by spec.selector, but it doesn't support chaining with 'OR',\n// so we can't filter by services with at least one matching label. See: https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/#chained-selectors\nexport function useApplicationServices(\n environmentId: EnvironmentId,\n namespace: string,\n appName: string,\n app?: Application\n) {\n return useQuery(\n queryKeys.applicationServices(environmentId, namespace, appName),\n async () => {\n if (!app) {\n return [];\n }\n\n // get the selector labels for the application\n const appSelectorLabels = applicationIsKind<Pod>('Pod', app)\n ? app.metadata?.labels\n : app.spec?.template?.metadata?.labels;\n\n // get all services in the namespace and filter them by the application selector labels\n const services = await getNamespaceServices(environmentId, namespace);\n const filteredServices = services.filter((service) => {\n if (service.spec?.selector && appSelectorLabels) {\n const serviceSelectorLabels = service.spec.selector;\n // include the service if the service selector label matches at least one application selector label\n return Object.keys(appSelectorLabels).some(\n (key) =>\n serviceSelectorLabels[key] &&\n serviceSelectorLabels[key] === appSelectorLabels[key]\n );\n }\n return false;\n });\n return filteredServices;\n },\n { ...withError(`Unable to get services for ${appName}`), enabled: !!app }\n );\n}\n\n// useApplicationHorizontalPodAutoscalers returns a query for horizontal pod autoscalers that are related to the application\nexport function useApplicationHorizontalPodAutoscalers(\n environmentId: EnvironmentId,\n namespace: string,\n appName: string,\n app?: Application\n) {\n return useQuery(\n queryKeys.applicationHorizontalPodAutoscalers(\n environmentId,\n namespace,\n appName\n ),\n async () => {\n if (!app) {\n return null;\n }\n\n const horizontalPodAutoscalers =\n await getNamespaceHorizontalPodAutoscalers(environmentId, namespace);\n const filteredHorizontalPodAutoscalers =\n horizontalPodAutoscalers.find((horizontalPodAutoscaler) => {\n const scaleTargetRef = horizontalPodAutoscaler.spec?.scaleTargetRef;\n if (scaleTargetRef) {\n const scaleTargetRefName = scaleTargetRef.name;\n const scaleTargetRefKind = scaleTargetRef.kind;\n // include the horizontal pod autoscaler if the scale target ref name and kind match the application name and kind\n return (\n scaleTargetRefName === app.metadata?.name &&\n scaleTargetRefKind === app.kind\n );\n }\n return false;\n }) || null;\n return filteredHorizontalPodAutoscalers;\n },\n {\n ...withError(\n `Unable to get horizontal pod autoscalers${\n app ? ` for ${app.metadata?.name}` : ''\n }`\n ),\n enabled: !!app,\n }\n );\n}\n\n// useApplicationPods returns a query for pods that are related to the application by the application selector labels\nexport function useApplicationPods(\n environmentId: EnvironmentId,\n namespace: string,\n appName: string,\n app?: Application\n) {\n return useQuery(\n queryKeys.applicationPods(environmentId, namespace, appName),\n async () => {\n if (applicationIsKind<Pod>('Pod', app)) {\n return [app];\n }\n const appSelector = app?.spec?.selector;\n const labelSelector = matchLabelsToLabelSelectorValue(\n appSelector?.matchLabels\n );\n\n // get all pods in the namespace using the application selector as the label selector query param\n const pods = await getNamespacePods(\n environmentId,\n namespace,\n labelSelector\n );\n return pods;\n },\n {\n ...withError(`Unable to get pods for ${appName}`),\n enabled: !!app,\n }\n );\n}\n\n// useQuery to patch an application by environmentId, namespace, name and patch payload\nexport function usePatchApplicationMutation(\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n) {\n return useMutation(\n ({ appKind, patch }: { appKind: AppKind; patch: ApplicationPatch }) =>\n patchApplication(environmentId, namespace, appKind, name, patch),\n {\n onSuccess: () => {\n queryClient.invalidateQueries(\n queryKeys.application(environmentId, namespace, name)\n );\n },\n // patch application is used for patching and rollbacks, so handle the error where it's used instead of here\n }\n );\n}\n\n// useRedeployApplicationMutation gets all the pods for an application (using the matchLabels field in the labelSelector query param) and then deletes all of them, so that they are recreated\nexport function useRedeployApplicationMutation(\n environmentId: number,\n namespace: string,\n name: string\n) {\n return useMutation(\n async ({ labelSelector }: { labelSelector: string }) => {\n try {\n // get only the pods that match the labelSelector for the application\n const pods = await getNamespacePods(\n environmentId,\n namespace,\n labelSelector\n );\n // delete all the pods to redeploy the application\n await Promise.all(\n pods.map((pod) => {\n if (pod?.metadata?.name) {\n return deletePod(environmentId, namespace, pod.metadata.name);\n }\n return Promise.resolve();\n })\n );\n } catch (error) {\n throw new Error(`Unable to redeploy application: ${error}`);\n }\n },\n {\n onSuccess: () => {\n queryClient.invalidateQueries(\n queryKeys.application(environmentId, namespace, name)\n );\n },\n ...withError('Unable to redeploy application'),\n }\n );\n}\n","import { User, Clock, Edit, ChevronRight, ChevronUp } from 'lucide-react';\nimport moment from 'moment';\nimport { useEffect, useState } from 'react';\nimport { Pod } from 'kubernetes-types/core/v1';\nimport { useCurrentStateAndParams } from '@uirouter/react';\n\nimport { Authorized } from '@/react/hooks/useUser';\nimport { notifyError, notifySuccess } from '@/portainer/services/notifications';\n\nimport { DetailsTable } from '@@/DetailsTable';\nimport { Badge } from '@@/Badge';\nimport { Link } from '@@/Link';\nimport { Button, LoadingButton } from '@@/buttons';\n\nimport { isSystemNamespace } from '../../namespaces/utils';\nimport {\n appStackNameLabel,\n appKindToDeploymentTypeMap,\n appOwnerLabel,\n appDeployMethodLabel,\n appNoteAnnotation,\n} from '../constants';\nimport {\n applicationIsKind,\n bytesToReadableFormat,\n getResourceRequests,\n getRunningPods,\n getTotalPods,\n isExternalApplication,\n} from '../utils';\nimport {\n useApplication,\n usePatchApplicationMutation,\n} from '../application.queries';\nimport { Application, ApplicationPatch } from '../types';\n\nexport function ApplicationSummaryWidget() {\n const stateAndParams = useCurrentStateAndParams();\n const {\n params: {\n namespace,\n name,\n 'resource-type': resourceType,\n endpointId: environmentId,\n },\n } = stateAndParams;\n const applicationQuery = useApplication(\n environmentId,\n namespace,\n name,\n resourceType\n );\n const application = applicationQuery.data;\n const systemNamespace = isSystemNamespace(namespace);\n const externalApplication = application && isExternalApplication(application);\n const applicationRequests = application && getResourceRequests(application);\n const applicationOwner = application?.metadata?.labels?.[appOwnerLabel];\n const applicationDeployMethod = getApplicationDeployMethod(application);\n const applicationNote =\n application?.metadata?.annotations?.[appNoteAnnotation];\n\n const [isNoteOpen, setIsNoteOpen] = useState(true);\n const [applicationNoteFormValues, setApplicationNoteFormValues] =\n useState('');\n\n useEffect(() => {\n setApplicationNoteFormValues(applicationNote || '');\n }, [applicationNote]);\n\n const patchApplicationMutation = usePatchApplicationMutation(\n environmentId,\n namespace,\n name\n );\n\n return (\n <div className=\"p-5\">\n <DetailsTable>\n <tr>\n <td>Name</td>\n <td>\n <div\n className=\"flex items-center gap-x-2\"\n data-cy=\"k8sAppDetail-appName\"\n >\n {name}\n {externalApplication && !systemNamespace && (\n <Badge type=\"info\">external</Badge>\n )}\n </div>\n </td>\n </tr>\n <tr>\n <td>Stack</td>\n <td data-cy=\"k8sAppDetail-stackName\">\n {application?.metadata?.labels?.[appStackNameLabel] || '-'}\n </td>\n </tr>\n <tr>\n <td>Namespace</td>\n <td>\n <div\n className=\"flex items-center gap-x-2\"\n data-cy=\"k8sAppDetail-resourcePoolName\"\n >\n <Link\n to=\"kubernetes.resourcePools.resourcePool\"\n params={{ id: namespace }}\n >\n {namespace}\n </Link>\n {systemNamespace && <Badge type=\"info\">system</Badge>}\n </div>\n </td>\n </tr>\n <tr>\n <td>Application type</td>\n <td data-cy=\"k8sAppDetail-appType\">{application?.kind || '-'}</td>\n </tr>\n {application?.kind && (\n <tr>\n <td>Status</td>\n {applicationIsKind<Pod>('Pod', application) && (\n <td data-cy=\"k8sAppDetail-appType\">\n {application?.status?.phase}\n </td>\n )}\n {!applicationIsKind<Pod>('Pod', application) && (\n <td data-cy=\"k8sAppDetail-appType\">\n {appKindToDeploymentTypeMap[application.kind]}\n <code className=\"ml-1\">\n {getRunningPods(application)}\n </code> / <code>{getTotalPods(application)}</code>\n </td>\n )}\n </tr>\n )}\n {(!!applicationRequests?.cpu || !!applicationRequests?.memoryBytes) && (\n <tr>\n <td>\n Resource reservations\n {!applicationIsKind<Pod>('Pod', application) && (\n <div className=\"text-muted small\">per instance</div>\n )}\n </td>\n <td>\n {!!applicationRequests?.cpu && (\n <div data-cy=\"k8sAppDetail-cpuReservation\">\n CPU {applicationRequests.cpu}\n </div>\n )}\n {!!applicationRequests?.memoryBytes && (\n <div data-cy=\"k8sAppDetail-memoryReservation\">\n Memory{' '}\n {bytesToReadableFormat(applicationRequests.memoryBytes)}\n </div>\n )}\n </td>\n </tr>\n )}\n <tr>\n <td>Creation</td>\n <td>\n <div className=\"flex flex-wrap items-center gap-3\">\n {applicationOwner && (\n <span\n className=\"flex items-center gap-1\"\n data-cy=\"k8sAppDetail-owner\"\n >\n <User />\n {applicationOwner}\n </span>\n )}\n <span\n className=\"flex items-center gap-1\"\n data-cy=\"k8sAppDetail-creationDate\"\n >\n <Clock />\n {moment(application?.metadata?.creationTimestamp).format(\n 'YYYY-MM-DD HH:mm:ss'\n )}\n </span>\n {(!externalApplication || systemNamespace) && (\n <span\n className=\"flex items-center gap-1\"\n data-cy=\"k8sAppDetail-creationMethod\"\n >\n <Clock />\n Deployed from {applicationDeployMethod}\n </span>\n )}\n </div>\n </td>\n </tr>\n <tr>\n <td colSpan={2}>\n <form className=\"form-horizontal\">\n <div className=\"form-group\">\n <div className=\"col-sm-12 vertical-center\">\n <Button\n size=\"small\"\n type=\"button\"\n color=\"none\"\n data-cy=\"k8sAppDetail-expandNoteButton\"\n onClick={() => setIsNoteOpen(!isNoteOpen)}\n className=\"!m-0 !p-0\"\n >\n {isNoteOpen ? <ChevronUp /> : <ChevronRight />} <Edit />{' '}\n Note\n </Button>\n </div>\n </div>\n\n {isNoteOpen && (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <textarea\n className=\"form-control resize-y\"\n name=\"application_note\"\n id=\"application_note\"\n value={applicationNoteFormValues}\n onChange={(e) =>\n setApplicationNoteFormValues(e.target.value)\n }\n rows={5}\n placeholder=\"Enter a note about this application...\"\n />\n </div>\n </div>\n\n <Authorized authorizations=\"K8sApplicationDetailsW\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n color=\"primary\"\n size=\"small\"\n className=\"!ml-0\"\n type=\"button\"\n onClick={() => patchApplicationNote()}\n disabled={\n // disable if there is no change to the note, or it's updating\n applicationNoteFormValues ===\n (applicationNote || '') ||\n patchApplicationMutation.isLoading\n }\n data-cy=\"k8sAppDetail-saveNoteButton\"\n isLoading={patchApplicationMutation.isLoading}\n loadingText={applicationNote ? 'Updating' : 'Saving'}\n >\n {applicationNote ? 'Update' : 'Save'} note\n </LoadingButton>\n </div>\n </div>\n </Authorized>\n </>\n )}\n </form>\n </td>\n </tr>\n </DetailsTable>\n </div>\n );\n\n async function patchApplicationNote() {\n const patch: ApplicationPatch = [\n {\n op: 'replace',\n path: `/metadata/annotations/${appNoteAnnotation}`,\n value: applicationNoteFormValues,\n },\n ];\n if (application?.kind) {\n try {\n await patchApplicationMutation.mutateAsync({\n appKind: application.kind,\n patch,\n });\n notifySuccess('Success', 'Application successfully updated');\n } catch (error) {\n notifyError(\n `Failed to ${applicationNote ? 'update' : 'save'} note`,\n error as Error\n );\n }\n }\n }\n}\n\nfunction getApplicationDeployMethod(application?: Application) {\n if (!application?.metadata?.labels?.[appDeployMethodLabel])\n return 'application form';\n if (application?.metadata?.labels?.[appDeployMethodLabel] === 'content') {\n return 'manifest';\n }\n return application?.metadata?.labels?.[appDeployMethodLabel];\n}\n","import { useQuery } from 'react-query';\n\nimport axios from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { StackFile, StackId } from './types';\n\nconst queryKeys = {\n stackFile: (stackId?: StackId) => ['stacks', stackId, 'file'],\n};\n\nexport function useStackFile(stackId?: StackId) {\n return useQuery(queryKeys.stackFile(stackId), () => getStackFile(stackId), {\n ...withError('Unable to retrieve stack'),\n enabled: !!stackId,\n });\n}\n\nasync function getStackFile(stackId?: StackId) {\n if (!stackId) {\n return Promise.resolve(undefined);\n }\n const { data } = await axios.get<StackFile>(`/stacks/${stackId}/file`);\n return data;\n}\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { BETeaserButton } from '@@/BETeaserButton';\n\nexport function RestartApplicationButton() {\n return (\n <BETeaserButton\n buttonClassName=\"!ml-0\"\n data-cy=\"k8sAppDetail-restartButton\"\n heading=\"Rolling restart\"\n featureId={FeatureId.K8S_ROLLING_RESTART}\n message=\"A rolling restart of the application is performed.\"\n buttonText=\"Rolling restart\"\n />\n );\n}\n","import { RotateCw } from 'lucide-react';\nimport { Pod } from 'kubernetes-types/core/v1';\nimport { useRouter } from '@uirouter/react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { notifySuccess, notifyError } from '@/portainer/services/notifications';\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { confirm } from '@@/modals/confirm';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\n\nimport { useRedeployApplicationMutation } from '../../application.queries';\nimport { Application } from '../../types';\nimport {\n applicationIsKind,\n matchLabelsToLabelSelectorValue,\n} from '../../utils';\n\ntype Props = {\n environmentId: EnvironmentId;\n namespace: string;\n appName: string;\n app?: Application;\n};\n\nexport function RedeployApplicationButton({\n environmentId,\n namespace,\n appName,\n app,\n}: Props) {\n const router = useRouter();\n const redeployAppMutation = useRedeployApplicationMutation(\n environmentId,\n namespace,\n appName\n );\n\n return (\n <Authorized authorizations=\"K8sPodDelete\">\n <Button\n type=\"button\"\n size=\"small\"\n color=\"light\"\n className=\"!ml-0\"\n disabled={redeployAppMutation.isLoading || !app}\n onClick={() => redeployApplication()}\n data-cy=\"k8sAppDetail-redeployButton\"\n >\n <Icon icon={RotateCw} className=\"mr-1\" />\n Redeploy\n </Button>\n </Authorized>\n );\n\n async function redeployApplication() {\n // validate\n if (!app || applicationIsKind<Pod>('Pod', app)) {\n return;\n }\n try {\n if (!app?.spec?.selector?.matchLabels) {\n throw new Error(\n `Application has no 'matchLabels' selector to redeploy pods.`\n );\n }\n } catch (error) {\n notifyError('Failure', error as Error);\n return;\n }\n\n // confirm the action\n const confirmed = await confirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n confirmButton: buildConfirmButton('Redeploy'),\n message:\n 'Redeploying terminates and restarts the application, which will cause service interruption. Do you wish to continue?',\n });\n if (!confirmed) {\n return;\n }\n\n // using the matchlabels object, delete the associated pods with redeployAppMutation\n const labelSelector = matchLabelsToLabelSelectorValue(\n app?.spec?.selector?.matchLabels\n );\n redeployAppMutation.mutateAsync(\n { labelSelector },\n {\n onSuccess: () => {\n notifySuccess('Success', 'Application successfully redeployed');\n router.stateService.reload();\n },\n }\n );\n }\n}\n","import { Pod } from 'kubernetes-types/core/v1';\nimport { RotateCcw } from 'lucide-react';\nimport { useRouter } from '@uirouter/react';\n\nimport { Authorized } from '@/react/hooks/useUser';\nimport { notifySuccess, notifyError } from '@/portainer/services/notifications';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\nimport { confirm } from '@@/modals/confirm';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';\n\nimport {\n useApplicationRevisionList,\n usePatchApplicationMutation,\n} from '../../application.queries';\nimport {\n applicationIsKind,\n getRollbackPatchPayload,\n matchLabelsToLabelSelectorValue,\n} from '../../utils';\nimport { Application } from '../../types';\nimport { appDeployMethodLabel } from '../../constants';\n\ntype Props = {\n environmentId: EnvironmentId;\n namespace: string;\n appName: string;\n app?: Application;\n};\n\nexport function RollbackApplicationButton({\n environmentId,\n namespace,\n appName,\n app,\n}: Props) {\n const router = useRouter();\n const labelSelector = applicationIsKind<Pod>('Pod', app)\n ? ''\n : matchLabelsToLabelSelectorValue(app?.spec?.selector?.matchLabels);\n const appRevisionListQuery = useApplicationRevisionList(\n environmentId,\n namespace,\n appName,\n app?.metadata?.uid,\n labelSelector,\n app?.kind\n );\n const appRevisionList = appRevisionListQuery.data;\n const appRevisions = appRevisionList?.items;\n const appDeployMethod =\n app?.metadata?.labels?.[appDeployMethodLabel] || 'application form';\n\n const patchAppMutation = usePatchApplicationMutation(\n environmentId,\n namespace,\n appName\n );\n\n const isRollbackNotAvailable =\n !app ||\n !appRevisions ||\n appRevisions?.length < 2 ||\n appDeployMethod !== 'application form' ||\n patchAppMutation.isLoading;\n\n const rollbackButton = (\n <Button\n ng-if=\"!ctrl.isExternalApplication()\"\n type=\"button\"\n color=\"light\"\n size=\"small\"\n className=\"!ml-0\"\n disabled={isRollbackNotAvailable}\n onClick={() => rollbackApplication()}\n data-cy=\"k8sAppDetail-rollbackButton\"\n >\n <Icon icon={RotateCcw} className=\"mr-1\" />\n Rollback to previous configuration\n </Button>\n );\n\n return (\n <Authorized authorizations=\"K8sApplicationDetailsW\">\n {isRollbackNotAvailable ? (\n <TooltipWithChildren message=\"Cannot roll back to previous configuration as none currently exists\">\n <span>{rollbackButton}</span>\n </TooltipWithChildren>\n ) : (\n rollbackButton\n )}\n </Authorized>\n );\n\n async function rollbackApplication() {\n // exit early if the application is a pod or there are no revisions\n if (\n !app?.kind ||\n applicationIsKind<Pod>('Pod', app) ||\n !appRevisionList?.items?.length\n ) {\n return;\n }\n\n // confirm the action\n const confirmed = await confirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n confirmButton: buildConfirmButton('Rollback'),\n message:\n 'Rolling back the application to a previous configuration may cause service interruption. Do you wish to continue?',\n });\n if (!confirmed) {\n return;\n }\n\n try {\n const patch = getRollbackPatchPayload(app, appRevisionList);\n patchAppMutation.mutateAsync(\n { appKind: app.kind, patch },\n {\n onSuccess: () => {\n notifySuccess('Success', 'Application successfully rolled back');\n router.stateService.reload();\n },\n onError: (error) =>\n notifyError(\n 'Failure',\n error as Error,\n 'Unable to rollback the application'\n ),\n }\n );\n } catch (error) {\n notifyError('Failure', error as Error);\n }\n }\n}\n","import { Service } from 'kubernetes-types/core/v1';\nimport { ExternalLink } from 'lucide-react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { useEnvironment } from '@/react/portainer/environments/queries';\n\nimport { Icon } from '@@/Icon';\nimport { TextTip } from '@@/Tip/TextTip';\n\ntype Props = {\n environmentId: EnvironmentId;\n appServices?: Service[];\n};\n\nexport function ApplicationServicesTable({\n environmentId,\n appServices,\n}: Props) {\n const { data: environment } = useEnvironment(environmentId);\n return (\n <>\n <div className=\"text-muted mb-4 flex items-center\">\n <Icon icon={ExternalLink} className=\"!mr-2\" />\n Accessing the application\n </div>\n {appServices && appServices.length === 0 && (\n <TextTip color=\"blue\" className=\"mb-4\">\n This application is not exposing any port.\n </TextTip>\n )}\n {appServices && appServices.length > 0 && (\n <>\n <TextTip color=\"blue\" className=\"mb-4\">\n This application is exposed through service(s) as below:\n </TextTip>\n <table className=\"table\">\n <tbody>\n <tr className=\"text-muted\">\n <td className=\"w-[15%]\">Service name</td>\n <td className=\"w-[10%]\">Type</td>\n <td className=\"w-[10%]\">Cluster IP</td>\n <td className=\"w-[10%]\">External IP</td>\n <td className=\"w-[10%]\">Container port</td>\n <td className=\"w-[15%]\">Service port(s)</td>\n </tr>\n {appServices.map((service) => (\n <tr key={service.metadata?.name}>\n <td>{service.metadata?.name}</td>\n <td>{service.spec?.type}</td>\n <td>{service.spec?.clusterIP}</td>\n {service.spec?.type === 'LoadBalancer' && (\n <td>\n {service.status?.loadBalancer?.ingress?.[0] &&\n service.spec?.ports?.[0] && (\n <a\n className=\"vertical-center hyperlink\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`http://${service.status.loadBalancer.ingress[0].ip}:${service.spec.ports[0].port}`}\n >\n <Icon icon={ExternalLink} className=\"!mr-1\" />\n <span data-cy=\"k8sAppDetail-containerPort\">\n Access\n </span>\n </a>\n )}\n {!service.status?.loadBalancer?.ingress && (\n <div>\n {service.spec.externalIPs?.[0]\n ? service.spec.externalIPs[0]\n : 'pending...'}\n </div>\n )}\n </td>\n )}\n {service.spec?.type !== 'LoadBalancer' && (\n <td>\n {service.spec?.externalIPs?.[0]\n ? service.spec.externalIPs[0]\n : '-'}\n </td>\n )}\n <td data-cy=\"k8sAppDetail-containerPort\">\n {service.spec?.ports?.map((port) => (\n <div key={port.port}>{port.targetPort}</div>\n ))}\n </td>\n <td>\n {service.spec?.ports?.map((port) => (\n <div key={port.port}>\n {environment?.PublicURL && port.nodePort && (\n <a\n className=\"vertical-center hyperlink\"\n href={`http://${environment?.PublicURL}:${port.nodePort}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <Icon icon={ExternalLink} className=\"!mr-1\" />\n <span data-cy=\"k8sAppDetail-containerPort\">\n {port.port}\n </span>\n <span>{port.nodePort ? ' : ' : ''}</span>\n <span data-cy=\"k8sAppDetail-nodePort\">\n {port.nodePort}/{port.protocol}\n </span>\n </a>\n )}\n {!environment?.PublicURL && (\n <div>\n <span data-cy=\"k8sAppDetail-servicePort\">\n {port.port}\n </span>\n <span>{port.nodePort ? ' : ' : ''}</span>\n <span data-cy=\"k8sAppDetail-nodePort\">\n {port.nodePort}/{port.protocol}\n </span>\n </div>\n )}\n </div>\n ))}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </>\n )}\n </>\n );\n}\n","import { Service } from 'kubernetes-types/core/v1';\nimport { useMemo } from 'react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { useIngresses } from '@/react/kubernetes/ingresses/queries';\nimport { Ingress } from '@/react/kubernetes/ingresses/types';\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { Link } from '@@/Link';\n\ntype Props = {\n environmentId: EnvironmentId;\n namespace: string;\n appServices?: Service[];\n};\n\nexport function ApplicationIngressesTable({\n environmentId,\n namespace,\n appServices,\n}: Props) {\n const namespaceIngresses = useIngresses(environmentId, [namespace]);\n // getIngressPathsForAppServices could be expensive, so memoize it\n const ingressPathsForAppServices = useMemo(\n () => getIngressPathsForAppServices(namespaceIngresses.data, appServices),\n [namespaceIngresses.data, appServices]\n );\n\n if (!ingressPathsForAppServices.length) {\n return null;\n }\n\n return (\n <table className=\"mt-4 table\">\n <tbody>\n <tr className=\"text-muted\">\n <td className=\"w-[15%]\">Ingress name</td>\n <td className=\"w-[10%]\">Service name</td>\n <td className=\"w-[10%]\">Host</td>\n <td className=\"w-[10%]\">Port</td>\n <td className=\"w-[10%]\">Path</td>\n <td className=\"w-[15%]\">HTTP Route</td>\n </tr>\n {ingressPathsForAppServices?.map((ingressPath, index) => (\n <tr key={index}>\n <td>\n <Authorized authorizations=\"K8sIngressesW\">\n <Link\n to=\"kubernetes.ingresses.edit\"\n params={{ name: ingressPath.ingressName, namespace }}\n >\n {ingressPath.ingressName}\n </Link>\n </Authorized>\n </td>\n <td>{ingressPath.serviceName}</td>\n <td>{ingressPath.host}</td>\n <td>{ingressPath.port}</td>\n <td>{ingressPath.path}</td>\n <td>\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={`${ingressPath.secure ? 'https' : 'http'}://${\n ingressPath.host\n }${ingressPath.path}`}\n >\n {ingressPath.host}\n {ingressPath.path}\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n\ntype IngressPath = {\n ingressName: string;\n serviceName: string;\n port: number;\n secure: boolean;\n host: string;\n path: string;\n};\n\nfunction getIngressPathsForAppServices(\n ingresses?: Ingress[],\n services?: Service[]\n): IngressPath[] {\n if (!ingresses || !services) {\n return [];\n }\n const matchingIngressesPaths = ingresses.flatMap((ingress) => {\n // for each ingress get an array of ingress paths that match the app services\n if (!ingress.Paths) {\n return [];\n }\n const matchingIngressPaths = ingress.Paths?.filter((path) =>\n services?.some((service) => {\n const servicePorts = service.spec?.ports?.map((port) => port.port);\n // include the ingress if the ingress path has a matching service name and port\n return (\n path.ServiceName === service.metadata?.name &&\n servicePorts?.includes(path.Port)\n );\n })\n ).map((path) => {\n const secure =\n (ingress.TLS &&\n ingress.TLS.filter(\n (tls) => tls.Hosts && tls.Hosts.includes(path.Host)\n ).length > 0) ??\n false;\n return {\n ingressName: ingress.Name,\n serviceName: path.ServiceName,\n port: path.Port,\n secure,\n host: path.Host,\n path: path.Path,\n };\n });\n return matchingIngressPaths;\n });\n return matchingIngressesPaths;\n}\n","import { Move } from 'lucide-react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Icon } from '@@/Icon';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Tooltip } from '@@/Tip/Tooltip';\n\nimport { Application } from '../../types';\nimport { useApplicationHorizontalPodAutoscalers } from '../../application.queries';\n\ntype Props = {\n environmentId: EnvironmentId;\n namespace: string;\n appName: string;\n app?: Application;\n};\n\nexport function ApplicationAutoScalingTable({\n environmentId,\n namespace,\n appName,\n app,\n}: Props) {\n const { data: appAutoScalar } = useApplicationHorizontalPodAutoscalers(\n environmentId,\n namespace,\n appName,\n app\n );\n\n return (\n <>\n <div className=\"text-muted mb-4 flex items-center\">\n <Icon icon={Move} className=\"!mr-2\" />\n Auto-scaling\n </div>\n {!appAutoScalar && (\n <TextTip color=\"blue\">\n This application does not have an autoscaling policy defined.\n </TextTip>\n )}\n {appAutoScalar && (\n <div className=\"mt-4 w-3/5\">\n <table className=\"table\">\n <tbody>\n <tr className=\"text-muted\">\n <td className=\"w-1/3\">Minimum instances</td>\n <td className=\"w-1/3\">Maximum instances</td>\n <td className=\"w-1/3\">\n <div className=\"flex min-w-max items-center gap-1\">\n Target CPU usage\n <Tooltip message=\"The autoscaler will ensure enough instances are running to maintain an average CPU usage across all instances.\" />\n </div>\n </td>\n </tr>\n <tr>\n <td data-cy=\"k8sAppDetail-minReplicas\">\n {appAutoScalar.spec?.minReplicas}\n </td>\n <td data-cy=\"k8sAppDetail-maxReplicas\">\n {appAutoScalar.spec?.maxReplicas}\n </td>\n <td data-cy=\"k8sAppDetail-targetCPU\">\n {appAutoScalar.spec?.targetCPUUtilizationPercentage}%\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n )}\n </>\n );\n}\n","import { EnvVar, Pod } from 'kubernetes-types/core/v1';\nimport { Asterisk, File, FileCode, Key, Lock } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Link } from '@@/Link';\n\nimport { Application } from '../../types';\nimport { applicationIsKind } from '../../utils';\n\ntype Props = {\n namespace: string;\n app?: Application;\n};\n\nexport function ApplicationEnvVarsTable({ namespace, app }: Props) {\n const appEnvVars = getApplicationEnvironmentVariables(app);\n\n return (\n <>\n <div className=\"text-muted mb-4 mt-6 flex items-center\">\n <Icon icon={File} className=\"!mr-2\" />\n Environment variables, ConfigMaps or Secrets\n </div>\n {appEnvVars.length === 0 && (\n <TextTip color=\"blue\">\n This application is not using any environment variable, ConfigMap or\n Secret.\n </TextTip>\n )}\n {appEnvVars.length > 0 && (\n <table className=\"table\">\n <tbody>\n <tr className=\"text-muted\">\n <td className=\"w-1/4\">Container</td>\n <td className=\"w-1/4\">Environment variable</td>\n <td className=\"w-1/4\">Value</td>\n <td className=\"w-1/4\">Configuration</td>\n </tr>\n {appEnvVars.map((envVar, index) => (\n <tr key={index}>\n <td data-cy=\"k8sAppDetail-containerName\">\n {envVar.containerName}\n {envVar.isInitContainer && (\n <span>\n <Icon icon={Asterisk} className=\"!ml-1\" />\n {envVar.valueFrom?.fieldRef?.fieldPath} (\n <a\n href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n init container\n </a>\n )\n </span>\n )}\n </td>\n <td data-cy=\"k8sAppDetail-envVarName\">{envVar.name}</td>\n <td data-cy=\"k8sAppDetail-envVarValue\">\n {envVar.value && <span>{envVar.value}</span>}\n {envVar.valueFrom?.fieldRef?.fieldPath && (\n <span>\n <Icon icon={Asterisk} className=\"!ml-1\" />\n {envVar.valueFrom.fieldRef.fieldPath} (\n <a\n href=\"https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n downward API\n </a>\n )\n </span>\n )}\n {envVar.valueFrom?.secretKeyRef?.key && (\n <span className=\"flex items-center\">\n <Icon icon={Key} className=\"!mr-1\" />\n {envVar.valueFrom.secretKeyRef.key}\n </span>\n )}\n {envVar.valueFrom?.configMapKeyRef?.key && (\n <span className=\"flex items-center\">\n <Icon icon={Key} className=\"!mr-1\" />\n {envVar.valueFrom.configMapKeyRef.key}\n </span>\n )}\n {!envVar.value && !envVar.valueFrom && <span>-</span>}\n </td>\n <td data-cy=\"k8sAppDetail-configName\">\n {!envVar.valueFrom?.configMapKeyRef?.name &&\n !envVar.valueFrom?.secretKeyRef?.name && <span>-</span>}\n {envVar.valueFrom?.configMapKeyRef && (\n <span>\n <Link\n to=\"kubernetes.configmaps.configmap\"\n params={{\n name: envVar.valueFrom.configMapKeyRef.name,\n namespace,\n }}\n className=\"flex items-center\"\n >\n <Icon icon={FileCode} className=\"!mr-1\" />\n {envVar.valueFrom.configMapKeyRef.name}\n </Link>\n </span>\n )}\n {envVar.valueFrom?.secretKeyRef && (\n <span>\n <Link\n to=\"kubernetes.secrets.secret\"\n params={{\n name: envVar.valueFrom.secretKeyRef.name,\n namespace,\n }}\n className=\"flex items-center\"\n >\n <Icon icon={Lock} className=\"!mr-1\" />\n {envVar.valueFrom.secretKeyRef.name}\n </Link>\n </span>\n )}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n </>\n );\n}\n\ninterface ContainerEnvVar extends EnvVar {\n containerName: string;\n isInitContainer: boolean;\n}\n\nfunction getApplicationEnvironmentVariables(\n app?: Application\n): ContainerEnvVar[] {\n if (!app) {\n return [];\n }\n\n const podSpec = applicationIsKind<Pod>('Pod', app)\n ? app.spec\n : app.spec?.template?.spec;\n const appContainers = podSpec?.containers || [];\n const appInitContainers = podSpec?.initContainers || [];\n\n // get all the environment variables for each container\n const appContainersEnvVars =\n appContainers?.flatMap(\n (container) =>\n container?.env?.map((envVar) => ({\n ...envVar,\n containerName: container.name,\n isInitContainer: false,\n })) || []\n ) || [];\n const appInitContainersEnvVars =\n appInitContainers?.flatMap(\n (container) =>\n container?.env?.map((envVar) => ({\n ...envVar,\n containerName: container.name,\n isInitContainer: true,\n })) || []\n ) || [];\n\n return [...appContainersEnvVars, ...appInitContainersEnvVars];\n}\n","import { KeyToPath, Pod } from 'kubernetes-types/core/v1';\nimport { Asterisk, Plus } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\nimport { Link } from '@@/Link';\n\nimport { Application } from '../../types';\nimport { applicationIsKind } from '../../utils';\n\ntype Props = {\n namespace: string;\n app?: Application;\n};\n\nexport function ApplicationVolumeConfigsTable({ namespace, app }: Props) {\n const containerVolumeConfigs = getApplicationVolumeConfigs(app);\n\n if (containerVolumeConfigs.length === 0) {\n return null;\n }\n\n return (\n <table className=\"table\">\n <tbody>\n <tr className=\"text-muted\">\n <td className=\"w-1/4\">Container</td>\n <td className=\"w-1/4\">Configuration path</td>\n <td className=\"w-1/4\">Value</td>\n <td className=\"w-1/4\">Configuration</td>\n </tr>\n {containerVolumeConfigs.map(\n (\n {\n containerVolumeMount,\n isInitContainer,\n containerName,\n item,\n volumeConfigName,\n },\n index\n ) => (\n <tr key={index}>\n <td>\n {containerName}\n {isInitContainer && (\n <span>\n <Icon icon={Asterisk} />(\n <a\n href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n init container\n </a>\n )\n </span>\n )}\n </td>\n <td>\n {item.path\n ? `${containerVolumeMount?.mountPath}/${item.path}`\n : `${containerVolumeMount?.mountPath}`}\n </td>\n <td>\n {item.key && (\n <div className=\"flex items-center\">\n <Icon icon={Plus} className=\"!mr-1\" />\n {item.key}\n </div>\n )}\n {!item.key && '-'}\n </td>\n <td>\n {volumeConfigName && (\n <Link\n className=\"flex items-center\"\n to=\"kubernetes.configurations.configuration\"\n params={{ name: volumeConfigName, namespace }}\n >\n <Icon icon={Plus} className=\"!mr-1\" />\n {volumeConfigName}\n </Link>\n )}\n {!volumeConfigName && '-'}\n </td>\n </tr>\n )\n )}\n </tbody>\n </table>\n );\n}\n\n// getApplicationVolumeConfigs returns a list of volume configs / secrets for each container and each item within the matching volume\nfunction getApplicationVolumeConfigs(app?: Application) {\n if (!app) {\n return [];\n }\n\n const podSpec = applicationIsKind<Pod>('Pod', app)\n ? app.spec\n : app.spec?.template?.spec;\n const appContainers = podSpec?.containers || [];\n const appInitContainers = podSpec?.initContainers || [];\n const appVolumes = podSpec?.volumes || [];\n const allContainers = [...appContainers, ...appInitContainers];\n\n const appVolumeConfigs = allContainers.flatMap((container) => {\n // for each container, get the volume mount paths\n const matchingVolumes = appVolumes\n // filter app volumes by config map or secret\n .filter((volume) => volume.configMap || volume.secret)\n .flatMap((volume) => {\n // flatten by volume items if there are any\n const volConfigMapItems =\n volume.configMap?.items || volume.secret?.items || [];\n const volumeConfigName =\n volume.configMap?.name || volume.secret?.secretName;\n const containerVolumeMount = container.volumeMounts?.find(\n (volumeMount) => volumeMount.name === volume.name\n );\n if (volConfigMapItems.length === 0) {\n return [\n {\n volumeConfigName,\n containerVolumeMount,\n containerName: container.name,\n isInitContainer: appInitContainers.includes(container),\n item: {} as KeyToPath,\n },\n ];\n }\n // if there are items, return a volume config for each item\n return volConfigMapItems.map((item) => ({\n volumeConfigName,\n containerVolumeMount,\n containerName: container.name,\n isInitContainer: appInitContainers.includes(container),\n item,\n }));\n })\n // only return the app volumes where the container volumeMounts include the volume name (from map step above)\n .filter((volume) => volume.containerVolumeMount);\n return matchingVolumes;\n });\n\n return appVolumeConfigs;\n}\n","import { useMemo } from 'react';\nimport { Asterisk, Box, Boxes, Database } from 'lucide-react';\nimport { Container, Pod, Volume } from 'kubernetes-types/core/v1';\nimport { StatefulSet } from 'kubernetes-types/apps/v1';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Icon } from '@@/Icon';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Tooltip } from '@@/Tip/Tooltip';\nimport { Link } from '@@/Link';\n\nimport { Application } from '../../types';\nimport { applicationIsKind } from '../../utils';\nimport { useApplicationPods } from '../../application.queries';\n\ntype Props = {\n environmentId: EnvironmentId;\n namespace: string;\n appName: string;\n app?: Application;\n};\n\nexport function ApplicationPersistentDataTable({\n namespace,\n app,\n environmentId,\n appName,\n}: Props) {\n const { data: pods } = useApplicationPods(\n environmentId,\n namespace,\n appName,\n app\n );\n const persistedFolders = useMemo(\n () => getPersistedFolders(app, pods),\n [app, pods]\n );\n const dataAccessPolicy = getDataAccessPolicy(app);\n\n return (\n <>\n <div className=\"text-muted mb-4 mt-6 flex items-center\">\n <Icon icon={Database} className=\"!mr-2 !shrink-0\" />\n Data persistence\n </div>\n {!persistedFolders.length && (\n <TextTip color=\"blue\">\n This application has no persisted folders.\n </TextTip>\n )}\n {persistedFolders.length > 0 && (\n <>\n <div className=\"small text-muted vertical-center mb-4\">\n Data access policy:\n {dataAccessPolicy === 'isolated' && (\n <>\n <Icon icon={Boxes} />\n Isolated\n <Tooltip message=\"All the instances of this application are using their own data.\" />\n </>\n )}\n {dataAccessPolicy === 'shared' && (\n <>\n <Icon icon={Box} />\n Shared\n <Tooltip message=\"All the instances of this application are sharing the same data.\" />\n </>\n )}\n </div>\n {dataAccessPolicy === 'isolated' && (\n <table className=\"table\">\n <thead>\n <tr className=\"text-muted\">\n <td className=\"w-1/4\">Container name</td>\n <td className=\"w-1/4\">Pod name</td>\n <td className=\"w-1/4\">Persisted folder</td>\n <td className=\"w-1/4\">Persistence</td>\n </tr>\n </thead>\n <tbody>\n {persistedFolders.map((persistedFolder, index) => (\n <tr key={index}>\n <td>\n {persistedFolder.volumeMount.container.name}\n {persistedFolder.isContainerInit && (\n <span>\n <Icon icon={Asterisk} className=\"!mr-1\" />(\n <a\n href=\"https://kubernetes.io/docs/concepts/workloads/pods/init-containers/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n init container\n </a>\n )\n </span>\n )}\n </td>\n <td>{persistedFolder.volumeMount?.pod?.metadata?.name}</td>\n <td>{persistedFolder.volumeMount.mountPath}</td>\n <td>\n {persistedFolder.volume.persistentVolumeClaim && (\n <Link\n className=\"hyperlink flex items-center\"\n to=\"kubernetes.volumes.volume\"\n params={{\n name: `${persistedFolder.volume.persistentVolumeClaim.claimName}-${persistedFolder.volumeMount?.pod?.metadata?.name}`,\n namespace,\n }}\n >\n <Icon icon={Database} className=\"!mr-1 shrink-0\" />\n {`${persistedFolder.volume.persistentVolumeClaim.claimName}-${persistedFolder.volumeMount?.pod?.metadata?.name}`}\n </Link>\n )}\n {persistedFolder.volume.hostPath &&\n `${persistedFolder.volume.hostPath.path} on host filesystem`}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n {dataAccessPolicy === 'shared' && (\n <table className=\"table\">\n <thead>\n <tr className=\"text-muted\">\n <td className=\"w-1/3\">Persisted folder</td>\n <td className=\"w-2/3\">Persistence</td>\n </tr>\n </thead>\n <tbody className=\"border-t-0\">\n {persistedFolders.map((persistedFolder, index) => (\n <tr key={index}>\n <td data-cy=\"k8sAppDetail-volMountPath\">\n {persistedFolder.volumeMount.mountPath}\n </td>\n <td>\n {persistedFolder.volume.persistentVolumeClaim && (\n <Link\n className=\"hyperlink flex items-center\"\n to=\"kubernetes.volumes.volume\"\n params={{\n name: persistedFolder.volume.persistentVolumeClaim\n .claimName,\n namespace,\n }}\n >\n <Icon icon={Database} className=\"!mr-1 shrink-0\" />\n {\n persistedFolder.volume.persistentVolumeClaim\n .claimName\n }\n </Link>\n )}\n {persistedFolder.volume.hostPath &&\n `${persistedFolder.volume.hostPath.path} on host filesystem`}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n </>\n )}\n </>\n );\n}\n\nfunction getDataAccessPolicy(app?: Application) {\n if (!app || applicationIsKind<Pod>('Pod', app)) {\n return 'none';\n }\n if (applicationIsKind<StatefulSet>('StatefulSet', app)) {\n return 'isolated';\n }\n return 'shared';\n}\n\nfunction getPodsMatchingContainer(pods: Pod[], container: Container) {\n const matchingPods = pods.filter((pod) => {\n const podContainers = pod.spec?.containers || [];\n const podInitContainers = pod.spec?.initContainers || [];\n const podAllContainers = [...podContainers, ...podInitContainers];\n return podAllContainers.some(\n (podContainer) =>\n podContainer.name === container.name &&\n podContainer.image === container.image\n );\n });\n return matchingPods;\n}\n\nfunction getPersistedFolders(app?: Application, pods?: Pod[]) {\n if (!app || !pods) {\n return [];\n }\n\n const podSpec = applicationIsKind<Pod>('Pod', app)\n ? app.spec\n : app.spec?.template?.spec;\n\n const appVolumes = podSpec?.volumes || [];\n const appVolumeClaimVolumes = getVolumeClaimTemplates(app, appVolumes);\n const appAllVolumes = [...appVolumes, ...appVolumeClaimVolumes];\n\n const appContainers = podSpec?.containers || [];\n const appInitContainers = podSpec?.initContainers || [];\n const appAllContainers = [...appContainers, ...appInitContainers];\n\n // for each volume, find the volumeMounts that match it\n const persistedFolders = appAllVolumes.flatMap((volume) => {\n if (volume.persistentVolumeClaim || volume.hostPath) {\n const volumeMounts = appAllContainers.flatMap((container) => {\n const matchingPods = getPodsMatchingContainer(pods, container);\n return (\n container.volumeMounts?.flatMap(\n (containerVolumeMount) =>\n matchingPods.map((pod) => ({\n ...containerVolumeMount,\n container,\n pod,\n })) || []\n ) || []\n );\n });\n const uniqueMatchingVolumeMounts = volumeMounts.filter(\n (volumeMount, index, self) =>\n self.indexOf(volumeMount) === index && // remove volumeMounts with duplicate names\n volumeMount.name === volume.name // remove volumeMounts that don't match the volume\n );\n return uniqueMatchingVolumeMounts.map((volumeMount) => ({\n volume,\n volumeMount,\n isContainerInit: appInitContainers.some(\n (container) => container.name === volumeMount.container.name\n ),\n }));\n }\n return [];\n });\n return persistedFolders;\n}\n\nfunction getVolumeClaimTemplates(app: Application, volumes: Volume[]) {\n if (\n applicationIsKind<StatefulSet>('StatefulSet', app) &&\n app.spec?.volumeClaimTemplates\n ) {\n const volumeClaimTemplates: Volume[] = app.spec.volumeClaimTemplates.map(\n (vc) => ({\n name: vc.metadata?.name || '',\n persistentVolumeClaim: { claimName: vc.metadata?.name || '' },\n })\n );\n const newPVC = volumeClaimTemplates.filter(\n (vc) =>\n !volumes.find(\n (v) =>\n v.persistentVolumeClaim?.claimName ===\n vc.persistentVolumeClaim?.claimName\n )\n );\n return newPVC;\n }\n return [];\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { IngressClassDatatable } from '@/react/kubernetes/cluster/ingressClass/IngressClassDatatable';\nimport { NamespacesSelector } from '@/react/kubernetes/cluster/RegistryAccessView/NamespacesSelector';\nimport { StorageAccessModeSelector } from '@/react/kubernetes/cluster/ConfigureView/StorageAccessModeSelector';\nimport { NamespaceAccessUsersSelector } from '@/react/kubernetes/namespaces/AccessView/NamespaceAccessUsersSelector';\nimport { CreateNamespaceRegistriesSelector } from '@/react/kubernetes/namespaces/CreateView/CreateNamespaceRegistriesSelector';\nimport { KubeApplicationAccessPolicySelector } from '@/react/kubernetes/applications/CreateView/KubeApplicationAccessPolicySelector';\nimport { KubeServicesForm } from '@/react/kubernetes/applications/CreateView/application-services/KubeServicesForm';\nimport { kubeServicesValidation } from '@/react/kubernetes/applications/CreateView/application-services/kubeServicesValidation';\nimport { KubeApplicationDeploymentTypeSelector } from '@/react/kubernetes/applications/CreateView/KubeApplicationDeploymentTypeSelector';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport {\n ApplicationSummaryWidget,\n ApplicationDetailsWidget,\n} from '@/react/kubernetes/applications/DetailsView';\nimport { withFormValidation } from '@/react-tools/withFormValidation';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\n\nexport const ngModule = angular\n .module('portainer.kubernetes.react.components', [])\n .component(\n 'ingressClassDatatable',\n r2a(IngressClassDatatable, [\n 'onChangeControllers',\n 'description',\n 'ingressControllers',\n 'allowNoneIngressClass',\n 'isLoading',\n 'noIngressControllerLabel',\n 'view',\n ])\n )\n .component(\n 'namespacesSelector',\n r2a(NamespacesSelector, [\n 'dataCy',\n 'inputId',\n 'name',\n 'namespaces',\n 'onChange',\n 'placeholder',\n 'value',\n ])\n )\n .component(\n 'storageAccessModeSelector',\n r2a(StorageAccessModeSelector, [\n 'inputId',\n 'onChange',\n 'options',\n 'value',\n 'storageClassName',\n ])\n )\n .component(\n 'namespaceAccessUsersSelector',\n r2a(NamespaceAccessUsersSelector, [\n 'inputId',\n 'onChange',\n 'options',\n 'value',\n 'dataCy',\n 'placeholder',\n 'name',\n ])\n )\n .component(\n 'createNamespaceRegistriesSelector',\n r2a(CreateNamespaceRegistriesSelector, [\n 'inputId',\n 'onChange',\n 'options',\n 'value',\n ])\n )\n .component(\n 'kubeApplicationAccessPolicySelector',\n r2a(KubeApplicationAccessPolicySelector, [\n 'value',\n 'onChange',\n 'isEdit',\n 'persistedFoldersUseExistingVolumes',\n ])\n )\n .component(\n 'kubeApplicationDeploymentTypeSelector',\n r2a(KubeApplicationDeploymentTypeSelector, [\n 'value',\n 'onChange',\n 'supportGlobalDeployment',\n ])\n )\n .component(\n 'applicationSummaryWidget',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(ApplicationSummaryWidget))),\n []\n )\n )\n .component(\n 'applicationDetailsWidget',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(ApplicationDetailsWidget))),\n []\n )\n );\n\nexport const componentsModule = ngModule.name;\n\nwithFormValidation(\n ngModule,\n withUIRouter(withCurrentUser(withReactQuery(KubeServicesForm))),\n 'kubeServicesForm',\n ['values', 'onChange', 'appName', 'selector', 'isEditMode', 'namespace'],\n kubeServicesValidation\n);\n","import _ from 'lodash';\n\nimport { Select } from '@@/form-components/ReactSelect';\n\ninterface Namespace {\n id: string;\n name: string;\n}\n\ninterface Props {\n name?: string;\n value: string[];\n onChange(value: string[]): void;\n namespaces: Namespace[];\n dataCy?: string;\n inputId?: string;\n placeholder?: string;\n}\n\nexport function NamespacesSelector({\n name,\n value,\n onChange,\n namespaces,\n dataCy,\n inputId,\n placeholder,\n}: Props) {\n return (\n <Select\n name={name}\n isMulti\n getOptionLabel={(namespace) => namespace.name}\n getOptionValue={(namespace) => String(namespace.id)}\n options={namespaces}\n value={_.compact(\n value.map((namespaceName) =>\n namespaces.find((namespace) => namespace.name === namespaceName)\n )\n )}\n closeMenuOnSelect={false}\n onChange={(selectedTeams) =>\n onChange(selectedTeams.map((namespace) => namespace.name))\n }\n data-cy={dataCy}\n inputId={inputId}\n placeholder={placeholder}\n />\n );\n}\n","import { Registry } from '@/react/portainer/registries/types';\n\nimport { Select } from '@@/form-components/ReactSelect';\n\ninterface Props {\n value: Registry[];\n onChange(value: readonly Registry[]): void;\n options: Registry[];\n inputId?: string;\n}\n\nexport function CreateNamespaceRegistriesSelector({\n value,\n onChange,\n options,\n inputId,\n}: Props) {\n return (\n <Select\n isMulti\n getOptionLabel={(option) => option.Name}\n getOptionValue={(option) => String(option.Id)}\n options={options}\n value={value}\n closeMenuOnSelect={false}\n onChange={onChange}\n inputId={inputId}\n data-cy=\"namespaceCreate-registrySelect\"\n placeholder=\"Select one or more registry\"\n />\n );\n}\n","import { Box, Boxes } from 'lucide-react';\n\nimport { KubernetesApplicationDataAccessPolicies } from '@/kubernetes/models/application/models';\n\nimport { BoxSelector, BoxSelectorOption } from '@@/BoxSelector';\n\ninterface Props {\n isEdit: boolean;\n persistedFoldersUseExistingVolumes: boolean;\n value: number;\n onChange(value: number): void;\n}\n\nexport function KubeApplicationAccessPolicySelector({\n isEdit,\n persistedFoldersUseExistingVolumes,\n value,\n onChange,\n}: Props) {\n const options = getOptions(value, isEdit, persistedFoldersUseExistingVolumes);\n\n return (\n <BoxSelector\n slim\n options={options}\n value={value}\n onChange={onChange}\n radioName=\"data_access_policy\"\n />\n );\n}\n\nfunction getOptions(\n value: number,\n isEdit: boolean,\n persistedFoldersUseExistingVolumes: boolean\n): ReadonlyArray<BoxSelectorOption<number>> {\n return [\n {\n value: KubernetesApplicationDataAccessPolicies.ISOLATED,\n id: 'data_access_isolated',\n icon: Boxes,\n iconType: 'badge',\n label: 'Isolated',\n description:\n 'Application will be deployed as a StatefulSet with each instantiating their own data',\n tooltip: () =>\n isEdit || persistedFoldersUseExistingVolumes\n ? 'Changing the data access policy is not allowed'\n : '',\n disabled: () =>\n (isEdit &&\n value !== KubernetesApplicationDataAccessPolicies.ISOLATED) ||\n persistedFoldersUseExistingVolumes,\n },\n {\n value: KubernetesApplicationDataAccessPolicies.SHARED,\n id: 'data_access_shared',\n icon: Box,\n iconType: 'badge',\n label: 'Shared',\n description:\n 'Application will be deployed as a Deployment with a shared storage access',\n tooltip: () =>\n isEdit ? 'Changing the data access policy is not allowed' : '',\n disabled: () =>\n isEdit && value !== KubernetesApplicationDataAccessPolicies.SHARED,\n },\n ] as const;\n}\n","import { BoxSelector } from '@@/BoxSelector';\n\nimport { getDeploymentOptions } from './deploymentOptions';\n\ninterface Props {\n value: number;\n onChange(value: number): void;\n supportGlobalDeployment: boolean;\n}\n\nexport function KubeApplicationDeploymentTypeSelector({\n supportGlobalDeployment,\n value,\n onChange,\n}: Props) {\n const options = getDeploymentOptions(supportGlobalDeployment);\n\n return (\n <BoxSelector\n slim\n options={options}\n value={value}\n onChange={onChange}\n radioName=\"deploymentType\"\n />\n );\n}\n","import { Boxes, Sliders } from 'lucide-react';\n\nimport { KubernetesApplicationDeploymentTypes } from '@/kubernetes/models/application/models';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport function getDeploymentOptions(\n supportGlobalDeployment: boolean\n): ReadonlyArray<BoxSelectorOption<number>> {\n return [\n {\n id: 'deployment_replicated',\n label: 'Replicated',\n value: KubernetesApplicationDeploymentTypes.REPLICATED,\n icon: Sliders,\n iconType: 'badge',\n description: 'Run one or multiple instances of this container',\n },\n {\n id: 'deployment_global',\n disabled: () => !supportGlobalDeployment,\n tooltip: () =>\n !supportGlobalDeployment\n ? 'The storage or access policy used for persisted folders cannot be used with this option'\n : '',\n label: 'Global',\n description:\n 'Application will be deployed as a DaemonSet with an instance on each node of the cluster',\n value: KubernetesApplicationDeploymentTypes.GLOBAL,\n icon: Boxes,\n iconType: 'badge',\n },\n ] as const;\n}\n","import { Pencil, Plus } from 'lucide-react';\nimport { useCurrentStateAndParams } from '@uirouter/react';\nimport { Pod } from 'kubernetes-types/core/v1';\n\nimport { Authorized } from '@/react/hooks/useUser';\nimport { useStackFile } from '@/react/common/stacks/stack.service';\n\nimport { Widget, WidgetBody } from '@@/Widget';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { Icon } from '@@/Icon';\n\nimport {\n useApplication,\n useApplicationServices,\n} from '../../application.queries';\nimport { isSystemNamespace } from '../../../namespaces/utils';\nimport { applicationIsKind, isExternalApplication } from '../../utils';\nimport { appStackIdLabel } from '../../constants';\n\nimport { RestartApplicationButton } from './RestartApplicationButton';\nimport { RedeployApplicationButton } from './RedeployApplicationButton';\nimport { RollbackApplicationButton } from './RollbackApplicationButton';\nimport { ApplicationServicesTable } from './ApplicationServicesTable';\nimport { ApplicationIngressesTable } from './ApplicationIngressesTable';\nimport { ApplicationAutoScalingTable } from './ApplicationAutoScalingTable';\nimport { ApplicationEnvVarsTable } from './ApplicationEnvVarsTable';\nimport { ApplicationVolumeConfigsTable } from './ApplicationVolumeConfigsTable';\nimport { ApplicationPersistentDataTable } from './ApplicationPersistentDataTable';\n\nexport function ApplicationDetailsWidget() {\n const stateAndParams = useCurrentStateAndParams();\n const {\n params: {\n namespace,\n name,\n 'resource-type': resourceType,\n endpointId: environmentId,\n },\n } = stateAndParams;\n\n // get app info\n const appQuery = useApplication(environmentId, namespace, name, resourceType);\n const app = appQuery.data;\n const externalApp = app && isExternalApplication(app);\n const appStackId = Number(app?.metadata?.labels?.[appStackIdLabel]);\n const appStackFileQuery = useStackFile(appStackId);\n const { data: appServices } = useApplicationServices(\n environmentId,\n namespace,\n name,\n app\n );\n\n return (\n <Widget>\n <WidgetBody>\n {!isSystemNamespace(namespace) && (\n <div className=\"mb-4 flex flex-wrap gap-2\">\n <Authorized authorizations=\"K8sApplicationDetailsW\">\n <Link to=\"kubernetes.applications.application.edit\">\n <Button\n type=\"button\"\n color=\"light\"\n size=\"small\"\n className=\"hover:decoration-none !ml-0\"\n data-cy=\"k8sAppDetail-editAppButton\"\n >\n <Icon icon={Pencil} className=\"mr-1\" />\n {externalApp\n ? 'Edit external application'\n : 'Edit this application'}\n </Button>\n </Link>\n </Authorized>\n {!applicationIsKind<Pod>('Pod', app) && (\n <>\n <RestartApplicationButton />\n <RedeployApplicationButton\n environmentId={environmentId}\n namespace={namespace}\n appName={name}\n app={app}\n />\n </>\n )}\n {!externalApp && (\n <RollbackApplicationButton\n environmentId={environmentId}\n namespace={namespace}\n appName={name}\n app={app}\n />\n )}\n {appStackFileQuery.data && (\n <Link\n to=\"kubernetes.templates.custom.new\"\n params={{\n fileContent: appStackFileQuery.data.StackFileContent,\n }}\n >\n <Button\n type=\"button\"\n color=\"primary\"\n size=\"small\"\n className=\"hover:decoration-none !ml-0\"\n data-cy=\"k8sAppDetail-createCustomTemplateButton\"\n >\n <Icon icon={Plus} className=\"mr-1\" />\n Create template from application\n </Button>\n </Link>\n )}\n </div>\n )}\n <ApplicationServicesTable\n environmentId={environmentId}\n appServices={appServices}\n />\n <ApplicationIngressesTable\n appServices={appServices}\n environmentId={environmentId}\n namespace={namespace}\n />\n <ApplicationAutoScalingTable\n environmentId={environmentId}\n namespace={namespace}\n appName={name}\n app={app}\n />\n <ApplicationEnvVarsTable namespace={namespace} app={app} />\n <ApplicationVolumeConfigsTable namespace={namespace} app={app} />\n <ApplicationPersistentDataTable\n environmentId={environmentId}\n namespace={namespace}\n appName={name}\n app={app}\n />\n </WidgetBody>\n </Widget>\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { error as notifyError } from '@/portainer/services/notifications';\nimport { withError } from '@/react-tools/react-query';\n\nimport {\n getNamespaces,\n getNamespace,\n getSelfSubjectAccessReview,\n} from './service';\nimport { Namespaces } from './types';\n\nexport function useNamespaces(\n environmentId: EnvironmentId,\n options?: { autoRefreshRate?: number }\n) {\n return useQuery(\n ['environments', environmentId, 'kubernetes', 'namespaces'],\n async () => {\n const namespaces = await getNamespaces(environmentId);\n const namespaceNames = Object.keys(namespaces);\n // use selfsubjectaccess reviews to avoid forbidden requests\n const allNamespaceAccessReviews = await Promise.all(\n namespaceNames.map((namespaceName) =>\n getSelfSubjectAccessReview(environmentId, namespaceName)\n )\n );\n const allowedNamespacesNames = allNamespaceAccessReviews\n .filter((accessReview) => accessReview.status.allowed)\n .map((accessReview) => accessReview.spec.resourceAttributes.namespace);\n const allowedNamespaces = namespaceNames.reduce((acc, namespaceName) => {\n if (allowedNamespacesNames.includes(namespaceName)) {\n acc[namespaceName] = namespaces[namespaceName];\n }\n return acc;\n }, {} as Namespaces);\n return allowedNamespaces;\n },\n {\n ...withError('Unable to get namespaces.'),\n refetchInterval() {\n return options?.autoRefreshRate ?? false;\n },\n }\n );\n}\n\nexport function useNamespace(environmentId: EnvironmentId, namespace: string) {\n return useQuery(\n ['environments', environmentId, 'kubernetes', 'namespaces', namespace],\n () => getNamespace(environmentId, namespace),\n {\n onError: (err) => {\n notifyError('Failure', err as Error, 'Unable to get namespace.');\n },\n }\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { Ingress } from '../../types';\n\nexport const columnHelper = createColumnHelper<Ingress>();\n","import { CellContext } from '@tanstack/react-table';\n\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { Link } from '@@/Link';\n\nimport { Ingress } from '../../types';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor('Name', {\n header: 'Name',\n cell: Cell,\n id: 'name',\n});\n\nfunction Cell({ row, getValue }: CellContext<Ingress, string>) {\n const name = getValue();\n\n return (\n <Authorized authorizations=\"K8sIngressesW\" childrenUnauthorized={name}>\n <Link\n to=\"kubernetes.ingresses.edit\"\n params={{\n uid: row.original.UID,\n namespace: row.original.Namespace,\n name,\n }}\n title={name}\n >\n {name}\n </Link>\n </Authorized>\n );\n}\n","import { columnHelper } from './helper';\n\nexport const type = columnHelper.accessor('Type', {\n header: 'Type',\n id: 'type',\n});\n","import { CellContext, Row } from '@tanstack/react-table';\n\nimport { filterHOC } from '@@/datatables/Filter';\nimport { Link } from '@@/Link';\n\nimport { Ingress } from '../../types';\n\nimport { columnHelper } from './helper';\n\nexport const namespace = columnHelper.accessor('Namespace', {\n header: 'Namespace',\n id: 'namespace',\n cell: Cell,\n filterFn: (row: Row<Ingress>, columnId: string, filterValue: string[]) => {\n if (filterValue.length === 0) {\n return true;\n }\n return filterValue.includes(row.original.Namespace);\n },\n\n meta: {\n filter: filterHOC('Filter by namespace'),\n },\n enableColumnFilter: true,\n});\n\nfunction Cell({ getValue }: CellContext<Ingress, string>) {\n const namespace = getValue();\n return (\n <Link\n to=\"kubernetes.resourcePools.resourcePool\"\n params={{\n id: namespace,\n }}\n title={namespace}\n >\n {namespace}\n </Link>\n );\n}\n","import { columnHelper } from './helper';\n\nexport const className = columnHelper.accessor('ClassName', {\n header: 'Class Name',\n id: 'className',\n});\n","import { CellContext } from '@tanstack/react-table';\nimport { AlertTriangle, ArrowRight } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\nimport { Badge } from '@@/Badge';\n\nimport { Ingress, TLS } from '../../types';\n\nimport { columnHelper } from './helper';\n\nexport const ingressRules = columnHelper.accessor(\n ({ Paths, TLS }) =>\n // return an accessor function with all the useful text to search for\n Paths?.map((path) => {\n const isHttp = isHTTP(TLS || [], path.Host);\n return `${isHttp ? 'http' : 'https'}://${path.Host}${path.Path}${\n path.ServiceName\n }:${path.Port} ${!path.HasService && \"Service doesn't exist\"}`;\n }).join(','),\n {\n header: 'Rules and Paths',\n id: 'ingressRules',\n cell: Cell,\n }\n);\n\nfunction Cell({ row }: CellContext<Ingress, string>) {\n const paths = row.original.Paths;\n\n if (!paths) {\n return <div />;\n }\n\n return (\n <div className=\"flex flex-col gap-y-0.5\">\n {paths.map((path) => (\n <div key={`${path.Host}${path.Path}${path.ServiceName}:${path.Port}`}>\n <span className=\"flex flex-nowrap items-center gap-1 px-2\">\n {link(\n path.Host,\n path.Path,\n isHTTP(row.original.TLS || [], path.Host)\n )}\n <Icon icon={ArrowRight} />\n {`${path.ServiceName}:${path.Port}`}\n {!path.HasService && (\n <Badge type=\"warn\" className=\"ml-1 gap-1\">\n <Icon icon={AlertTriangle} />\n Service doesn't exist\n </Badge>\n )}\n </span>\n </div>\n ))}\n </div>\n );\n}\n\nfunction isHTTP(TLSs: TLS[], host: string) {\n return TLSs.filter((t) => t.Hosts.indexOf(host) !== -1).length === 0;\n}\n\nfunction link(host: string, path: string, isHttp: boolean) {\n if (!host) {\n return path;\n }\n return (\n <a\n href={`${isHttp ? 'http' : 'https'}://${host}${path}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {`${isHttp ? 'http' : 'https'}://${host}${path}`}\n </a>\n );\n}\n","import { name } from './name';\nimport { type } from './type';\nimport { namespace } from './namespace';\nimport { className } from './className';\nimport { ingressRules } from './ingressRules';\nimport { created } from './created';\n\nexport const columns = [\n name,\n namespace,\n className,\n type,\n ingressRules,\n created,\n];\n","import { formatDate } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor(\n (row) => {\n const owner = row.Labels?.['io.portainer.kubernetes.ingress.owner'];\n const date = formatDate(row.CreationDate);\n return owner ? `${date} by ${owner}` : date;\n },\n {\n header: 'Created',\n cell: ({ row, getValue }) => {\n const date = formatDate(getValue());\n const owner =\n row.original.Labels?.['io.portainer.kubernetes.ingress.owner'];\n\n return owner ? `${date} by ${owner}` : date;\n },\n id: 'created',\n }\n);\n","import { Plus, Trash2 } from 'lucide-react';\nimport { useRouter } from '@uirouter/react';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport { useNamespaces } from '@/react/kubernetes/namespaces/queries';\nimport { useAuthorizations, Authorized } from '@/react/hooks/useUser';\nimport Route from '@/assets/ico/route.svg?c';\n\nimport { confirmDelete } from '@@/modals/confirm';\nimport { Datatable } from '@@/datatables';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { DeleteIngressesRequest, Ingress } from '../types';\nimport { useDeleteIngresses, useIngresses } from '../queries';\n\nimport { columns } from './columns';\n\nimport '../style.css';\n\ninterface SelectedIngress {\n Namespace: string;\n Name: string;\n}\nconst storageKey = 'ingressClassesNameSpace';\n\nconst settingsStore = createPersistedStore(storageKey);\n\nexport function IngressDatatable() {\n const environmentId = useEnvironmentId();\n\n const { data: namespaces, ...namespacesQuery } = useNamespaces(environmentId);\n const ingressesQuery = useIngresses(\n environmentId,\n Object.keys(namespaces || {})\n );\n\n const deleteIngressesMutation = useDeleteIngresses();\n const tableState = useTableState(settingsStore, storageKey);\n\n const router = useRouter();\n\n return (\n <Datatable\n settingsManager={tableState}\n dataset={ingressesQuery.data || []}\n columns={columns}\n isLoading={ingressesQuery.isLoading || namespacesQuery.isLoading}\n emptyContentLabel=\"No supported ingresses found\"\n title=\"Ingresses\"\n titleIcon={Route}\n getRowId={(row) => row.Name + row.Type + row.Namespace}\n renderTableActions={tableActions}\n disableSelect={useCheckboxes()}\n />\n );\n\n function tableActions(selectedFlatRows: Ingress[]) {\n return (\n <div className=\"ingressDatatable-actions\">\n <Authorized authorizations=\"AzureContainerGroupDelete\">\n <Button\n className=\"btn-wrapper\"\n color=\"dangerlight\"\n disabled={selectedFlatRows.length === 0}\n onClick={() => handleRemoveClick(selectedFlatRows)}\n icon={Trash2}\n >\n Remove\n </Button>\n </Authorized>\n\n <Authorized authorizations=\"K8sIngressesW\">\n <Link\n to=\"kubernetes.ingresses.create\"\n className=\"space-left no-decoration\"\n >\n <Button\n icon={Plus}\n className=\"btn-wrapper vertical-center\"\n color=\"secondary\"\n >\n Add with form\n </Button>\n </Link>\n </Authorized>\n <Authorized authorizations=\"K8sIngressesW\">\n <Link\n to=\"kubernetes.deploy\"\n className=\"space-left no-decoration\"\n params={{ referrer: 'kubernetes.ingresses' }}\n >\n <Button icon={Plus} className=\"btn-wrapper\">\n Create from manifest\n </Button>\n </Link>\n </Authorized>\n </div>\n );\n }\n\n function useCheckboxes() {\n return !useAuthorizations(['K8sIngressesW']);\n }\n\n async function handleRemoveClick(ingresses: SelectedIngress[]) {\n const confirmed = await confirmDelete(\n 'Are you sure you want to delete the selected ingresses?'\n );\n if (!confirmed) {\n return null;\n }\n\n const payload: DeleteIngressesRequest = {} as DeleteIngressesRequest;\n ingresses.forEach((ingress) => {\n payload[ingress.Namespace] = payload[ingress.Namespace] || [];\n payload[ingress.Namespace].push(ingress.Name);\n });\n\n deleteIngressesMutation.mutate(\n { environmentId, data: payload },\n {\n onSuccess: () => {\n router.stateService.reload();\n },\n }\n );\n return ingresses;\n }\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { Configuration } from './types';\n\n// returns the formatted list of configmaps and secrets\nexport async function getConfigurations(\n environmentId: EnvironmentId,\n namespace: string\n) {\n try {\n const { data: configmaps } = await axios.get<Configuration[]>(\n `kubernetes/${environmentId}/namespaces/${namespace}/configuration`\n );\n return configmaps;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve configmaps');\n }\n}\n\nexport async function getConfigMapsForCluster(\n environmentId: EnvironmentId,\n namespaces: string[]\n) {\n try {\n const configmaps = await Promise.all(\n namespaces.map((namespace) => getConfigurations(environmentId, namespace))\n );\n return configmaps.flat();\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve ConfigMaps for cluster'\n );\n }\n}\n","import { Loader2 } from 'lucide-react';\nimport { PropsWithChildren } from 'react';\nimport clsx from 'clsx';\n\nimport { Icon } from '@@/Icon';\n\nexport type Props = {\n className: string;\n};\n\nexport function InlineLoader({\n children,\n className,\n}: PropsWithChildren<Props>) {\n return (\n <div\n className={clsx('text-muted flex items-center gap-2 text-sm', className)}\n >\n <Icon icon={Loader2} className=\"animate-spin-slow\" />\n {children}\n </div>\n );\n}\n","import { ChangeEvent, ReactNode } from 'react';\nimport { Trash2 } from 'lucide-react';\n\nimport { FormError } from '@@/form-components/FormError';\nimport { Button } from '@@/buttons';\n\nimport { Annotation } from './types';\n\ninterface Props {\n annotations: Annotation[];\n handleAnnotationChange: (\n index: number,\n key: 'Key' | 'Value',\n val: string\n ) => void;\n removeAnnotation: (index: number) => void;\n errors: Record<string, ReactNode>;\n placeholder: string[];\n}\n\nexport function Annotations({\n annotations,\n handleAnnotationChange,\n removeAnnotation,\n errors,\n placeholder,\n}: Props) {\n return (\n <>\n {annotations.map((annotation, i) => (\n <div className=\"row\" key={annotation.ID}>\n <div className=\"form-group col-sm-4 !m-0 !pl-0\">\n <div className=\"input-group input-group-sm\">\n <span className=\"input-group-addon required\">Key</span>\n <input\n name={`annotation_key_${i}`}\n type=\"text\"\n className=\"form-control form-control-sm\"\n placeholder={placeholder[0]}\n defaultValue={annotation.Key}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleAnnotationChange(i, 'Key', e.target.value)\n }\n />\n </div>\n {errors[`annotations.key[${i}]`] && (\n <FormError className=\"mt-1 !mb-0\">\n {errors[`annotations.key[${i}]`]}\n </FormError>\n )}\n </div>\n <div className=\"form-group col-sm-4 !m-0 !pl-0\">\n <div className=\"input-group input-group-sm\">\n <span className=\"input-group-addon required\">Value</span>\n <input\n name={`annotation_value_${i}`}\n type=\"text\"\n className=\"form-control form-control-sm\"\n placeholder={placeholder[1]}\n defaultValue={annotation.Value}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleAnnotationChange(i, 'Value', e.target.value)\n }\n />\n </div>\n {errors[`annotations.value[${i}]`] && (\n <FormError className=\"mt-1 !mb-0\">\n {errors[`annotations.value[${i}]`]}\n </FormError>\n )}\n </div>\n <div className=\"col-sm-3 !m-0 !pl-0\">\n <Button\n size=\"small\"\n color=\"dangerlight\"\n className=\"btn-only-icon !ml-0\"\n type=\"button\"\n onClick={() => removeAnnotation(i)}\n icon={Trash2}\n />\n </div>\n </div>\n ))}\n </>\n );\n}\n","import { ChangeEvent, ReactNode, useEffect } from 'react';\nimport { Plus, RefreshCw, Trash2 } from 'lucide-react';\n\nimport Route from '@/assets/ico/route.svg?c';\n\nimport { Link } from '@@/Link';\nimport { Option } from '@@/form-components/Input/Select';\nimport { FormError } from '@@/form-components/FormError';\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { Tooltip } from '@@/Tip/Tooltip';\nimport { Button } from '@@/buttons';\nimport { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Card } from '@@/Card';\nimport { InputGroup } from '@@/form-components/InputGroup';\nimport { InlineLoader } from '@@/InlineLoader';\nimport { Select } from '@@/form-components/ReactSelect';\n\nimport { Annotations } from './Annotations';\nimport { GroupedServiceOptions, Rule, ServicePorts } from './types';\n\nimport '../style.css';\n\nconst PathTypes: Record<string, string[]> = {\n nginx: ['ImplementationSpecific', 'Prefix', 'Exact'],\n traefik: ['Prefix', 'Exact'],\n other: ['Prefix', 'Exact'],\n};\nconst PlaceholderAnnotations: Record<string, string[]> = {\n nginx: ['e.g. nginx.ingress.kubernetes.io/rewrite-target', '/$1'],\n traefik: ['e.g. traefik.ingress.kubernetes.io/router.tls', 'true'],\n other: ['e.g. app.kubernetes.io/name', 'examplename'],\n};\n\ninterface Props {\n environmentID: number;\n rule: Rule;\n\n errors: Record<string, ReactNode>;\n isEdit: boolean;\n namespace: string;\n\n servicePorts: ServicePorts;\n ingressClassOptions: Option<string>[];\n isIngressClassOptionsLoading: boolean;\n serviceOptions: GroupedServiceOptions;\n tlsOptions: Option<string>[];\n namespacesOptions: Option<string>[];\n isNamespaceOptionsLoading: boolean;\n isIngressNamesLoading: boolean;\n\n removeIngressRoute: (hostIndex: number, pathIndex: number) => void;\n removeIngressHost: (hostIndex: number) => void;\n removeAnnotation: (index: number) => void;\n\n addNewIngressHost: (noHost?: boolean) => void;\n addNewIngressRoute: (hostIndex: number) => void;\n addNewAnnotation: (type?: 'rewrite' | 'regex' | 'ingressClass') => void;\n\n handleNamespaceChange: (val: string) => void;\n handleHostChange: (hostIndex: number, val: string) => void;\n handleTLSChange: (hostIndex: number, tls: string) => void;\n handleIngressChange: (\n key: 'IngressName' | 'IngressClassName',\n value: string\n ) => void;\n handleAnnotationChange: (\n index: number,\n key: 'Key' | 'Value',\n val: string\n ) => void;\n handlePathChange: (\n hostIndex: number,\n pathIndex: number,\n key: 'Route' | 'PathType' | 'ServiceName' | 'ServicePort',\n val: string\n ) => void;\n\n reloadTLSCerts: () => void;\n}\n\nexport function IngressForm({\n environmentID,\n rule,\n isEdit,\n servicePorts,\n tlsOptions,\n handleTLSChange,\n addNewIngressHost,\n serviceOptions,\n handleHostChange,\n handleIngressChange,\n handlePathChange,\n addNewIngressRoute,\n removeIngressRoute,\n removeIngressHost,\n addNewAnnotation,\n removeAnnotation,\n reloadTLSCerts,\n handleAnnotationChange,\n ingressClassOptions,\n isIngressClassOptionsLoading,\n errors,\n namespacesOptions,\n isNamespaceOptionsLoading,\n isIngressNamesLoading,\n handleNamespaceChange,\n namespace,\n}: Props) {\n const hasNoHostRule = rule.Hosts?.some((host) => host.NoHost);\n const placeholderAnnotation =\n PlaceholderAnnotations[rule.IngressType || 'other'] ||\n PlaceholderAnnotations.other;\n const pathTypes = PathTypes[rule.IngressType || 'other'] || PathTypes.other;\n\n // when the namespace options update the value to an available one\n useEffect(() => {\n const namespaces = namespacesOptions.map((option) => option.value);\n if (\n !isEdit &&\n !namespaces.includes(namespace) &&\n namespaces.length > 0 &&\n !isIngressNamesLoading\n ) {\n handleNamespaceChange(namespaces[0]);\n }\n }, [\n namespacesOptions,\n namespace,\n handleNamespaceChange,\n isNamespaceOptionsLoading,\n isEdit,\n isIngressNamesLoading,\n ]);\n\n return (\n <Widget>\n <WidgetTitle icon={Route} title=\"Ingress\" />\n <WidgetBody key={rule.Key + rule.Namespace}>\n <div className=\"row\">\n <div className=\"form-horizontal\">\n <div className=\"form-group\">\n <label\n className=\"control-label text-muted col-sm-3 col-lg-2\"\n htmlFor=\"namespace\"\n >\n Namespace\n </label>\n {isNamespaceOptionsLoading && (\n <div className=\"col-sm-4\">\n <InlineLoader className=\"pt-2\">\n Loading namespaces...\n </InlineLoader>\n </div>\n )}\n {!isNamespaceOptionsLoading && (\n <div className={`col-sm-4 ${isEdit && 'control-label'}`}>\n {isEdit ? (\n namespace\n ) : (\n <Select\n name=\"namespaces\"\n options={namespacesOptions}\n value={\n namespace\n ? { value: namespace, label: namespace }\n : null\n }\n isDisabled={isEdit}\n onChange={(val) =>\n handleNamespaceChange(val?.value || '')\n }\n placeholder={\n namespacesOptions.length\n ? 'Select a namespace'\n : 'No namespaces available'\n }\n noOptionsMessage={() => 'No namespaces available'}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n\n {namespace && (\n <div className=\"row\">\n <div className=\"form-horizontal\">\n <div className=\"form-group\">\n <label\n className=\"control-label text-muted col-sm-3 col-lg-2 required\"\n htmlFor=\"ingress_name\"\n >\n Ingress name\n </label>\n <div className=\"col-sm-4\">\n {isEdit ? (\n rule.IngressName\n ) : (\n <input\n name=\"ingress_name\"\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Ingress name\"\n defaultValue={rule.IngressName}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleIngressChange('IngressName', e.target.value)\n }\n disabled={isEdit}\n />\n )}\n {errors.ingressName && !isEdit && (\n <FormError className=\"error-inline mt-1\">\n {errors.ingressName}\n </FormError>\n )}\n </div>\n </div>\n\n <div className=\"form-group\" key={ingressClassOptions.toString()}>\n <label\n className=\"control-label text-muted col-sm-3 col-lg-2 required\"\n htmlFor=\"ingress_class\"\n >\n Ingress class\n </label>\n <div className=\"col-sm-4\">\n {isIngressClassOptionsLoading && (\n <InlineLoader className=\"pt-2\">\n Loading ingress classes...\n </InlineLoader>\n )}\n {!isIngressClassOptionsLoading && (\n <>\n <Select\n name=\"ingress_class\"\n placeholder={\n ingressClassOptions.length\n ? 'Select an ingress class'\n : 'No ingress classes available'\n }\n options={ingressClassOptions}\n value={\n rule.IngressClassName\n ? {\n label: rule.IngressClassName,\n value: rule.IngressClassName,\n }\n : null\n }\n onChange={(ingressClassOption) =>\n handleIngressChange(\n 'IngressClassName',\n ingressClassOption?.value || ''\n )\n }\n noOptionsMessage={() => 'No ingress classes available'}\n />\n {errors.className && (\n <FormError className=\"error-inline mt-1\">\n {errors.className}\n </FormError>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n\n <div className=\"col-sm-12 text-muted !mb-0 px-0\">\n <div className=\"control-label !mb-3 text-left font-medium\">\n Annotations\n <Tooltip\n message={\n <div className=\"vertical-center\">\n <span>\n Allows specifying of{' '}\n <a\n href=\"https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\"\n target=\"_black\"\n >\n annotations\n </a>{' '}\n for the object. See further Kubernetes documentation on{' '}\n <a\n href=\"https://kubernetes.io/docs/reference/labels-annotations-taints/\"\n target=\"_black\"\n >\n well-known annotations\n </a>\n .\n </span>\n </div>\n }\n />\n </div>\n </div>\n\n {rule?.Annotations && (\n <Annotations\n placeholder={placeholderAnnotation}\n annotations={rule.Annotations}\n handleAnnotationChange={handleAnnotationChange}\n removeAnnotation={removeAnnotation}\n errors={errors}\n />\n )}\n\n <div className=\"col-sm-12 anntation-actions p-0\">\n <TooltipWithChildren message=\"Use annotations to configure options for an ingress. Review Nginx or Traefik documentation to find the annotations supported by your choice of ingress type.\">\n <span>\n <Button\n className=\"btn btn-sm btn-light mb-2 !ml-0\"\n onClick={() => addNewAnnotation()}\n icon={Plus}\n >\n {' '}\n Add annotation\n </Button>\n </span>\n </TooltipWithChildren>\n\n {rule.IngressType === 'nginx' && (\n <>\n <TooltipWithChildren message=\"When the exposed URLs for your applications differ from the specified paths in the ingress, use the rewrite target annotation to denote the path to redirect to.\">\n <span>\n <Button\n className=\"btn btn-sm btn-light mb-2 ml-2\"\n onClick={() => addNewAnnotation('rewrite')}\n icon={Plus}\n data-cy=\"add-rewrite-annotation\"\n >\n Add rewrite annotation\n </Button>\n </span>\n </TooltipWithChildren>\n\n <TooltipWithChildren message=\"Enable use of regular expressions in ingress paths (set in the ingress details of an application). Use this along with rewrite-target to specify the regex capturing group to be replaced, e.g. path regex of ^/foo/(,*) and rewrite-target of /bar/$1 rewrites example.com/foo/account to example.com/bar/account.\">\n <span>\n <Button\n className=\"btn btn-sm btn-light mb-2 ml-2\"\n onClick={() => addNewAnnotation('regex')}\n icon={Plus}\n data-cy=\"add-regex-annotation\"\n >\n Add regular expression annotation\n </Button>\n </span>\n </TooltipWithChildren>\n </>\n )}\n\n {rule.IngressType === 'custom' && (\n <Button\n className=\"btn btn-sm btn-light mb-2 ml-2\"\n onClick={() => addNewAnnotation('ingressClass')}\n icon={Plus}\n data-cy=\"add-ingress-class-annotation\"\n >\n Add kubernetes.io/ingress.class annotation\n </Button>\n )}\n </div>\n\n <div className=\"col-sm-12 text-muted px-0\">Rules</div>\n </div>\n )}\n\n {namespace &&\n rule?.Hosts?.map((host, hostIndex) => (\n <Card key={host.Key} className=\"mb-5\">\n <div className=\"flex flex-col\">\n <div className=\"row rule-actions\">\n <div className=\"col-sm-3 p-0\">\n {!host.NoHost ? 'Rule' : 'Fallback rule'}\n </div>\n <div className=\"col-sm-9 p-0 text-right\">\n <Button\n className=\"btn btn-sm ml-2\"\n color=\"dangerlight\"\n type=\"button\"\n data-cy={`k8sAppCreate-rmHostButton_${hostIndex}`}\n onClick={() => removeIngressHost(hostIndex)}\n disabled={rule.Hosts.length === 1}\n icon={Trash2}\n >\n Remove rule\n </Button>\n </div>\n </div>\n {!host.NoHost && (\n <div className=\"row\">\n <div className=\"form-group col-sm-6 col-lg-4 !pl-0 !pr-2\">\n <InputGroup size=\"small\">\n <InputGroup.Addon required>Hostname</InputGroup.Addon>\n <InputGroup.Input\n name={`ingress_host_${hostIndex}`}\n type=\"text\"\n className=\"form-control form-control-sm\"\n placeholder=\"e.g. example.com\"\n defaultValue={host.Host}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleHostChange(hostIndex, e.target.value)\n }\n />\n </InputGroup>\n {errors[`hosts[${hostIndex}].host`] && (\n <FormError className=\"mt-1 !mb-0\">\n {errors[`hosts[${hostIndex}].host`]}\n </FormError>\n )}\n </div>\n\n <div className=\"form-group col-sm-6 col-lg-4 !pr-0 !pl-2\">\n <InputGroup size=\"small\">\n <InputGroup.Addon>TLS secret</InputGroup.Addon>\n <Select\n key={tlsOptions.toString() + host.Secret}\n name={`ingress_tls_${hostIndex}`}\n value={\n host.Secret !== undefined\n ? {\n value: host.Secret,\n label: host.Secret || 'No TLS',\n }\n : null\n }\n onChange={(TLSOption) =>\n handleTLSChange(hostIndex, TLSOption?.value || '')\n }\n placeholder={\n tlsOptions.length\n ? 'Select a TLS secret'\n : 'No TLS secrets available'\n }\n noOptionsMessage={() => 'No TLS secrets available'}\n size=\"sm\"\n options={tlsOptions}\n />\n {!host.NoHost && (\n <div className=\"input-group-btn\">\n <Button\n className=\"btn btn-light btn-sm !ml-0 !rounded-l-none\"\n onClick={() => reloadTLSCerts()}\n icon={RefreshCw}\n />\n </div>\n )}\n </InputGroup>\n </div>\n\n <div className=\"col-sm-12 col-lg-4 flex h-[30px] items-center pl-2\">\n <TextTip color=\"blue\">\n You may also use the{' '}\n <Link\n to=\"kubernetes.secrets.new\"\n params={{ id: environmentID }}\n className=\"text-primary\"\n target=\"_blank\"\n >\n Create secret\n </Link>{' '}\n function, and reload the dropdown.\n </TextTip>\n </div>\n </div>\n )}\n {host.NoHost && (\n <TextTip color=\"blue\">\n A fallback rule has no host specified. This rule only\n applies when an inbound request has a hostname that does not\n match with any of your other rules.\n </TextTip>\n )}\n\n <div className=\"row\">\n <div className=\"col-sm-12 text-muted !mb-0 mt-2 px-0\">\n Paths\n </div>\n </div>\n\n {!host.Paths.length && (\n <TextTip className=\"mt-2\" color=\"blue\">\n You may save the ingress without a path and it will then be\n an <b>ingress default</b> that a user may select via the\n hostname dropdown in Create/Edit application.\n </TextTip>\n )}\n\n {host.Paths.map((path, pathIndex) => (\n <div\n className=\"row path mt-5 !mb-5\"\n key={`path_${path.Key}}`}\n >\n <div className=\"form-group col-sm-3 col-xl-2 !m-0 !pl-0\">\n <InputGroup size=\"small\">\n <InputGroup.Addon required>Service</InputGroup.Addon>\n <Select\n key={serviceOptions.toString() + path.ServiceName}\n name={`ingress_service_${hostIndex}_${pathIndex}`}\n options={serviceOptions}\n value={\n path.ServiceName\n ? {\n value: path.ServiceName,\n label: getServiceLabel(\n serviceOptions,\n path.ServiceName\n ),\n }\n : null\n }\n onChange={(serviceOption) =>\n handlePathChange(\n hostIndex,\n pathIndex,\n 'ServiceName',\n serviceOption?.value || ''\n )\n }\n placeholder={\n serviceOptions.length\n ? 'Select a service'\n : 'No services available'\n }\n noOptionsMessage={() => 'No services available'}\n size=\"sm\"\n />\n </InputGroup>\n {errors[\n `hosts[${hostIndex}].paths[${pathIndex}].servicename`\n ] && (\n <FormError className=\"error-inline mt-1 !mb-0\">\n {\n errors[\n `hosts[${hostIndex}].paths[${pathIndex}].servicename`\n ]\n }\n </FormError>\n )}\n </div>\n\n <div className=\"form-group col-sm-2 col-xl-2 !m-0 min-w-[170px] !pl-0\">\n {servicePorts && (\n <>\n <InputGroup size=\"small\">\n <InputGroup.Addon required>\n Service port\n </InputGroup.Addon>\n <Select\n key={servicePorts.toString() + path.ServicePort}\n name={`ingress_servicePort_${hostIndex}_${pathIndex}`}\n options={\n servicePorts[path.ServiceName]?.map(\n (portOption) => ({\n ...portOption,\n value: portOption.value.toString(),\n })\n ) || []\n }\n onChange={(option) =>\n handlePathChange(\n hostIndex,\n pathIndex,\n 'ServicePort',\n option?.value || ''\n )\n }\n value={\n path.ServicePort\n ? {\n label: path.ServicePort.toString(),\n value: path.ServicePort.toString(),\n }\n : null\n }\n placeholder={\n servicePorts[path.ServiceName]?.length\n ? 'Select a port'\n : 'No ports available'\n }\n noOptionsMessage={() => 'No ports available'}\n size=\"sm\"\n />\n </InputGroup>\n {errors[\n `hosts[${hostIndex}].paths[${pathIndex}].serviceport`\n ] && (\n <FormError className=\"mt-1 !mb-0\">\n {\n errors[\n `hosts[${hostIndex}].paths[${pathIndex}].serviceport`\n ]\n }\n </FormError>\n )}\n </>\n )}\n </div>\n\n <div className=\"form-group col-sm-3 col-xl-2 !m-0 !pl-0\">\n <InputGroup size=\"small\">\n <InputGroup.Addon>Path type</InputGroup.Addon>\n <Select<Option<string>>\n key={servicePorts.toString() + path.PathType}\n name={`ingress_pathType_${hostIndex}_${pathIndex}`}\n options={\n pathTypes?.map((type) => ({\n label: type,\n value: type,\n })) || []\n }\n onChange={(option) =>\n handlePathChange(\n hostIndex,\n pathIndex,\n 'PathType',\n option?.value || ''\n )\n }\n value={\n path.PathType\n ? {\n label: path.PathType,\n value: path.PathType,\n }\n : null\n }\n placeholder={\n pathTypes?.length\n ? 'Select a path type'\n : 'No path types available'\n }\n noOptionsMessage={() => 'No path types available'}\n size=\"sm\"\n />\n </InputGroup>\n {errors[\n `hosts[${hostIndex}].paths[${pathIndex}].pathType`\n ] && (\n <FormError className=\"mt-1 !mb-0\">\n {\n errors[\n `hosts[${hostIndex}].paths[${pathIndex}].pathType`\n ]\n }\n </FormError>\n )}\n </div>\n\n <div className=\"form-group col-sm-3 col-xl-3 !m-0 !pl-0\">\n <InputGroup size=\"small\">\n <InputGroup.Addon required>Path</InputGroup.Addon>\n <InputGroup.Input\n className=\"form-control\"\n name={`ingress_route_${hostIndex}-${pathIndex}`}\n placeholder=\"/example\"\n data-pattern=\"/^(\\/?[a-zA-Z0-9]+([a-zA-Z0-9-/_]*[a-zA-Z0-9])?|[a-zA-Z0-9]+)|(\\/){1}$/\"\n data-cy={`k8sAppCreate-route_${hostIndex}-${pathIndex}`}\n defaultValue={path.Route}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handlePathChange(\n hostIndex,\n pathIndex,\n 'Route',\n e.target.value\n )\n }\n />\n </InputGroup>\n {errors[\n `hosts[${hostIndex}].paths[${pathIndex}].path`\n ] && (\n <FormError className=\"mt-1 !mb-0\">\n {\n errors[\n `hosts[${hostIndex}].paths[${pathIndex}].path`\n ]\n }\n </FormError>\n )}\n </div>\n\n <div className=\"form-group col-sm-1 !m-0 !pl-0\">\n <Button\n className=\"!ml-0 h-[30px]\"\n color=\"dangerlight\"\n type=\"button\"\n data-cy={`k8sAppCreate-rmPortButton_${hostIndex}-${pathIndex}`}\n onClick={() => removeIngressRoute(hostIndex, pathIndex)}\n icon={Trash2}\n size=\"small\"\n disabled={host.Paths.length === 1 && host.NoHost}\n />\n </div>\n </div>\n ))}\n\n <div className=\"row mt-5\">\n <Button\n className=\"!ml-0\"\n type=\"button\"\n onClick={() => addNewIngressRoute(hostIndex)}\n icon={Plus}\n size=\"small\"\n color=\"default\"\n >\n Add path\n </Button>\n </div>\n </div>\n </Card>\n ))}\n\n {namespace && (\n <div className=\"row rules-action p-0\">\n <div className=\"col-sm-12 vertical-center p-0\">\n <Button\n className=\"!ml-0\"\n type=\"button\"\n onClick={() => addNewIngressHost()}\n icon={Plus}\n color=\"default\"\n size=\"small\"\n >\n Add new host\n </Button>\n\n <Button\n className=\"ml-2\"\n type=\"button\"\n onClick={() => addNewIngressHost(true)}\n disabled={hasNoHostRule}\n icon={Plus}\n color=\"default\"\n size=\"small\"\n >\n Add fallback rule\n </Button>\n <Tooltip message=\"A fallback rule will be applied to all requests that do not match any of the defined hosts.\" />\n </div>\n </div>\n )}\n </WidgetBody>\n </Widget>\n );\n}\n\nfunction getServiceLabel(options: GroupedServiceOptions, value: string) {\n const allOptions = options.flatMap((group) => group.options);\n const option = allOptions.find((o) => o.value === value);\n return option?.selectedLabel || '';\n}\n","import { v4 as uuidv4 } from 'uuid';\n\nimport { SupportedIngControllerTypes } from '@/react/kubernetes/cluster/ingressClass/types';\n\nimport { TLS, Ingress } from '../types';\n\nimport { Annotation } from './Annotations/types';\nimport { Host, Rule } from './types';\n\nconst ignoreAnnotationsForEdit = [\n 'kubectl.kubernetes.io/last-applied-configuration',\n];\n\nexport function prepareTLS(hosts: Host[]) {\n const tls: TLS[] = [];\n hosts.forEach((host) => {\n if (host.Secret && host.Host) {\n tls.push({\n Hosts: [host.Host],\n SecretName: host.Secret,\n });\n }\n });\n return tls;\n}\n\nexport function preparePaths(ingressName: string, hosts: Host[]) {\n return hosts.flatMap((host) =>\n host.Paths.map((p) => ({\n ServiceName: p.ServiceName,\n Host: host.Host,\n Path: p.Route,\n Port: p.ServicePort,\n PathType: p.PathType || 'Prefix',\n IngressName: ingressName,\n }))\n );\n}\n\nexport function prepareAnnotations(annotations: Annotation[]) {\n const result: Record<string, string> = {};\n annotations.forEach((a) => {\n result[a.Key] = a.Value;\n });\n return result;\n}\n\nfunction getSecretByHost(host: string, tls?: TLS[]) {\n let secret = '';\n if (tls) {\n tls.forEach((t) => {\n if (t.Hosts.indexOf(host) !== -1) {\n secret = t.SecretName;\n }\n });\n }\n return secret;\n}\n\nexport function prepareRuleHostsFromIngress(ing: Ingress) {\n const hosts = ing.Hosts?.map((host) => {\n const h: Host = {} as Host;\n h.Host = host;\n h.Secret = getSecretByHost(host, ing.TLS);\n h.Paths = [];\n ing.Paths?.forEach((path) => {\n if (path.Host === host) {\n h.Paths.push({\n Route: path.Path,\n ServiceName: path.ServiceName,\n ServicePort: path.Port,\n PathType: path.PathType,\n Key: Math.random().toString(),\n });\n }\n });\n if (!host) {\n h.NoHost = true;\n }\n h.Key = uuidv4();\n return h;\n });\n\n return hosts;\n}\n\nexport function getAnnotationsForEdit(\n annotations: Record<string, string>\n): Annotation[] {\n const result: Annotation[] = [];\n Object.keys(annotations).forEach((k) => {\n if (ignoreAnnotationsForEdit.indexOf(k) === -1) {\n result.push({\n Key: k,\n Value: annotations[k],\n ID: uuidv4(),\n });\n }\n });\n return result;\n}\n\nexport function prepareRuleFromIngress(\n ing: Ingress,\n type?: SupportedIngControllerTypes\n): Rule {\n return {\n Key: uuidv4(),\n IngressName: ing.Name,\n Namespace: ing.Namespace,\n IngressClassName: type === 'custom' ? 'none' : ing.ClassName,\n Hosts: prepareRuleHostsFromIngress(ing) || [],\n Annotations: ing.Annotations ? getAnnotationsForEdit(ing.Annotations) : [],\n IngressType: ing.Type,\n };\n}\n\nexport function checkIfPathExistsWithHost(\n ingresses: Ingress[],\n host: string,\n path: string,\n ingressName?: string\n) {\n let exists = false;\n ingresses.forEach((ingress) => {\n if (ingressName && ingress.Name === ingressName) {\n return;\n }\n ingress.Paths?.forEach((p) => {\n if (p.Host === host && p.Path === path) {\n exists = true;\n }\n });\n });\n return exists;\n}\n","import { PersistentVolumeClaimList } from 'kubernetes-types/core/v1';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nexport async function getPVCsForCluster(\n environmentId: EnvironmentId,\n namespaces: string[]\n) {\n try {\n const pvcs = await Promise.all(\n namespaces.map((namespace) => getPVCs(environmentId, namespace))\n );\n return pvcs.flat();\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve persistent volume claims for cluster'\n );\n }\n}\n\n// get all persistent volume claims for a namespace\nexport async function getPVCs(environmentId: EnvironmentId, namespace: string) {\n try {\n const { data } = await axios.get<PersistentVolumeClaimList>(\n `/endpoints/${environmentId}/kubernetes/api/v1/namespaces/${namespace}/persistentvolumeclaims`\n );\n return data.items;\n } catch (e) {\n throw parseAxiosError(\n e as Error,\n 'Unable to retrieve persistent volume claims'\n );\n }\n}\n","import { Status } from 'kubernetes-types/meta/v1';\nimport { AxiosError } from 'axios';\n\nimport {\n defaultErrorParser,\n parseAxiosError,\n} from '@/portainer/services/axios';\n\nexport function kubernetesErrorParser(axiosError: AxiosError) {\n const responseStatus = axiosError.response?.data as Status;\n const { message } = responseStatus;\n if (message) {\n return {\n error: new Error(message),\n details: message,\n };\n }\n return defaultErrorParser(axiosError);\n}\n\n/**\n * Parses an Axios error response from the Kubernetes API.\n * @param err The Axios error object.\n * @param msg An optional error message to prepend.\n * @returns An error object with an error message and details.\n */\nexport function parseKubernetesAxiosError(err: Error, msg = '') {\n return parseAxiosError(err, msg, kubernetesErrorParser);\n}\n","import { ConfigMapList } from 'kubernetes-types/core/v1';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { queryClient, withError } from '@/react-tools/react-query';\nimport axios from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport {\n error as notifyError,\n notifySuccess,\n} from '@/portainer/services/notifications';\nimport { isFulfilled, isRejected } from '@/portainer/helpers/promise-utils';\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { parseKubernetesAxiosError } from '../axiosError';\n\nexport const configMapQueryKeys = {\n configMaps: (environmentId: EnvironmentId, namespace?: string) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'configmaps',\n 'namespaces',\n namespace,\n ],\n configMapsForCluster: (environmentId: EnvironmentId) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'configmaps',\n ],\n};\n\n// returns a usequery hook for the list of configmaps from the kubernetes API\nexport function useConfigMaps(\n environmentId: EnvironmentId,\n namespace?: string\n) {\n return useQuery(\n configMapQueryKeys.configMaps(environmentId, namespace),\n () => (namespace ? getConfigMaps(environmentId, namespace) : []),\n {\n onError: (err) => {\n notifyError(\n 'Failure',\n err as Error,\n `Unable to get ConfigMaps in namespace '${namespace}'`\n );\n },\n enabled: !!namespace,\n }\n );\n}\n\nexport function useConfigMapsForCluster(\n environmentId: EnvironmentId,\n namespaces?: string[],\n options?: { autoRefreshRate?: number }\n) {\n return useQuery(\n configMapQueryKeys.configMapsForCluster(environmentId),\n () => namespaces && getConfigMapsForCluster(environmentId, namespaces),\n {\n ...withError('Unable to retrieve ConfigMaps for cluster'),\n enabled: !!namespaces?.length,\n refetchInterval() {\n return options?.autoRefreshRate ?? false;\n },\n }\n );\n}\n\nexport function useMutationDeleteConfigMaps(environmentId: EnvironmentId) {\n return useMutation(\n async (configMaps: { namespace: string; name: string }[]) => {\n const promises = await Promise.allSettled(\n configMaps.map(({ namespace, name }) =>\n deleteConfigMap(environmentId, namespace, name)\n )\n );\n const successfulConfigMaps = promises\n .filter(isFulfilled)\n .map((_, index) => configMaps[index].name);\n const failedConfigMaps = promises\n .filter(isRejected)\n .map(({ reason }, index) => ({\n name: configMaps[index].name,\n reason,\n }));\n return { failedConfigMaps, successfulConfigMaps };\n },\n {\n ...withError('Unable to remove ConfigMaps'),\n onSuccess: ({ failedConfigMaps, successfulConfigMaps }) => {\n // Promise.allSettled can also resolve with errors, so check for errors here\n queryClient.invalidateQueries(\n configMapQueryKeys.configMapsForCluster(environmentId)\n );\n // show an error message for each configmap that failed to delete\n failedConfigMaps.forEach(({ name, reason }) => {\n notifyError(\n `Failed to remove ConfigMap '${name}'`,\n new Error(reason.message) as Error\n );\n });\n // show one summary message for all successful deletes\n if (successfulConfigMaps.length) {\n notifySuccess(\n `${pluralize(\n successfulConfigMaps.length,\n 'ConfigMap'\n )} successfully removed`,\n successfulConfigMaps.join(', ')\n );\n }\n },\n }\n );\n}\n\nasync function getConfigMapsForCluster(\n environmentId: EnvironmentId,\n namespaces: string[]\n) {\n try {\n const configMaps = await Promise.all(\n namespaces.map((namespace) => getConfigMaps(environmentId, namespace))\n );\n return configMaps.flat();\n } catch (e) {\n throw parseKubernetesAxiosError(\n e as Error,\n 'Unable to retrieve ConfigMaps for cluster'\n );\n }\n}\n\n// get all configmaps for a namespace\nasync function getConfigMaps(environmentId: EnvironmentId, namespace: string) {\n try {\n const { data } = await axios.get<ConfigMapList>(\n buildUrl(environmentId, namespace)\n );\n return data.items;\n } catch (e) {\n throw parseKubernetesAxiosError(\n e as Error,\n 'Unable to retrieve ConfigMaps'\n );\n }\n}\n\nasync function deleteConfigMap(\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n) {\n try {\n await axios.delete(buildUrl(environmentId, namespace, name));\n } catch (e) {\n throw parseKubernetesAxiosError(e as Error, 'Unable to remove ConfigMap');\n }\n}\n\nfunction buildUrl(environmentId: number, namespace: string, name?: string) {\n const url = `/endpoints/${environmentId}/kubernetes/api/v1/namespaces/${namespace}/configmaps`;\n return name ? `${url}/${name}` : url;\n}\n","import { SecretList } from 'kubernetes-types/core/v1';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { queryClient, withError } from '@/react-tools/react-query';\nimport axios from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport {\n error as notifyError,\n notifySuccess,\n} from '@/portainer/services/notifications';\nimport { isFulfilled, isRejected } from '@/portainer/helpers/promise-utils';\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { parseKubernetesAxiosError } from '../axiosError';\n\nexport const secretQueryKeys = {\n secrets: (environmentId: EnvironmentId, namespace?: string) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'secrets',\n 'namespaces',\n namespace,\n ],\n secretsForCluster: (environmentId: EnvironmentId) => [\n 'environments',\n environmentId,\n 'kubernetes',\n 'secrets',\n ],\n};\n\n// returns a usequery hook for the list of secrets from the kubernetes API\nexport function useSecrets(environmentId: EnvironmentId, namespace?: string) {\n return useQuery(\n secretQueryKeys.secrets(environmentId, namespace),\n () => (namespace ? getSecrets(environmentId, namespace) : []),\n {\n onError: (err) => {\n notifyError(\n 'Failure',\n err as Error,\n `Unable to get secrets in namespace '${namespace}'`\n );\n },\n enabled: !!namespace,\n }\n );\n}\n\nexport function useSecretsForCluster(\n environmentId: EnvironmentId,\n namespaces?: string[],\n options?: { autoRefreshRate?: number }\n) {\n return useQuery(\n secretQueryKeys.secretsForCluster(environmentId),\n () => namespaces && getSecretsForCluster(environmentId, namespaces),\n {\n ...withError('Unable to retrieve secrets for cluster'),\n enabled: !!namespaces?.length,\n refetchInterval() {\n return options?.autoRefreshRate ?? false;\n },\n }\n );\n}\n\nexport function useMutationDeleteSecrets(environmentId: EnvironmentId) {\n return useMutation(\n async (secrets: { namespace: string; name: string }[]) => {\n const promises = await Promise.allSettled(\n secrets.map(({ namespace, name }) =>\n deleteSecret(environmentId, namespace, name)\n )\n );\n const successfulSecrets = promises\n .filter(isFulfilled)\n .map((_, index) => secrets[index].name);\n const failedSecrets = promises\n .filter(isRejected)\n .map(({ reason }, index) => ({\n name: secrets[index].name,\n reason,\n }));\n return { failedSecrets, successfulSecrets };\n },\n {\n ...withError('Unable to remove secrets'),\n onSuccess: ({ failedSecrets, successfulSecrets }) => {\n queryClient.invalidateQueries(\n secretQueryKeys.secretsForCluster(environmentId)\n );\n // show an error message for each secret that failed to delete\n failedSecrets.forEach(({ name, reason }) => {\n notifyError(\n `Failed to remove secret '${name}'`,\n new Error(reason.message) as Error\n );\n });\n // show one summary message for all successful deletes\n if (successfulSecrets.length) {\n notifySuccess(\n `${pluralize(\n successfulSecrets.length,\n 'Secret'\n )} successfully removed`,\n successfulSecrets.join(', ')\n );\n }\n },\n }\n );\n}\n\nasync function getSecretsForCluster(\n environmentId: EnvironmentId,\n namespaces: string[]\n) {\n try {\n const secrets = await Promise.all(\n namespaces.map((namespace) => getSecrets(environmentId, namespace))\n );\n return secrets.flat();\n } catch (e) {\n throw parseKubernetesAxiosError(\n e as Error,\n 'Unable to retrieve secrets for cluster'\n );\n }\n}\n\n// get all secrets for a namespace\nasync function getSecrets(environmentId: EnvironmentId, namespace: string) {\n try {\n const { data } = await axios.get<SecretList>(\n buildUrl(environmentId, namespace)\n );\n return data.items;\n } catch (e) {\n throw parseKubernetesAxiosError(e as Error, 'Unable to retrieve secrets');\n }\n}\n\nasync function deleteSecret(\n environmentId: EnvironmentId,\n namespace: string,\n name: string\n) {\n try {\n await axios.delete(buildUrl(environmentId, namespace, name));\n } catch (e) {\n throw parseKubernetesAxiosError(e as Error, 'Unable to remove secret');\n }\n}\n\nfunction buildUrl(environmentId: number, namespace: string, name?: string) {\n const url = `/endpoints/${environmentId}/kubernetes/api/v1/namespaces/${namespace}/secrets`;\n return name ? `${url}/${name}` : url;\n}\n","import { Gauge } from 'lucide-react';\n\nimport { stripProtocol } from '@/portainer/filters/filters';\nimport { useTagsForEnvironment } from '@/portainer/tags/queries';\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport { useEnvironment } from '@/react/portainer/environments/queries';\n\nimport { Widget, WidgetTitle, WidgetBody } from '@@/Widget';\n\nexport function EnvironmentInfo() {\n const environmentId = useEnvironmentId();\n const { data: environmentData, ...environmentQuery } =\n useEnvironment(environmentId);\n const tagsQuery = useTagsForEnvironment(environmentId);\n const tagNames = tagsQuery.tags?.map((tag) => tag.Name).join(', ') || '-';\n\n return (\n <Widget>\n <WidgetTitle icon={Gauge} title=\"Environment info\" />\n <WidgetBody loading={environmentQuery.isLoading}>\n {environmentQuery.isError && <div>Failed to load environment</div>}\n {environmentData && (\n <table className=\"table\">\n <tbody>\n <tr>\n <td className=\"!border-none !pl-0\">Environment</td>\n <td\n className=\"!border-none\"\n data-cy=\"dashboard-environmentName\"\n >\n {environmentData.Name}\n </td>\n </tr>\n <tr>\n <td className=\"!border-t !pl-0\">URL</td>\n <td className=\"!border-t\" data-cy=\"dashboard-environmenturl\">\n {stripProtocol(environmentData.URL) || '-'}\n </td>\n </tr>\n <tr>\n <td className=\"!pl-0\">Tags</td>\n <td data-cy=\"dashboard-environmentTags\">{tagNames}</td>\n </tr>\n </tbody>\n </table>\n )}\n </WidgetBody>\n </Widget>\n );\n}\n","import { TableSettingsMenuAutoRefresh } from '@@/datatables/TableSettingsMenuAutoRefresh';\nimport { Checkbox } from '@@/form-components/Checkbox';\nimport {\n BasicTableSettings,\n RefreshableTableSettings,\n ZustandSetFunc,\n} from '@@/datatables/types';\n\ninterface SystemResourcesTableSettings {\n showSystemResources: boolean;\n setShowSystemResources: (value: boolean) => void;\n}\n\nexport interface TableSettings\n extends BasicTableSettings,\n RefreshableTableSettings,\n SystemResourcesTableSettings {}\n\nexport function systemResourcesSettings<T extends SystemResourcesTableSettings>(\n set: ZustandSetFunc<T>\n): SystemResourcesTableSettings {\n return {\n showSystemResources: false,\n setShowSystemResources(showSystemResources: boolean) {\n set((s) => ({\n ...s,\n showSystemResources,\n }));\n },\n };\n}\n\ninterface Props {\n settings: TableSettings;\n hideShowSystemResources?: boolean;\n}\n\nexport function DefaultDatatableSettings({\n settings,\n hideShowSystemResources = false,\n}: Props) {\n return (\n <>\n {!hideShowSystemResources && (\n <Checkbox\n id=\"show-system-resources\"\n label=\"Show system resources\"\n checked={settings.showSystemResources}\n onChange={(e) => settings.setShowSystemResources(e.target.checked)}\n />\n )}\n <TableSettingsMenuAutoRefresh\n value={settings.autoRefreshRate}\n onChange={handleRefreshRateChange}\n />\n </>\n );\n\n function handleRefreshRateChange(autoRefreshRate: number) {\n settings.setAutoRefreshRate(autoRefreshRate);\n }\n}\n","import { TextTip } from '@@/Tip/TextTip';\n\ninterface Props {\n showSystemResources: boolean;\n}\n\nexport function SystemResourceDescription({ showSystemResources }: Props) {\n return (\n <div className=\"w-full\">\n {!showSystemResources && (\n <TextTip color=\"blue\" className=\"!mb-0\">\n System resources are hidden, this can be changed in the table settings\n </TextTip>\n )}\n </div>\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { Service } from '../../../types';\n\nexport const columnHelper = createColumnHelper<Service>();\n","import { Authorized } from '@/react/hooks/useUser';\nimport { isSystemNamespace } from '@/react/kubernetes/namespaces/utils';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor(\n (row) => {\n let name = row.Name;\n\n const isExternal =\n !row.Labels || !row.Labels['io.portainer.kubernetes.application.owner'];\n const isSystem = isSystemNamespace(row.Namespace);\n\n if (isExternal && !isSystem) {\n name = `${name} external`;\n }\n\n if (isSystem) {\n name = `${name} system`;\n }\n return name;\n },\n {\n header: 'Name',\n id: 'name',\n cell: ({ row }) => {\n const name = row.original.Name;\n const isSystem = isSystemNamespace(row.original.Namespace);\n\n const isExternal =\n !row.original.Labels ||\n !row.original.Labels['io.portainer.kubernetes.application.owner'];\n\n return (\n <Authorized authorizations=\"K8sServiceW\" childrenUnauthorized={name}>\n {name}\n\n {isSystem && (\n <span className=\"label label-info image-tag label-margins\">\n system\n </span>\n )}\n\n {isExternal && !isSystem && (\n <span className=\"label label-primary image-tag label-margins\">\n external\n </span>\n )}\n </Authorized>\n );\n },\n }\n);\n","import { Row } from '@tanstack/react-table';\n\nimport { filterHOC } from '@@/datatables/Filter';\n\nimport { Service } from '../../../types';\n\nimport { columnHelper } from './helper';\n\nexport const type = columnHelper.accessor('Type', {\n header: 'Type',\n id: 'type',\n meta: {\n filter: filterHOC('Filter by type'),\n },\n enableColumnFilter: true,\n filterFn: (row: Row<Service>, columnId: string, filterValue: string[]) =>\n filterValue.length === 0 || filterValue.includes(row.original.Type),\n});\n","import { Row } from '@tanstack/react-table';\n\nimport { filterHOC } from '@/react/components/datatables/Filter';\n\nimport { Link } from '@@/Link';\n\nimport { Service } from '../../../types';\n\nimport { columnHelper } from './helper';\n\nexport const namespace = columnHelper.accessor('Namespace', {\n header: 'Namespace',\n id: 'namespace',\n cell: ({ getValue }) => {\n const namespace = getValue();\n\n return (\n <Link\n to=\"kubernetes.resourcePools.resourcePool\"\n params={{\n id: namespace,\n }}\n title={namespace}\n >\n {namespace}\n </Link>\n );\n },\n meta: {\n filter: filterHOC('Filter by namespace'),\n },\n enableColumnFilter: true,\n filterFn: (row: Row<Service>, columnId: string, filterValue: string[]) =>\n filterValue.length === 0 || filterValue.includes(row.original.Namespace),\n});\n","import { Tooltip } from '@@/Tip/Tooltip';\n\nimport { columnHelper } from './helper';\n\nexport const ports = columnHelper.accessor(\n (row) =>\n row.Ports.map(\n (port) =>\n `${port.Port}${port.NodePort !== 0 ? `:${port.NodePort}` : ''}/${\n port.Protocol\n }`\n ).join(',') || '-',\n {\n header: () => (\n <>\n Ports\n <Tooltip message=\"The format of Ports is port[:nodePort]/protocol. Protocol is either TCP, UDP or SCTP.\" />\n </>\n ),\n id: 'ports',\n cell: ({ row }) => {\n if (!row.original.Ports.length) {\n return '-';\n }\n\n return (\n <>\n {row.original.Ports.map((port, index) => {\n if (port.NodePort !== 0) {\n return (\n <div key={index}>\n {port.Port}:{port.NodePort}/{port.Protocol}\n </div>\n );\n }\n\n return (\n <div key={index}>\n {port.Port}/{port.Protocol}\n </div>\n );\n })}\n </>\n );\n },\n sortingFn: (rowA, rowB) => {\n const a = rowA.original.Ports;\n const b = rowB.original.Ports;\n\n if (!a.length && !b.length) return 0;\n\n if (!a.length) return 1;\n if (!b.length) return -1;\n\n // sort order based on first port\n const portA = a[0].Port;\n const portB = b[0].Port;\n\n if (portA === portB) {\n // longer list of ports is considered \"greater\"\n if (a.length < b.length) return -1;\n if (a.length > b.length) return 1;\n return 0;\n }\n\n // now do a regular number sort\n if (portA < portB) return -1;\n if (portA > portB) return 1;\n\n return 0;\n },\n }\n);\n","import { columnHelper } from './helper';\n\nexport const clusterIP = columnHelper.accessor(\n (row) => row.ClusterIPs?.join(','),\n {\n header: 'Cluster IP',\n id: 'clusterIP',\n cell: ({ row }) => {\n const clusterIPs = row.original.ClusterIPs;\n\n if (!clusterIPs?.length) {\n return '-';\n }\n return clusterIPs.map((ip) => <div key={ip}>{ip}</div>);\n },\n sortingFn: (rowA, rowB) => {\n const a = rowA.original.ClusterIPs;\n const b = rowB.original.ClusterIPs;\n\n const ipA = a?.[0];\n const ipB = b?.[0];\n\n // no ip's at top, followed by 'None', then ordered by ip\n if (!ipA) return 1;\n if (!ipB) return -1;\n if (ipA === ipB) return 0;\n if (ipA === 'None') return 1;\n if (ipB === 'None') return -1;\n\n // natural sort of the ip\n return ipA.localeCompare(\n ipB,\n navigator.languages[0] || navigator.language,\n {\n numeric: true,\n ignorePunctuation: true,\n }\n );\n },\n }\n);\n","import { ExternalLink } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\n\ninterface Props {\n to: string;\n text: string;\n}\n\nexport function ExternalIPLink({ to, text }: Props) {\n return (\n <a\n href={to}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"flex items-center gap-1\"\n >\n <Icon icon={ExternalLink} />\n <span>{text}</span>\n </a>\n );\n}\n","import { CellContext } from '@tanstack/react-table';\n\nimport { Service } from '../../../types';\n\nimport { ExternalIPLink } from './ExternalIPLink';\nimport { columnHelper } from './helper';\n\nexport const externalIP = columnHelper.accessor(\n (row) => {\n if (row.Type === 'ExternalName') {\n return row.ExternalName || '';\n }\n\n if (row.ExternalIPs?.length) {\n return row.ExternalIPs?.join(',') || '';\n }\n\n return row.IngressStatus?.map((status) => status.IP).join(',') || '';\n },\n {\n header: 'External IP',\n id: 'externalIP',\n cell: Cell,\n sortingFn: (rowA, rowB) => {\n const a = rowA.original.IngressStatus;\n const b = rowB.original.IngressStatus;\n const aExternal = rowA.original.ExternalIPs;\n const bExternal = rowB.original.ExternalIPs;\n\n const ipA = a?.[0].IP || aExternal?.[0] || rowA.original.ExternalName;\n const ipB = b?.[0].IP || bExternal?.[0] || rowA.original.ExternalName;\n\n if (!ipA) return 1;\n if (!ipB) return -1;\n\n // use a nat sort order for ip addresses\n return ipA.localeCompare(\n ipB,\n navigator.languages[0] || navigator.language,\n {\n numeric: true,\n ignorePunctuation: true,\n }\n );\n },\n }\n);\n\nfunction Cell({ row }: CellContext<Service, string>) {\n if (row.original.Type === 'ExternalName') {\n if (row.original.ExternalName) {\n const linkTo = `http://${row.original.ExternalName}`;\n return <ExternalIPLink to={linkTo} text={row.original.ExternalName} />;\n }\n return '-';\n }\n\n const [scheme, port] = getSchemeAndPort(row.original);\n if (row.original.ExternalIPs?.length) {\n return row.original.ExternalIPs?.map((ip, index) => {\n // some ips come through blank\n if (ip.length === 0) {\n return '-';\n }\n\n if (scheme) {\n let linkTo = `${scheme}://${ip}`;\n if (port !== 80 && port !== 443) {\n linkTo = `${linkTo}:${port}`;\n }\n return (\n <div key={index}>\n <ExternalIPLink to={linkTo} text={ip} />\n </div>\n );\n }\n return <div key={index}>{ip}</div>;\n });\n }\n\n const status = row.original.IngressStatus;\n if (status) {\n return status?.map((status, index) => {\n // some ips come through blank\n if (status.IP.length === 0) {\n return '-';\n }\n\n if (scheme) {\n let linkTo = `${scheme}://${status.IP}`;\n if (port !== 80 && port !== 443) {\n linkTo = `${linkTo}:${port}`;\n }\n return (\n <div key={index}>\n <ExternalIPLink to={linkTo} text={status.IP} />\n </div>\n );\n }\n return <div key={index}>{status.IP}</div>;\n });\n }\n\n return '-';\n}\n\n// calculate the scheme based on the ports of the service\n// favour https over http.\nfunction getSchemeAndPort(svc: Service): [string, number] {\n let scheme = '';\n let servicePort = 0;\n\n svc.Ports?.forEach((port) => {\n if (port.Protocol === 'TCP') {\n switch (port.TargetPort) {\n case '443':\n case '8443':\n case 'https':\n scheme = 'https';\n servicePort = port.Port;\n break;\n\n case '80':\n case '8080':\n case 'http':\n if (scheme !== 'https') {\n scheme = 'http';\n servicePort = port.Port;\n }\n break;\n\n default:\n break;\n }\n }\n });\n\n return [scheme, servicePort];\n}\n","import { columnHelper } from './helper';\n\nexport const targetPorts = columnHelper.accessor(\n (row) => row.Ports.map((port) => port.TargetPort).join(','),\n {\n header: 'Target Ports',\n id: 'targetPorts',\n cell: ({ row }) => {\n const ports = row.original.Ports.map((port) => port.TargetPort);\n if (!ports.length) {\n return '-';\n }\n\n return ports.map((port, index) => <div key={index}>{port}</div>);\n },\n sortingFn: (rowA, rowB) => {\n const a = rowA.original.Ports;\n const b = rowB.original.Ports;\n\n if (!a.length && !b.length) return 0;\n if (!a.length) return 1;\n if (!b.length) return -1;\n\n const portA = a[0].TargetPort;\n const portB = b[0].TargetPort;\n\n if (portA === portB) {\n if (a.length < b.length) return -1;\n if (a.length > b.length) return 1;\n\n return 0;\n }\n\n // natural sort of the port\n return portA.localeCompare(\n portB,\n navigator.languages[0] || navigator.language,\n {\n numeric: true,\n ignorePunctuation: true,\n }\n );\n },\n }\n);\n","import { name } from './name';\nimport { type } from './type';\nimport { namespace } from './namespace';\nimport { ports } from './ports';\nimport { clusterIP } from './clusterIP';\nimport { externalIP } from './externalIP';\nimport { targetPorts } from './targetPorts';\nimport { application } from './application';\nimport { created } from './created';\n\nexport const columns = [\n name,\n application,\n namespace,\n type,\n ports,\n targetPorts,\n clusterIP,\n externalIP,\n created,\n];\n","import { CellContext } from '@tanstack/react-table';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\n\nimport { Link } from '@@/Link';\n\nimport { Service } from '../../../types';\n\nimport { columnHelper } from './helper';\n\nexport const application = columnHelper.accessor(\n (row) => (row.Applications ? row.Applications[0].Name : ''),\n {\n header: 'Application',\n id: 'application',\n cell: Cell,\n }\n);\n\nfunction Cell({ row, getValue }: CellContext<Service, string>) {\n const appName = getValue();\n const environmentId = useEnvironmentId();\n\n return appName ? (\n <Link\n to=\"kubernetes.applications.application\"\n params={{\n endpointId: environmentId,\n namespace: row.original.Namespace,\n name: appName,\n }}\n title={appName}\n >\n {appName}\n </Link>\n ) : (\n '-'\n );\n}\n","import { formatDate } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor(\n (row) => {\n const owner = row.Labels?.['io.portainer.kubernetes.application.owner'];\n const date = formatDate(row.CreationTimestamp);\n return owner ? `${date} by ${owner}` : date;\n },\n {\n header: 'Created',\n id: 'created',\n cell: ({ row }) => {\n const date = formatDate(row.original.CreationTimestamp);\n\n const owner =\n row.original.Labels?.['io.portainer.kubernetes.application.owner'];\n\n return owner ? `${date} by ${owner}` : date;\n },\n }\n);\n","import { Shuffle, Trash2 } from 'lucide-react';\nimport { useRouter } from '@uirouter/react';\nimport clsx from 'clsx';\nimport { Row } from '@tanstack/react-table';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport {\n Authorized,\n useAuthorizations,\n useCurrentUser,\n} from '@/react/hooks/useUser';\nimport { notifyError, notifySuccess } from '@/portainer/services/notifications';\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { Datatable, Table, TableSettingsMenu } from '@@/datatables';\nimport { confirmDelete } from '@@/modals/confirm';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport {\n useMutationDeleteServices,\n useServicesForCluster,\n} from '../../service';\nimport { Service } from '../../types';\nimport { DefaultDatatableSettings } from '../../../datatables/DefaultDatatableSettings';\nimport { isSystemNamespace } from '../../../namespaces/utils';\nimport { useNamespaces } from '../../../namespaces/queries';\nimport { SystemResourceDescription } from '../../../datatables/SystemResourceDescription';\n\nimport { columns } from './columns';\nimport { createStore } from './datatable-store';\n\nconst storageKey = 'k8sServicesDatatable';\nconst settingsStore = createStore(storageKey);\n\nexport function ServicesDatatable() {\n const tableState = useTableState(settingsStore, storageKey);\n const environmentId = useEnvironmentId();\n const { data: namespaces, ...namespacesQuery } = useNamespaces(environmentId);\n const namespaceNames = (namespaces && Object.keys(namespaces)) || [];\n const { data: services, ...servicesQuery } = useServicesForCluster(\n environmentId,\n namespaceNames,\n {\n autoRefreshRate: tableState.autoRefreshRate * 1000,\n }\n );\n\n const readOnly = !useAuthorizations(['K8sServiceW']);\n const { isAdmin } = useCurrentUser();\n\n const filteredServices = services?.filter(\n (service) =>\n (isAdmin && tableState.showSystemResources) ||\n !isSystemNamespace(service.Namespace)\n );\n\n return (\n <Datatable\n dataset={filteredServices || []}\n columns={columns}\n settingsManager={tableState}\n isLoading={servicesQuery.isLoading || namespacesQuery.isLoading}\n emptyContentLabel=\"No services found\"\n title=\"Services\"\n titleIcon={Shuffle}\n getRowId={(row) => row.UID}\n isRowSelectable={(row) => !isSystemNamespace(row.original.Namespace)}\n disableSelect={readOnly}\n renderTableActions={(selectedRows) => (\n <TableActions selectedItems={selectedRows} />\n )}\n renderTableSettings={() => (\n <TableSettingsMenu>\n <DefaultDatatableSettings\n settings={tableState}\n hideShowSystemResources={!isAdmin}\n />\n </TableSettingsMenu>\n )}\n description={\n <SystemResourceDescription\n showSystemResources={tableState.showSystemResources || !isAdmin}\n />\n }\n renderRow={servicesRenderRow}\n />\n );\n}\n\n// needed to apply custom styling to the row cells and not globally.\n// required in the AC's for this ticket.\nfunction servicesRenderRow(row: Row<Service>, highlightedItemId?: string) {\n return (\n <Table.Row<Service>\n cells={row.getVisibleCells()}\n className={clsx('[&>td]:!py-4 [&>td]:!align-top', {\n active: highlightedItemId === row.id,\n })}\n />\n );\n}\n\ninterface SelectedService {\n Namespace: string;\n Name: string;\n}\n\ntype TableActionsProps = {\n selectedItems: Service[];\n};\n\nfunction TableActions({ selectedItems }: TableActionsProps) {\n const environmentId = useEnvironmentId();\n const deleteServicesMutation = useMutationDeleteServices(environmentId);\n const router = useRouter();\n\n async function handleRemoveClick(services: SelectedService[]) {\n const confirmed = await confirmDelete(\n <>\n <p>{`Are you sure you want to remove the selected ${pluralize(\n services.length,\n 'service'\n )}?`}</p>\n <ul className=\"pl-6\">\n {services.map((s, index) => (\n <li key={index}>\n {s.Namespace}/{s.Name}\n </li>\n ))}\n </ul>\n </>\n );\n if (!confirmed) {\n return null;\n }\n\n const payload: Record<string, string[]> = {};\n services.forEach((service) => {\n payload[service.Namespace] = payload[service.Namespace] || [];\n payload[service.Namespace].push(service.Name);\n });\n\n deleteServicesMutation.mutate(\n { environmentId, data: payload },\n {\n onSuccess: () => {\n notifySuccess(\n 'Services successfully removed',\n services.map((s) => `${s.Namespace}/${s.Name}`).join(', ')\n );\n router.stateService.reload();\n },\n onError: (error) => {\n notifyError(\n 'Unable to delete service(s)',\n error as Error,\n services.map((s) => `${s.Namespace}/${s.Name}`).join(', ')\n );\n },\n }\n );\n return services;\n }\n\n return (\n <div className=\"servicesDatatable-actions\">\n <Authorized authorizations=\"K8sServicesW\">\n <Button\n className=\"btn-wrapper\"\n color=\"dangerlight\"\n disabled={selectedItems.length === 0}\n onClick={() => handleRemoveClick(selectedItems)}\n icon={Trash2}\n >\n Remove\n </Button>\n\n <Link\n to=\"kubernetes.deploy\"\n params={{ referrer: 'kubernetes.services' }}\n className=\"space-left hover:no-decoration\"\n >\n <Button className=\"btn-wrapper\" color=\"primary\" icon=\"plus\">\n Create from manifest\n </Button>\n </Link>\n </Authorized>\n </div>\n );\n}\n","import { refreshableSettings, createPersistedStore } from '@@/datatables/types';\n\nimport {\n systemResourcesSettings,\n TableSettings,\n} from '../../../datatables/DefaultDatatableSettings';\n\nexport function createStore(storageKey: string) {\n return createPersistedStore<TableSettings>(storageKey, 'name', (set) => ({\n ...refreshableSettings(set),\n ...systemResourcesSettings(set),\n }));\n}\n","import { RawParams } from '@uirouter/react';\nimport clsx from 'clsx';\nimport { ReactNode } from 'react';\n\nimport { Icon } from '@@/Icon';\nimport { Link } from '@@/Link';\n\nexport interface Tab {\n name: string;\n icon: ReactNode;\n widget: ReactNode;\n selectedTabParam: string;\n}\n\ninterface Props {\n currentTabIndex: number;\n tabs: Tab[];\n}\n\nexport function WidgetTabs({ currentTabIndex, tabs }: Props) {\n // ensure that the selectedTab param is always valid\n const invalidQueryParamValue = tabs.every(\n (tab) => encodeURIComponent(tab.selectedTabParam) !== tab.selectedTabParam\n );\n\n if (invalidQueryParamValue) {\n throw new Error('Invalid query param value for tab');\n }\n\n return (\n <div className=\"row\">\n <div className=\"col-sm-12 !mb-0\">\n <div className=\"pl-2\">\n {tabs.map(({ name, icon }, index) => (\n <Link\n to=\".\"\n params={{ tab: tabs[index].selectedTabParam }}\n key={index}\n className={clsx(\n 'inline-flex items-center gap-2 border-0 border-b-2 border-solid bg-transparent px-4 py-2',\n currentTabIndex === index\n ? 'border-blue-8 text-blue-8 th-highcontrast:border-blue-6 th-highcontrast:text-blue-6 th-dark:border-blue-6 th-dark:text-blue-6'\n : 'border-transparent'\n )}\n >\n <Icon icon={icon} />\n {name}\n </Link>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\n// findSelectedTabIndex returns the index of the tab, or 0 if none is selected\nexport function findSelectedTabIndex(\n { params }: { params: RawParams },\n tabs: Tab[]\n) {\n const selectedTabParam = params.tab || tabs[0].selectedTabParam;\n const currentTabIndex = tabs.findIndex(\n (tab) => tab.selectedTabParam === selectedTabParam\n );\n return currentTabIndex || 0;\n}\n","import { refreshableSettings, createPersistedStore } from '@@/datatables/types';\n\nimport {\n systemResourcesSettings,\n TableSettings,\n} from './DefaultDatatableSettings';\n\nexport function createStore(storageKey: string) {\n return createPersistedStore<TableSettings>(storageKey, 'name', (set) => ({\n ...refreshableSettings(set),\n ...systemResourcesSettings(set),\n }));\n}\n","import { ConfigMap, Pod } from 'kubernetes-types/core/v1';\n\nimport { Application } from '@/react/kubernetes/applications/types';\nimport { applicationIsKind } from '@/react/kubernetes/applications/utils';\n\n// getIsConfigMapInUse returns true if the configmap is referenced by any\n// application in the cluster\nexport function getIsConfigMapInUse(\n configMap: ConfigMap,\n applications: Application[]\n) {\n return applications.some((app) => {\n const appSpec = applicationIsKind<Pod>('Pod', app)\n ? app?.spec\n : app?.spec?.template?.spec;\n\n const hasEnvVarReference = appSpec?.containers.some((container) =>\n container.env?.some(\n (envVar) =>\n envVar.valueFrom?.configMapKeyRef?.name === configMap.metadata?.name\n )\n );\n const hasVolumeReference = appSpec?.volumes?.some(\n (volume) => volume.configMap?.name === configMap.metadata?.name\n );\n\n return hasEnvVarReference || hasVolumeReference;\n });\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { ConfigMapRowData } from '../types';\n\nexport const columnHelper = createColumnHelper<ConfigMapRowData>();\n","import { CellContext } from '@tanstack/react-table';\n\nimport { isSystemNamespace } from '@/react/kubernetes/namespaces/utils';\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { Link } from '@@/Link';\nimport { Badge } from '@@/Badge';\n\nimport { ConfigMapRowData } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor(\n (row) => {\n const name = row.metadata?.name;\n const namespace = row.metadata?.namespace;\n\n const isSystemToken = name?.includes('default-token-');\n const isInSystemNamespace = namespace\n ? isSystemNamespace(namespace)\n : false;\n const isSystemConfigMap = isSystemToken || isInSystemNamespace;\n\n const hasConfigurationOwner =\n !!row.metadata?.labels?.['io.portainer.kubernetes.configuration.owner'];\n return `${name} ${isSystemConfigMap ? 'system' : ''} ${\n !isSystemToken && !hasConfigurationOwner ? 'external' : ''\n } ${!row.inUse && !isSystemConfigMap ? 'unused' : ''}`;\n },\n {\n header: 'Name',\n cell: Cell,\n id: 'name',\n }\n);\n\nfunction Cell({ row }: CellContext<ConfigMapRowData, string>) {\n const name = row.original.metadata?.name;\n const namespace = row.original.metadata?.namespace;\n\n const isSystemToken = name?.includes('default-token-');\n const isInSystemNamespace = namespace ? isSystemNamespace(namespace) : false;\n const isSystemConfigMap = isSystemToken || isInSystemNamespace;\n\n const hasConfigurationOwner =\n !!row.original.metadata?.labels?.[\n 'io.portainer.kubernetes.configuration.owner'\n ];\n\n return (\n <Authorized authorizations=\"K8sConfigMapsR\" childrenUnauthorized={name}>\n <div className=\"flex\">\n <Link\n to=\"kubernetes.configmaps.configmap\"\n params={{\n namespace: row.original.metadata?.namespace,\n name,\n }}\n title={name}\n className=\"w-fit max-w-xs truncate xl:max-w-sm 2xl:max-w-md\"\n >\n {name}\n </Link>\n {isSystemConfigMap && (\n <Badge type=\"success\" className=\"ml-2\">\n system\n </Badge>\n )}\n {!isSystemToken && !hasConfigurationOwner && (\n <Badge className=\"ml-2\">external</Badge>\n )}\n {!row.original.inUse && !isSystemConfigMap && (\n <Badge type=\"warn\" className=\"ml-2\">\n unused\n </Badge>\n )}\n </div>\n </Authorized>\n );\n}\n","import { Row } from '@tanstack/react-table';\n\nimport { filterHOC } from '@/react/components/datatables/Filter';\n\nimport { Link } from '@@/Link';\n\nimport { ConfigMapRowData } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const namespace = columnHelper.accessor(\n (row) => row.metadata?.namespace,\n {\n header: 'Namespace',\n id: 'namespace',\n cell: ({ getValue }) => {\n const namespace = getValue();\n\n return (\n <Link\n to=\"kubernetes.resourcePools.resourcePool\"\n params={{\n id: namespace,\n }}\n title={namespace}\n >\n {namespace}\n </Link>\n );\n },\n meta: {\n filter: filterHOC('Filter by namespace'),\n },\n enableColumnFilter: true,\n filterFn: (\n row: Row<ConfigMapRowData>,\n _columnId: string,\n filterValue: string[]\n ) =>\n filterValue.length === 0 ||\n filterValue.includes(row.original.metadata?.namespace ?? ''),\n }\n);\n","import { formatDate } from '@/portainer/filters/filters';\n\nimport { ConfigMapRowData } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor((row) => getCreatedAtText(row), {\n header: 'Created',\n id: 'created',\n cell: ({ row }) => getCreatedAtText(row.original),\n});\n\nfunction getCreatedAtText(row: ConfigMapRowData) {\n const owner =\n row.metadata?.labels?.['io.portainer.kubernetes.configuration.owner'];\n const date = formatDate(row.metadata?.creationTimestamp);\n return owner ? `${date} by ${owner}` : date;\n}\n","import { name } from './name';\nimport { namespace } from './namespace';\nimport { created } from './created';\n\nexport const columns = [name, namespace, created];\n","import { useMemo } from 'react';\nimport { FileCode, Plus, Trash2 } from 'lucide-react';\nimport { ConfigMap } from 'kubernetes-types/core/v1';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport {\n Authorized,\n useAuthorizations,\n useCurrentUser,\n} from '@/react/hooks/useUser';\nimport { useNamespaces } from '@/react/kubernetes/namespaces/queries';\nimport { DefaultDatatableSettings } from '@/react/kubernetes/datatables/DefaultDatatableSettings';\nimport { createStore } from '@/react/kubernetes/datatables/default-kube-datatable-store';\nimport { isSystemNamespace } from '@/react/kubernetes/namespaces/utils';\nimport { SystemResourceDescription } from '@/react/kubernetes/datatables/SystemResourceDescription';\nimport { useApplicationsForCluster } from '@/react/kubernetes/applications/application.queries';\nimport { Application } from '@/react/kubernetes/applications/types';\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { Datatable, TableSettingsMenu } from '@@/datatables';\nimport { confirmDelete } from '@@/modals/confirm';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport {\n useConfigMapsForCluster,\n useMutationDeleteConfigMaps,\n} from '../../configmap.service';\nimport { IndexOptional } from '../../types';\n\nimport { getIsConfigMapInUse } from './utils';\nimport { ConfigMapRowData } from './types';\nimport { columns } from './columns';\n\nconst storageKey = 'k8sConfigMapsDatatable';\nconst settingsStore = createStore(storageKey);\n\nexport function ConfigMapsDatatable() {\n const tableState = useTableState(settingsStore, storageKey);\n const readOnly = !useAuthorizations(['K8sConfigMapsW']);\n const { isAdmin } = useCurrentUser();\n\n const environmentId = useEnvironmentId();\n const { data: namespaces, ...namespacesQuery } = useNamespaces(\n environmentId,\n {\n autoRefreshRate: tableState.autoRefreshRate * 1000,\n }\n );\n const namespaceNames = Object.keys(namespaces || {});\n const { data: configMaps, ...configMapsQuery } = useConfigMapsForCluster(\n environmentId,\n namespaceNames,\n {\n autoRefreshRate: tableState.autoRefreshRate * 1000,\n }\n );\n const { data: applications, ...applicationsQuery } =\n useApplicationsForCluster(environmentId, namespaceNames);\n\n const filteredConfigMaps = useMemo(\n () =>\n configMaps?.filter(\n (configMap) =>\n (isAdmin && tableState.showSystemResources) ||\n !isSystemNamespace(configMap.metadata?.namespace ?? '')\n ) || [],\n [configMaps, tableState, isAdmin]\n );\n const configMapRowData = useConfigMapRowData(\n filteredConfigMaps,\n applications ?? [],\n applicationsQuery.isLoading\n );\n\n return (\n <Datatable<IndexOptional<ConfigMapRowData>>\n dataset={configMapRowData}\n columns={columns}\n settingsManager={tableState}\n isLoading={configMapsQuery.isLoading || namespacesQuery.isLoading}\n emptyContentLabel=\"No ConfigMaps found\"\n title=\"ConfigMaps\"\n titleIcon={FileCode}\n getRowId={(row) => row.metadata?.uid ?? ''}\n isRowSelectable={(row) =>\n !isSystemNamespace(row.original.metadata?.namespace ?? '')\n }\n disableSelect={readOnly}\n renderTableActions={(selectedRows) => (\n <TableActions selectedItems={selectedRows} />\n )}\n renderTableSettings={() => (\n <TableSettingsMenu>\n <DefaultDatatableSettings\n settings={tableState}\n hideShowSystemResources={!isAdmin}\n />\n </TableSettingsMenu>\n )}\n description={\n <SystemResourceDescription\n showSystemResources={tableState.showSystemResources || !isAdmin}\n />\n }\n />\n );\n}\n\n// useConfigMapRowData appends the `inUse` property to the ConfigMap data (for the unused badge in the name column)\n// and wraps with useMemo to prevent unnecessary calculations\nfunction useConfigMapRowData(\n configMaps: ConfigMap[],\n applications: Application[],\n applicationsLoading: boolean\n): ConfigMapRowData[] {\n return useMemo(\n () =>\n configMaps.map((configMap) => ({\n ...configMap,\n inUse:\n // if the apps are loading, set inUse to true to hide the 'unused' badge\n applicationsLoading || getIsConfigMapInUse(configMap, applications),\n })),\n [configMaps, applicationsLoading, applications]\n );\n}\n\nfunction TableActions({\n selectedItems,\n}: {\n selectedItems: ConfigMapRowData[];\n}) {\n const environmentId = useEnvironmentId();\n const deleteConfigMapMutation = useMutationDeleteConfigMaps(environmentId);\n\n async function handleRemoveClick(configMaps: ConfigMap[]) {\n const confirmed = await confirmDelete(\n `Are you sure you want to remove the selected ${pluralize(\n configMaps.length,\n 'ConfigMap'\n )}?`\n );\n if (!confirmed) {\n return;\n }\n\n const configMapsToDelete = configMaps.map((configMap) => ({\n namespace: configMap.metadata?.namespace ?? '',\n name: configMap.metadata?.name ?? '',\n }));\n\n await deleteConfigMapMutation.mutateAsync(configMapsToDelete);\n }\n\n return (\n <Authorized authorizations=\"K8sConfigMapsW\">\n <Button\n className=\"btn-wrapper\"\n color=\"dangerlight\"\n disabled={selectedItems.length === 0}\n onClick={async () => {\n handleRemoveClick(selectedItems);\n }}\n icon={Trash2}\n data-cy=\"k8sConfig-removeConfigButton\"\n >\n Remove\n </Button>\n <Link to=\"kubernetes.configmaps.new\" className=\"ml-1\">\n <Button\n className=\"btn-wrapper\"\n color=\"secondary\"\n icon={Plus}\n data-cy=\"k8sConfig-addConfigWithFormButton\"\n >\n Add with form\n </Button>\n </Link>\n <Link\n to=\"kubernetes.deploy\"\n params={{\n referrer: 'kubernetes.configurations',\n tab: 'configmaps',\n }}\n className=\"ml-1\"\n data-cy=\"k8sConfig-deployFromManifestButton\"\n >\n <Button className=\"btn-wrapper\" color=\"primary\" icon={Plus}>\n Create from manifest\n </Button>\n </Link>\n </Authorized>\n );\n}\n","import { Secret, Pod } from 'kubernetes-types/core/v1';\n\nimport { Application } from '@/react/kubernetes/applications/types';\nimport { applicationIsKind } from '@/react/kubernetes/applications/utils';\n\n// getIsSecretInUse returns true if the secret is referenced by any\n// application in the cluster\nexport function getIsSecretInUse(secret: Secret, applications: Application[]) {\n return applications.some((app) => {\n const appSpec = applicationIsKind<Pod>('Pod', app)\n ? app?.spec\n : app?.spec?.template?.spec;\n\n const hasEnvVarReference = appSpec?.containers.some((container) =>\n container.env?.some(\n (envVar) =>\n envVar.valueFrom?.secretKeyRef?.name === secret.metadata?.name\n )\n );\n const hasVolumeReference = appSpec?.volumes?.some(\n (volume) => volume.secret?.secretName === secret.metadata?.name\n );\n\n return hasEnvVarReference || hasVolumeReference;\n });\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { SecretRowData } from '../types';\n\nexport const columnHelper = createColumnHelper<SecretRowData>();\n","import { CellContext } from '@tanstack/react-table';\n\nimport { isSystemNamespace } from '@/react/kubernetes/namespaces/utils';\nimport { Authorized } from '@/react/hooks/useUser';\n\nimport { Link } from '@@/Link';\nimport { Badge } from '@@/Badge';\n\nimport { SecretRowData } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor(\n (row) => {\n const name = row.metadata?.name;\n const namespace = row.metadata?.namespace;\n\n const isSystemToken = name?.includes('default-token-');\n const isInSystemNamespace = namespace\n ? isSystemNamespace(namespace)\n : false;\n const isRegistrySecret =\n row.metadata?.annotations?.['portainer.io/registry.id'];\n const isSystemSecret =\n isSystemToken || isInSystemNamespace || isRegistrySecret;\n\n const hasConfigurationOwner =\n !!row.metadata?.labels?.['io.portainer.kubernetes.configuration.owner'];\n return `${name} ${isSystemSecret ? 'system' : ''} ${\n !isSystemToken && !hasConfigurationOwner ? 'external' : ''\n } ${!row.inUse && !isSystemSecret ? 'unused' : ''}`;\n },\n {\n header: 'Name',\n cell: Cell,\n id: 'name',\n }\n);\n\nfunction Cell({ row }: CellContext<SecretRowData, string>) {\n const name = row.original.metadata?.name;\n const namespace = row.original.metadata?.namespace;\n\n const isSystemToken = name?.includes('default-token-');\n const isInSystemNamespace = namespace ? isSystemNamespace(namespace) : false;\n const isSystemSecret = isSystemToken || isInSystemNamespace;\n\n const hasConfigurationOwner =\n !!row.original.metadata?.labels?.[\n 'io.portainer.kubernetes.configuration.owner'\n ];\n\n return (\n <Authorized authorizations=\"K8sSecretsR\" childrenUnauthorized={name}>\n <div className=\"flex w-fit\">\n <Link\n to=\"kubernetes.secrets.secret\"\n params={{\n namespace: row.original.metadata?.namespace,\n name,\n }}\n title={name}\n className=\"w-fit max-w-xs truncate xl:max-w-sm 2xl:max-w-md\"\n >\n {name}\n </Link>\n {isSystemSecret && (\n <Badge type=\"success\" className=\"ml-2\">\n system\n </Badge>\n )}\n {!isSystemToken && !hasConfigurationOwner && (\n <Badge className=\"ml-2\">external</Badge>\n )}\n {!row.original.inUse && !isSystemSecret && (\n <Badge type=\"warn\" className=\"ml-2\">\n unused\n </Badge>\n )}\n </div>\n </Authorized>\n );\n}\n","import { Row } from '@tanstack/react-table';\n\nimport { filterHOC } from '@/react/components/datatables/Filter';\n\nimport { Link } from '@@/Link';\n\nimport { SecretRowData } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const namespace = columnHelper.accessor(\n (row) => row.metadata?.namespace,\n {\n header: 'Namespace',\n id: 'namespace',\n cell: ({ getValue }) => {\n const namespace = getValue();\n\n return (\n <Link\n to=\"kubernetes.resourcePools.resourcePool\"\n params={{\n id: namespace,\n }}\n title={namespace}\n >\n {namespace}\n </Link>\n );\n },\n meta: {\n filter: filterHOC('Filter by namespace'),\n },\n enableColumnFilter: true,\n filterFn: (\n row: Row<SecretRowData>,\n _columnId: string,\n filterValue: string[]\n ) =>\n filterValue.length === 0 ||\n filterValue.includes(row.original.metadata?.namespace ?? ''),\n }\n);\n","import { formatDate } from '@/portainer/filters/filters';\n\nimport { SecretRowData } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor((row) => getCreatedAtText(row), {\n header: 'Created',\n id: 'created',\n cell: ({ row }) => getCreatedAtText(row.original),\n});\n\nfunction getCreatedAtText(row: SecretRowData) {\n const owner =\n row.metadata?.labels?.['io.portainer.kubernetes.configuration.owner'];\n const date = formatDate(row.metadata?.creationTimestamp);\n return owner ? `${date} by ${owner}` : date;\n}\n","import { name } from './name';\nimport { namespace } from './namespace';\nimport { created } from './created';\n\nexport const columns = [name, namespace, created];\n","import { useMemo } from 'react';\nimport { Lock, Plus, Trash2 } from 'lucide-react';\nimport { Secret } from 'kubernetes-types/core/v1';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport {\n Authorized,\n useAuthorizations,\n useCurrentUser,\n} from '@/react/hooks/useUser';\nimport { useNamespaces } from '@/react/kubernetes/namespaces/queries';\nimport { DefaultDatatableSettings } from '@/react/kubernetes/datatables/DefaultDatatableSettings';\nimport { createStore } from '@/react/kubernetes/datatables/default-kube-datatable-store';\nimport { isSystemNamespace } from '@/react/kubernetes/namespaces/utils';\nimport { SystemResourceDescription } from '@/react/kubernetes/datatables/SystemResourceDescription';\nimport { useApplicationsForCluster } from '@/react/kubernetes/applications/application.queries';\nimport { Application } from '@/react/kubernetes/applications/types';\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { Datatable, TableSettingsMenu } from '@@/datatables';\nimport { confirmDelete } from '@@/modals/confirm';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport {\n useSecretsForCluster,\n useMutationDeleteSecrets,\n} from '../../secret.service';\nimport { IndexOptional } from '../../types';\n\nimport { getIsSecretInUse } from './utils';\nimport { SecretRowData } from './types';\nimport { columns } from './columns';\n\nconst storageKey = 'k8sSecretsDatatable';\nconst settingsStore = createStore(storageKey);\n\nexport function SecretsDatatable() {\n const tableState = useTableState(settingsStore, storageKey);\n const readOnly = !useAuthorizations(['K8sSecretsW']);\n const { isAdmin } = useCurrentUser();\n\n const environmentId = useEnvironmentId();\n const { data: namespaces, ...namespacesQuery } = useNamespaces(\n environmentId,\n {\n autoRefreshRate: tableState.autoRefreshRate * 1000,\n }\n );\n const namespaceNames = Object.keys(namespaces || {});\n const { data: secrets, ...secretsQuery } = useSecretsForCluster(\n environmentId,\n namespaceNames,\n {\n autoRefreshRate: tableState.autoRefreshRate * 1000,\n }\n );\n const { data: applications, ...applicationsQuery } =\n useApplicationsForCluster(environmentId, namespaceNames);\n\n const filteredSecrets = useMemo(\n () =>\n secrets?.filter(\n (secret) =>\n (isAdmin && tableState.showSystemResources) ||\n !isSystemNamespace(secret.metadata?.namespace ?? '')\n ) || [],\n [secrets, tableState, isAdmin]\n );\n const secretRowData = useSecretRowData(\n filteredSecrets,\n applications ?? [],\n applicationsQuery.isLoading\n );\n\n return (\n <Datatable<IndexOptional<SecretRowData>>\n dataset={secretRowData}\n columns={columns}\n settingsManager={tableState}\n isLoading={secretsQuery.isLoading || namespacesQuery.isLoading}\n emptyContentLabel=\"No secrets found\"\n title=\"Secrets\"\n titleIcon={Lock}\n getRowId={(row) => row.metadata?.uid ?? ''}\n isRowSelectable={(row) =>\n !isSystemNamespace(row.original.metadata?.namespace ?? '')\n }\n disableSelect={readOnly}\n renderTableActions={(selectedRows) => (\n <TableActions selectedItems={selectedRows} />\n )}\n renderTableSettings={() => (\n <TableSettingsMenu>\n <DefaultDatatableSettings\n settings={tableState}\n hideShowSystemResources={!isAdmin}\n />\n </TableSettingsMenu>\n )}\n description={\n <SystemResourceDescription\n showSystemResources={tableState.showSystemResources || !isAdmin}\n />\n }\n />\n );\n}\n\n// useSecretRowData appends the `inUse` property to the secret data (for the unused badge in the name column)\n// and wraps with useMemo to prevent unnecessary calculations\nfunction useSecretRowData(\n secrets: Secret[],\n applications: Application[],\n applicationsLoading: boolean\n): SecretRowData[] {\n return useMemo(\n () =>\n secrets.map((secret) => ({\n ...secret,\n inUse:\n // if the apps are loading, set inUse to true to hide the 'unused' badge\n applicationsLoading || getIsSecretInUse(secret, applications),\n })),\n [secrets, applicationsLoading, applications]\n );\n}\n\nfunction TableActions({ selectedItems }: { selectedItems: SecretRowData[] }) {\n const environmentId = useEnvironmentId();\n const deleteSecretMutation = useMutationDeleteSecrets(environmentId);\n\n async function handleRemoveClick(secrets: SecretRowData[]) {\n const confirmed = await confirmDelete(\n `Are you sure you want to remove the selected ${pluralize(\n secrets.length,\n 'secret'\n )}?`\n );\n if (!confirmed) {\n return;\n }\n\n const secretsToDelete = secrets.map((secret) => ({\n namespace: secret.metadata?.namespace ?? '',\n name: secret.metadata?.name ?? '',\n }));\n\n await deleteSecretMutation.mutateAsync(secretsToDelete);\n }\n\n return (\n <Authorized authorizations=\"K8sSecretsW\">\n <Button\n className=\"btn-wrapper\"\n color=\"dangerlight\"\n disabled={selectedItems.length === 0}\n onClick={async () => {\n handleRemoveClick(selectedItems);\n }}\n icon={Trash2}\n data-cy=\"k8sSecret-removeSecretButton\"\n >\n Remove\n </Button>\n <Link to=\"kubernetes.secrets.new\" className=\"ml-1\">\n <Button\n className=\"btn-wrapper\"\n color=\"secondary\"\n icon={Plus}\n data-cy=\"k8sSecret-addSecretWithFormButton\"\n >\n Add with form\n </Button>\n </Link>\n <Link\n to=\"kubernetes.deploy\"\n params={{\n referrer: 'kubernetes.configurations',\n tab: 'secrets',\n }}\n className=\"ml-1\"\n data-cy=\"k8sSecret-deployFromManifestButton\"\n >\n <Button className=\"btn-wrapper\" color=\"primary\" icon={Plus}>\n Create from manifest\n </Button>\n </Link>\n </Authorized>\n );\n}\n","import { FileCode, Lock } from 'lucide-react';\nimport { useCurrentStateAndParams } from '@uirouter/react';\n\nimport { PageHeader } from '@@/PageHeader';\nimport { Tab, WidgetTabs, findSelectedTabIndex } from '@@/Widget/WidgetTabs';\n\nimport { ConfigMapsDatatable } from './ConfigMapsDatatable';\nimport { SecretsDatatable } from './SecretsDatatable';\n\nconst tabs: Tab[] = [\n {\n name: 'ConfigMaps',\n icon: FileCode,\n widget: <ConfigMapsDatatable />,\n selectedTabParam: 'configmaps',\n },\n {\n name: 'Secrets',\n icon: Lock,\n widget: <SecretsDatatable />,\n selectedTabParam: 'secrets',\n },\n];\n\nexport function ConfigmapsAndSecretsView() {\n const currentTabIndex = findSelectedTabIndex(\n useCurrentStateAndParams(),\n tabs\n );\n return (\n <>\n <PageHeader\n title=\"ConfigMap & Secret lists\"\n breadcrumbs=\"ConfigMaps & Secrets\"\n reload\n />\n <>\n <WidgetTabs tabs={tabs} currentTabIndex={currentTabIndex} />\n <div className=\"content\">{tabs[currentTabIndex].widget}</div>\n </>\n </>\n );\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { IngressesDatatableView } from '@/react/kubernetes/ingresses/IngressDatatable';\nimport { CreateIngressView } from '@/react/kubernetes/ingresses/CreateIngressView';\nimport { DashboardView } from '@/react/kubernetes/dashboard/DashboardView';\nimport { ServicesView } from '@/react/kubernetes/services/ServicesView';\nimport { ConsoleView } from '@/react/kubernetes/applications/ConsoleView';\nimport { ConfigmapsAndSecretsView } from '@/react/kubernetes/configs/ListView/ConfigmapsAndSecretsView';\n\nexport const viewsModule = angular\n .module('portainer.kubernetes.react.views', [])\n .component(\n 'kubernetesServicesView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ServicesView))), [])\n )\n .component(\n 'kubernetesIngressesView',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(IngressesDatatableView))),\n []\n )\n )\n .component(\n 'kubernetesIngressesCreateView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(CreateIngressView))), [])\n )\n .component(\n 'kubernetesConfigMapsAndSecretsView',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(ConfigmapsAndSecretsView))),\n []\n )\n )\n .component(\n 'kubernetesDashboardView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(DashboardView))), [])\n )\n .component(\n 'kubernetesConsoleView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ConsoleView))), [])\n ).name;\n","import { PageHeader } from '@@/PageHeader';\n\nimport { ServicesDatatable } from './ServicesDatatable';\n\nexport function ServicesView() {\n return (\n <>\n <PageHeader title=\"Service list\" breadcrumbs=\"Services\" reload />\n <ServicesDatatable />\n </>\n );\n}\n","import { PageHeader } from '@@/PageHeader';\n\nimport { IngressDatatable } from './IngressDatatable';\n\nexport function IngressesDatatableView() {\n return (\n <>\n <PageHeader\n title=\"Ingress list\"\n breadcrumbs={[\n {\n label: 'Ingresses',\n },\n ]}\n reload\n />\n <IngressDatatable />\n </>\n );\n}\n","import { useState, useEffect, useMemo, ReactNode, useCallback } from 'react';\nimport { useCurrentStateAndParams, useRouter } from '@uirouter/react';\nimport { v4 as uuidv4 } from 'uuid';\nimport { debounce } from 'lodash';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport { useConfigurations } from '@/react/kubernetes/configs/queries';\nimport { useNamespaces } from '@/react/kubernetes/namespaces/queries';\nimport { useServices } from '@/react/kubernetes/networks/services/queries';\nimport { notifyError, notifySuccess } from '@/portainer/services/notifications';\nimport { useAuthorizations } from '@/react/hooks/useUser';\n\nimport { Link } from '@@/Link';\nimport { PageHeader } from '@@/PageHeader';\nimport { Option } from '@@/form-components/Input/Select';\nimport { Button } from '@@/buttons';\n\nimport { Ingress, IngressController } from '../types';\nimport {\n useCreateIngress,\n useIngresses,\n useUpdateIngress,\n useIngressControllers,\n} from '../queries';\n\nimport { Rule, Path, Host, GroupedServiceOptions } from './types';\nimport { IngressForm } from './IngressForm';\nimport {\n prepareTLS,\n preparePaths,\n prepareAnnotations,\n prepareRuleFromIngress,\n checkIfPathExistsWithHost,\n} from './utils';\nimport { Annotation } from './Annotations/types';\n\nexport function CreateIngressView() {\n const environmentId = useEnvironmentId();\n const { params } = useCurrentStateAndParams();\n const isAuthorisedToAddEdit = useAuthorizations(['K8sIngressesW']);\n\n const router = useRouter();\n const isEdit = !!params.namespace;\n\n useEffect(() => {\n if (!isAuthorisedToAddEdit) {\n const message = `Not authorized to ${isEdit ? 'edit' : 'add'} ingresses`;\n notifyError('Error', new Error(message));\n router.stateService.go('kubernetes.ingresses');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAuthorisedToAddEdit, isEdit]);\n\n const [namespace, setNamespace] = useState<string>(params.namespace || '');\n const [ingressRule, setIngressRule] = useState<Rule>({} as Rule);\n // isEditClassNameSet is used to prevent premature validation of the classname in the edit view\n const [isEditClassNameSet, setIsEditClassNameSet] = useState<boolean>(false);\n\n const [errors, setErrors] = useState<Record<string, ReactNode>>(\n {} as Record<string, string>\n );\n\n const { data: namespaces, ...namespacesQuery } = useNamespaces(environmentId);\n\n const { data: allServices } = useServices(environmentId, namespace);\n const configResults = useConfigurations(environmentId, namespace);\n const ingressesResults = useIngresses(\n environmentId,\n namespaces ? Object.keys(namespaces || {}) : []\n );\n const { data: ingressControllers, ...ingressControllersQuery } =\n useIngressControllers(environmentId, namespace);\n\n const createIngressMutation = useCreateIngress();\n const updateIngressMutation = useUpdateIngress();\n\n const [ingressNames, ingresses, ruleCounterByNamespace, hostWithTLS] =\n useMemo((): [\n string[],\n Ingress[],\n Record<string, number>,\n Record<string, string>\n ] => {\n const ruleCounterByNamespace: Record<string, number> = {};\n const hostWithTLS: Record<string, string> = {};\n ingressesResults.data?.forEach((ingress) => {\n ingress.TLS?.forEach((tls) => {\n tls.Hosts.forEach((host) => {\n hostWithTLS[host] = tls.SecretName;\n });\n });\n });\n const ingressNames: string[] = [];\n ingressesResults.data?.forEach((ing) => {\n ruleCounterByNamespace[ing.Namespace] =\n ruleCounterByNamespace[ing.Namespace] || 0;\n const n = ing.Name.match(/^(.*)-(\\d+)$/);\n if (n?.length === 3) {\n ruleCounterByNamespace[ing.Namespace] = Math.max(\n ruleCounterByNamespace[ing.Namespace],\n Number(n[2])\n );\n }\n if (ing.Namespace === namespace) {\n ingressNames.push(ing.Name);\n }\n });\n return [\n ingressNames || [],\n ingressesResults.data || [],\n ruleCounterByNamespace,\n hostWithTLS,\n ];\n }, [ingressesResults.data, namespace]);\n\n const namespaceOptions = useMemo(\n () =>\n Object.entries(namespaces || {})\n .filter(([, nsValue]) => !nsValue.IsSystem)\n .map(([nsKey]) => ({\n label: nsKey,\n value: nsKey,\n })),\n [namespaces]\n );\n\n const serviceOptions: GroupedServiceOptions = useMemo(() => {\n const groupedOptions: GroupedServiceOptions = (\n allServices?.reduce<GroupedServiceOptions>(\n (groupedOptions, service) => {\n // add a new option to the group that matches the service type\n const newGroupedOptions = groupedOptions.map((group) => {\n if (group.label === service.Type) {\n return {\n ...group,\n options: [\n ...group.options,\n {\n label: service.Name,\n selectedLabel: `${service.Name} (${service.Type})`,\n value: service.Name,\n },\n ],\n };\n }\n return group;\n });\n return newGroupedOptions;\n },\n [\n { label: 'ClusterIP', options: [] },\n { label: 'NodePort', options: [] },\n { label: 'LoadBalancer', options: [] },\n ] as GroupedServiceOptions\n ) || []\n ).filter((group) => group.options.length > 0);\n return groupedOptions;\n }, [allServices]);\n\n const servicePorts = useMemo(\n () =>\n allServices\n ? Object.fromEntries(\n allServices?.map((service) => [\n service.Name,\n service.Ports.map((port) => ({\n label: String(port.Port),\n value: String(port.Port),\n })),\n ])\n )\n : {},\n [allServices]\n );\n\n const existingIngressClass = useMemo(\n () =>\n ingressControllers?.find(\n (controller) =>\n controller.ClassName === ingressRule.IngressClassName ||\n (controller.Type === 'custom' && ingressRule.IngressClassName === '')\n ),\n [ingressControllers, ingressRule.IngressClassName]\n );\n\n const ingressClassOptions: Option<string>[] = useMemo(() => {\n const allowedIngressClassOptions =\n ingressControllers\n ?.filter((controller) => !!controller.Availability)\n .map((cls) => ({\n label: cls.ClassName,\n value: cls.ClassName,\n })) || [];\n\n // if the ingress class is not set, return only the allowed ingress classes\n if (ingressRule.IngressClassName === '' || !isEdit) {\n return allowedIngressClassOptions;\n }\n\n // if the ingress class is set and it exists (even if disallowed), return the allowed ingress classes + the disallowed option\n const disallowedIngressClasses =\n ingressControllers\n ?.filter(\n (controller) =>\n !controller.Availability &&\n existingIngressClass?.ClassName === controller.ClassName\n )\n .map((controller) => ({\n label: `${controller.ClassName} - DISALLOWED`,\n value: controller.ClassName,\n })) || [];\n\n const existingIngressClassFound = ingressControllers?.find(\n (controller) => existingIngressClass?.ClassName === controller.ClassName\n );\n if (existingIngressClassFound) {\n return [...allowedIngressClassOptions, ...disallowedIngressClasses];\n }\n\n // if the ingress class is set and it doesn't exist, return the allowed ingress classes + the not found option\n const notFoundIngressClassOption = {\n label: `${ingressRule.IngressClassName} - NOT FOUND`,\n value: ingressRule.IngressClassName || '',\n };\n return [...allowedIngressClassOptions, notFoundIngressClassOption];\n }, [\n existingIngressClass?.ClassName,\n ingressControllers,\n ingressRule.IngressClassName,\n isEdit,\n ]);\n\n const handleIngressChange = useCallback(\n (key: string, val: string) => {\n setIngressRule((prevRules) => {\n const rule = { ...prevRules, [key]: val };\n if (key === 'IngressClassName') {\n rule.IngressType = ingressControllers?.find(\n (c) => c.ClassName === val\n )?.Type;\n }\n return rule;\n });\n },\n [ingressControllers]\n );\n\n // when them selected ingress class option update is no longer available set to an empty value\n useEffect(() => {\n const ingressClasses = ingressClassOptions.map((option) => option.value);\n if (\n !ingressClasses.includes(ingressRule.IngressClassName) &&\n ingressControllersQuery.isSuccess\n ) {\n handleIngressChange('IngressClassName', '');\n }\n }, [\n handleIngressChange,\n ingressClassOptions,\n ingressControllersQuery.isSuccess,\n ingressRule.IngressClassName,\n ]);\n\n const matchedConfigs = configResults?.data?.filter(\n (config) =>\n config.SecretType === 'kubernetes.io/tls' &&\n config.Namespace === namespace\n );\n const tlsOptions: Option<string>[] = useMemo(\n () => [\n { label: 'No TLS', value: '' },\n ...(matchedConfigs?.map((config) => ({\n label: config.Name,\n value: config.Name,\n })) || []),\n ],\n [matchedConfigs]\n );\n\n useEffect(() => {\n if (\n !!params.name &&\n ingressesResults.data &&\n !ingressRule.IngressName &&\n !ingressControllersQuery.isLoading &&\n !ingressControllersQuery.isLoading\n ) {\n // if it is an edit screen, prepare the rule from the ingress\n const ing = ingressesResults.data?.find(\n (ing) => ing.Name === params.name && ing.Namespace === params.namespace\n );\n if (ing) {\n const type = ingressControllers?.find(\n (c) =>\n c.ClassName === ing.ClassName ||\n (c.Type === 'custom' && !ing.ClassName)\n )?.Type;\n const r = prepareRuleFromIngress(ing, type);\n r.IngressType = type || r.IngressType;\n setIngressRule(r);\n setIsEditClassNameSet(true);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n params.name,\n ingressesResults.data,\n ingressControllers,\n ingressRule.IngressName,\n params.namespace,\n ]);\n\n useEffect(() => {\n // for each host, if the tls selection doesn't exist as an option, change it to the first option\n if (ingressRule?.Hosts?.length) {\n ingressRule.Hosts.forEach((host, hIndex) => {\n const secret = host.Secret || '';\n const tlsOptionVals = tlsOptions.map((o) => o.value);\n if (tlsOptions?.length && !tlsOptionVals?.includes(secret)) {\n handleTLSChange(hIndex, tlsOptionVals[0]);\n }\n });\n }\n }, [tlsOptions, ingressRule.Hosts]);\n\n useEffect(() => {\n // for each path in each host, if the service port doesn't exist as an option, change it to the first option\n if (ingressRule?.Hosts?.length) {\n ingressRule.Hosts.forEach((host, hIndex) => {\n host?.Paths?.forEach((path, pIndex) => {\n const serviceName = path.ServiceName;\n const currentServicePorts = servicePorts[serviceName]?.map(\n (p) => p.value\n );\n if (\n currentServicePorts?.length &&\n !currentServicePorts?.includes(String(path.ServicePort))\n ) {\n handlePathChange(\n hIndex,\n pIndex,\n 'ServicePort',\n currentServicePorts[0]\n );\n }\n });\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ingressRule, servicePorts]);\n\n const validate = useCallback(\n (\n ingressRule: Rule,\n ingressNames: string[],\n groupedServiceOptions: GroupedServiceOptions,\n existingIngressClass?: IngressController\n ) => {\n const errors: Record<string, ReactNode> = {};\n const rule = { ...ingressRule };\n\n // User cannot edit the namespace and the ingress name\n if (!isEdit) {\n if (!rule.Namespace) {\n errors.namespace = 'Namespace is required';\n }\n\n const nameRegex = /^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/;\n if (!rule.IngressName) {\n errors.ingressName = 'Ingress name is required';\n } else if (!nameRegex.test(rule.IngressName)) {\n errors.ingressName =\n \"This field must consist of lower case alphanumeric characters or '-', contain at most 63 characters, start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123').\";\n } else if (ingressNames.includes(rule.IngressName)) {\n errors.ingressName = 'Ingress name already exists';\n }\n\n if (\n (!ingressClassOptions.length || !rule.IngressClassName) &&\n ingressControllersQuery.isSuccess\n ) {\n errors.className = 'Ingress class is required';\n }\n }\n\n if (isEdit && !ingressRule.IngressClassName && isEditClassNameSet) {\n errors.className =\n 'No ingress class is currently set for this ingress - use of the Portainer UI requires one to be set.';\n }\n\n if (\n isEdit &&\n (!existingIngressClass ||\n (existingIngressClass && !existingIngressClass.Availability)) &&\n ingressRule.IngressClassName\n ) {\n if (!rule.IngressType) {\n errors.className =\n 'Currently set to an ingress class that cannot be found in the cluster - you must select a valid class.';\n } else {\n errors.className =\n 'Currently set to an ingress class that you do not have access to - you must select a valid class.';\n }\n }\n\n const duplicatedAnnotations: string[] = [];\n const re = /^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$/;\n rule.Annotations?.forEach((a, i) => {\n if (!a.Key) {\n errors[`annotations.key[${i}]`] = 'Key is required.';\n } else if (duplicatedAnnotations.includes(a.Key)) {\n errors[`annotations.key[${i}]`] =\n 'Key is a duplicate of an existing one.';\n } else {\n const key = a.Key.split('/');\n if (key.length > 2) {\n errors[`annotations.key[${i}]`] =\n 'Two segments are allowed, separated by a slash (/): a prefix (optional) and a name.';\n } else if (key.length === 2) {\n if (key[0].length > 253) {\n errors[`annotations.key[${i}]`] =\n \"Prefix (before the slash) can't exceed 253 characters.\";\n } else if (key[1].length > 63) {\n errors[`annotations.key[${i}]`] =\n \"Name (after the slash) can't exceed 63 characters.\";\n } else if (!re.test(key[1])) {\n errors[`annotations.key[${i}]`] =\n 'Start and end with alphanumeric characters only, limiting characters in between to dashes, underscores, and alphanumerics.';\n }\n } else if (key.length === 1) {\n if (key[0].length > 63) {\n errors[`annotations.key[${i}]`] =\n \"Name (the segment after a slash (/), or only segment if no slash) can't exceed 63 characters.\";\n } else if (!re.test(key[0])) {\n errors[`annotations.key[${i}]`] =\n 'Start and end with alphanumeric characters only, limiting characters in between to dashes, underscores, and alphanumerics.';\n }\n }\n }\n if (!a.Value) {\n errors[`annotations.value[${i}]`] = 'Value is required.';\n }\n duplicatedAnnotations.push(a.Key);\n });\n\n const duplicatedHosts: string[] = [];\n // Check if the paths are duplicates\n rule.Hosts?.forEach((host, hi) => {\n if (!host.NoHost) {\n if (!host.Host) {\n errors[`hosts[${hi}].host`] = 'Host is required';\n } else if (duplicatedHosts.includes(host.Host)) {\n errors[`hosts[${hi}].host`] = 'Host cannot be duplicated';\n }\n duplicatedHosts.push(host.Host);\n }\n\n // Validate service\n host.Paths?.forEach((path, pi) => {\n if (!path.ServiceName) {\n errors[`hosts[${hi}].paths[${pi}].servicename`] =\n 'Service name is required';\n }\n\n const availableServiceNames = groupedServiceOptions.flatMap(\n (optionGroup) => optionGroup.options.map((option) => option.value)\n );\n\n if (\n isEdit &&\n path.ServiceName &&\n !availableServiceNames.find((sn) => sn === path.ServiceName)\n ) {\n errors[`hosts[${hi}].paths[${pi}].servicename`] = (\n <span>\n Currently set to {path.ServiceName}, which does not exist. You\n can create a service with this name for a particular deployment\n via{' '}\n <Link\n to=\"kubernetes.applications\"\n params={{ id: environmentId }}\n className=\"text-primary\"\n target=\"_blank\"\n >\n Applications\n </Link>\n , and on returning here it will be picked up.\n </span>\n );\n }\n\n if (!path.ServicePort) {\n errors[`hosts[${hi}].paths[${pi}].serviceport`] =\n 'Service port is required';\n }\n });\n // Validate paths\n const paths = host.Paths.map((path) => path.Route);\n paths.forEach((item, idx) => {\n if (!item) {\n errors[`hosts[${hi}].paths[${idx}].path`] = 'Path cannot be empty';\n } else if (paths.indexOf(item) !== idx) {\n errors[`hosts[${hi}].paths[${idx}].path`] =\n 'Paths cannot be duplicated';\n } else {\n // Validate host and path combination globally\n const isExists = checkIfPathExistsWithHost(\n ingresses,\n host.Host,\n item,\n params.name\n );\n if (isExists) {\n errors[`hosts[${hi}].paths[${idx}].path`] =\n 'Path is already in use with the same host';\n }\n }\n });\n });\n\n setErrors(errors);\n if (Object.keys(errors).length > 0) {\n return false;\n }\n return true;\n },\n [\n isEdit,\n isEditClassNameSet,\n ingressClassOptions.length,\n ingressControllersQuery.isSuccess,\n environmentId,\n ingresses,\n params.name,\n ]\n );\n\n const debouncedValidate = useMemo(() => debounce(validate, 500), [validate]);\n\n useEffect(() => {\n if (namespace.length > 0) {\n debouncedValidate(\n ingressRule,\n ingressNames || [],\n serviceOptions || [],\n existingIngressClass\n );\n }\n }, [\n ingressRule,\n namespace,\n ingressNames,\n serviceOptions,\n existingIngressClass,\n debouncedValidate,\n ]);\n\n return (\n <>\n <PageHeader\n title={isEdit ? 'Edit ingress' : 'Create ingress'}\n breadcrumbs={[\n {\n link: 'kubernetes.ingresses',\n label: 'Ingresses',\n },\n {\n label: isEdit ? 'Edit ingress' : 'Create ingress',\n },\n ]}\n />\n <div className=\"row ingress-rules\">\n <div className=\"col-sm-12\">\n <IngressForm\n environmentID={environmentId}\n isEdit={isEdit}\n rule={ingressRule}\n ingressClassOptions={ingressClassOptions}\n isIngressClassOptionsLoading={ingressControllersQuery.isLoading}\n errors={errors}\n servicePorts={servicePorts}\n tlsOptions={tlsOptions}\n serviceOptions={serviceOptions}\n addNewIngressHost={addNewIngressHost}\n handleTLSChange={handleTLSChange}\n handleHostChange={handleHostChange}\n handleIngressChange={handleIngressChange}\n handlePathChange={handlePathChange}\n addNewIngressRoute={addNewIngressRoute}\n removeIngressHost={removeIngressHost}\n removeIngressRoute={removeIngressRoute}\n addNewAnnotation={addNewAnnotation}\n removeAnnotation={removeAnnotation}\n reloadTLSCerts={reloadTLSCerts}\n handleAnnotationChange={handleAnnotationChange}\n namespace={namespace}\n handleNamespaceChange={handleNamespaceChange}\n namespacesOptions={namespaceOptions}\n isNamespaceOptionsLoading={namespacesQuery.isLoading}\n // wait for ingress results too to set a name that's not taken with handleNamespaceChange()\n isIngressNamesLoading={ingressesResults.isLoading}\n />\n </div>\n {namespace && (\n <div className=\"col-sm-12\">\n <Button\n onClick={() => handleCreateIngressRules()}\n disabled={Object.keys(errors).length > 0}\n >\n {isEdit ? 'Update' : 'Create'}\n </Button>\n </div>\n )}\n </div>\n </>\n );\n\n function handleNamespaceChange(ns: string) {\n setNamespace(ns);\n if (!isEdit) {\n addNewIngress(ns);\n }\n }\n\n function handleTLSChange(hostIndex: number, tls: string) {\n setIngressRule((prevRules) => {\n const rule = { ...prevRules };\n rule.Hosts[hostIndex] = { ...rule.Hosts[hostIndex], Secret: tls };\n return rule;\n });\n }\n\n function handleHostChange(hostIndex: number, val: string) {\n setIngressRule((prevRules) => {\n const rule = { ...prevRules };\n rule.Hosts[hostIndex] = { ...rule.Hosts[hostIndex], Host: val };\n rule.Hosts[hostIndex].Secret =\n hostWithTLS[val] || rule.Hosts[hostIndex].Secret;\n return rule;\n });\n }\n\n function handlePathChange(\n hostIndex: number,\n pathIndex: number,\n key: 'Route' | 'PathType' | 'ServiceName' | 'ServicePort',\n val: string\n ) {\n setIngressRule((prevRules) => {\n const rule = { ...prevRules };\n const h = { ...rule.Hosts[hostIndex] };\n h.Paths[pathIndex] = {\n ...h.Paths[pathIndex],\n [key]: key === 'ServicePort' ? Number(val) : val,\n };\n\n // set the first port of the service as the default port\n if (\n key === 'ServiceName' &&\n servicePorts[val] &&\n servicePorts[val].length > 0\n ) {\n h.Paths[pathIndex].ServicePort = Number(servicePorts[val][0].value);\n }\n\n rule.Hosts[hostIndex] = h;\n return rule;\n });\n }\n\n function handleAnnotationChange(\n index: number,\n key: 'Key' | 'Value',\n val: string\n ) {\n setIngressRule((prevRules) => {\n const rules = { ...prevRules };\n\n rules.Annotations = rules.Annotations || [];\n rules.Annotations[index] = rules.Annotations[index] || {\n Key: '',\n Value: '',\n };\n rules.Annotations[index][key] = val;\n\n return rules;\n });\n }\n\n function addNewIngress(namespace: string) {\n const newKey = `${namespace}-ingress-${\n (ruleCounterByNamespace[namespace] || 0) + 1\n }`;\n\n const host: Host = {\n Host: '',\n Secret: '',\n Paths: [],\n Key: uuidv4(),\n };\n\n const rule: Rule = {\n Key: uuidv4(),\n Namespace: namespace,\n IngressName: newKey,\n IngressClassName: ingressRule.IngressClassName || '',\n IngressType: ingressRule.IngressType || '',\n Hosts: [host],\n };\n\n setIngressRule(rule);\n }\n\n function addNewIngressHost(noHost = false) {\n const rule = { ...ingressRule };\n\n const path: Path = {\n Key: uuidv4(),\n ServiceName: '',\n ServicePort: 0,\n Route: '',\n PathType: 'Prefix',\n };\n\n const host: Host = {\n Host: '',\n Secret: '',\n Paths: noHost ? [path] : [],\n NoHost: noHost,\n Key: uuidv4(),\n };\n\n rule.Hosts.push(host);\n setIngressRule(rule);\n }\n\n function addNewIngressRoute(hostIndex: number) {\n const rule = { ...ingressRule };\n\n const path: Path = {\n ServiceName: '',\n ServicePort: 0,\n Route: '',\n PathType: 'Prefix',\n Key: uuidv4(),\n };\n\n rule.Hosts[hostIndex].Paths.push(path);\n setIngressRule(rule);\n }\n\n function addNewAnnotation(type?: 'rewrite' | 'regex' | 'ingressClass') {\n const rule = { ...ingressRule };\n\n const annotation: Annotation = {\n Key: '',\n Value: '',\n ID: uuidv4(),\n };\n switch (type) {\n case 'rewrite':\n annotation.Key = 'nginx.ingress.kubernetes.io/rewrite-target';\n annotation.Value = '/$1';\n break;\n case 'regex':\n annotation.Key = 'nginx.ingress.kubernetes.io/use-regex';\n annotation.Value = 'true';\n break;\n case 'ingressClass':\n annotation.Key = 'kubernetes.io/ingress.class';\n annotation.Value = '';\n break;\n default:\n break;\n }\n rule.Annotations = rule.Annotations || [];\n rule.Annotations?.push(annotation);\n setIngressRule(rule);\n }\n\n function removeAnnotation(index: number) {\n const rule = { ...ingressRule };\n\n if (index > -1) {\n rule.Annotations?.splice(index, 1);\n }\n\n setIngressRule(rule);\n }\n\n function removeIngressRoute(hostIndex: number, pathIndex: number) {\n const rule = { ...ingressRule, Hosts: [...ingressRule.Hosts] };\n if (hostIndex > -1 && pathIndex > -1) {\n rule.Hosts[hostIndex].Paths.splice(pathIndex, 1);\n }\n setIngressRule(rule);\n }\n\n function removeIngressHost(hostIndex: number) {\n const rule = { ...ingressRule, Hosts: [...ingressRule.Hosts] };\n if (hostIndex > -1) {\n rule.Hosts.splice(hostIndex, 1);\n }\n setIngressRule(rule);\n }\n\n function reloadTLSCerts() {\n configResults.refetch();\n }\n\n function handleCreateIngressRules() {\n const rule = { ...ingressRule };\n\n const classNameToSend =\n rule.IngressClassName === 'none' ? '' : rule.IngressClassName;\n\n const ingress: Ingress = {\n Namespace: namespace,\n Name: rule.IngressName,\n ClassName: classNameToSend,\n Hosts: rule.Hosts.map((host) => host.Host),\n Paths: preparePaths(rule.IngressName, rule.Hosts),\n TLS: prepareTLS(rule.Hosts),\n Annotations: prepareAnnotations(rule.Annotations || []),\n };\n\n if (isEdit) {\n updateIngressMutation.mutate(\n { environmentId, ingress },\n {\n onSuccess: () => {\n notifySuccess('Success', 'Ingress updated successfully');\n router.stateService.go('kubernetes.ingresses');\n },\n }\n );\n } else {\n createIngressMutation.mutate(\n { environmentId, ingress },\n {\n onSuccess: () => {\n notifySuccess('Success', 'Ingress created successfully');\n router.stateService.go('kubernetes.ingresses');\n },\n }\n );\n }\n }\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { error as notifyError } from '@/portainer/services/notifications';\n\nimport { getServices } from './service';\nimport { Service } from './types';\n\nexport function useServices(environmentId: EnvironmentId, namespace: string) {\n return useQuery(\n [\n 'environments',\n environmentId,\n 'kubernetes',\n 'namespaces',\n namespace,\n 'services',\n ],\n () =>\n namespace ? getServices(environmentId, namespace) : ([] as Service[]),\n {\n onError: (err) => {\n notifyError('Failure', err as Error, 'Unable to get services');\n },\n }\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { error as notifyError } from '@/portainer/services/notifications';\nimport { withError } from '@/react-tools/react-query';\n\nimport { getConfigurations, getConfigMapsForCluster } from './service';\n\n// returns a usequery hook for the formatted list of configmaps and secrets\nexport function useConfigurations(\n environmentId: EnvironmentId,\n namespace?: string\n) {\n return useQuery(\n [\n 'environments',\n environmentId,\n 'kubernetes',\n 'namespaces',\n namespace,\n 'configurations',\n ],\n () => (namespace ? getConfigurations(environmentId, namespace) : []),\n {\n onError: (err) => {\n notifyError(\n 'Failure',\n err as Error,\n `Unable to get configurations for namespace ${namespace}`\n );\n },\n enabled: !!namespace,\n }\n );\n}\n\nexport function useConfigurationsForCluster(\n environemtId: EnvironmentId,\n namespaces?: string[]\n) {\n return useQuery(\n ['environments', environemtId, 'kubernetes', 'configurations'],\n () => namespaces && getConfigMapsForCluster(environemtId, namespaces),\n {\n ...withError('Unable to retrieve configurations for cluster'),\n enabled: !!namespaces,\n }\n );\n}\n","import { Box, Database, FileCode, Layers, Lock, Shuffle } from 'lucide-react';\nimport { useQueryClient } from 'react-query';\n\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\nimport Route from '@/assets/ico/route.svg?c';\n\nimport { DashboardGrid } from '@@/DashboardItem/DashboardGrid';\nimport { DashboardItem } from '@@/DashboardItem/DashboardItem';\nimport { PageHeader } from '@@/PageHeader';\n\nimport { useNamespaces } from '../namespaces/queries';\nimport { useApplicationsForCluster } from '../applications/application.queries';\nimport { usePVCsForCluster } from '../volumes/queries';\nimport { useServicesForCluster } from '../services/service';\nimport { useIngresses } from '../ingresses/queries';\nimport { useConfigMapsForCluster } from '../configs/configmap.service';\nimport { useSecretsForCluster } from '../configs/secret.service';\n\nimport { EnvironmentInfo } from './EnvironmentInfo';\n\nexport function DashboardView() {\n const queryClient = useQueryClient();\n const environmentId = useEnvironmentId();\n const { data: namespaces, ...namespacesQuery } = useNamespaces(environmentId);\n const namespaceNames = namespaces && Object.keys(namespaces);\n const { data: applications, ...applicationsQuery } =\n useApplicationsForCluster(environmentId, namespaceNames);\n const { data: pvcs, ...pvcsQuery } = usePVCsForCluster(\n environmentId,\n namespaceNames\n );\n const { data: services, ...servicesQuery } = useServicesForCluster(\n environmentId,\n namespaceNames\n );\n const { data: ingresses, ...ingressesQuery } = useIngresses(\n environmentId,\n namespaceNames\n );\n const { data: configMaps, ...configMapsQuery } = useConfigMapsForCluster(\n environmentId,\n namespaceNames\n );\n const { data: secrets, ...secretsQuery } = useSecretsForCluster(\n environmentId,\n namespaceNames\n );\n\n return (\n <>\n <PageHeader\n title=\"Dashboard\"\n breadcrumbs={[{ label: 'Environment summary' }]}\n reload\n onReload={() =>\n queryClient.invalidateQueries(['environments', environmentId])\n }\n />\n <div className=\"col-sm-12 flex flex-col gap-y-5\">\n <EnvironmentInfo />\n <DashboardGrid>\n <DashboardItem\n value={namespaceNames?.length}\n isLoading={namespacesQuery.isLoading}\n isRefetching={namespacesQuery.isRefetching}\n icon={Layers}\n to=\"kubernetes.resourcePools\"\n type=\"Namespace\"\n dataCy=\"dashboard-namespace\"\n />\n <DashboardItem\n value={applications?.length}\n isLoading={applicationsQuery.isLoading || namespacesQuery.isLoading}\n isRefetching={\n applicationsQuery.isRefetching || namespacesQuery.isRefetching\n }\n icon={Box}\n to=\"kubernetes.applications\"\n type=\"Application\"\n dataCy=\"dashboard-application\"\n />\n <DashboardItem\n value={services?.length}\n isLoading={servicesQuery.isLoading || namespacesQuery.isLoading}\n isRefetching={\n servicesQuery.isRefetching || namespacesQuery.isRefetching\n }\n icon={Shuffle}\n to=\"kubernetes.services\"\n type=\"Service\"\n dataCy=\"dashboard-service\"\n />\n <DashboardItem\n value={ingresses?.length}\n isLoading={ingressesQuery.isLoading || namespacesQuery.isLoading}\n isRefetching={\n ingressesQuery.isRefetching || namespacesQuery.isRefetching\n }\n icon={Route}\n to=\"kubernetes.ingresses\"\n type=\"Ingress\"\n pluralType=\"Ingresses\"\n dataCy=\"dashboard-ingress\"\n />\n <DashboardItem\n value={configMaps?.length}\n isLoading={configMapsQuery.isLoading || namespacesQuery.isLoading}\n isRefetching={\n configMapsQuery.isRefetching || namespacesQuery.isRefetching\n }\n icon={FileCode}\n to=\"kubernetes.configurations\"\n params={{ tab: 'configmaps' }}\n type=\"ConfigMap\"\n dataCy=\"dashboard-configmaps\"\n />\n <DashboardItem\n value={secrets?.length}\n isLoading={secretsQuery.isLoading || namespacesQuery.isLoading}\n isRefetching={\n secretsQuery.isRefetching || namespacesQuery.isRefetching\n }\n icon={Lock}\n to=\"kubernetes.configurations\"\n params={{ tab: 'secrets' }}\n type=\"Secret\"\n dataCy=\"dashboard-secrets\"\n />\n <DashboardItem\n value={pvcs?.length}\n isLoading={pvcsQuery.isLoading || namespacesQuery.isLoading}\n isRefetching={\n pvcsQuery.isRefetching || namespacesQuery.isRefetching\n }\n icon={Database}\n to=\"kubernetes.volumes\"\n type=\"Volume\"\n dataCy=\"dashboard-volume\"\n />\n </DashboardGrid>\n </div>\n </>\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { withError } from '@/react-tools/react-query';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { getPVCsForCluster } from './service';\n\n// useQuery to get a list of all persistent volume claims from an array of namespaces\nexport function usePVCsForCluster(\n environemtId: EnvironmentId,\n namespaces?: string[]\n) {\n return useQuery(\n ['environments', environemtId, 'kubernetes', 'pvcs'],\n () => namespaces && getPVCsForCluster(environemtId, namespaces),\n {\n ...withError('Unable to retrieve perrsistent volume claims'),\n enabled: !!namespaces,\n }\n );\n}\n","import { useState, useCallback, useEffect } from 'react';\nimport { useCurrentStateAndParams } from '@uirouter/react';\nimport { Terminal as TerminalIcon } from 'lucide-react';\nimport { Terminal } from 'xterm';\n\nimport { get } from '@/react/hooks/useLocalStorage';\nimport { baseHref } from '@/portainer/helpers/pathHelper';\nimport { notifyError } from '@/portainer/services/notifications';\n\nimport { PageHeader } from '@@/PageHeader';\nimport { Widget, WidgetBody } from '@@/Widget';\nimport { Icon } from '@@/Icon';\nimport { Button } from '@@/buttons';\n\ninterface StringDictionary {\n [index: string]: string;\n}\n\nexport function ConsoleView() {\n const {\n params: {\n endpointId: environmentId,\n container,\n name: appName,\n namespace,\n pod: podID,\n },\n } = useCurrentStateAndParams();\n\n const [command, setCommand] = useState('/bin/sh');\n const [connectionStatus, setConnectionStatus] = useState('closed');\n const [terminal, setTerminal] = useState(null as Terminal | null);\n const [socket, setSocket] = useState(null as WebSocket | null);\n\n const breadcrumbs = [\n {\n label: 'Namespaces',\n link: 'kubernetes.resourcePools',\n },\n {\n label: namespace,\n link: 'kubernetes.resourcePools.resourcePool',\n linkParams: { id: namespace },\n },\n {\n label: 'Applications',\n link: 'kubernetes.applications',\n },\n {\n label: appName,\n link: 'kubernetes.applications.application',\n linkParams: { name: appName, namespace },\n },\n 'Pods',\n podID,\n 'Containers',\n container,\n 'Console',\n ];\n\n const disconnectConsole = useCallback(() => {\n socket?.close();\n terminal?.dispose();\n setTerminal(null);\n setSocket(null);\n setConnectionStatus('closed');\n }, [socket, terminal, setConnectionStatus]);\n\n useEffect(() => {\n if (socket) {\n socket.onopen = () => {\n const terminalContainer = document.getElementById('terminal-container');\n if (terminalContainer) {\n terminal?.open(terminalContainer);\n terminal?.setOption('cursorBlink', true);\n terminal?.focus();\n setConnectionStatus('open');\n }\n };\n\n socket.onmessage = (msg) => {\n terminal?.write(msg.data);\n };\n\n socket.onerror = () => {\n disconnectConsole();\n notifyError('Websocket connection error');\n };\n\n socket.onclose = () => {\n disconnectConsole();\n };\n }\n }, [disconnectConsole, setConnectionStatus, socket, terminal]);\n\n useEffect(() => {\n terminal?.on('data', (data) => {\n socket?.send(data);\n });\n }, [terminal, socket]);\n\n return (\n <>\n <PageHeader\n title=\"Application console\"\n breadcrumbs={breadcrumbs}\n reload\n />\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Widget>\n <WidgetBody>\n <div className=\"row\">\n <div className=\"col-sm-12 form-section-title\">Console</div>\n </div>\n <div className=\"form-row flex\">\n <label\n htmlFor=\"consoleCommand\"\n className=\"col-sm-3 col-lg-2 control-label m-0 p-0 text-left\"\n >\n Command\n </label>\n <div className=\"col-sm-8 input-group p-0\">\n <span className=\"input-group-addon\">\n <Icon icon={TerminalIcon} className=\"mr-1\" />\n </span>\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"/bin/bash\"\n value={command}\n onChange={(e) => setCommand(e.target.value)}\n id=\"consoleCommand\"\n // disable eslint because we want to autofocus\n // this is ok because we only have one input on the page\n // https://portainer.atlassian.net/browse/EE-5752\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus\n />\n </div>\n </div>\n <div className=\"row mt-4\">\n <Button\n className=\"btn btn-primary !ml-0\"\n onClick={\n connectionStatus === 'closed'\n ? connectConsole\n : disconnectConsole\n }\n disabled={connectionStatus === 'connecting'}\n >\n {connectionStatus === 'open' && 'Disconnect'}\n {connectionStatus === 'connecting' && 'Connecting'}\n {connectionStatus !== 'connecting' &&\n connectionStatus !== 'open' &&\n 'Connect'}\n </Button>\n </div>\n </WidgetBody>\n </Widget>\n <div className=\"row\">\n <div className=\"col-sm-12 p-0\">\n <div id=\"terminal-container\" className=\"terminal-container\" />\n </div>\n </div>\n </div>\n </div>\n </>\n );\n\n function connectConsole() {\n const jwtToken = get('JWT', '');\n\n const params: StringDictionary = {\n token: jwtToken,\n endpointId: environmentId,\n namespace,\n podName: podID,\n containerName: container,\n command,\n };\n\n const queryParams = Object.keys(params)\n .map((k) => `${k}=${params[k]}`)\n .join('&');\n\n let url = `${\n window.location.origin\n }${baseHref()}api/websocket/pod?${queryParams}`;\n if (url.indexOf('https') > -1) {\n url = url.replace('https://', 'wss://');\n } else {\n url = url.replace('http://', 'ws://');\n }\n\n setConnectionStatus('connecting');\n const term = new Terminal();\n setTerminal(term);\n const socket = new WebSocket(url);\n setSocket(socket);\n }\n}\n","import angular from 'angular';\n\nimport { componentsModule } from './components';\nimport { viewsModule } from './views';\n\nexport const reactModule = angular.module('portainer.kubernetes.react', [\n viewsModule,\n componentsModule,\n]).name;\n","const autoNgTemplateLoaderTemplate1 = require('./views/configure/configure.html');\nconst autoNgTemplateLoaderTemplate2 = require('../kubernetes/views/security-constraint/constraint.html');\n\nimport { EnvironmentStatus } from '@/react/portainer/environments/types';\nimport { getSelfSubjectAccessReview } from '@/react/kubernetes/namespaces/service';\n\nimport { PortainerEndpointTypes } from 'Portainer/models/endpoint/models';\n\nimport registriesModule from './registries';\nimport customTemplateModule from './custom-templates';\nimport { reactModule } from './react';\nimport './views/kubernetes.css';\n\nangular.module('portainer.kubernetes', ['portainer.app', registriesModule, customTemplateModule, reactModule]).config([\n '$stateRegistryProvider',\n function ($stateRegistryProvider) {\n 'use strict';\n\n const kubernetes = {\n name: 'kubernetes',\n url: '/kubernetes',\n parent: 'endpoint',\n abstract: true,\n\n onEnter: /* @ngInject */ function onEnter($async, $state, endpoint, KubernetesHealthService, KubernetesNamespaceService, Notifications, StateManager) {\n return $async(async () => {\n const kubeTypes = [\n PortainerEndpointTypes.KubernetesLocalEnvironment,\n PortainerEndpointTypes.AgentOnKubernetesEnvironment,\n PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment,\n ];\n\n if (!kubeTypes.includes(endpoint.Type)) {\n $state.go('portainer.home');\n return;\n }\n try {\n if (endpoint.Type === PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n //edge\n try {\n await KubernetesHealthService.ping(endpoint.Id);\n endpoint.Status = EnvironmentStatus.Up;\n } catch (e) {\n endpoint.Status = EnvironmentStatus.Down;\n }\n }\n\n await StateManager.updateEndpointState(endpoint);\n\n if (endpoint.Type === PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment && endpoint.Status === EnvironmentStatus.Down) {\n throw new Error('Unable to contact Edge agent, please ensure that the agent is properly running on the remote environment.');\n }\n\n // use selfsubject access review to check if we can connect to the kubernetes environment\n // because it's gets a fast response, and is accessible to all users\n try {\n await getSelfSubjectAccessReview(endpoint.Id, 'default');\n } catch (e) {\n throw new Error('Environment is unreachable.');\n }\n } catch (e) {\n let params = {};\n\n if (endpoint.Type == PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n params = { redirect: true, environmentId: endpoint.Id, environmentName: endpoint.Name, route: 'kubernetes.dashboard' };\n } else {\n Notifications.error('Failed loading environment', e);\n }\n $state.go('portainer.home', params, { reload: true, inherit: false });\n }\n });\n },\n };\n\n const helmApplication = {\n name: 'kubernetes.helm',\n url: '/helm/:namespace/:name',\n views: {\n 'content@': {\n component: 'kubernetesHelmApplicationView',\n },\n },\n };\n\n const helmTemplates = {\n name: 'kubernetes.templates.helm',\n url: '/helm',\n views: {\n 'content@': {\n component: 'helmTemplatesView',\n },\n },\n };\n\n const services = {\n name: 'kubernetes.services',\n url: '/services',\n views: {\n 'content@': {\n component: 'kubernetesServicesView',\n },\n },\n };\n\n const ingresses = {\n name: 'kubernetes.ingresses',\n url: '/ingresses',\n views: {\n 'content@': {\n component: 'kubernetesIngressesView',\n },\n },\n };\n\n const ingressesCreate = {\n name: 'kubernetes.ingresses.create',\n url: '/add',\n views: {\n 'content@': {\n component: 'kubernetesIngressesCreateView',\n },\n },\n };\n\n const ingressesEdit = {\n name: 'kubernetes.ingresses.edit',\n url: '/:namespace/:name/edit',\n views: {\n 'content@': {\n component: 'kubernetesIngressesCreateView',\n },\n },\n };\n\n const applications = {\n name: 'kubernetes.applications',\n url: '/applications',\n views: {\n 'content@': {\n component: 'kubernetesApplicationsView',\n },\n },\n };\n\n const applicationCreation = {\n name: 'kubernetes.applications.new',\n url: '/new',\n views: {\n 'content@': {\n component: 'kubernetesCreateApplicationView',\n },\n },\n };\n\n const application = {\n name: 'kubernetes.applications.application',\n url: '/:namespace/:name?resource-type',\n views: {\n 'content@': {\n component: 'kubernetesApplicationView',\n },\n },\n };\n\n const applicationEdit = {\n name: 'kubernetes.applications.application.edit',\n url: '/edit',\n views: {\n 'content@': {\n component: 'kubernetesCreateApplicationView',\n },\n },\n };\n\n const applicationConsole = {\n name: 'kubernetes.applications.application.console',\n url: '/:pod/:container/console',\n views: {\n 'content@': {\n component: 'kubernetesConsoleView',\n },\n },\n };\n\n const applicationLogs = {\n name: 'kubernetes.applications.application.logs',\n url: '/:pod/:container/logs',\n views: {\n 'content@': {\n component: 'kubernetesApplicationLogsView',\n },\n },\n };\n\n const applicationStats = {\n name: 'kubernetes.applications.application.stats',\n url: '/:pod/:container/stats',\n views: {\n 'content@': {\n component: 'kubernetesApplicationStatsView',\n },\n },\n };\n\n const stacks = {\n name: 'kubernetes.stacks',\n url: '/stacks',\n abstract: true,\n };\n\n const stack = {\n name: 'kubernetes.stacks.stack',\n url: '/:namespace/:name',\n abstract: true,\n };\n\n const stackLogs = {\n name: 'kubernetes.stacks.stack.logs',\n url: '/logs',\n views: {\n 'content@': {\n component: 'kubernetesStackLogsView',\n },\n },\n };\n\n const configurations = {\n name: 'kubernetes.configurations',\n url: '/configurations?tab',\n views: {\n 'content@': {\n component: 'kubernetesConfigMapsAndSecretsView',\n },\n },\n params: {\n tab: null,\n },\n };\n const configmaps = {\n name: 'kubernetes.configmaps',\n url: '/configmaps',\n abstract: true,\n };\n\n const configMapCreation = {\n name: 'kubernetes.configmaps.new',\n url: '/new',\n views: {\n 'content@': {\n component: 'kubernetesCreateConfigMapView',\n },\n },\n };\n\n const configMap = {\n name: 'kubernetes.configmaps.configmap',\n url: '/:namespace/:name',\n views: {\n 'content@': {\n component: 'kubernetesConfigMapView',\n },\n },\n };\n\n const secrets = {\n name: 'kubernetes.secrets',\n url: '/secrets',\n abstract: true,\n };\n\n const secretCreation = {\n name: 'kubernetes.secrets.new',\n url: '/new',\n views: {\n 'content@': {\n component: 'kubernetesCreateSecretView',\n },\n },\n };\n\n const secret = {\n name: 'kubernetes.secrets.secret',\n url: '/:namespace/:name',\n views: {\n 'content@': {\n component: 'kubernetesSecretView',\n },\n },\n };\n\n const cluster = {\n name: 'kubernetes.cluster',\n url: '/cluster',\n views: {\n 'content@': {\n component: 'kubernetesClusterView',\n },\n },\n };\n\n const node = {\n name: 'kubernetes.cluster.node',\n url: '/:name',\n views: {\n 'content@': {\n component: 'kubernetesNodeView',\n },\n },\n };\n\n const nodeStats = {\n name: 'kubernetes.cluster.node.stats',\n url: '/stats',\n views: {\n 'content@': {\n component: 'kubernetesNodeStatsView',\n },\n },\n };\n\n const dashboard = {\n name: 'kubernetes.dashboard',\n url: '/dashboard',\n views: {\n 'content@': {\n component: 'kubernetesDashboardView',\n },\n },\n };\n\n const deploy = {\n name: 'kubernetes.deploy',\n url: '/deploy?templateId&referrer&tab',\n views: {\n 'content@': {\n component: 'kubernetesDeployView',\n },\n },\n };\n\n const resourcePools = {\n name: 'kubernetes.resourcePools',\n url: '/pools',\n views: {\n 'content@': {\n component: 'kubernetesResourcePoolsView',\n },\n },\n };\n\n const resourcePoolCreation = {\n name: 'kubernetes.resourcePools.new',\n url: '/new',\n views: {\n 'content@': {\n component: 'kubernetesCreateResourcePoolView',\n },\n },\n };\n\n const resourcePool = {\n name: 'kubernetes.resourcePools.resourcePool',\n url: '/:id',\n views: {\n 'content@': {\n component: 'kubernetesResourcePoolView',\n },\n },\n };\n\n const resourcePoolAccess = {\n name: 'kubernetes.resourcePools.resourcePool.access',\n url: '/access',\n views: {\n 'content@': {\n component: 'kubernetesResourcePoolAccessView',\n },\n },\n };\n\n const volumes = {\n name: 'kubernetes.volumes',\n url: '/volumes',\n views: {\n 'content@': {\n component: 'kubernetesVolumesView',\n },\n },\n };\n\n const volume = {\n name: 'kubernetes.volumes.volume',\n url: '/:namespace/:name',\n views: {\n 'content@': {\n component: 'kubernetesVolumeView',\n },\n },\n };\n\n const registries = {\n name: 'kubernetes.registries',\n url: '/registries',\n views: {\n 'content@': {\n component: 'endpointRegistriesView',\n },\n },\n };\n\n const registriesAccess = {\n name: 'kubernetes.registries.access',\n url: '/:id/access',\n views: {\n 'content@': {\n component: 'kubernetesRegistryAccessView',\n },\n },\n };\n\n const endpointKubernetesConfiguration = {\n name: 'kubernetes.cluster.setup',\n url: '/configure',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesConfigureController',\n controllerAs: 'ctrl',\n },\n },\n };\n\n const endpointKubernetesSecurityConstraint = {\n name: 'kubernetes.cluster.securityConstraint',\n url: '/securityConstraint',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate2,\n controller: 'KubernetesSecurityConstraintController',\n },\n },\n };\n\n $stateRegistryProvider.register(kubernetes);\n $stateRegistryProvider.register(helmApplication);\n $stateRegistryProvider.register(helmTemplates);\n $stateRegistryProvider.register(applications);\n $stateRegistryProvider.register(applicationCreation);\n $stateRegistryProvider.register(application);\n $stateRegistryProvider.register(applicationEdit);\n $stateRegistryProvider.register(applicationConsole);\n $stateRegistryProvider.register(applicationLogs);\n $stateRegistryProvider.register(applicationStats);\n $stateRegistryProvider.register(stacks);\n $stateRegistryProvider.register(stack);\n $stateRegistryProvider.register(stackLogs);\n $stateRegistryProvider.register(configurations);\n $stateRegistryProvider.register(configmaps);\n $stateRegistryProvider.register(configMapCreation);\n $stateRegistryProvider.register(secrets);\n $stateRegistryProvider.register(secretCreation);\n $stateRegistryProvider.register(configMap);\n $stateRegistryProvider.register(secret);\n $stateRegistryProvider.register(cluster);\n $stateRegistryProvider.register(dashboard);\n $stateRegistryProvider.register(deploy);\n $stateRegistryProvider.register(node);\n $stateRegistryProvider.register(nodeStats);\n $stateRegistryProvider.register(resourcePools);\n $stateRegistryProvider.register(resourcePoolCreation);\n $stateRegistryProvider.register(resourcePool);\n $stateRegistryProvider.register(resourcePoolAccess);\n $stateRegistryProvider.register(volumes);\n $stateRegistryProvider.register(volume);\n $stateRegistryProvider.register(registries);\n $stateRegistryProvider.register(registriesAccess);\n $stateRegistryProvider.register(endpointKubernetesConfiguration);\n $stateRegistryProvider.register(endpointKubernetesSecurityConstraint);\n\n $stateRegistryProvider.register(services);\n $stateRegistryProvider.register(ingresses);\n $stateRegistryProvider.register(ingressesCreate);\n $stateRegistryProvider.register(ingressesEdit);\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./containersDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesContainersDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n refreshCallback: '<',\n isPod: '<',\n useServerMetrics: '<',\n },\n});\n","import { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\n\nexport default class {\n $onInit() {\n const secrets = (this.configurations || [])\n .filter((config) => config.Data && config.Kind === KubernetesConfigurationKinds.SECRET)\n .flatMap((config) => Object.entries(config.Data))\n .map(([key, value]) => ({ key, value }));\n\n this.state = { secrets };\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./applications-datatable-details.html');\n\nimport angular from 'angular';\nimport controller from './applications-datatable-details.controller';\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationsDatatableDetails', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n configurations: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./applicationsDatatable.html');\n\nimport './applicationsDatatable.css';\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesApplicationsDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n settingsKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n refreshCallback: '<',\n onPublishingModeClick: '<',\n isPrimary: '<',\n namespaces: '<',\n namespace: '<',\n onChangeNamespaceDropdown: '<',\n isAppsLoading: '<',\n isSystemResources: '<',\n setSystemResources: '<',\n },\n});\n","import _ from 'lodash-es';\nimport { KubernetesApplicationDeploymentTypes, KubernetesApplicationTypes } from 'Kubernetes/models/application/models';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\n\nangular.module('portainer.docker').controller('KubernetesApplicationsDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n 'Authentication',\n function ($scope, $controller, DatatableService, Authentication) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n const ctrl = this;\n\n this.settings = Object.assign(this.settings, {\n showSystem: false,\n });\n\n this.state = Object.assign(this.state, {\n expandAll: false,\n expandedItems: [],\n namespace: '',\n namespaces: [],\n });\n\n this.filters = {\n state: {\n open: false,\n enabled: false,\n values: [],\n },\n };\n\n this.applicationTypeEnumToParamMap = {\n [KubernetesApplicationTypes.DEPLOYMENT]: 'Deployment',\n [KubernetesApplicationTypes.DAEMONSET]: 'DaemonSet',\n [KubernetesApplicationTypes.STATEFULSET]: 'StatefulSet',\n [KubernetesApplicationTypes.POD]: 'Pod',\n };\n\n this.expandAll = function () {\n this.state.expandAll = !this.state.expandAll;\n this.state.filteredDataSet.forEach((item) => this.expandItem(item, this.state.expandAll));\n };\n\n this.isItemExpanded = function (item) {\n return this.state.expandedItems.includes(item.Id);\n };\n\n this.isExpandable = function (item) {\n return item.KubernetesApplications || this.hasConfigurationSecrets(item) || !!this.getPublishedUrls(item).length;\n };\n\n this.expandItem = function (item, expanded) {\n // collapse item\n if (!expanded) {\n this.state.expandedItems = this.state.expandedItems.filter((id) => id !== item.Id);\n // expanded item\n } else if (expanded && !this.state.expandedItems.includes(item.Id)) {\n this.state.expandedItems = [...this.state.expandedItems, item.Id];\n }\n DatatableService.setDataTableExpandedItems(this.tableKey, this.state.expandedItems);\n };\n\n this.expandItems = function (storedExpandedItems) {\n this.state.expandedItems = storedExpandedItems;\n if (this.state.expandedItems.length === this.dataset.length) {\n this.state.expandAll = true;\n }\n };\n\n this.onDataRefresh = function () {\n const storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey);\n if (storedExpandedItems !== null) {\n this.expandItems(storedExpandedItems);\n }\n };\n\n this.onSettingsShowSystemChange = function () {\n this.updateNamespace();\n this.setSystemResources(this.settings.showSystem);\n DatatableService.setDataTableSettings(this.tableKey, this.settings);\n };\n\n this.isExternalApplication = function (item) {\n return KubernetesApplicationHelper.isExternalApplication(item);\n };\n\n this.isSystemNamespace = function (item) {\n // if all charts in a helm app/release are in the system namespace\n if (item.KubernetesApplications && item.KubernetesApplications.length > 0) {\n return item.KubernetesApplications.some((app) => KubernetesNamespaceHelper.isSystemNamespace(app.ResourcePool));\n }\n return KubernetesNamespaceHelper.isSystemNamespace(item.ResourcePool);\n };\n\n this.isDisplayed = function (item) {\n return !ctrl.isSystemNamespace(item) || ctrl.settings.showSystem;\n };\n\n this.getPublishedUrls = function (item) {\n // Map all ingress rules in published ports to their respective URLs\n const ingressUrls = item.PublishedPorts.flatMap((pp) => pp.IngressRules)\n .filter(({ Host, IP }) => Host || IP)\n .map(({ Host, IP, Path, TLS }) => {\n let scheme = TLS && TLS.filter((tls) => tls.hosts && tls.hosts.includes(Host)).length > 0 ? 'https' : 'http';\n return `${scheme}://${Host || IP}${Path}`;\n });\n\n // Map all load balancer service ports to ip address\n let loadBalancerURLs = [];\n if (item.LoadBalancerIPAddress) {\n loadBalancerURLs = item.PublishedPorts.map((pp) => `http://${item.LoadBalancerIPAddress}:${pp.Port}`);\n }\n\n // combine ingress urls\n const publishedUrls = [...ingressUrls, ...loadBalancerURLs];\n\n // Return the first URL - priority given to ingress urls, then services (load balancers)\n return publishedUrls.length > 0 ? publishedUrls : '';\n };\n\n this.hasConfigurationSecrets = function (item) {\n return item.Configurations && item.Configurations.some((config) => config.Data && config.Kind === KubernetesConfigurationKinds.SECRET);\n };\n\n /**\n * Do not allow applications in system namespaces to be selected\n */\n this.allowSelection = function (item) {\n return !this.isSystemNamespace(item);\n };\n\n this.applyFilters = function (item) {\n return ctrl.filters.state.values.some((filter) => item.ApplicationType === filter.type && filter.display);\n };\n\n this.onStateFilterChange = function () {\n this.filters.state.enabled = this.filters.state.values.some((filter) => !filter.display);\n };\n\n this.prepareTableFromDataset = function () {\n const availableTypeFilters = this.dataset.map((item) => ({ type: item.ApplicationType, display: true }));\n this.filters.state.values = _.uniqBy(availableTypeFilters, 'type');\n };\n\n this.onChangeNamespace = function () {\n this.onChangeNamespaceDropdown(this.state.namespace);\n };\n\n this.updateNamespace = function () {\n if (this.namespaces && this.settingsLoaded) {\n const allNamespacesOption = { Name: 'All namespaces', Value: '', IsSystem: false };\n const visibleNamespaceOptions = this.namespaces\n .filter((ns) => {\n if (!this.settings.showSystem && ns.IsSystem) {\n return false;\n }\n return true;\n })\n .map((ns) => ({ Name: ns.Name, Value: ns.Name, IsSystem: ns.IsSystem }));\n this.state.namespaces = [allNamespacesOption, ...visibleNamespaceOptions];\n\n if (this.state.namespace && !this.state.namespaces.find((ns) => ns.Name === this.state.namespace)) {\n if (this.state.namespaces.length > 1) {\n let defaultNS = this.state.namespaces.find((ns) => ns.Name === 'default');\n defaultNS = defaultNS || this.state.namespaces[1];\n this.state.namespace = defaultNS.Value;\n } else {\n this.state.namespace = this.state.namespaces[0].Value;\n }\n }\n }\n };\n\n this.$onChanges = function () {\n if (typeof this.isSystemResources !== 'undefined') {\n this.settings.showSystem = this.isSystemResources;\n DatatableService.setDataTableSettings(this.settingsKey, this.settings);\n }\n this.state.namespace = this.namespace;\n this.updateNamespace();\n this.prepareTableFromDataset();\n };\n\n this.$onInit = function () {\n this.isAdmin = Authentication.isAdmin();\n this.KubernetesApplicationDeploymentTypes = KubernetesApplicationDeploymentTypes;\n this.KubernetesApplicationTypes = KubernetesApplicationTypes;\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n const storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n const textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n const storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n const storedExpandedItems = DatatableService.getDataTableExpandedItems(this.tableKey);\n if (storedExpandedItems !== null) {\n this.expandItems(storedExpandedItems);\n }\n\n const storedSettings = DatatableService.getDataTableSettings(this.settingsKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n\n this.setSystemResources && this.setSystemResources(this.settings.showSystem);\n }\n this.settingsLoaded = true;\n // Set the default selected namespace\n if (!this.state.namespace) {\n this.state.namespace = this.namespace;\n }\n\n this.updateNamespace();\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./applicationsStacksDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationsStacksDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesApplicationsStacksDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n refreshCallback: '<',\n removeAction: '<',\n namespaces: '<',\n namespace: '<',\n onChangeNamespaceDropdown: '<',\n isAppsLoading: '<',\n isSystemResources: '<',\n setSystemResources: '<',\n },\n});\n","import _ from 'lodash-es';\nimport { KubernetesApplicationDeploymentTypes } from 'Kubernetes/models/application/models';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\nangular.module('portainer.kubernetes').controller('KubernetesApplicationsStacksDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n 'Authentication',\n function ($scope, $controller, DatatableService, Authentication) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n this.state = Object.assign(this.state, {\n expandedItems: [],\n expandAll: false,\n namespace: '',\n namespaces: [],\n });\n\n var ctrl = this;\n\n this.settings = Object.assign(this.settings, {\n showSystem: false,\n });\n\n this.onSettingsShowSystemChange = function () {\n this.updateNamespace();\n this.setSystemResources(this.settings.showSystem);\n DatatableService.setDataTableSettings(this.tableKey, this.settings);\n };\n\n this.isExternalApplication = function (item) {\n return KubernetesApplicationHelper.isExternalApplication(item);\n };\n\n /**\n * Do not allow applications in system namespaces to be selected\n */\n this.allowSelection = function (item) {\n return !this.isSystemNamespace(item.ResourcePool);\n };\n\n /**\n * @param {String} namespace Namespace (string name)\n * @returns Boolean\n */\n this.isSystemNamespace = function (namespace) {\n return KubernetesNamespaceHelper.isSystemNamespace(namespace);\n };\n\n this.isDisplayed = function (item) {\n return !ctrl.isSystemNamespace(item.ResourcePool) || ctrl.settings.showSystem;\n };\n\n this.expandItem = function (item, expanded) {\n if (!this.itemCanExpand(item)) {\n return;\n }\n\n item.Expanded = expanded;\n if (!expanded) {\n item.Highlighted = false;\n }\n };\n\n this.itemCanExpand = function (item) {\n return item.Applications.length > 0;\n };\n\n this.hasExpandableItems = function () {\n return _.filter(this.state.filteredDataSet, (item) => this.itemCanExpand(item)).length;\n };\n\n this.expandAll = function () {\n this.state.expandAll = !this.state.expandAll;\n _.forEach(this.state.filteredDataSet, (item) => {\n if (this.itemCanExpand(item)) {\n this.expandItem(item, this.state.expandAll);\n }\n });\n };\n\n this.onChangeNamespace = function () {\n this.onChangeNamespaceDropdown(this.state.namespace);\n };\n\n this.updateNamespace = function () {\n if (this.namespaces) {\n const namespaces = [{ Name: 'All namespaces', Value: '', IsSystem: false }];\n this.namespaces.find((ns) => {\n if (!this.settings.showSystem && ns.IsSystem) {\n return false;\n }\n namespaces.push({ Name: ns.Name, Value: ns.Name, IsSystem: ns.IsSystem });\n });\n this.state.namespaces = namespaces;\n\n if (this.state.namespace && !this.state.namespaces.find((ns) => ns.Name === this.state.namespace)) {\n if (this.state.namespaces.length > 1) {\n let defaultNS = this.state.namespaces.find((ns) => ns.Name === 'default');\n defaultNS = defaultNS || this.state.namespaces[1];\n this.state.namespace = defaultNS.Value;\n } else {\n this.state.namespace = this.state.namespaces[0].Value;\n }\n this.onChangeNamespaceDropdown(this.state.namespace);\n }\n }\n };\n\n this.$onChanges = function () {\n if (typeof this.isSystemResources !== 'undefined') {\n this.settings.showSystem = this.isSystemResources;\n DatatableService.setDataTableSettings(this.settingsKey, this.settings);\n }\n this.state.namespace = this.namespace;\n this.updateNamespace();\n this.prepareTableFromDataset();\n };\n\n this.$onInit = function () {\n this.isAdmin = Authentication.isAdmin();\n this.KubernetesApplicationDeploymentTypes = KubernetesApplicationDeploymentTypes;\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.settingsKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n\n this.setSystemResources && this.setSystemResources(this.settings.showSystem);\n }\n\n // Set the default selected namespace\n if (!this.state.namespace) {\n this.state.namespace = this.namespace;\n }\n\n this.updateNamespace();\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","import KubernetesConfigurationHelper from 'Kubernetes/helpers/configurationHelper';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\nangular.module('portainer.docker').controller('KubernetesConfigurationsDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n 'Authentication',\n function ($scope, $controller, DatatableService, Authentication) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n const ctrl = this;\n\n this.settings = Object.assign(this.settings, {\n showSystem: false,\n });\n\n this.onSettingsShowSystemChange = function () {\n DatatableService.setDataTableSettings(this.tableKey, this.settings);\n };\n\n this.isSystemNamespace = function (item) {\n return KubernetesNamespaceHelper.isSystemNamespace(item.Namespace);\n };\n\n this.isSystemToken = function (item) {\n return KubernetesConfigurationHelper.isSystemToken(item);\n };\n\n this.isSystemConfig = function (item) {\n return ctrl.isSystemNamespace(item) || ctrl.isSystemToken(item) || item.IsRegistrySecret;\n };\n\n this.isExternalConfiguration = function (item) {\n return KubernetesConfigurationHelper.isExternalConfiguration(item);\n };\n\n this.isDisplayed = function (item) {\n return !ctrl.isSystemConfig(item) || (ctrl.settings.showSystem && ctrl.isAdmin);\n };\n\n /**\n * Do not allow configurations in system namespaces to be selected\n */\n this.allowSelection = function (item) {\n return !this.isSystemConfig(item) && !item.Used;\n };\n\n this.$onInit = function () {\n this.isAdmin = Authentication.isAdmin();\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./eventsDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesEventsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n loading: '<',\n refreshCallback: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./integratedApplicationsDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesIntegratedApplicationsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n refreshCallback: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./nodeApplicationsDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesNodeApplicationsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesNodeApplicationsDatatableController',\n bindings: {\n titleText: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n refreshCallback: '<',\n },\n});\n","import { KubernetesApplicationDeploymentTypes } from 'Kubernetes/models/application/models';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\nangular.module('portainer.docker').controller('KubernetesNodeApplicationsDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.isSystemNamespace = function (item) {\n return KubernetesNamespaceHelper.isSystemNamespace(item.ResourcePool);\n };\n\n this.isExternalApplication = function (item) {\n return KubernetesApplicationHelper.isExternalApplication(item);\n };\n\n this.$onInit = function () {\n this.KubernetesApplicationDeploymentTypes = KubernetesApplicationDeploymentTypes;\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./nodesDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesNodesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n refreshCallback: '<',\n isAdmin: '<',\n useServerMetrics: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./resourcePoolApplicationsDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolApplicationsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesResourcePoolApplicationsDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n refreshCallback: '<',\n },\n});\n","import KubernetesApplicationHelper from 'Kubernetes/helpers/application';\n\nangular.module('portainer.docker').controller('KubernetesResourcePoolApplicationsDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.isExternalApplication = function (item) {\n return KubernetesApplicationHelper.isExternalApplication(item);\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./resourcePoolsDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesResourcePoolsDatatableController',\n bindings: {\n restrictDefaultNamespace: '<',\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n refreshCallback: '<',\n },\n});\n","import KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\nangular.module('portainer.docker').controller('KubernetesResourcePoolsDatatableController', [\n '$scope',\n '$controller',\n 'Authentication',\n 'DatatableService',\n function ($scope, $controller, Authentication, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n var ctrl = this;\n\n this.settings = Object.assign(this.settings, {\n showSystem: false,\n });\n\n this.onSettingsShowSystemChange = function () {\n DatatableService.setDataTableSettings(this.tableKey, this.settings);\n };\n\n this.canManageAccess = function (item) {\n if (!this.restrictDefaultNamespace) {\n return !KubernetesNamespaceHelper.isDefaultNamespace(item.Namespace.Name) && !this.isSystemNamespace(item);\n } else {\n return !this.isSystemNamespace(item);\n }\n };\n\n this.disableRemove = function (item) {\n return this.isSystemNamespace(item) || KubernetesNamespaceHelper.isDefaultNamespace(item.Namespace.Name);\n };\n\n this.isSystemNamespace = function (item) {\n return KubernetesNamespaceHelper.isSystemNamespace(item.Namespace.Name);\n };\n\n this.isDisplayed = function (item) {\n return !ctrl.isSystemNamespace(item) || (ctrl.settings.showSystem && ctrl.isAdmin);\n };\n\n this.namespaceStatusColor = function (status) {\n switch (status.toLowerCase()) {\n case 'active':\n return 'success';\n case 'terminating':\n return 'danger';\n default:\n return 'primary';\n }\n };\n\n /**\n * Do not allow system namespaces to be selected\n */\n this.allowSelection = function (item) {\n return !this.disableRemove(item);\n };\n\n this.$onInit = function () {\n this.isAdmin = Authentication.isAdmin();\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./volumesDatatable.html');\n\nangular.module('portainer.kubernetes').component('kubernetesVolumesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesVolumesDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n refreshCallback: '<',\n },\n});\n","import angular from 'angular';\nimport KubernetesVolumeHelper from 'Kubernetes/helpers/volumeHelper';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\n// TODO: review - refactor to use `extends GenericDatatableController`\nclass KubernetesVolumesDatatableController {\n /* @ngInject */\n constructor($async, $controller, Authentication, DatatableService) {\n this.$async = $async;\n this.$controller = $controller;\n this.Authentication = Authentication;\n this.DatatableService = DatatableService;\n\n this.onInit = this.onInit.bind(this);\n this.allowSelection = this.allowSelection.bind(this);\n this.isDisplayed = this.isDisplayed.bind(this);\n }\n\n onSettingsShowSystemChange() {\n this.DatatableService.setDataTableSettings(this.tableKey, this.settings);\n }\n\n disableRemove(item) {\n return this.isSystemNamespace(item) || this.isUsed(item);\n }\n\n isUsed(item) {\n return KubernetesVolumeHelper.isUsed(item);\n }\n\n isSystemNamespace(item) {\n return KubernetesNamespaceHelper.isSystemNamespace(item.ResourcePool.Namespace.Name);\n }\n\n isDisplayed(item) {\n return !this.isSystemNamespace(item) || this.settings.showSystem;\n }\n\n isExternalVolume(item) {\n return KubernetesVolumeHelper.isExternalVolume(item);\n }\n\n allowSelection(item) {\n return !this.disableRemove(item);\n }\n\n async onInit() {\n this.setDefaults();\n this.prepareTableFromDataset();\n this.isAdmin = this.Authentication.isAdmin();\n this.settings.showSystem = false;\n\n this.state.orderBy = this.orderBy;\n var storedOrder = this.DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = this.DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = this.DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = this.DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n }\n\n $onInit() {\n const ctrl = angular.extend({}, this.$controller('GenericDatatableController'), this);\n angular.extend(this, ctrl);\n return this.$async(this.onInit);\n }\n}\n\nexport default KubernetesVolumesDatatableController;\nangular.module('portainer.kubernetes').controller('KubernetesVolumesDatatableController', KubernetesVolumesDatatableController);\n","export default class HelmAddRepositoryController {\n /* @ngInject */\n constructor($state, $async, HelmService, Notifications) {\n this.$state = $state;\n this.$async = $async;\n this.HelmService = HelmService;\n this.Notifications = Notifications;\n }\n\n doesRepoExist() {\n if (!this.state.repository) {\n return false;\n }\n // lowercase, strip trailing slash and compare\n return this.repos.includes(this.state.repository.toLowerCase().replace(/\\/$/, ''));\n }\n\n async addRepository() {\n this.state.isAddingRepo = true;\n try {\n await this.HelmService.addHelmRepository(this.endpoint.Id, { url: this.state.repository });\n this.Notifications.success('Success', 'Helm repository added successfully');\n this.$state.reload(this.$state.current);\n } catch (err) {\n this.Notifications.error('Installation error', err);\n } finally {\n this.state.isAddingRepo = false;\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n this.state = {\n isAddingRepo: false,\n repository: '',\n };\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./helm-add-repository.html');\n\nimport angular from 'angular';\nimport controller from './helm-add-repository.controller';\n\nangular.module('portainer.kubernetes').component('helmAddRepository', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n repos: '<',\n endpoint: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./helm-templates-list-item.html');\n\nimport angular from 'angular';\nimport './helm-templates-list-item.css';\n\nangular.module('portainer.kubernetes').component('helmTemplatesListItem', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '<',\n onSelect: '<',\n },\n transclude: {\n actions: '?templateItemActions',\n },\n});\n","export default class HelmTemplatesListController {\n /* @ngInject */\n constructor($async, $scope, DatatableService, HelmService, Notifications) {\n this.$async = $async;\n this.$scope = $scope;\n this.DatatableService = DatatableService;\n this.HelmService = HelmService;\n this.Notifications = Notifications;\n\n this.state = {\n textFilter: '',\n selectedCategory: '',\n categories: [],\n };\n\n this.updateCategories = this.updateCategories.bind(this);\n this.onCategoryChange = this.onCategoryChange.bind(this);\n }\n\n async updateCategories() {\n try {\n const annotationCategories = this.charts\n .map((t) => t.annotations) // get annotations\n .filter((a) => a) // filter out undefined/nulls\n .map((c) => c.category); // get annotation category\n const availableCategories = [...new Set(annotationCategories)].sort(); // unique and sort\n this.state.categories = availableCategories.map((cat) => ({ label: cat, value: cat }));\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve helm charts categories');\n }\n }\n\n onCategoryChange(value) {\n return this.$scope.$evalAsync(() => {\n this.state.selectedCategory = value || '';\n });\n }\n\n onTextFilterChange() {\n this.DatatableService.setDataTableTextFilters(this.tableKey, this.state.textFilter);\n }\n\n $onChanges() {\n if (this.charts.length > 0) {\n this.updateCategories();\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n const textFilter = this.DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n }\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./helm-templates-list.html');\n\nimport angular from 'angular';\nimport controller from './helm-templates-list.controller';\n\nangular.module('portainer.kubernetes').component('helmTemplatesList', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n loading: '<',\n titleText: '@',\n titleIcon: '@',\n charts: '<',\n tableKey: '@',\n selectAction: '<',\n },\n});\n","import _ from 'lodash-es';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\n\nexport default class HelmTemplatesController {\n /* @ngInject */\n constructor($analytics, $async, $state, $window, $anchorScroll, Authentication, HelmService, KubernetesResourcePoolService, Notifications) {\n this.$analytics = $analytics;\n this.$async = $async;\n this.$window = $window;\n this.$state = $state;\n this.$anchorScroll = $anchorScroll;\n this.Authentication = Authentication;\n this.HelmService = HelmService;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.Notifications = Notifications;\n\n this.editorUpdate = this.editorUpdate.bind(this);\n this.uiCanExit = this.uiCanExit.bind(this);\n this.installHelmchart = this.installHelmchart.bind(this);\n this.getHelmValues = this.getHelmValues.bind(this);\n this.selectHelmChart = this.selectHelmChart.bind(this);\n this.getHelmRepoURLs = this.getHelmRepoURLs.bind(this);\n this.getLatestCharts = this.getLatestCharts.bind(this);\n this.getResourcePools = this.getResourcePools.bind(this);\n\n $window.onbeforeunload = () => {\n if (this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n editorUpdate(contentvalues) {\n if (this.state.originalvalues === contentvalues) {\n this.state.isEditorDirty = false;\n } else {\n this.state.values = contentvalues;\n this.state.isEditorDirty = true;\n }\n }\n\n async uiCanExit() {\n if (this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async installHelmchart() {\n this.state.actionInProgress = true;\n try {\n const payload = {\n Name: this.state.appName,\n Repo: this.state.chart.repo,\n Chart: this.state.chart.name,\n Values: this.state.values,\n Namespace: this.state.resourcePool.Namespace.Name,\n };\n await this.HelmService.install(this.endpoint.Id, payload);\n this.Notifications.success('Success', 'Helm Chart successfully installed');\n this.$analytics.eventTrack('kubernetes-helm-install', { category: 'kubernetes', metadata: { 'chart-name': this.state.chart.name } });\n this.state.isEditorDirty = false;\n this.$state.go('kubernetes.applications');\n } catch (err) {\n this.Notifications.error('Installation error', err);\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n async getHelmValues() {\n this.state.loadingValues = true;\n try {\n const { values } = await this.HelmService.values(this.state.chart.repo, this.state.chart.name);\n this.state.values = values;\n this.state.originalvalues = values;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve helm chart values.');\n } finally {\n this.state.loadingValues = false;\n }\n }\n\n async selectHelmChart(chart) {\n window.scrollTo(0, 0);\n this.state.showCustomValues = false;\n this.state.chart = chart;\n await this.getHelmValues();\n }\n\n /**\n * @description This function is used to get the helm repo urls for the endpoint and user\n * @returns {Promise<string[]>} list of helm repo urls\n */\n async getHelmRepoURLs() {\n this.state.reposLoading = true;\n try {\n // fetch globally set helm repo and user helm repos (parallel)\n const { GlobalRepository, UserRepositories } = await this.HelmService.getHelmRepositories(this.endpoint.Id);\n this.state.globalRepository = GlobalRepository;\n const userHelmReposUrls = UserRepositories.map((repo) => repo.URL);\n const uniqueHelmRepos = [...new Set([GlobalRepository, ...userHelmReposUrls])].map((url) => url.toLowerCase()).filter((url) => url); // remove duplicates and blank, to lowercase\n this.state.repos = uniqueHelmRepos;\n return uniqueHelmRepos;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve helm repo urls.');\n } finally {\n this.state.reposLoading = false;\n }\n }\n\n /**\n * @description This function is used to fetch the respective index.yaml files for the provided helm repo urls\n * @param {string[]} helmRepos list of helm repositories\n * @param {bool} append append charts returned from repo to existing list of helm charts\n */\n async getLatestCharts(helmRepos) {\n this.state.chartsLoading = true;\n try {\n const promiseList = helmRepos.map((repo) => this.HelmService.search(repo));\n // fetch helm charts from all the provided helm repositories (parallel)\n // Promise.allSettled is used to account for promise failure(s) - in cases the user has provided invalid helm repo\n const chartPromises = await Promise.allSettled(promiseList);\n const latestCharts = chartPromises\n .filter((tp) => tp.status === 'fulfilled') // remove failed promises\n .map((tp) => ({ entries: tp.value.entries, repo: helmRepos[chartPromises.indexOf(tp)] })) // extract chart entries with respective repo data\n .flatMap(\n ({ entries, repo }) => Object.values(entries).map((charts) => ({ ...charts[0], repo })) // flatten chart entries to single array with respective repo\n );\n\n this.state.charts = latestCharts;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve helm repo charts.');\n } finally {\n this.state.chartsLoading = false;\n }\n }\n\n async getResourcePools() {\n this.state.resourcePoolsLoading = true;\n try {\n const resourcePools = await this.KubernetesResourcePoolService.get();\n\n const nonSystemNamespaces = resourcePools.filter(\n (resourcePool) => !KubernetesNamespaceHelper.isSystemNamespace(resourcePool.Namespace.Name) && resourcePool.Namespace.Status === 'Active'\n );\n this.state.resourcePools = _.sortBy(nonSystemNamespaces, ({ Namespace }) => (Namespace.Name === 'default' ? 0 : 1));\n this.state.resourcePool = this.state.resourcePools[0];\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve initial helm data.');\n } finally {\n this.state.resourcePoolsLoading = false;\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n this.state = {\n appName: '',\n chart: null,\n showCustomValues: false,\n actionInProgress: false,\n resourcePools: [],\n resourcePool: '',\n values: null,\n originalvalues: null,\n repos: [],\n charts: [],\n loadingValues: false,\n isEditorDirty: false,\n chartsLoading: false,\n resourcePoolsLoading: false,\n viewReady: false,\n isAdmin: this.Authentication.isAdmin(),\n globalRepository: undefined,\n };\n\n const helmRepos = await this.getHelmRepoURLs();\n await Promise.all([this.getLatestCharts(helmRepos), this.getResourcePools()]);\n\n this.state.viewReady = true;\n });\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./helm-templates.html');\n\nimport angular from 'angular';\nimport controller from './helm-templates.controller';\n\nangular.module('portainer.kubernetes').component('helmTemplatesView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n endpoint: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./kubernetesConfigurationData.html');\n\nangular.module('portainer.kubernetes').component('kubernetesConfigurationData', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesConfigurationDataController',\n bindings: {\n formValues: '=',\n isDockerConfig: '=',\n onChangeValidation: '&',\n isValid: '=',\n isCreation: '=',\n isEditorDirty: '=',\n type: '<',\n },\n});\n","import { Buffer } from 'buffer';\nimport angular from 'angular';\nimport _ from 'lodash-es';\nimport chardet from 'chardet';\nimport { Base64 } from 'js-base64';\nimport KubernetesFormValidationHelper from 'Kubernetes/helpers/formValidationHelper';\nimport KubernetesConfigurationHelper from 'Kubernetes/helpers/configurationHelper';\nimport { KubernetesConfigurationFormValuesEntry } from 'Kubernetes/models/configuration/formvalues';\nimport { KubernetesConfigurationKinds, KubernetesSecretTypeOptions } from 'Kubernetes/models/configuration/models';\n\nclass KubernetesConfigurationDataController {\n /* @ngInject */\n constructor($async, Notifications) {\n Object.assign(this, { $async, Notifications });\n\n this.editorUpdate = this.editorUpdate.bind(this);\n this.editorUpdateAsync = this.editorUpdateAsync.bind(this);\n this.onFileLoad = this.onFileLoad.bind(this);\n this.onFileLoadAsync = this.onFileLoadAsync.bind(this);\n this.showSimpleMode = this.showSimpleMode.bind(this);\n this.showAdvancedMode = this.showAdvancedMode.bind(this);\n this.KubernetesConfigurationKinds = KubernetesConfigurationKinds;\n this.KubernetesSecretTypeOptions = KubernetesSecretTypeOptions;\n }\n\n onChangeKey(entry) {\n if (entry && entry.Used) {\n return;\n }\n\n this.onChangeValidation();\n\n this.state.duplicateKeys = KubernetesFormValidationHelper.getDuplicates(_.map(this.formValues.Data, (data) => data.Key));\n this.state.invalidKeys = KubernetesFormValidationHelper.getInvalidKeys(_.map(this.formValues.Data, (data) => data.Key));\n this.isValid = Object.keys(this.state.duplicateKeys).length === 0 && Object.keys(this.state.invalidKeys).length === 0;\n }\n\n addEntry() {\n this.formValues.Data.push(new KubernetesConfigurationFormValuesEntry());\n\n // logic for setting required keys for new entries, based on the secret type\n if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n const newDataIndex = this.formValues.Data.length - 1;\n switch (this.formValues.Type) {\n case this.KubernetesSecretTypeOptions.DOCKERCFG.value:\n this.addMissingKeys(['dockercfg'], newDataIndex);\n break;\n case this.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:\n this.addMissingKeys(['.dockerconfigjson'], newDataIndex);\n break;\n case this.KubernetesSecretTypeOptions.BASICAUTH.value:\n // only add a required key if there is no required key out of username and password\n if (!this.formValues.Data.some((entry) => entry.Key === 'username' || entry.Key === 'password')) {\n this.addMissingKeys(['username', 'password'], newDataIndex);\n }\n break;\n case this.KubernetesSecretTypeOptions.SSHAUTH.value:\n this.addMissingKeys(['ssh-privatekey'], newDataIndex);\n break;\n case this.KubernetesSecretTypeOptions.TLS.value:\n this.addMissingKeys(['tls.crt', 'tls.key'], newDataIndex);\n break;\n case this.KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:\n this.addMissingKeys(['token-id', 'token-secret'], newDataIndex);\n break;\n default:\n break;\n }\n }\n\n this.onChangeValidation();\n }\n\n // addMissingKeys adds the keys in the keys array to the entry at the index provided and stops when the first one is added\n addMissingKeys(keys, newDataIndex) {\n for (let key of keys) {\n if (this.formValues.Data.every((entry) => entry.Key !== key)) {\n this.formValues.Data[newDataIndex].Key = key;\n return;\n }\n }\n }\n\n isRequiredKey(key) {\n if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n switch (this.formValues.Type) {\n case this.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:\n if (key === '.dockerconfigjson') {\n return true;\n }\n break;\n case this.KubernetesSecretTypeOptions.DOCKERCFG.value:\n if (key === '.dockercfg') {\n return true;\n }\n break;\n case this.KubernetesSecretTypeOptions.SSHAUTH.value:\n if (key === 'ssh-privatekey') {\n return true;\n }\n break;\n case this.KubernetesSecretTypeOptions.TLS.value:\n if (key === 'tls.crt' || key === 'tls.key') {\n return true;\n }\n break;\n case this.KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:\n if (key === 'token-id' || key === 'token-secret') {\n return true;\n }\n break;\n default:\n break;\n }\n }\n return false;\n }\n\n removeEntry(index, entry) {\n if (entry.Used) {\n return;\n }\n\n this.formValues.Data.splice(index, 1);\n this.onChangeKey();\n }\n\n async editorUpdateAsync(value) {\n if (this.formValues.DataYaml !== value) {\n this.formValues.DataYaml = value;\n this.isEditorDirty = true;\n }\n }\n\n editorUpdate(value) {\n return this.$async(this.editorUpdateAsync, value);\n }\n\n async onFileLoadAsync(event) {\n // exit if the file is too big\n const maximumFileSizeBytes = 1024 * 1024; // 1MB\n if (event.target.result.byteLength > maximumFileSizeBytes) {\n this.Notifications.error('File size is too big', 'File size is too big', 'Select a file that is 1MB or smaller.');\n return;\n }\n\n const entry = new KubernetesConfigurationFormValuesEntry();\n try {\n const encoding = chardet.detect(Buffer.from(event.target.result));\n const decoder = new TextDecoder(encoding);\n\n entry.IsBinary = KubernetesConfigurationHelper.isBinary(encoding);\n\n if (!entry.IsBinary) {\n entry.Value = decoder.decode(event.target.result);\n } else {\n const stringValue = decoder.decode(event.target.result);\n entry.Value = Base64.encode(stringValue);\n }\n } catch (error) {\n this.Notifications.error('Failed to upload file', error, 'Failed to upload file');\n return;\n }\n\n entry.Key = event.target.fileName;\n\n if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n if (this.isDockerConfig) {\n if (this.formValues.Type === this.KubernetesSecretTypeOptions.DOCKERCFG.value) {\n entry.Key = '.dockercfg';\n } else {\n entry.Key = '.dockerconfigjson';\n }\n }\n\n if (this.formValues.Type === this.KubernetesSecretTypeOptions.TLS.value) {\n const isCrt = entry.Value.indexOf('BEGIN CERTIFICATE') !== -1;\n if (isCrt) {\n entry.Key = 'tls.crt';\n }\n const isKey = entry.Value.indexOf('PRIVATE KEY') !== -1;\n if (isKey) {\n entry.Key = 'tls.key';\n }\n }\n }\n\n // if this.formValues.Data has a key that matches an existing key, then replace it\n const existingEntryIndex = this.formValues.Data.findIndex((data) => data.Key === entry.Key || (data.Value === '' && data.Key === ''));\n if (existingEntryIndex !== -1) {\n this.formValues.Data[existingEntryIndex] = entry;\n } else {\n this.formValues.Data.push(entry);\n }\n\n this.onChangeKey();\n }\n\n isEntryRequired() {\n if (this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET) {\n if (this.formValues.Data.length === 1) {\n if (this.formValues.Type !== this.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value) {\n return true;\n }\n }\n }\n return false;\n }\n\n onFileLoad(event) {\n return this.$async(this.onFileLoadAsync, event);\n }\n\n addEntryFromFile(file) {\n if (file) {\n const temporaryFileReader = new FileReader();\n temporaryFileReader.fileName = file.name;\n temporaryFileReader.onload = this.onFileLoad;\n temporaryFileReader.readAsArrayBuffer(file);\n }\n }\n\n showSimpleMode() {\n this.formValues.IsSimple = true;\n this.formValues.Data = KubernetesConfigurationHelper.parseYaml(this.formValues);\n this.onChangeKey();\n }\n\n showAdvancedMode() {\n this.formValues.IsSimple = false;\n this.formValues.DataYaml = KubernetesConfigurationHelper.parseData(this.formValues);\n }\n\n $onInit() {\n this.state = {\n duplicateKeys: [],\n invalidKeys: {},\n };\n }\n}\n\nexport default KubernetesConfigurationDataController;\nangular.module('portainer.kubernetes').controller('KubernetesConfigurationDataController', KubernetesConfigurationDataController);\n","const autoNgTemplateLoaderTemplate1 = require('./resourceReservation.html');\n\nangular.module('portainer.kubernetes').component('kubernetesResourceReservation', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesResourceReservationController',\n bindings: {\n description: '@',\n cpuReservation: '<',\n cpuUsage: '<',\n cpuLimit: '<',\n memoryReservation: '<',\n memoryUsage: '<',\n memoryLimit: '<',\n displayUsage: '<',\n },\n});\n","import angular from 'angular';\n\nclass KubernetesResourceReservationController {\n usageValues() {\n if (this.cpuLimit) {\n this.cpuReservationPercent = Math.round((this.cpuReservation / this.cpuLimit) * 100);\n }\n if (this.memoryLimit) {\n this.memoryReservationPercent = Math.round((this.memoryReservation / this.memoryLimit) * 100);\n }\n\n if (this.displayUsage && this.cpuLimit && this.memoryLimit) {\n this.cpuUsagePercent = Math.round((this.cpuUsage / this.cpuLimit) * 100);\n this.memoryUsagePercent = Math.round((this.memoryUsage / this.memoryLimit) * 100);\n }\n }\n\n $onInit() {\n this.usageValues();\n }\n\n $onChanges() {\n this.usageValues();\n }\n}\n\nexport default KubernetesResourceReservationController;\nangular.module('portainer.kubernetes').controller('KubernetesResourceReservationController', KubernetesResourceReservationController);\n","const autoNgTemplateLoaderTemplate1 = require('./viewLoading.html');\n\nangular.module('portainer.kubernetes').component('kubernetesViewLoading', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n viewReady: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./yamlInspector.html');\n\nangular.module('portainer.kubernetes').component('kubernetesYamlInspector', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesYamlInspectorController',\n bindings: {\n key: '@',\n data: '<',\n },\n});\n","import angular from 'angular';\nimport YAML from 'yaml';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nclass KubernetesYamlInspectorController {\n /* @ngInject */\n\n constructor(clipboard) {\n this.clipboard = clipboard;\n this.expanded = false;\n }\n\n cleanYamlUnwantedFields(yml) {\n try {\n const ymls = yml.split('---');\n const cleanYmls = ymls.map((yml) => {\n const y = YAML.parse(yml);\n if (y.metadata) {\n delete y.metadata.managedFields;\n delete y.metadata.resourceVersion;\n }\n return YAML.stringify(y);\n });\n return cleanYmls.join('---\\n');\n } catch (e) {\n return yml;\n }\n }\n\n copyYAML() {\n this.clipboard.copyText(this.data);\n $('#copyNotificationYAML').show().fadeOut(2500);\n }\n\n toggleYAMLInspectorExpansion() {\n this.expanded = !this.expanded;\n }\n\n $onInit() {\n this.data = this.cleanYamlUnwantedFields(this.data);\n this.limitedFeature = FeatureId.K8S_EDIT_YAML;\n }\n}\n\nexport default KubernetesYamlInspectorController;\nangular.module('portainer.kubernetes').controller('KubernetesYamlInspectorController', KubernetesYamlInspectorController);\n","import _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\n\nimport {\n KubernetesApplication,\n KubernetesApplicationConfigurationVolume,\n KubernetesApplicationDataAccessPolicies,\n KubernetesApplicationDeploymentTypes,\n KubernetesApplicationPersistedFolder,\n KubernetesApplicationPort,\n KubernetesApplicationPublishingTypes,\n KubernetesApplicationTypes,\n KubernetesPortainerApplicationNameLabel,\n KubernetesPortainerApplicationNote,\n KubernetesPortainerApplicationOwnerLabel,\n KubernetesPortainerApplicationStackNameLabel,\n KubernetesPortainerApplicationStackIdLabel,\n KubernetesPortainerApplicationKindLabel,\n} from 'Kubernetes/models/application/models';\nimport { KubernetesServiceTypes } from 'Kubernetes/models/service/models';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport { KubernetesApplicationFormValues } from 'Kubernetes/models/application/formValues';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\n\nimport KubernetesDeploymentConverter from 'Kubernetes/converters/deployment';\nimport KubernetesDaemonSetConverter from 'Kubernetes/converters/daemonSet';\nimport KubernetesStatefulSetConverter from 'Kubernetes/converters/statefulSet';\nimport KubernetesServiceConverter from 'Kubernetes/converters/service';\nimport KubernetesPersistentVolumeClaimConverter from 'Kubernetes/converters/persistentVolumeClaim';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesIngressHelper } from 'Kubernetes/ingress/helper';\nimport KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\n\nfunction _apiPortsToPublishedPorts(pList, pRefs) {\n const ports = _.map(pList, (item) => {\n const res = new KubernetesApplicationPort();\n res.Port = item.port;\n res.TargetPort = item.targetPort;\n res.NodePort = item.nodePort;\n res.Protocol = item.protocol;\n return res;\n });\n _.forEach(ports, (port) => {\n if (isNaN(port.TargetPort)) {\n const targetPort = _.find(pRefs, { name: port.TargetPort });\n if (targetPort) {\n port.TargetPort = targetPort.containerPort;\n }\n }\n });\n return ports;\n}\n\nclass KubernetesApplicationConverter {\n static applicationCommon(res, data, pods, service, ingresses) {\n const containers = data.spec.template ? _.without(_.concat(data.spec.template.spec.containers, data.spec.template.spec.initContainers), undefined) : data.spec.containers;\n res.Id = data.metadata.uid;\n res.Name = data.metadata.name;\n res.Metadata = data.metadata;\n\n if (data.metadata.labels) {\n const { labels } = data.metadata;\n res.StackId = labels[KubernetesPortainerApplicationStackIdLabel] ? parseInt(labels[KubernetesPortainerApplicationStackIdLabel], 10) : null;\n res.StackName = labels[KubernetesPortainerApplicationStackNameLabel] || '';\n res.ApplicationKind = labels[KubernetesPortainerApplicationKindLabel] || '';\n res.ApplicationOwner = labels[KubernetesPortainerApplicationOwnerLabel] || '';\n res.ApplicationName = labels[KubernetesPortainerApplicationNameLabel] || res.Name;\n }\n\n res.Note = data.metadata.annotations ? data.metadata.annotations[KubernetesPortainerApplicationNote] || '' : '';\n res.ResourcePool = data.metadata.namespace;\n if (containers.length) {\n res.Image = containers[0].image;\n }\n if (data.spec.template && data.spec.template.spec && data.spec.template.spec.imagePullSecrets && data.spec.template.spec.imagePullSecrets.length) {\n res.RegistryId = parseInt(data.spec.template.spec.imagePullSecrets[0].name.replace('registry-', ''), 10);\n }\n res.CreationDate = data.metadata.creationTimestamp;\n res.Env = _.without(_.flatMap(_.map(containers, 'env')), undefined);\n res.Pods = data.spec.selector ? KubernetesApplicationHelper.associatePodsAndApplication(pods, data.spec.selector) : [data];\n\n const limits = {\n Cpu: 0,\n Memory: 0,\n };\n res.Limits = _.reduce(\n containers,\n (acc, item) => {\n if (item.resources.limits && item.resources.limits.cpu) {\n acc.Cpu += KubernetesResourceReservationHelper.parseCPU(item.resources.limits.cpu);\n }\n if (item.resources.limits && item.resources.limits.memory) {\n acc.Memory += filesizeParser(item.resources.limits.memory, { base: 10 });\n }\n return acc;\n },\n limits\n );\n\n const requests = {\n Cpu: 0,\n Memory: 0,\n };\n res.Requests = _.reduce(\n containers,\n (acc, item) => {\n if (item.resources.requests && item.resources.requests.cpu) {\n acc.Cpu += KubernetesResourceReservationHelper.parseCPU(item.resources.requests.cpu);\n }\n if (item.resources.requests && item.resources.requests.memory) {\n acc.Memory += filesizeParser(item.resources.requests.memory, { base: 10 });\n }\n return acc;\n },\n requests\n );\n\n if (service) {\n const serviceType = service.spec.type;\n res.ServiceType = serviceType;\n res.ServiceId = service.metadata.uid;\n res.ServiceName = service.metadata.name;\n res.ClusterIp = service.spec.clusterIP;\n res.ExternalIp = service.spec.externalIP;\n\n if (serviceType === KubernetesServiceTypes.LOAD_BALANCER) {\n if (service.status.loadBalancer.ingress && service.status.loadBalancer.ingress.length > 0) {\n res.LoadBalancerIPAddress = service.status.loadBalancer.ingress[0].ip || service.status.loadBalancer.ingress[0].hostname;\n }\n }\n\n const portsRefs = _.concat(..._.map(containers, (container) => container.ports));\n const ports = _apiPortsToPublishedPorts(service.spec.ports, portsRefs);\n const rules = KubernetesIngressHelper.findSBoundServiceIngressesRules(ingresses, service.metadata.name);\n _.forEach(ports, (port) => (port.IngressRules = _.filter(rules, (rule) => rule.Port === port.Port)));\n res.PublishedPorts = ports;\n }\n\n if (data.spec.template) {\n res.Volumes = data.spec.template.spec.volumes ? data.spec.template.spec.volumes : [];\n } else {\n res.Volumes = data.spec.volumes;\n }\n\n // TODO: review\n // this if() fixs direct use of PVC reference inside spec.template.spec.containers[0].volumeMounts\n // instead of referencing the PVC the \"good way\" using spec.template.spec.volumes array\n // Basically it creates an \"in-memory\" reference for the PVC, as if it was saved in\n // spec.template.spec.volumes and retrieved from here.\n //\n // FIX FOR SFS ONLY ; as far as we know it's not possible to do this with DEPLOYMENTS/DAEMONSETS\n //\n // This may lead to destructing behaviours when we will allow external apps to be edited.\n // E.G. if we try to generate the formValues and patch the app, SFS reference will be created under\n // spec.template.spec.volumes and not be referenced directly inside spec.template.spec.containers[0].volumeMounts\n // As we preserve original SFS name and try to build around it, it SHOULD be fine, but we definitely need to test this\n // before allowing external apps modification\n if (data.spec.volumeClaimTemplates) {\n const vcTemplates = _.map(data.spec.volumeClaimTemplates, (vc) => {\n return {\n name: vc.metadata.name,\n persistentVolumeClaim: { claimName: vc.metadata.name },\n };\n });\n const inexistingPVC = _.filter(vcTemplates, (vc) => {\n return !_.find(res.Volumes, { persistentVolumeClaim: { claimName: vc.persistentVolumeClaim.claimName } });\n });\n res.Volumes = _.concat(res.Volumes, inexistingPVC);\n }\n\n const persistedFolders = _.filter(res.Volumes, (volume) => volume.persistentVolumeClaim || volume.hostPath);\n\n res.PersistedFolders = _.map(persistedFolders, (volume) => {\n const volumeMounts = _.uniq(_.flatMap(_.map(containers, 'volumeMounts')), 'name');\n const matchingVolumeMount = _.find(volumeMounts, { name: volume.name });\n\n if (matchingVolumeMount) {\n const persistedFolder = new KubernetesApplicationPersistedFolder();\n persistedFolder.MountPath = matchingVolumeMount.mountPath;\n\n if (volume.persistentVolumeClaim) {\n persistedFolder.PersistentVolumeClaimName = volume.persistentVolumeClaim.claimName;\n } else {\n persistedFolder.HostPath = volume.hostPath.path;\n }\n\n return persistedFolder;\n }\n });\n\n res.PersistedFolders = _.without(res.PersistedFolders, undefined);\n\n res.ConfigurationVolumes = _.reduce(\n res.Volumes,\n (acc, volume) => {\n if (volume.configMap || volume.secret) {\n const matchingVolumeMount = _.find(_.flatMap(_.map(containers, 'volumeMounts')), { name: volume.name });\n\n if (matchingVolumeMount) {\n let items = [];\n let configurationName = '';\n\n if (volume.configMap) {\n items = volume.configMap.items;\n configurationName = volume.configMap.name;\n } else {\n items = volume.secret.items;\n configurationName = volume.secret.secretName;\n }\n\n if (!items) {\n const configurationVolume = new KubernetesApplicationConfigurationVolume();\n configurationVolume.fileMountPath = matchingVolumeMount.mountPath;\n configurationVolume.rootMountPath = matchingVolumeMount.mountPath;\n configurationVolume.configurationName = configurationName;\n configurationVolume.configurationType = volume.configMap ? KubernetesConfigurationKinds.CONFIGMAP : KubernetesConfigurationKinds.SECRET;\n\n acc.push(configurationVolume);\n } else {\n _.forEach(items, (item) => {\n const configurationVolume = new KubernetesApplicationConfigurationVolume();\n configurationVolume.fileMountPath = matchingVolumeMount.mountPath + '/' + item.path;\n configurationVolume.rootMountPath = matchingVolumeMount.mountPath;\n configurationVolume.configurationKey = item.key;\n configurationVolume.configurationName = configurationName;\n configurationVolume.configurationType = volume.configMap ? KubernetesConfigurationKinds.CONFIGMAP : KubernetesConfigurationKinds.SECRET;\n\n acc.push(configurationVolume);\n });\n }\n }\n }\n\n return acc;\n },\n []\n );\n }\n\n static apiPodToApplication(data, pods, service, ingresses) {\n const res = new KubernetesApplication();\n KubernetesApplicationConverter.applicationCommon(res, data, pods, service, ingresses);\n res.ApplicationType = KubernetesApplicationTypes.POD;\n return res;\n }\n\n static apiDeploymentToApplication(data, pods, service, ingresses) {\n const res = new KubernetesApplication();\n KubernetesApplicationConverter.applicationCommon(res, data, pods, service, ingresses);\n res.ApplicationType = KubernetesApplicationTypes.DEPLOYMENT;\n res.DeploymentType = KubernetesApplicationDeploymentTypes.REPLICATED;\n res.DataAccessPolicy = KubernetesApplicationDataAccessPolicies.SHARED;\n res.RunningPodsCount = data.status.availableReplicas || data.status.replicas - data.status.unavailableReplicas || 0;\n res.TotalPodsCount = data.spec.replicas;\n return res;\n }\n\n static apiDaemonSetToApplication(data, pods, service, ingresses) {\n const res = new KubernetesApplication();\n KubernetesApplicationConverter.applicationCommon(res, data, pods, service, ingresses);\n res.ApplicationType = KubernetesApplicationTypes.DAEMONSET;\n res.DeploymentType = KubernetesApplicationDeploymentTypes.GLOBAL;\n res.DataAccessPolicy = KubernetesApplicationDataAccessPolicies.SHARED;\n res.RunningPodsCount = data.status.numberAvailable || data.status.desiredNumberScheduled - data.status.numberUnavailable || 0;\n res.TotalPodsCount = data.status.desiredNumberScheduled;\n return res;\n }\n\n static apiStatefulSetToapplication(data, pods, service, ingresses) {\n const res = new KubernetesApplication();\n KubernetesApplicationConverter.applicationCommon(res, data, pods, service, ingresses);\n res.ApplicationType = KubernetesApplicationTypes.STATEFULSET;\n res.DeploymentType = KubernetesApplicationDeploymentTypes.REPLICATED;\n res.DataAccessPolicy = KubernetesApplicationDataAccessPolicies.ISOLATED;\n res.RunningPodsCount = data.status.readyReplicas || 0;\n res.TotalPodsCount = data.spec.replicas;\n res.HeadlessServiceName = data.spec.serviceName;\n return res;\n }\n\n static applicationToFormValues(app, resourcePools, configurations, persistentVolumeClaims, nodesLabels, ingresses) {\n const res = new KubernetesApplicationFormValues();\n res.ApplicationType = app.ApplicationType;\n res.ResourcePool = _.find(resourcePools, ['Namespace.Name', app.ResourcePool]);\n res.Name = app.Name;\n res.Services = KubernetesApplicationHelper.generateServicesFormValuesFromServices(app);\n res.Selector = KubernetesApplicationHelper.generateSelectorFromService(app);\n res.StackName = app.StackName;\n res.ApplicationOwner = app.ApplicationOwner;\n res.ImageModel.Image = app.Image;\n res.ImageModel.Registry.Id = app.RegistryId;\n res.ReplicaCount = app.TotalPodsCount;\n res.MemoryLimit = KubernetesResourceReservationHelper.megaBytesValue(app.Limits.Memory);\n res.CpuLimit = app.Limits.Cpu;\n res.DeploymentType = app.DeploymentType;\n res.DataAccessPolicy = app.DataAccessPolicy;\n res.EnvironmentVariables = KubernetesApplicationHelper.generateEnvVariablesFromEnv(app.Env);\n res.PersistedFolders = KubernetesApplicationHelper.generatePersistedFoldersFormValuesFromPersistedFolders(app.PersistedFolders, persistentVolumeClaims); // generate from PVC and app.PersistedFolders\n res.Secrets = KubernetesApplicationHelper.generateConfigurationFormValuesFromEnvAndVolumes(\n app.Env,\n app.ConfigurationVolumes,\n configurations,\n KubernetesConfigurationKinds.SECRET\n );\n res.ConfigMaps = KubernetesApplicationHelper.generateConfigurationFormValuesFromEnvAndVolumes(\n app.Env,\n app.ConfigurationVolumes,\n configurations,\n KubernetesConfigurationKinds.CONFIGMAP\n );\n res.AutoScaler = KubernetesApplicationHelper.generateAutoScalerFormValueFromHorizontalPodAutoScaler(app.AutoScaler, res.ReplicaCount);\n res.PublishedPorts = KubernetesApplicationHelper.generatePublishedPortsFormValuesFromPublishedPorts(app.ServiceType, app.PublishedPorts, ingresses);\n res.Containers = app.Containers;\n\n const isIngress = _.filter(res.PublishedPorts, (p) => p.IngressName).length;\n if (app.ServiceType === KubernetesServiceTypes.LOAD_BALANCER) {\n res.PublishingType = KubernetesApplicationPublishingTypes.LOAD_BALANCER;\n } else if (app.ServiceType === KubernetesServiceTypes.NODE_PORT) {\n res.PublishingType = KubernetesApplicationPublishingTypes.NODE_PORT;\n } else if (app.ServiceType === KubernetesServiceTypes.CLUSTER_IP && isIngress) {\n res.PublishingType = KubernetesApplicationPublishingTypes.INGRESS;\n } else {\n res.PublishingType = KubernetesApplicationPublishingTypes.CLUSTER_IP;\n }\n\n if (app.Pods && app.Pods.length) {\n KubernetesApplicationHelper.generatePlacementsFormValuesFromAffinity(res, app.Pods[0].Affinity, nodesLabels);\n }\n\n return res;\n }\n\n static applicationFormValuesToApplication(formValues) {\n formValues.ApplicationOwner = KubernetesCommonHelper.ownerToLabel(formValues.ApplicationOwner);\n\n const claims = KubernetesPersistentVolumeClaimConverter.applicationFormValuesToVolumeClaims(formValues);\n const rwx = KubernetesApplicationHelper.hasRWX(claims);\n\n const deployment =\n (formValues.DeploymentType === KubernetesApplicationDeploymentTypes.REPLICATED &&\n (claims.length === 0 || (claims.length > 0 && formValues.DataAccessPolicy === KubernetesApplicationDataAccessPolicies.SHARED))) ||\n formValues.ApplicationType === KubernetesApplicationTypes.DEPLOYMENT;\n\n const statefulSet =\n (formValues.DeploymentType === KubernetesApplicationDeploymentTypes.REPLICATED &&\n claims.length > 0 &&\n formValues.DataAccessPolicy === KubernetesApplicationDataAccessPolicies.ISOLATED) ||\n formValues.ApplicationType === KubernetesApplicationTypes.STATEFULSET;\n\n const daemonSet =\n (formValues.DeploymentType === KubernetesApplicationDeploymentTypes.GLOBAL &&\n (claims.length === 0 || (claims.length > 0 && formValues.DataAccessPolicy === KubernetesApplicationDataAccessPolicies.SHARED && rwx))) ||\n formValues.ApplicationType === KubernetesApplicationTypes.DAEMONSET;\n\n let app;\n if (deployment) {\n app = KubernetesDeploymentConverter.applicationFormValuesToDeployment(formValues, claims);\n } else if (statefulSet) {\n app = KubernetesStatefulSetConverter.applicationFormValuesToStatefulSet(formValues, claims);\n } else if (daemonSet) {\n app = KubernetesDaemonSetConverter.applicationFormValuesToDaemonSet(formValues, claims);\n } else {\n throw new PortainerError('Unable to determine which association to use to convert form');\n }\n\n let headlessService;\n if (statefulSet) {\n headlessService = KubernetesServiceConverter.applicationFormValuesToHeadlessService(formValues);\n }\n\n let service = KubernetesServiceConverter.applicationFormValuesToService(formValues);\n if (!service.Ports.length) {\n service = undefined;\n }\n\n let services = KubernetesServiceConverter.applicationFormValuesToServices(formValues);\n\n return [app, headlessService, services, service, claims];\n }\n}\n\nexport default KubernetesApplicationConverter;\n","import _ from 'lodash-es';\nimport { KubernetesConfigMap, KubernetesPortainerAccessConfigMap } from 'Kubernetes/models/config-map/models';\nimport { KubernetesConfigMapCreatePayload, KubernetesConfigMapUpdatePayload } from 'Kubernetes/models/config-map/payloads';\nimport { KubernetesPortainerConfigurationOwnerLabel } from 'Kubernetes/models/configuration/models';\nimport { KubernetesConfigurationFormValuesEntry } from 'Kubernetes/models/configuration/formvalues';\n\nclass KubernetesConfigMapConverter {\n static apiToPortainerAccessConfigMap(data) {\n const res = new KubernetesPortainerAccessConfigMap();\n res.Id = data.metadata.uid;\n res.Data = data.data;\n return res;\n }\n\n static createAccessPayload(data) {\n const res = new KubernetesConfigMapCreatePayload();\n _.unset(res, 'binaryData');\n res.metadata.name = data.Name;\n res.metadata.namespace = data.Namespace;\n res.data = data.Data;\n return res;\n }\n\n static updateAccessPayload(data) {\n const res = KubernetesConfigMapConverter.createAccessPayload(data);\n res.metadata.uid = data.Id;\n return res;\n }\n\n /**\n * API ConfigMap to front ConfigMap\n */\n static apiToConfigMap(data, yaml) {\n const res = new KubernetesConfigMap();\n res.Id = data.metadata.uid;\n res.Name = data.metadata.name;\n res.Namespace = data.metadata.namespace;\n res.ConfigurationOwner = data.metadata.labels ? data.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] : '';\n res.CreationDate = data.metadata.creationTimestamp;\n res.Yaml = yaml ? yaml.data : '';\n\n res.Data = _.concat(\n _.map(data.data, (value, key) => {\n const entry = new KubernetesConfigurationFormValuesEntry();\n entry.Key = key;\n entry.Value = value;\n return entry;\n }),\n _.map(data.binaryData, (value, key) => {\n const entry = new KubernetesConfigurationFormValuesEntry();\n entry.Key = key;\n entry.Value = value;\n entry.IsBinary = true;\n return entry;\n })\n );\n\n return res;\n }\n\n /**\n * Generate a default ConfigMap Model\n * with ID = 0 (showing it's a default)\n * but setting his Namespace and Name\n */\n static defaultConfigMap(namespace, name) {\n const res = new KubernetesConfigMap();\n res.Name = name;\n res.Namespace = namespace;\n return res;\n }\n\n /**\n * CREATE payload\n */\n static createPayload(data) {\n const res = new KubernetesConfigMapCreatePayload();\n res.metadata.name = data.Name;\n res.metadata.namespace = data.Namespace;\n const configurationOwner = _.truncate(data.ConfigurationOwner, { length: 63, omission: '' });\n res.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] = configurationOwner;\n\n _.forEach(data.Data, (entry) => {\n if (entry.IsBinary) {\n res.binaryData[entry.Key] = entry.Value;\n } else {\n res.data[entry.Key] = entry.Value;\n }\n });\n return res;\n }\n\n /**\n * UPDATE payload\n */\n static updatePayload(data) {\n const res = new KubernetesConfigMapUpdatePayload();\n res.metadata.uid = data.Id;\n res.metadata.name = data.Name;\n res.metadata.namespace = data.Namespace;\n res.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] = data.ConfigurationOwner;\n _.forEach(data.Data, (entry) => {\n if (entry.IsBinary) {\n res.binaryData[entry.Key] = entry.Value;\n } else {\n res.data[entry.Key] = entry.Value;\n }\n });\n return res;\n }\n\n static configurationFormValuesToConfigMap(formValues) {\n const res = new KubernetesConfigMap();\n res.Id = formValues.Id;\n res.Name = formValues.Name;\n res.Namespace = formValues.ResourcePool.Namespace.Name;\n res.ConfigurationOwner = formValues.ConfigurationOwner;\n res.Data = formValues.Data;\n return res;\n }\n}\n\nexport default KubernetesConfigMapConverter;\n","import _ from 'lodash-es';\nimport { KubernetesConfiguration, KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\n\nclass KubernetesConfigurationConverter {\n static secretToConfiguration(secret) {\n const res = new KubernetesConfiguration();\n res.Kind = KubernetesConfigurationKinds.SECRET;\n res.Id = secret.Id;\n res.Name = secret.Name;\n res.Type = secret.Type;\n res.Namespace = secret.Namespace;\n res.CreationDate = secret.CreationDate;\n res.Yaml = secret.Yaml;\n _.forEach(secret.Data, (entry) => {\n res.Data[entry.Key] = entry.Value;\n });\n res.ConfigurationOwner = secret.ConfigurationOwner;\n res.IsRegistrySecret = secret.IsRegistrySecret;\n res.SecretType = secret.SecretType;\n if (secret.Annotations) {\n res.ServiceAccountName = secret.Annotations['kubernetes.io/service-account.name'];\n }\n return res;\n }\n\n static configMapToConfiguration(configMap) {\n const res = new KubernetesConfiguration();\n res.Kind = KubernetesConfigurationKinds.CONFIGMAP;\n res.Id = configMap.Id;\n res.Name = configMap.Name;\n res.Namespace = configMap.Namespace;\n res.CreationDate = configMap.CreationDate;\n res.Yaml = configMap.Yaml;\n _.forEach(configMap.Data, (entry) => {\n res.Data[entry.Key] = entry.Value;\n });\n res.ConfigurationOwner = configMap.ConfigurationOwner;\n return res;\n }\n}\n\nexport default KubernetesConfigurationConverter;\n","import * as JsonPatch from 'fast-json-patch';\nimport { KubernetesDaemonSet } from 'Kubernetes/models/daemon-set/models';\nimport { KubernetesDaemonSetCreatePayload } from 'Kubernetes/models/daemon-set/payloads';\nimport {\n KubernetesPortainerApplicationStackNameLabel,\n KubernetesPortainerApplicationNameLabel,\n KubernetesPortainerApplicationNote,\n KubernetesPortainerApplicationOwnerLabel,\n} from 'Kubernetes/models/application/models';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';\nimport { buildImageFullURIFromModel } from '@/react/docker/images/utils';\n\nclass KubernetesDaemonSetConverter {\n /**\n * Generate KubernetesDaemonSet from KubernetesApplicationFormValues\n * @param {KubernetesApplicationFormValues} formValues\n */\n static applicationFormValuesToDaemonSet(formValues, volumeClaims) {\n const res = new KubernetesDaemonSet();\n res.Namespace = formValues.ResourcePool.Namespace.Name;\n res.Name = formValues.Name;\n res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n res.ApplicationOwner = formValues.ApplicationOwner;\n res.ApplicationName = formValues.Name;\n res.ImageModel = formValues.ImageModel;\n res.CpuLimit = formValues.CpuLimit;\n res.MemoryLimit = KubernetesResourceReservationHelper.bytesValue(formValues.MemoryLimit);\n res.Env = KubernetesApplicationHelper.generateEnvFromEnvVariables(formValues.EnvironmentVariables);\n KubernetesApplicationHelper.generateVolumesFromPersistentVolumClaims(res, volumeClaims);\n KubernetesApplicationHelper.generateEnvOrVolumesFromConfigurations(res, formValues.ConfigMaps, formValues.Secrets);\n KubernetesApplicationHelper.generateAffinityFromPlacements(res, formValues);\n return res;\n }\n\n /**\n * Generate CREATE payload from DaemonSet\n * @param {KubernetesDaemonSetPayload} model DaemonSet to generate payload from\n */\n static createPayload(daemonSet) {\n const payload = new KubernetesDaemonSetCreatePayload();\n payload.metadata.name = daemonSet.Name;\n payload.metadata.namespace = daemonSet.Namespace;\n payload.metadata.labels[KubernetesPortainerApplicationStackNameLabel] = daemonSet.StackName;\n payload.metadata.labels[KubernetesPortainerApplicationNameLabel] = daemonSet.ApplicationName;\n payload.metadata.labels[KubernetesPortainerApplicationOwnerLabel] = daemonSet.ApplicationOwner;\n payload.metadata.annotations[KubernetesPortainerApplicationNote] = daemonSet.Note;\n payload.spec.replicas = daemonSet.ReplicaCount;\n payload.spec.selector.matchLabels.app = daemonSet.Name;\n payload.spec.template.metadata.labels.app = daemonSet.Name;\n payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = daemonSet.ApplicationName;\n payload.spec.template.spec.containers[0].name = daemonSet.Name;\n payload.spec.template.spec.containers[0].image = buildImageFullURIFromModel(daemonSet.ImageModel);\n if (daemonSet.ImageModel.Registry && daemonSet.ImageModel.Registry.Authentication) {\n payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${daemonSet.ImageModel.Registry.Id}` }];\n }\n payload.spec.template.spec.affinity = daemonSet.Affinity;\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].env', daemonSet.Env);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].volumeMounts', daemonSet.VolumeMounts);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.volumes', daemonSet.Volumes);\n if (daemonSet.MemoryLimit) {\n payload.spec.template.spec.containers[0].resources.limits.memory = daemonSet.MemoryLimit;\n payload.spec.template.spec.containers[0].resources.requests.memory = daemonSet.MemoryLimit;\n }\n if (daemonSet.CpuLimit) {\n payload.spec.template.spec.containers[0].resources.limits.cpu = daemonSet.CpuLimit;\n payload.spec.template.spec.containers[0].resources.requests.cpu = daemonSet.CpuLimit;\n }\n if (!daemonSet.CpuLimit && !daemonSet.MemoryLimit) {\n delete payload.spec.template.spec.containers[0].resources;\n }\n return payload;\n }\n\n static patchPayload(oldDaemonSet, newDaemonSet) {\n const oldPayload = KubernetesDaemonSetConverter.createPayload(oldDaemonSet);\n const newPayload = KubernetesDaemonSetConverter.createPayload(newDaemonSet);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n\nexport default KubernetesDaemonSetConverter;\n","import * as JsonPatch from 'fast-json-patch';\nimport { KubernetesDeployment } from 'Kubernetes/models/deployment/models';\nimport { KubernetesDeploymentCreatePayload } from 'Kubernetes/models/deployment/payloads';\nimport {\n KubernetesPortainerApplicationStackNameLabel,\n KubernetesPortainerApplicationNameLabel,\n KubernetesPortainerApplicationOwnerLabel,\n KubernetesPortainerApplicationNote,\n} from 'Kubernetes/models/application/models';\n\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';\nimport { buildImageFullURIFromModel } from '@/react/docker/images/utils';\n\nclass KubernetesDeploymentConverter {\n /**\n * Generate KubernetesDeployment from KubernetesApplicationFormValues\n * @param {KubernetesApplicationFormValues} formValues\n */\n static applicationFormValuesToDeployment(formValues, volumeClaims) {\n const res = new KubernetesDeployment();\n res.Namespace = formValues.ResourcePool.Namespace.Name;\n res.Name = formValues.Name;\n res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n res.ApplicationOwner = formValues.ApplicationOwner;\n res.ApplicationName = formValues.Name;\n res.ReplicaCount = formValues.ReplicaCount;\n res.ImageModel = formValues.ImageModel;\n res.CpuLimit = formValues.CpuLimit;\n res.MemoryLimit = KubernetesResourceReservationHelper.bytesValue(formValues.MemoryLimit);\n res.Env = KubernetesApplicationHelper.generateEnvFromEnvVariables(formValues.EnvironmentVariables);\n res.Containers = formValues.Containers;\n KubernetesApplicationHelper.generateVolumesFromPersistentVolumClaims(res, volumeClaims);\n KubernetesApplicationHelper.generateEnvOrVolumesFromConfigurations(res, formValues.ConfigMaps, formValues.Secrets);\n KubernetesApplicationHelper.generateAffinityFromPlacements(res, formValues);\n return res;\n }\n\n /**\n * Generate CREATE payload from Deployment\n * @param {KubernetesDeploymentPayload} model Deployment to genereate payload from\n */\n static createPayload(deployment) {\n const payload = new KubernetesDeploymentCreatePayload();\n payload.metadata.name = deployment.Name;\n payload.metadata.namespace = deployment.Namespace;\n payload.metadata.labels[KubernetesPortainerApplicationStackNameLabel] = deployment.StackName;\n payload.metadata.labels[KubernetesPortainerApplicationNameLabel] = deployment.ApplicationName;\n payload.metadata.labels[KubernetesPortainerApplicationOwnerLabel] = deployment.ApplicationOwner;\n payload.metadata.annotations[KubernetesPortainerApplicationNote] = deployment.Note;\n payload.spec.replicas = deployment.ReplicaCount;\n payload.spec.selector.matchLabels.app = deployment.Name;\n payload.spec.template.metadata.labels.app = deployment.Name;\n payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = deployment.ApplicationName;\n payload.spec.template.spec.containers[0].name = deployment.Name;\n\n if (deployment.ImageModel) {\n payload.spec.template.spec.containers[0].image = buildImageFullURIFromModel(deployment.ImageModel);\n\n if (deployment.ImageModel.Registry && deployment.ImageModel.Registry.Authentication) {\n payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${deployment.ImageModel.Registry.Id}` }];\n }\n }\n\n payload.spec.template.spec.affinity = deployment.Affinity;\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].env', deployment.Env);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].volumeMounts', deployment.VolumeMounts);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.volumes', deployment.Volumes);\n if (deployment.MemoryLimit) {\n payload.spec.template.spec.containers[0].resources.limits.memory = deployment.MemoryLimit;\n payload.spec.template.spec.containers[0].resources.requests.memory = deployment.MemoryLimit;\n }\n if (deployment.CpuLimit) {\n payload.spec.template.spec.containers[0].resources.limits.cpu = deployment.CpuLimit;\n payload.spec.template.spec.containers[0].resources.requests.cpu = deployment.CpuLimit;\n }\n if (!deployment.CpuLimit && !deployment.MemoryLimit) {\n delete payload.spec.template.spec.containers[0].resources;\n }\n return payload;\n }\n\n static patchPayload(oldDeployment, newDeployment) {\n const oldPayload = KubernetesDeploymentConverter.createPayload(oldDeployment);\n const newPayload = KubernetesDeploymentConverter.createPayload(newDeployment);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n\nexport default KubernetesDeploymentConverter;\n","import { KubernetesEvent } from 'Kubernetes/models/event/models';\n\nclass KubernetesEventConverter {\n static apiToEvent(data) {\n const res = new KubernetesEvent();\n res.Id = data.metadata.uid;\n res.Date = data.lastTimestamp || data.eventTime;\n res.Type = data.type;\n res.Message = data.message;\n res.Involved = data.involvedObject;\n return res;\n }\n}\n\nexport default KubernetesEventConverter;\n","import _ from 'lodash-es';\nimport { KubernetesNamespace } from 'Kubernetes/models/namespace/models';\nimport { KubernetesNamespaceCreatePayload } from 'Kubernetes/models/namespace/payloads';\nimport {\n KubernetesPortainerResourcePoolNameLabel,\n KubernetesPortainerResourcePoolOwnerLabel,\n KubernetesPortainerNamespaceSystemLabel,\n} from 'Kubernetes/models/resource-pool/models';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\nexport default class KubernetesNamespaceConverter {\n static apiToNamespace(data, yaml) {\n const res = new KubernetesNamespace();\n res.Id = data.metadata.uid;\n res.Name = data.metadata.name;\n res.CreationDate = data.metadata.creationTimestamp;\n res.Status = data.status.phase;\n res.Yaml = yaml ? yaml.data : '';\n res.ResourcePoolName = data.metadata.labels ? data.metadata.labels[KubernetesPortainerResourcePoolNameLabel] : '';\n res.ResourcePoolOwner = data.metadata.labels ? data.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] : '';\n\n res.IsSystem = KubernetesNamespaceHelper.isDefaultSystemNamespace(data.metadata.name);\n if (data.metadata.labels) {\n const systemLabel = data.metadata.labels[KubernetesPortainerNamespaceSystemLabel];\n if (!_.isEmpty(systemLabel)) {\n res.IsSystem = systemLabel === 'true';\n }\n }\n return res;\n }\n\n static createPayload(namespace) {\n const res = new KubernetesNamespaceCreatePayload();\n res.metadata.name = namespace.Name;\n res.metadata.labels[KubernetesPortainerResourcePoolNameLabel] = namespace.ResourcePoolName;\n\n if (namespace.ResourcePoolOwner) {\n const resourcePoolOwner = _.truncate(namespace.ResourcePoolOwner, { length: 63, omission: '' });\n res.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] = resourcePoolOwner;\n }\n return res;\n }\n}\n","import _ from 'lodash-es';\nimport * as JsonPatch from 'fast-json-patch';\n\nimport { KubernetesPersistentVolumeClaim } from 'Kubernetes/models/volume/models';\nimport { KubernetesPersistentVolumClaimCreatePayload } from 'Kubernetes/models/volume/payloads';\nimport { KubernetesPortainerApplicationOwnerLabel, KubernetesPortainerApplicationNameLabel } from 'Kubernetes/models/application/models';\n\nclass KubernetesPersistentVolumeClaimConverter {\n static apiToPersistentVolumeClaim(data, storageClasses, yaml) {\n const res = new KubernetesPersistentVolumeClaim();\n res.Id = data.metadata.uid;\n res.Name = data.metadata.name;\n res.Namespace = data.metadata.namespace;\n res.CreationDate = data.metadata.creationTimestamp;\n res.Storage = `${data.spec.resources.requests.storage}B`;\n res.StorageClass = _.find(storageClasses, { Name: data.spec.storageClassName });\n res.Yaml = yaml ? yaml.data : '';\n res.ApplicationOwner = data.metadata.labels ? data.metadata.labels[KubernetesPortainerApplicationOwnerLabel] : '';\n res.ApplicationName = data.metadata.labels ? data.metadata.labels[KubernetesPortainerApplicationNameLabel] : '';\n return res;\n }\n\n /**\n * Generate KubernetesPersistentVolumeClaim list from KubernetesApplicationFormValues\n * @param {KubernetesApplicationFormValues} formValues\n */\n static applicationFormValuesToVolumeClaims(formValues) {\n _.remove(formValues.PersistedFolders, (item) => item.NeedsDeletion);\n const res = _.map(formValues.PersistedFolders, (item) => {\n const pvc = new KubernetesPersistentVolumeClaim();\n if (!_.isEmpty(item.ExistingVolume)) {\n const existantPVC = item.ExistingVolume.PersistentVolumeClaim;\n pvc.Name = existantPVC.Name;\n if (item.PersistentVolumeClaimName) {\n pvc.PreviousName = item.PersistentVolumeClaimName;\n }\n pvc.StorageClass = existantPVC.StorageClass;\n pvc.Storage = existantPVC.Storage.charAt(0);\n pvc.CreationDate = existantPVC.CreationDate;\n pvc.Id = existantPVC.Id;\n } else {\n if (item.PersistentVolumeClaimName) {\n pvc.Name = item.PersistentVolumeClaimName;\n pvc.PreviousName = item.PersistentVolumeClaimName;\n } else {\n pvc.Name = formValues.Name + '-' + pvc.Name;\n }\n pvc.Storage = '' + item.Size + item.SizeUnit.charAt(0);\n pvc.StorageClass = item.StorageClass;\n }\n pvc.MountPath = item.ContainerPath;\n pvc.Namespace = formValues.ResourcePool.Namespace.Name;\n pvc.ApplicationOwner = formValues.ApplicationOwner;\n pvc.ApplicationName = formValues.Name;\n return pvc;\n });\n return res;\n }\n\n static createPayload(pvc) {\n const res = new KubernetesPersistentVolumClaimCreatePayload();\n res.metadata.name = pvc.Name;\n res.metadata.namespace = pvc.Namespace;\n res.spec.resources.requests.storage = pvc.Storage;\n res.spec.storageClassName = pvc.StorageClass ? pvc.StorageClass.Name : '';\n res.metadata.labels.app = pvc.ApplicationName;\n res.metadata.labels[KubernetesPortainerApplicationOwnerLabel] = pvc.ApplicationOwner;\n res.metadata.labels[KubernetesPortainerApplicationNameLabel] = pvc.ApplicationName;\n return res;\n }\n\n static patchPayload(oldPVC, newPVC) {\n const oldPayload = KubernetesPersistentVolumeClaimConverter.createPayload(oldPVC);\n const newPayload = KubernetesPersistentVolumeClaimConverter.createPayload(newPVC);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n\nexport default KubernetesPersistentVolumeClaimConverter;\n","import _ from 'lodash-es';\n\nimport { KubernetesResourcePool } from 'Kubernetes/models/resource-pool/models';\nimport { KubernetesNamespace } from 'Kubernetes/models/namespace/models';\nimport { KubernetesIngressConverter } from 'Kubernetes/ingress/converter';\nimport KubernetesResourceQuotaConverter from './resourceQuota';\n\nclass KubernetesResourcePoolConverter {\n static apiToResourcePool(namespace) {\n const res = new KubernetesResourcePool();\n res.Namespace = namespace;\n res.Yaml = namespace.Yaml;\n return res;\n }\n\n static formValuesToResourcePool(formValues) {\n const namespace = new KubernetesNamespace();\n namespace.Name = formValues.Name;\n namespace.ResourcePoolName = formValues.Name;\n namespace.ResourcePoolOwner = formValues.Owner;\n namespace.IsSystem = formValues.IsSystem;\n\n const quota = KubernetesResourceQuotaConverter.resourcePoolFormValuesToResourceQuota(formValues);\n\n const ingMap = _.map(formValues.IngressClasses, (c) => {\n if (c.Selected) {\n c.Namespace = namespace.Name;\n return KubernetesIngressConverter.resourcePoolIngressClassFormValueToIngress(c);\n }\n });\n const ingresses = _.without(ingMap, undefined);\n const registries = _.map(formValues.Registries, (r) => {\n if (!r.RegistryAccesses[formValues.EndpointId]) {\n r.RegistryAccesses[formValues.EndpointId] = { Namespaces: [] };\n }\n if (!_.includes(r.RegistryAccesses[formValues.EndpointId].Namespaces, formValues.Name)) {\n r.RegistryAccesses[formValues.EndpointId].Namespaces = [...r.RegistryAccesses[formValues.EndpointId].Namespaces, formValues.Name];\n }\n return r;\n });\n return [namespace, quota, ingresses, registries];\n }\n}\n\nexport default KubernetesResourcePoolConverter;\n","import * as JsonPatch from 'fast-json-patch';\nimport filesizeParser from 'filesize-parser';\n\nimport {\n KubernetesResourceQuota,\n KubernetesPortainerResourceQuotaCPULimit,\n KubernetesPortainerResourceQuotaMemoryLimit,\n KubernetesPortainerResourceQuotaCPURequest,\n KubernetesPortainerResourceQuotaMemoryRequest,\n KubernetesResourceQuotaDefaults,\n} from 'Kubernetes/models/resource-quota/models';\nimport { KubernetesResourceQuotaCreatePayload } from 'Kubernetes/models/resource-quota/payloads';\nimport KubernetesResourceQuotaHelper from 'Kubernetes/helpers/resourceQuotaHelper';\nimport { KubernetesPortainerResourcePoolNameLabel, KubernetesPortainerResourcePoolOwnerLabel } from 'Kubernetes/models/resource-pool/models';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';\nimport { KubernetesResourcePoolFormValues } from 'Kubernetes/models/resource-pool/formValues';\n\nclass KubernetesResourceQuotaConverter {\n static apiToResourceQuota(data, yaml) {\n const res = new KubernetesResourceQuota();\n res.Id = data.metadata.uid;\n res.Namespace = data.metadata.namespace;\n res.Name = data.metadata.name;\n res.CpuLimit = 0;\n res.MemoryLimit = 0;\n if (data.spec.hard && data.spec.hard[KubernetesPortainerResourceQuotaCPULimit]) {\n res.CpuLimit = KubernetesResourceReservationHelper.parseCPU(data.spec.hard[KubernetesPortainerResourceQuotaCPULimit]);\n }\n if (data.spec.hard && data.spec.hard[KubernetesPortainerResourceQuotaMemoryLimit]) {\n res.MemoryLimit = filesizeParser(data.spec.hard[KubernetesPortainerResourceQuotaMemoryLimit], { base: 10 });\n }\n\n res.MemoryLimitUsed = 0;\n if (data.status.used && data.status.used[KubernetesPortainerResourceQuotaMemoryLimit]) {\n res.MemoryLimitUsed = filesizeParser(data.status.used[KubernetesPortainerResourceQuotaMemoryLimit], { base: 10 });\n }\n\n res.CpuLimitUsed = 0;\n if (data.status.used && data.status.used[KubernetesPortainerResourceQuotaCPULimit]) {\n res.CpuLimitUsed = KubernetesResourceReservationHelper.parseCPU(data.status.used[KubernetesPortainerResourceQuotaCPULimit]);\n }\n res.Yaml = yaml ? yaml.data : '';\n res.ResourcePoolName = data.metadata.labels ? data.metadata.labels[KubernetesPortainerResourcePoolNameLabel] : '';\n res.ResourcePoolOwner = data.metadata.labels ? data.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] : '';\n return res;\n }\n\n static createPayload(quota) {\n const res = new KubernetesResourceQuotaCreatePayload();\n res.metadata.name = KubernetesResourceQuotaHelper.generateResourceQuotaName(quota.Namespace);\n res.metadata.namespace = quota.Namespace;\n KubernetesCommonHelper.assignOrDeleteIfEmptyOrZero(res, `spec.hard['${KubernetesPortainerResourceQuotaCPURequest}']`, quota.CpuLimit);\n KubernetesCommonHelper.assignOrDeleteIfEmptyOrZero(res, `spec.hard['${KubernetesPortainerResourceQuotaMemoryRequest}']`, quota.MemoryLimit);\n KubernetesCommonHelper.assignOrDeleteIfEmptyOrZero(res, `spec.hard['${KubernetesPortainerResourceQuotaCPULimit}']`, quota.CpuLimit);\n KubernetesCommonHelper.assignOrDeleteIfEmptyOrZero(res, `spec.hard['${KubernetesPortainerResourceQuotaMemoryLimit}']`, quota.MemoryLimit);\n res.metadata.labels[KubernetesPortainerResourcePoolNameLabel] = quota.ResourcePoolName;\n if (quota.ResourcePoolOwner) {\n res.metadata.labels[KubernetesPortainerResourcePoolOwnerLabel] = quota.ResourcePoolOwner;\n }\n return res;\n }\n\n static updatePayload(quota) {\n const res = KubernetesResourceQuotaConverter.createPayload(quota);\n res.metadata.uid = quota.Id;\n return res;\n }\n\n static patchPayload(oldQuota, newQuota) {\n const oldPayload = KubernetesResourceQuotaConverter.createPayload(oldQuota);\n const newPayload = KubernetesResourceQuotaConverter.createPayload(newQuota);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n\n static quotaToResourcePoolFormValues(quota) {\n const res = new KubernetesResourcePoolFormValues(KubernetesResourceQuotaDefaults);\n res.Name = quota.Namespace;\n res.CpuLimit = quota.CpuLimit;\n res.MemoryLimit = KubernetesResourceReservationHelper.megaBytesValue(quota.MemoryLimit);\n if (res.CpuLimit || res.MemoryLimit) {\n res.HasQuota = true;\n }\n res.StorageClasses = quota.StorageRequests;\n return res;\n }\n\n static resourcePoolFormValuesToResourceQuota(formValues) {\n if (formValues.HasQuota) {\n const quota = new KubernetesResourceQuota(formValues.Name);\n if (formValues.HasQuota) {\n quota.CpuLimit = formValues.CpuLimit;\n quota.MemoryLimit = KubernetesResourceReservationHelper.bytesValue(formValues.MemoryLimit);\n }\n quota.ResourcePoolName = formValues.Name;\n quota.ResourcePoolOwner = formValues.Owner;\n return quota;\n }\n }\n}\n\nexport default KubernetesResourceQuotaConverter;\n","import _ from 'lodash-es';\nimport { KubernetesSecretCreatePayload, KubernetesSecretUpdatePayload } from 'Kubernetes/models/secret/payloads';\nimport { KubernetesApplicationSecret } from 'Kubernetes/models/secret/models';\nimport { KubernetesPortainerConfigurationDataAnnotation } from 'Kubernetes/models/configuration/models';\nimport { KubernetesPortainerConfigurationOwnerLabel } from 'Kubernetes/models/configuration/models';\nimport { KubernetesConfigurationFormValuesEntry } from 'Kubernetes/models/configuration/formvalues';\nimport { KubernetesSecretTypeOptions } from 'Kubernetes/models/configuration/models';\nclass KubernetesSecretConverter {\n static createPayload(secret) {\n const res = new KubernetesSecretCreatePayload();\n res.metadata.name = secret.Name;\n res.metadata.namespace = secret.Namespace;\n res.type = secret.Type;\n const configurationOwner = _.truncate(secret.ConfigurationOwner, { length: 63, omission: '' });\n res.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] = configurationOwner;\n\n let annotation = '';\n _.forEach(secret.Data, (entry) => {\n if (entry.IsBinary) {\n res.data[entry.Key] = entry.Value;\n annotation += annotation !== '' ? '|' + entry.Key : entry.Key;\n } else {\n res.stringData[entry.Key] = entry.Value;\n }\n });\n if (annotation !== '') {\n res.metadata.annotations[KubernetesPortainerConfigurationDataAnnotation] = annotation;\n }\n\n _.forEach(secret.Annotations, (entry) => {\n res.metadata.annotations[entry.name] = entry.value;\n });\n\n return res;\n }\n\n static updatePayload(secret) {\n const res = new KubernetesSecretUpdatePayload();\n res.metadata.name = secret.Name;\n res.metadata.namespace = secret.Namespace;\n res.type = secret.Type;\n res.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] = secret.ConfigurationOwner;\n\n let annotation = '';\n _.forEach(secret.Data, (entry) => {\n if (entry.IsBinary) {\n res.data[entry.Key] = entry.Value;\n annotation += annotation !== '' ? '|' + entry.Key : entry.Key;\n } else {\n res.stringData[entry.Key] = entry.Value;\n }\n });\n if (annotation !== '') {\n res.metadata.annotations[KubernetesPortainerConfigurationDataAnnotation] = annotation;\n }\n\n _.forEach(secret.Annotations, (entry) => {\n res.metadata.annotations[entry.name] = entry.value;\n });\n\n return res;\n }\n\n static apiToSecret(payload, yaml) {\n const res = new KubernetesApplicationSecret();\n res.Id = payload.metadata.uid;\n res.Name = payload.metadata.name;\n res.Namespace = payload.metadata.namespace;\n res.Type = payload.type;\n res.ConfigurationOwner = payload.metadata.labels ? payload.metadata.labels[KubernetesPortainerConfigurationOwnerLabel] : '';\n res.CreationDate = payload.metadata.creationTimestamp;\n res.Annotations = payload.metadata.annotations;\n\n res.IsRegistrySecret = payload.metadata.annotations && !!payload.metadata.annotations['portainer.io/registry.id'];\n\n res.Yaml = yaml ? yaml.data : '';\n\n res.SecretType = payload.type;\n\n res.Data = _.map(payload.data, (value, key) => {\n const annotations = payload.metadata.annotations ? payload.metadata.annotations[KubernetesPortainerConfigurationDataAnnotation] : '';\n const entry = new KubernetesConfigurationFormValuesEntry();\n entry.Key = key;\n entry.IsBinary = _.includes(annotations, entry.Key);\n\n if (!entry.IsBinary) {\n entry.Value = atob(value);\n } else {\n entry.Value = value;\n }\n return entry;\n });\n\n return res;\n }\n\n static configurationFormValuesToSecret(formValues) {\n const res = new KubernetesApplicationSecret();\n res.Name = formValues.Name;\n res.Namespace = formValues.ResourcePool.Namespace.Name;\n res.Type = formValues.Type;\n res.ConfigurationOwner = formValues.ConfigurationOwner;\n res.Data = formValues.Data;\n\n if (formValues.Type === KubernetesSecretTypeOptions.CUSTOM.value) {\n res.Type = formValues.customType;\n }\n if (formValues.Type === KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value) {\n res.Annotations = [{ name: 'kubernetes.io/service-account.name', value: formValues.ServiceAccountName }];\n }\n return res;\n }\n}\n\nexport default KubernetesSecretConverter;\n","import _ from 'lodash-es';\nimport * as JsonPatch from 'fast-json-patch';\n\nimport { KubernetesServiceCreatePayload } from 'Kubernetes/models/service/payloads';\nimport {\n KubernetesApplicationPublishingTypes,\n KubernetesPortainerApplicationNameLabel,\n KubernetesPortainerApplicationOwnerLabel,\n KubernetesPortainerApplicationStackNameLabel,\n} from 'Kubernetes/models/application/models';\nimport { KubernetesService, KubernetesServiceHeadlessClusterIP, KubernetesServicePort, KubernetesServiceTypes } from 'Kubernetes/models/service/models';\nimport KubernetesServiceHelper from 'Kubernetes/helpers/serviceHelper';\n\nfunction _publishedPortToServicePort(formValues, publishedPort, type) {\n if (publishedPort.IsNew || !publishedPort.NeedsDeletion) {\n const name = formValues.Name;\n const res = new KubernetesServicePort();\n res.name = _.toLower(name + '-' + publishedPort.ContainerPort + '-' + publishedPort.Protocol);\n res.port = type === KubernetesServiceTypes.LOAD_BALANCER ? publishedPort.LoadBalancerPort : publishedPort.ContainerPort;\n res.targetPort = publishedPort.ContainerPort;\n res.protocol = publishedPort.Protocol;\n if (type === KubernetesServiceTypes.NODE_PORT && publishedPort.NodePort) {\n res.nodePort = publishedPort.NodePort;\n } else if (type === KubernetesServiceTypes.LOAD_BALANCER && publishedPort.LoadBalancerNodePort) {\n res.nodePort = publishedPort.LoadBalancerNodePort;\n } else {\n delete res.nodePort;\n }\n return res;\n }\n}\n\nclass KubernetesServiceConverter {\n /**\n * Generate KubernetesService from KubernetesApplicationFormValues\n * @param {KubernetesApplicationFormValues} formValues\n */\n static applicationFormValuesToService(formValues) {\n const res = new KubernetesService();\n res.Namespace = formValues.ResourcePool.Namespace.Name;\n res.Name = formValues.Name;\n res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n res.ApplicationOwner = formValues.ApplicationOwner;\n res.ApplicationName = formValues.Name;\n if (formValues.PublishingType === KubernetesApplicationPublishingTypes.NODE_PORT) {\n res.Type = KubernetesServiceTypes.NODE_PORT;\n } else if (formValues.PublishingType === KubernetesApplicationPublishingTypes.LOAD_BALANCER) {\n res.Type = KubernetesServiceTypes.LOAD_BALANCER;\n }\n const ports = _.map(formValues.PublishedPorts, (item) => _publishedPortToServicePort(formValues, item, res.Type));\n res.Ports = _.uniqBy(_.without(ports, undefined), (p) => p.targetPort + p.protocol);\n return res;\n }\n\n static applicationFormValuesToServices(formValues) {\n let services = [];\n formValues.Services.forEach(function (service) {\n const res = new KubernetesService();\n res.Namespace = formValues.ResourcePool.Namespace.Name;\n res.Name = service.Name;\n res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n res.ApplicationOwner = formValues.ApplicationOwner;\n res.ApplicationName = formValues.Name;\n if (service.Type === KubernetesApplicationPublishingTypes.NODE_PORT) {\n res.Type = KubernetesServiceTypes.NODE_PORT;\n } else if (service.Type === KubernetesApplicationPublishingTypes.LOAD_BALANCER) {\n res.Type = KubernetesServiceTypes.LOAD_BALANCER;\n } else if (service.Type === KubernetesApplicationPublishingTypes.CLUSTER_IP) {\n res.Type = KubernetesServiceTypes.CLUSTER_IP;\n }\n res.Ingress = service.Ingress;\n\n if (service.Selector !== undefined) {\n res.Selector = service.Selector;\n } else {\n res.Selector = {\n app: formValues.Name,\n };\n }\n\n let ports = [];\n service.Ports.forEach(function (port, index) {\n const res = new KubernetesServicePort();\n res.name = 'port-' + index;\n res.port = port.port;\n if (port.nodePort) {\n res.nodePort = port.nodePort;\n }\n res.protocol = port.protocol;\n res.targetPort = port.targetPort;\n res.ingress = port.ingress;\n ports.push(res);\n });\n res.Ports = ports;\n\n services.push(res);\n });\n return services;\n }\n\n static applicationFormValuesToHeadlessService(formValues) {\n const res = KubernetesServiceConverter.applicationFormValuesToService(formValues);\n res.Name = KubernetesServiceHelper.generateHeadlessServiceName(formValues.Name);\n res.Headless = true;\n res.Selector = {\n app: formValues.Name,\n };\n return res;\n }\n\n /**\n * Generate CREATE payload from Service\n * @param {KubernetesService} model Service to genereate payload from\n */\n static createPayload(service) {\n const payload = new KubernetesServiceCreatePayload();\n payload.metadata.name = service.Name;\n payload.metadata.namespace = service.Namespace;\n payload.metadata.labels[KubernetesPortainerApplicationStackNameLabel] = service.StackName;\n payload.metadata.labels[KubernetesPortainerApplicationNameLabel] = service.ApplicationName;\n payload.metadata.labels[KubernetesPortainerApplicationOwnerLabel] = service.ApplicationOwner;\n\n const ports = [];\n service.Ports.forEach((port) => {\n const p = {};\n p.name = port.name;\n p.port = port.port;\n p.nodePort = port.nodePort;\n p.protocol = port.protocol;\n p.targetPort = port.targetPort;\n ports.push(p);\n });\n payload.spec.ports = ports;\n\n payload.spec.selector = service.Selector;\n if (service.Headless) {\n payload.spec.clusterIP = KubernetesServiceHeadlessClusterIP;\n delete payload.spec.ports;\n } else if (service.Type) {\n payload.spec.type = service.Type;\n }\n return payload;\n }\n\n static patchPayload(oldService, newService) {\n const oldPayload = KubernetesServiceConverter.createPayload(oldService);\n const newPayload = KubernetesServiceConverter.createPayload(newService);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n\nexport default KubernetesServiceConverter;\n","import _ from 'lodash-es';\nimport * as JsonPatch from 'fast-json-patch';\n\nimport { KubernetesStatefulSet } from 'Kubernetes/models/stateful-set/models';\nimport { KubernetesStatefulSetCreatePayload } from 'Kubernetes/models/stateful-set/payloads';\nimport {\n KubernetesPortainerApplicationStackNameLabel,\n KubernetesPortainerApplicationNameLabel,\n KubernetesPortainerApplicationOwnerLabel,\n KubernetesPortainerApplicationNote,\n} from 'Kubernetes/models/application/models';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';\nimport { buildImageFullURIFromModel } from '@/react/docker/images/utils';\nimport KubernetesPersistentVolumeClaimConverter from './persistentVolumeClaim';\n\nclass KubernetesStatefulSetConverter {\n /**\n * Generate KubernetesStatefulSet from KubernetesApplicationFormValues\n * @param {KubernetesApplicationFormValues} formValues\n */\n static applicationFormValuesToStatefulSet(formValues, volumeClaims) {\n const res = new KubernetesStatefulSet();\n res.Namespace = formValues.ResourcePool.Namespace.Name;\n res.Name = formValues.Name;\n res.StackName = formValues.StackName ? formValues.StackName : formValues.Name;\n res.ApplicationOwner = formValues.ApplicationOwner;\n res.ApplicationName = formValues.Name;\n res.ReplicaCount = formValues.ReplicaCount;\n res.ImageModel = formValues.ImageModel;\n res.CpuLimit = formValues.CpuLimit;\n res.MemoryLimit = KubernetesResourceReservationHelper.bytesValue(formValues.MemoryLimit);\n res.Env = KubernetesApplicationHelper.generateEnvFromEnvVariables(formValues.EnvironmentVariables);\n KubernetesApplicationHelper.generateVolumesFromPersistentVolumClaims(res, volumeClaims);\n KubernetesApplicationHelper.generateEnvOrVolumesFromConfigurations(res, formValues.ConfigMaps, formValues.Secrets);\n KubernetesApplicationHelper.generateAffinityFromPlacements(res, formValues);\n return res;\n }\n\n /**\n * Generate CREATE payload from StatefulSet\n * @param {KubernetesStatefulSetPayload} model StatefulSet to genereate payload from\n */\n static createPayload(statefulSet) {\n const payload = new KubernetesStatefulSetCreatePayload();\n payload.metadata.name = statefulSet.Name;\n payload.metadata.namespace = statefulSet.Namespace;\n payload.metadata.labels[KubernetesPortainerApplicationStackNameLabel] = statefulSet.StackName;\n payload.metadata.labels[KubernetesPortainerApplicationNameLabel] = statefulSet.ApplicationName;\n payload.metadata.labels[KubernetesPortainerApplicationOwnerLabel] = statefulSet.ApplicationOwner;\n payload.metadata.annotations[KubernetesPortainerApplicationNote] = statefulSet.Note;\n payload.spec.replicas = statefulSet.ReplicaCount;\n payload.spec.serviceName = statefulSet.ServiceName;\n payload.spec.selector.matchLabels.app = statefulSet.Name;\n payload.spec.volumeClaimTemplates = _.map(statefulSet.VolumeClaims, (item) => KubernetesPersistentVolumeClaimConverter.createPayload(item));\n payload.spec.template.metadata.labels.app = statefulSet.Name;\n payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = statefulSet.ApplicationName;\n payload.spec.template.spec.containers[0].name = statefulSet.Name;\n if (statefulSet.ImageModel.Image) {\n payload.spec.template.spec.containers[0].image = buildImageFullURIFromModel(statefulSet.ImageModel);\n if (statefulSet.ImageModel.Registry && statefulSet.ImageModel.Registry.Authentication) {\n payload.spec.template.spec.imagePullSecrets = [{ name: `registry-${statefulSet.ImageModel.Registry.Id}` }];\n }\n }\n payload.spec.template.spec.affinity = statefulSet.Affinity;\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].env', statefulSet.Env);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].volumeMounts', statefulSet.VolumeMounts);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.volumes', statefulSet.Volumes);\n if (statefulSet.MemoryLimit) {\n payload.spec.template.spec.containers[0].resources.limits.memory = statefulSet.MemoryLimit;\n payload.spec.template.spec.containers[0].resources.requests.memory = statefulSet.MemoryLimit;\n }\n if (statefulSet.CpuLimit) {\n payload.spec.template.spec.containers[0].resources.limits.cpu = statefulSet.CpuLimit;\n payload.spec.template.spec.containers[0].resources.requests.cpu = statefulSet.CpuLimit;\n }\n if (!statefulSet.CpuLimit && !statefulSet.MemoryLimit) {\n delete payload.spec.template.spec.containers[0].resources;\n }\n return payload;\n }\n\n static patchPayload(oldSFS, newSFS) {\n const oldPayload = KubernetesStatefulSetConverter.createPayload(oldSFS);\n const newPayload = KubernetesStatefulSetConverter.createPayload(newSFS);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n\nexport default KubernetesStatefulSetConverter;\n","import * as JsonPatch from 'fast-json-patch';\n\nimport { KubernetesStorageClass } from 'Kubernetes/models/storage-class/models';\nimport { KubernetesStorageClassCreatePayload } from 'Kubernetes/models/storage-class/payload';\n\nclass KubernetesStorageClassConverter {\n /**\n * API StorageClass to front StorageClass\n */\n static apiToStorageClass(data) {\n const res = new KubernetesStorageClass();\n res.Name = data.metadata.name;\n res.Provisioner = data.provisioner;\n res.AllowVolumeExpansion = data.allowVolumeExpansion;\n return res;\n }\n\n static createPayload(storageClass) {\n const res = new KubernetesStorageClassCreatePayload();\n res.metadata.name = storageClass.Name;\n res.provisioner = storageClass.Provisioner;\n res.allowVolumeExpansion = storageClass.AllowVolumeExpansion;\n return res;\n }\n\n static patchPayload(oldStorageClass, newStorageClass) {\n const oldPayload = KubernetesStorageClassConverter.createPayload(oldStorageClass);\n const newPayload = KubernetesStorageClassConverter.createPayload(newStorageClass);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n\nexport default KubernetesStorageClassConverter;\n","import { KubernetesVolume } from 'Kubernetes/models/volume/models';\n\nclass KubernetesVolumeConverter {\n static pvcToVolume(claim, pool) {\n const res = new KubernetesVolume();\n res.PersistentVolumeClaim = claim;\n res.ResourcePool = pool;\n return res;\n }\n}\n\nexport default KubernetesVolumeConverter;\n","import angular from 'angular';\n\nimport { kubeCustomTemplatesView } from './kube-custom-templates-view';\nimport { kubeEditCustomTemplateView } from './kube-edit-custom-template-view';\nimport { kubeCreateCustomTemplateView } from './kube-create-custom-template-view';\n\nexport default angular\n .module('portainer.kubernetes.custom-templates', [])\n .config(config)\n .component('kubeCustomTemplatesView', kubeCustomTemplatesView)\n .component('kubeEditCustomTemplateView', kubeEditCustomTemplateView)\n .component('kubeCreateCustomTemplateView', kubeCreateCustomTemplateView).name;\n\nfunction config($stateRegistryProvider) {\n const templates = {\n name: 'kubernetes.templates',\n url: '/templates',\n abstract: true,\n };\n\n const customTemplates = {\n name: 'kubernetes.templates.custom',\n url: '/custom',\n\n views: {\n 'content@': {\n component: 'kubeCustomTemplatesView',\n },\n },\n };\n\n const customTemplatesNew = {\n name: 'kubernetes.templates.custom.new',\n url: '/new?fileContent',\n\n views: {\n 'content@': {\n component: 'kubeCreateCustomTemplateView',\n },\n },\n params: {\n fileContent: '',\n },\n };\n\n const customTemplatesEdit = {\n name: 'kubernetes.templates.custom.edit',\n url: '/:id',\n\n views: {\n 'content@': {\n component: 'kubeEditCustomTemplateView',\n },\n },\n };\n\n $stateRegistryProvider.register(templates);\n $stateRegistryProvider.register(customTemplates);\n $stateRegistryProvider.register(customTemplatesNew);\n $stateRegistryProvider.register(customTemplatesEdit);\n}\n","const autoNgTemplateLoaderTemplate1 = require('./kube-create-custom-template-view.html');\n\nimport controller from './kube-create-custom-template-view.controller.js';\n\nexport const kubeCreateCustomTemplateView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","import { AccessControlFormData } from '@/portainer/components/accessControlForm/porAccessControlFormModel';\nimport { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { editor, upload, git } from '@@/BoxSelector/common-options/build-methods';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { KUBE_TEMPLATE_NAME_VALIDATION_REGEX } from '@/constants';\n\nclass KubeCreateCustomTemplateViewController {\n /* @ngInject */\n constructor($async, $state, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService) {\n Object.assign(this, { $async, $state, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService });\n\n this.methodOptions = [editor, upload, git];\n\n this.templates = null;\n this.isTemplateVariablesEnabled = isBE;\n\n this.state = {\n method: 'editor',\n actionInProgress: false,\n formValidationError: '',\n isEditorDirty: false,\n isTemplateValid: true,\n templateNameRegex: KUBE_TEMPLATE_NAME_VALIDATION_REGEX,\n };\n\n this.formValues = {\n FileContent: '',\n File: null,\n Title: '',\n Description: '',\n Note: '',\n Logo: '',\n AccessControlData: new AccessControlFormData(),\n Variables: [],\n RepositoryURL: '',\n RepositoryURLValid: false,\n RepositoryReferenceName: 'refs/heads/main',\n RepositoryAuthentication: false,\n RepositoryUsername: '',\n RepositoryPassword: '',\n ComposeFilePathInRepository: 'manifest.yml',\n };\n\n this.onChangeFile = this.onChangeFile.bind(this);\n this.onChangeFileContent = this.onChangeFileContent.bind(this);\n this.onChangeMethod = this.onChangeMethod.bind(this);\n this.onBeforeOnload = this.onBeforeOnload.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.onVariablesChange = this.onVariablesChange.bind(this);\n }\n\n onChangeMethod(method) {\n this.state.method = method;\n this.formValues.Variables = [];\n }\n\n onChangeFileContent(content) {\n this.handleChange({ FileContent: content });\n this.parseTemplate(content);\n this.state.isEditorDirty = true;\n }\n\n parseTemplate(templateStr) {\n if (!this.isTemplateVariablesEnabled) {\n return;\n }\n\n const variables = getTemplateVariables(templateStr);\n\n const isValid = !!variables;\n\n this.state.isTemplateValid = isValid;\n\n if (isValid) {\n this.onVariablesChange(intersectVariables(this.formValues.Variables, variables));\n }\n }\n\n onVariablesChange(value) {\n this.handleChange({ Variables: value });\n }\n\n onChangeFile(file) {\n this.handleChange({ File: file });\n }\n\n handleChange(values) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n });\n }\n\n async createCustomTemplate() {\n return this.$async(async () => {\n const { method } = this.state;\n\n if (!this.validateForm(method)) {\n return;\n }\n\n this.state.actionInProgress = true;\n try {\n const customTemplate = await this.createCustomTemplateByMethod(method, this.formValues);\n\n const accessControlData = this.formValues.AccessControlData;\n const userDetails = this.Authentication.getUserDetails();\n const userId = userDetails.ID;\n await this.ResourceControlService.applyResourceControl(userId, accessControlData, customTemplate.ResourceControl);\n\n this.Notifications.success('Success', 'Custom template successfully created');\n this.state.isEditorDirty = false;\n this.$state.go('kubernetes.templates.custom');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed creating custom template');\n } finally {\n this.state.actionInProgress = false;\n }\n });\n }\n\n createCustomTemplateByMethod(method, template) {\n template.Type = 3;\n\n switch (method) {\n case 'editor':\n return this.createCustomTemplateFromFileContent(template);\n case 'upload':\n return this.createCustomTemplateFromFileUpload(template);\n case 'repository':\n return this.createCustomTemplateFromGitRepository(template);\n }\n }\n\n createCustomTemplateFromFileContent(template) {\n return this.CustomTemplateService.createCustomTemplateFromFileContent(template);\n }\n\n createCustomTemplateFromFileUpload(template) {\n return this.CustomTemplateService.createCustomTemplateFromFileUpload(template);\n }\n\n createCustomTemplateFromGitRepository(template) {\n return this.CustomTemplateService.createCustomTemplateFromGitRepository(template);\n }\n\n validateForm(method) {\n this.state.formValidationError = '';\n\n if (method === 'editor' && this.formValues.FileContent === '') {\n this.state.formValidationError = 'Template file content must not be empty';\n return false;\n }\n\n const title = this.formValues.Title;\n const isNotUnique = this.templates.some((template) => template.Title === title);\n if (isNotUnique) {\n this.state.formValidationError = 'A template with the same name already exists';\n return false;\n }\n\n if (!this.state.isTemplateValid) {\n this.state.formValidationError = 'Template is not valid';\n return false;\n }\n\n const isAdmin = this.Authentication.isAdmin();\n const accessControlData = this.formValues.AccessControlData;\n const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n this.state.formValidationError = error;\n return false;\n }\n\n return true;\n }\n\n async $onInit() {\n return this.$async(async () => {\n const { fileContent, type } = this.$state.params;\n\n this.formValues.FileContent = fileContent;\n this.parseTemplate(fileContent);\n if (type) {\n this.formValues.Type = +type;\n }\n\n try {\n this.templates = await this.CustomTemplateService.customTemplates(3);\n } catch (err) {\n this.Notifications.error('Failure loading', err, 'Failed loading custom templates');\n }\n\n this.state.loading = false;\n\n window.addEventListener('beforeunload', this.onBeforeOnload);\n });\n }\n\n $onDestroy() {\n window.removeEventListener('beforeunload', this.onBeforeOnload);\n }\n\n isEditorDirty() {\n return this.state.method === 'editor' && this.formValues.FileContent && this.state.isEditorDirty;\n }\n\n onBeforeOnload(event) {\n if (this.isEditorDirty()) {\n event.preventDefault();\n event.returnValue = '';\n }\n }\n\n uiCanExit() {\n if (this.isEditorDirty()) {\n return confirmWebEditorDiscard();\n }\n }\n}\n\nexport default KubeCreateCustomTemplateViewController;\n","const autoNgTemplateLoaderTemplate1 = require('./kube-custom-templates-view.html');\n\nimport controller from './kube-custom-templates-view.controller.js';\n\nexport const kubeCustomTemplatesView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","import _ from 'lodash-es';\nimport { confirmDelete } from '@@/modals/confirm';\n\nexport default class KubeCustomTemplatesViewController {\n /* @ngInject */\n constructor($async, $state, Authentication, CustomTemplateService, FormValidator, Notifications) {\n Object.assign(this, { $async, $state, Authentication, CustomTemplateService, FormValidator, Notifications });\n\n this.state = {\n selectedTemplate: null,\n formValidationError: '',\n actionInProgress: false,\n };\n\n this.currentUser = {\n isAdmin: false,\n id: null,\n };\n\n this.isEditAllowed = this.isEditAllowed.bind(this);\n this.getTemplates = this.getTemplates.bind(this);\n this.validateForm = this.validateForm.bind(this);\n this.confirmDelete = this.confirmDelete.bind(this);\n this.selectTemplate = this.selectTemplate.bind(this);\n }\n\n selectTemplate(template) {\n this.$state.go('kubernetes.deploy', { templateId: template.Id });\n }\n\n isEditAllowed(template) {\n // todo - check if current user is admin/endpointadmin/owner\n return this.currentUser.isAdmin || this.currentUser.id === template.CreatedByUserId;\n }\n\n getTemplates() {\n return this.$async(async () => {\n try {\n this.templates = await this.CustomTemplateService.customTemplates(3);\n } catch (err) {\n this.Notifications.error('Failed loading templates', err, 'Unable to load custom templates');\n }\n });\n }\n\n validateForm(accessControlData, isAdmin) {\n this.state.formValidationError = '';\n const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n this.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n confirmDelete(templateId) {\n return this.$async(async () => {\n const confirmed = await confirmDelete('Are you sure that you want to delete this template?');\n if (!confirmed) {\n return;\n }\n\n try {\n var template = _.find(this.templates, { Id: templateId });\n await this.CustomTemplateService.remove(templateId);\n this.Notifications.success('Template successfully deleted', template && template.Title);\n _.remove(this.templates, { Id: templateId });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed to delete template');\n }\n });\n }\n\n $onInit() {\n this.getTemplates();\n\n this.currentUser.isAdmin = this.Authentication.isAdmin();\n const user = this.Authentication.getUserDetails();\n this.currentUser.id = user.ID;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./kube-edit-custom-template-view.html');\n\nimport controller from './kube-edit-custom-template-view.controller.js';\n\nexport const kubeEditCustomTemplateView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\nimport { AccessControlFormData } from '@/portainer/components/accessControlForm/porAccessControlFormModel';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { getFilePreview } from '@/react/portainer/gitops/gitops.service';\nimport { KUBE_TEMPLATE_NAME_VALIDATION_REGEX } from '@/constants';\n\nclass KubeEditCustomTemplateViewController {\n /* @ngInject */\n constructor($async, $state, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService) {\n Object.assign(this, { $async, $state, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService });\n\n this.isTemplateVariablesEnabled = isBE;\n\n this.formValues = {\n Variables: [],\n TLSSkipVerify: false,\n };\n this.state = {\n formValidationError: '',\n isEditorDirty: false,\n isTemplateValid: true,\n isEditorReadOnly: false,\n templateLoadFailed: false,\n templatePreviewFailed: false,\n templatePreviewError: '',\n templateNameRegex: KUBE_TEMPLATE_NAME_VALIDATION_REGEX,\n };\n this.templates = [];\n\n this.getTemplate = this.getTemplate.bind(this);\n this.submitAction = this.submitAction.bind(this);\n this.onChangeFileContent = this.onChangeFileContent.bind(this);\n this.onBeforeUnload = this.onBeforeUnload.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.onVariablesChange = this.onVariablesChange.bind(this);\n this.previewFileFromGitRepository = this.previewFileFromGitRepository.bind(this);\n }\n\n getTemplate() {\n return this.$async(async () => {\n try {\n const { id } = this.$state.params;\n\n const template = await this.CustomTemplateService.customTemplate(id);\n\n if (template.GitConfig !== null) {\n this.state.isEditorReadOnly = true;\n }\n\n try {\n template.FileContent = await this.CustomTemplateService.customTemplateFile(id, template.GitConfig !== null);\n } catch (err) {\n this.state.templateLoadFailed = true;\n throw err;\n }\n\n template.Variables = template.Variables || [];\n\n this.formValues = { ...this.formValues, ...template };\n\n this.parseTemplate(template.FileContent);\n this.parseGitConfig(template.GitConfig);\n\n this.oldFileContent = this.formValues.FileContent;\n\n this.formValues.ResourceControl = new ResourceControlViewModel(template.ResourceControl);\n this.formValues.AccessControlData = new AccessControlFormData();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve custom template data');\n }\n });\n }\n\n onVariablesChange(values) {\n this.handleChange({ Variables: values });\n }\n\n handleChange(values) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n });\n }\n\n parseTemplate(templateStr) {\n if (!this.isTemplateVariablesEnabled) {\n return;\n }\n\n const variables = getTemplateVariables(templateStr);\n\n const isValid = !!variables;\n\n this.state.isTemplateValid = isValid;\n\n if (isValid) {\n this.onVariablesChange(intersectVariables(this.formValues.Variables, variables));\n }\n }\n\n parseGitConfig(config) {\n if (config === null) {\n return;\n }\n\n let flatConfig = {\n RepositoryURL: config.URL,\n RepositoryReferenceName: config.ReferenceName,\n ComposeFilePathInRepository: config.ConfigFilePath,\n RepositoryAuthentication: config.Authentication !== null,\n TLSSkipVerify: config.TLSSkipVerify,\n };\n\n if (config.Authentication) {\n flatConfig = {\n ...flatConfig,\n RepositoryUsername: config.Authentication.Username,\n RepositoryPassword: config.Authentication.Password,\n };\n }\n\n this.formValues = { ...this.formValues, ...flatConfig };\n }\n\n previewFileFromGitRepository() {\n this.state.templatePreviewFailed = false;\n this.state.templatePreviewError = '';\n\n let creds = {};\n if (this.formValues.RepositoryAuthentication) {\n creds = {\n username: this.formValues.RepositoryUsername,\n password: this.formValues.RepositoryPassword,\n };\n }\n const payload = {\n repository: this.formValues.RepositoryURL,\n targetFile: this.formValues.ComposeFilePathInRepository,\n tlsSkipVerify: this.formValues.TLSSkipVerify,\n ...creds,\n };\n\n this.$async(async () => {\n try {\n this.formValues.FileContent = await getFilePreview(payload);\n this.state.isEditorDirty = true;\n\n // check if the template contains mustache template symbol\n this.parseTemplate(this.formValues.FileContent);\n } catch (err) {\n this.state.templatePreviewError = err.message;\n this.state.templatePreviewFailed = true;\n }\n });\n }\n\n validateForm() {\n this.state.formValidationError = '';\n\n if (!this.formValues.FileContent) {\n this.state.formValidationError = 'Template file content must not be empty';\n return false;\n }\n\n const title = this.formValues.Title;\n const id = this.$state.params.id;\n\n const isNotUnique = this.templates.some((template) => template.Title === title && template.Id != id);\n if (isNotUnique) {\n this.state.formValidationError = `A template with the name ${title} already exists`;\n return false;\n }\n\n const isAdmin = this.Authentication.isAdmin();\n const accessControlData = this.formValues.AccessControlData;\n const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n this.state.formValidationError = error;\n return false;\n }\n\n return true;\n }\n\n submitAction() {\n return this.$async(async () => {\n if (!this.validateForm()) {\n return;\n }\n\n this.actionInProgress = true;\n try {\n await this.CustomTemplateService.updateCustomTemplate(this.formValues.Id, this.formValues);\n\n const userDetails = this.Authentication.getUserDetails();\n const userId = userDetails.ID;\n await this.ResourceControlService.applyResourceControl(userId, this.formValues.AccessControlData, this.formValues.ResourceControl);\n\n this.Notifications.success('Success', 'Custom template successfully updated');\n this.state.isEditorDirty = false;\n this.$state.go('kubernetes.templates.custom');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to update custom template');\n } finally {\n this.actionInProgress = false;\n }\n });\n }\n\n onChangeFileContent(value) {\n if (stripSpaces(this.formValues.FileContent) !== stripSpaces(value)) {\n this.formValues.FileContent = value;\n this.parseTemplate(value);\n this.state.isEditorDirty = true;\n }\n }\n\n async $onInit() {\n this.$async(async () => {\n this.getTemplate();\n\n try {\n this.templates = await this.CustomTemplateService.customTemplates();\n } catch (err) {\n this.Notifications.error('Failure loading', err, 'Failed loading custom templates');\n }\n\n window.addEventListener('beforeunload', this.onBeforeUnload);\n });\n }\n\n isEditorDirty() {\n return this.formValues.FileContent !== this.oldFileContent && this.state.isEditorDirty;\n }\n\n uiCanExit() {\n if (this.isEditorDirty()) {\n return confirmWebEditorDiscard();\n }\n }\n\n onBeforeUnload(event) {\n if (this.formValues.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n event.preventDefault();\n event.returnValue = '';\n\n return '';\n }\n }\n\n $onDestroy() {\n window.removeEventListener('beforeunload', this.onBeforeUnload);\n }\n}\n\nexport default KubeEditCustomTemplateViewController;\n\nfunction stripSpaces(str = '') {\n return str.replace(/(\\r\\n|\\n|\\r)/gm, '');\n}\n","import _ from 'lodash-es';\nimport { KubernetesEndpoint, KubernetesEndpointAnnotationLeader, KubernetesEndpointSubset } from 'Kubernetes/endpoint/models';\n\nclass KubernetesEndpointConverter {\n static apiToEndpoint(data) {\n const res = new KubernetesEndpoint();\n res.Id = data.metadata.uid;\n res.Name = data.metadata.name;\n res.Namespace = data.metadata.namespace;\n const leaderAnnotation = data.metadata.annotations ? data.metadata.annotations[KubernetesEndpointAnnotationLeader] : '';\n if (leaderAnnotation) {\n const parsedJson = JSON.parse(leaderAnnotation);\n const split = _.split(parsedJson.holderIdentity, '_');\n res.HolderIdentity = split[0];\n }\n\n if (data.subsets) {\n res.Subsets = _.map(data.subsets, (item) => {\n const subset = new KubernetesEndpointSubset();\n subset.Ips = _.map(item.addresses, 'ip');\n const port = _.find(item.ports, { name: 'https' });\n subset.Port = port ? port.port : undefined;\n return subset;\n });\n }\n return res;\n }\n}\n\nexport default KubernetesEndpointConverter;\n","export const KubernetesEndpointAnnotationLeader = 'control-plane.alpha.kubernetes.io/leader';\n\n/**\n * KubernetesEndpoint Model\n */\nconst _KubernetesEndpoint = Object.freeze({\n Id: '',\n Name: '',\n Namespace: '',\n HolderIdentity: '',\n Subsets: [],\n});\n\nexport class KubernetesEndpoint {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesEndpoint)));\n }\n}\n\nconst _KubernetesEndpointSubset = Object.freeze({\n Ips: [],\n Port: 0,\n});\n\nexport class KubernetesEndpointSubset {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesEndpointSubset)));\n }\n}\n","angular.module('portainer.kubernetes').factory('KubernetesEndpoints', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesEndpointsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/endpoints/:id';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n }\n );\n };\n },\n]);\n","import _ from 'lodash-es';\nimport angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport KubernetesEndpointConverter from 'Kubernetes/endpoint/converter';\n\nclass KubernetesEndpointService {\n /* @ngInject */\n constructor($async, KubernetesEndpoints) {\n this.$async = $async;\n this.KubernetesEndpoints = KubernetesEndpoints;\n\n this.getAllAsync = this.getAllAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesEndpoints(namespace).get().$promise;\n return _.map(data.items, (item) => KubernetesEndpointConverter.apiToEndpoint(item));\n } catch (err) {\n throw new PortainerError('Unable to retrieve environments', err);\n }\n }\n\n get(namespace) {\n return this.$async(this.getAllAsync, namespace);\n }\n}\n\nexport default KubernetesEndpointService;\nangular.module('portainer.kubernetes').service('KubernetesEndpointService', KubernetesEndpointService);\n","import _ from 'lodash-es';\nimport { KubernetesApplicationDataAccessPolicies } from 'Kubernetes/models/application/models';\nimport { KubernetesApplicationTypes, KubernetesApplicationTypeStrings } from 'Kubernetes/models/application/models';\nimport { KubernetesPodNodeAffinityNodeSelectorRequirementOperators } from 'Kubernetes/pod/models';\n\nangular\n .module('portainer.kubernetes')\n .filter('kubernetesApplicationTypeText', function () {\n 'use strict';\n return function (type) {\n switch (type) {\n case KubernetesApplicationTypes.DEPLOYMENT:\n return KubernetesApplicationTypeStrings.DEPLOYMENT;\n case KubernetesApplicationTypes.DAEMONSET:\n return KubernetesApplicationTypeStrings.DAEMONSET;\n case KubernetesApplicationTypes.STATEFULSET:\n return KubernetesApplicationTypeStrings.STATEFULSET;\n case KubernetesApplicationTypes.POD:\n return KubernetesApplicationTypeStrings.POD;\n case KubernetesApplicationTypes.HELM:\n return KubernetesApplicationTypeStrings.HELM;\n default:\n return '-';\n }\n };\n })\n .filter('kubernetesApplicationCPUValue', function () {\n 'use strict';\n return function (value) {\n return _.round(value, 2);\n };\n })\n .filter('kubernetesApplicationDataAccessPolicyIcon', function () {\n 'use strict';\n return function (value) {\n switch (value) {\n case KubernetesApplicationDataAccessPolicies.ISOLATED:\n return 'boxes';\n case KubernetesApplicationDataAccessPolicies.SHARED:\n return 'box';\n }\n };\n })\n .filter('kubernetesApplicationDataAccessPolicyText', function () {\n 'use strict';\n return function (value) {\n switch (value) {\n case KubernetesApplicationDataAccessPolicies.ISOLATED:\n return 'Isolated';\n case KubernetesApplicationDataAccessPolicies.SHARED:\n return 'Shared';\n }\n };\n })\n .filter('kubernetesApplicationDataAccessPolicyTooltip', function () {\n 'use strict';\n return function (value) {\n switch (value) {\n case KubernetesApplicationDataAccessPolicies.ISOLATED:\n return 'All the instances of this application are using their own data.';\n case KubernetesApplicationDataAccessPolicies.SHARED:\n return 'All the instances of this application are sharing the same data.';\n }\n };\n })\n .filter('kubernetesApplicationConstraintNodeAffinityValue', function () {\n 'use strict';\n return function (values, operator) {\n if (operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.IN || operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.NOT_IN) {\n return values;\n } else if (\n operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.EXISTS ||\n operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.DOES_NOT_EXIST\n ) {\n return '';\n } else if (\n operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.GREATER_THAN ||\n operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.LOWER_THAN\n ) {\n return values[0];\n }\n return '';\n };\n })\n .filter('kubernetesNodeLabelHumanReadbleText', function () {\n 'use strict';\n return function (text) {\n const values = {\n 'kubernetes.io/os': 'Operating system',\n 'kubernetes.io/arch': 'Architecture',\n 'kubernetes.io/hostname': 'Node',\n };\n return values[text] || text;\n };\n })\n .filter('kubernetesApplicationIngressEmptyHostname', function () {\n 'use strict';\n return function (value) {\n if (value === '') {\n return '<use IP>';\n } else {\n return value;\n }\n };\n });\n","import { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\n\nangular.module('portainer.kubernetes').filter('kubernetesConfigurationKindText', function () {\n 'use strict';\n return function (type) {\n switch (type) {\n case KubernetesConfigurationKinds.SECRET:\n return 'Secret';\n case KubernetesConfigurationKinds.CONFIGMAP:\n return 'ConfigMap';\n }\n };\n});\n","import _ from 'lodash-es';\n\nangular.module('portainer.kubernetes').filter('kubernetesEventTypeColor', function () {\n 'use strict';\n return function (text) {\n var status = _.toLower(text);\n switch (status) {\n case 'normal':\n return 'info';\n case 'warning':\n return 'warning';\n default:\n return 'danger';\n }\n };\n});\n","angular.module('portainer.kubernetes').filter('kubernetesUsageLevelInfo', function () {\n return function (usage) {\n if (usage >= 80) {\n return 'danger';\n } else if (usage > 50 && usage < 80) {\n return 'warning';\n } else {\n return 'success';\n }\n };\n});\n","import angular from 'angular';\n\nangular.module('portainer.kubernetes').factory('HelmFactory', HelmFactory);\n\n/* @ngInject */\nfunction HelmFactory($resource, API_ENDPOINT_ENDPOINTS) {\n const helmUrl = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/helm';\n const templatesUrl = 'api/templates/helm';\n\n return $resource(\n helmUrl,\n {},\n {\n templates: {\n url: templatesUrl,\n method: 'GET',\n params: { repo: '@repo' },\n cache: true,\n },\n show: {\n url: `${templatesUrl}/:type`,\n method: 'GET',\n params: { repo: '@repo', chart: '@chart' },\n transformResponse: function (data) {\n return { values: data };\n },\n },\n getHelmRepositories: {\n method: 'GET',\n url: `${helmUrl}/repositories`,\n },\n addHelmRepository: {\n method: 'POST',\n url: `${helmUrl}/repositories`,\n },\n list: {\n method: 'GET',\n isArray: true,\n params: { namespace: '@namespace', selector: '@selector', filter: '@filter', output: '@output' },\n },\n install: { method: 'POST' },\n uninstall: {\n url: `${helmUrl}/:release`,\n method: 'DELETE',\n params: { namespace: '@namespace' },\n },\n }\n );\n}\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\n\nangular.module('portainer.kubernetes').factory('HelmService', HelmService);\n\n/* @ngInject */\nexport function HelmService(HelmFactory) {\n return {\n search,\n values,\n getHelmRepositories,\n addHelmRepository,\n install,\n uninstall,\n listReleases,\n };\n\n /**\n * @description: Searches for all helm charts in a helm repo\n * @param {string} repo - repo url to search charts for\n * @returns {Promise} - Resolves with `index.yaml` of helm charts for a repo\n * @throws {PortainerError} - Rejects with error if searching for the `index.yaml` fails\n */\n async function search(repo) {\n try {\n return await HelmFactory.templates({ repo }).$promise;\n } catch (err) {\n throw new PortainerError('Unable to retrieve helm charts', err);\n }\n }\n\n /**\n * @description: Show values helm of a helm chart, this basically runs `helm show values`\n * @param {string} repo - repo url to search charts values for\n * @param {string} chart - chart within the repo to retrieve default values\n * @returns {Promise} - Resolves with `values.yaml` of helm chart values for a repo\n * @throws {PortainerError} - Rejects with error if helm show fails\n */\n async function values(repo, chart) {\n try {\n return await HelmFactory.show({ repo, chart, type: 'values' }).$promise;\n } catch (err) {\n throw new PortainerError('Unable to retrieve values from chart', err);\n }\n }\n\n /**\n * @description: Get a list of all the helm repositories available for the current user\n * @returns {Promise} - Resolves with an object containing list of user helm repos and default/global settings helm repo\n * @throws {PortainerError} - Rejects with error if helm show fails\n */\n async function getHelmRepositories(endpointId) {\n return await HelmFactory.getHelmRepositories({ endpointId }).$promise;\n }\n\n /**\n * @description: Adds a helm repo for the calling user\n * @param {Object} payload - helm repo url to add for the user\n * @returns {Promise} - Resolves with `values.yaml` of helm chart values for a repo\n * @throws {PortainerError} - Rejects with error if helm show fails\n */\n async function addHelmRepository(endpointId, payload) {\n return await HelmFactory.addHelmRepository({ endpointId }, payload).$promise;\n }\n\n /**\n * @description: Installs a helm chart, this basically runs `helm install`\n * @returns {Promise} - Resolves with `values.yaml` of helm chart values for a repo\n * @throws {PortainerError} - Rejects with error if helm show fails\n */\n async function install(endpointId, payload) {\n return await HelmFactory.install({ endpointId }, payload).$promise;\n }\n\n /**\n * @description: Uninstall a helm chart, this basically runs `helm uninstall`\n * @param {Object} options - Options object, release `Name` is the only required option\n * @throws {PortainerError} - Rejects with error if helm show fails\n */\n async function uninstall(endpointId, { Name, ResourcePool }) {\n try {\n await HelmFactory.uninstall({ endpointId, release: Name, namespace: ResourcePool }).$promise;\n } catch (err) {\n throw new PortainerError('Unable to delete release', err);\n }\n }\n\n /**\n * @description: List all helm releases based on passed in options, this basically runs `helm list`\n * @param {Object} options - Supported CLI flags to pass to Helm (binary) - flags to `helm list`\n * @returns {Promise} - Resolves with list of helm releases\n * @throws {PortainerError} - Rejects with error if helm list fails\n */\n async function listReleases(endpointId, { namespace, selector, filter, output }) {\n try {\n const releases = await HelmFactory.list({ endpointId, selector, namespace, filter, output }).$promise;\n return releases;\n } catch (err) {\n throw new PortainerError('Unable to retrieve release list', err);\n }\n }\n}\n","import _ from 'lodash-es';\nimport { KubernetesPortMapping, KubernetesPortMappingPort } from 'Kubernetes/models/port/models';\nimport { KubernetesService, KubernetesServicePort, KubernetesServiceTypes } from 'Kubernetes/models/service/models';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\nimport {\n KubernetesApplicationAutoScalerFormValue,\n KubernetesApplicationConfigurationFormValue,\n KubernetesApplicationConfigurationFormValueOverridenKey,\n KubernetesApplicationConfigurationFormValueOverridenKeyTypes,\n KubernetesApplicationEnvironmentVariableFormValue,\n KubernetesApplicationPersistedFolderFormValue,\n KubernetesApplicationPlacementFormValue,\n KubernetesApplicationPublishedPortFormValue,\n} from 'Kubernetes/models/application/formValues';\nimport {\n KubernetesApplicationEnvConfigMapPayload,\n KubernetesApplicationEnvPayload,\n KubernetesApplicationEnvSecretPayload,\n KubernetesApplicationVolumeConfigMapPayload,\n KubernetesApplicationVolumeEntryPayload,\n KubernetesApplicationVolumeMountPayload,\n KubernetesApplicationVolumePersistentPayload,\n KubernetesApplicationVolumeSecretPayload,\n} from 'Kubernetes/models/application/payloads';\nimport KubernetesVolumeHelper from 'Kubernetes/helpers/volumeHelper';\nimport { KubernetesApplicationDeploymentTypes, KubernetesApplicationPlacementTypes, KubernetesApplicationTypes, HelmApplication } from 'Kubernetes/models/application/models';\nimport { KubernetesPodAffinity, KubernetesPodNodeAffinityNodeSelectorRequirementOperators } from 'Kubernetes/pod/models';\nimport {\n KubernetesNodeSelectorRequirementPayload,\n KubernetesNodeSelectorTermPayload,\n KubernetesPodNodeAffinityPayload,\n KubernetesPreferredSchedulingTermPayload,\n} from 'Kubernetes/pod/payloads/affinities';\n\nexport const PodKubernetesInstanceLabel = 'app.kubernetes.io/instance';\nexport const PodManagedByLabel = 'app.kubernetes.io/managed-by';\n\nclass KubernetesApplicationHelper {\n /* #region UTILITY FUNCTIONS */\n static isExternalApplication(application) {\n return !application.ApplicationOwner;\n }\n\n static associatePodsAndApplication(pods, selector) {\n return _.filter(pods, ['metadata.labels', selector.matchLabels]);\n }\n\n static associateContainerPersistedFoldersAndConfigurations(app, containers) {\n _.forEach(containers, (container) => {\n container.PersistedFolders = _.without(\n _.map(app.PersistedFolders, (pf) => {\n if (pf.MountPath && _.includes(_.map(container.VolumeMounts, 'mountPath'), pf.MountPath)) {\n return pf;\n }\n }),\n undefined\n );\n\n container.ConfigurationVolumes = _.without(\n _.map(app.ConfigurationVolumes, (cv) => {\n if (cv.rootMountPath && _.includes(_.map(container.VolumeMounts, 'mountPath'), cv.rootMountPath)) {\n return cv;\n }\n }),\n undefined\n );\n });\n }\n\n static associateContainersAndApplication(app) {\n if (!app.Pods || app.Pods.length === 0) {\n return [];\n }\n const containers = app.Pods[0].Containers;\n KubernetesApplicationHelper.associateContainerPersistedFoldersAndConfigurations(app, containers);\n return containers;\n }\n\n static associateAllContainersAndApplication(app) {\n const containers = _.flatMap(_.map(app.Pods, 'Containers'));\n KubernetesApplicationHelper.associateContainerPersistedFoldersAndConfigurations(app, containers);\n return containers;\n }\n\n static portMappingsFromApplications(applications) {\n const res = _.reduce(\n applications,\n (acc, app) => {\n if (app.PublishedPorts.length > 0) {\n const mapping = new KubernetesPortMapping();\n mapping.Name = app.Name;\n mapping.ResourcePool = app.ResourcePool;\n mapping.ServiceType = app.ServiceType;\n mapping.LoadBalancerIPAddress = app.LoadBalancerIPAddress;\n mapping.ApplicationOwner = app.ApplicationOwner;\n\n mapping.Ports = _.map(app.PublishedPorts, (item) => {\n const port = new KubernetesPortMappingPort();\n port.Port = mapping.ServiceType === KubernetesServiceTypes.NODE_PORT ? item.NodePort : item.Port;\n port.TargetPort = item.TargetPort;\n port.Protocol = item.Protocol;\n port.IngressRules = item.IngressRules;\n return port;\n });\n acc.push(mapping);\n }\n return acc;\n },\n []\n );\n return res;\n }\n /* #endregion */\n\n /* #region ENV VARIABLES FV <> ENV */\n static generateEnvFromEnvVariables(envVariables) {\n _.remove(envVariables, (item) => item.NeedsDeletion);\n const env = _.map(envVariables, (item) => {\n const res = new KubernetesApplicationEnvPayload();\n res.name = item.Name;\n if (item.Value === undefined) {\n delete res.value;\n } else {\n res.value = item.Value;\n }\n return res;\n });\n return env;\n }\n\n static generateEnvVariablesFromEnv(env) {\n const envVariables = _.map(env, (item) => {\n if (item.valueFrom) {\n return;\n }\n const res = new KubernetesApplicationEnvironmentVariableFormValue();\n res.Name = item.name;\n res.Value = item.value;\n res.IsNew = false;\n res.NameIndex = item.name;\n return res;\n });\n return _.without(envVariables, undefined);\n }\n /* #endregion */\n\n /* #region CONFIGURATIONS FV <> ENV & VOLUMES */\n static generateConfigurationFormValuesFromEnvAndVolumes(env, volumes, configurations, configurationKind) {\n const filterCondition = configurationKind === KubernetesConfigurationKinds.CONFIGMAP ? 'valueFrom.configMapKeyRef.name' : 'valueFrom.secretKeyRef.name';\n const finalRes = _.flatMap(configurations, (cfg) => {\n const cfgEnv = _.filter(env, [filterCondition, cfg.Name]);\n const cfgVol = volumes.filter((volume) => volume.configurationName === cfg.Name && volume.configurationType === configurationKind);\n if (!cfgEnv.length && !cfgVol.length) {\n return;\n }\n const keys = _.reduce(\n _.keys(cfg.Data),\n (acc, k) => {\n const keyEnv = _.filter(cfgEnv, { name: k });\n const keyVol = _.filter(cfgVol, { configurationKey: k });\n const key = {\n Key: k,\n Count: keyEnv.length + keyVol.length,\n Sum: _.concat(keyEnv, keyVol),\n EnvCount: keyEnv.length,\n VolCount: keyVol.length,\n };\n acc.push(key);\n return acc;\n },\n []\n );\n\n const max = _.max(_.map(keys, 'Count'));\n const overrideThreshold = max - _.max(_.map(keys, 'VolCount'));\n const res = _.map(new Array(max), () => new KubernetesApplicationConfigurationFormValue());\n _.forEach(res, (item, index) => {\n item.SelectedConfiguration = cfg;\n const overriden = index >= overrideThreshold;\n if (overriden) {\n item.Overriden = true;\n item.OverridenKeys = _.map(keys, (k) => {\n const fvKey = new KubernetesApplicationConfigurationFormValueOverridenKey();\n fvKey.Key = k.Key;\n if (!k.Count) {\n // !k.Count indicates k.Key is new added to the configuration and has not been loaded to the application yet\n fvKey.Type = KubernetesApplicationConfigurationFormValueOverridenKeyTypes.NONE;\n } else if (index < k.EnvCount) {\n fvKey.Type = KubernetesApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT;\n } else {\n fvKey.Type = KubernetesApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM;\n fvKey.Path = k.Sum[index].rootMountPath;\n }\n return fvKey;\n });\n }\n });\n return res;\n });\n return _.without(finalRes, undefined);\n }\n\n static generateEnvOrVolumesFromConfigurations(app, configMaps, secrets) {\n const configurations = [...configMaps, ...secrets];\n let finalEnv = [];\n let finalVolumes = [];\n let finalMounts = [];\n\n _.forEach(configurations, (config) => {\n const isBasic = config.SelectedConfiguration.Kind === KubernetesConfigurationKinds.CONFIGMAP;\n\n if (!config.Overriden) {\n const envKeys = _.keys(config.SelectedConfiguration.Data);\n _.forEach(envKeys, (item) => {\n const res = isBasic ? new KubernetesApplicationEnvConfigMapPayload() : new KubernetesApplicationEnvSecretPayload();\n res.name = item;\n if (isBasic) {\n res.valueFrom.configMapKeyRef.name = config.SelectedConfiguration.Name;\n res.valueFrom.configMapKeyRef.key = item;\n } else {\n res.valueFrom.secretKeyRef.name = config.SelectedConfiguration.Name;\n res.valueFrom.secretKeyRef.key = item;\n }\n finalEnv.push(res);\n });\n } else {\n const envKeys = _.filter(config.OverridenKeys, (item) => item.Type === KubernetesApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT);\n _.forEach(envKeys, (item) => {\n const res = isBasic ? new KubernetesApplicationEnvConfigMapPayload() : new KubernetesApplicationEnvSecretPayload();\n res.name = item.Key;\n if (isBasic) {\n res.valueFrom.configMapKeyRef.name = config.SelectedConfiguration.Name;\n res.valueFrom.configMapKeyRef.key = item.Key;\n } else {\n res.valueFrom.secretKeyRef.name = config.SelectedConfiguration.Name;\n res.valueFrom.secretKeyRef.key = item.Key;\n }\n finalEnv.push(res);\n });\n\n const volKeys = _.filter(config.OverridenKeys, (item) => item.Type === KubernetesApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM);\n const groupedVolKeys = _.groupBy(volKeys, 'Path');\n _.forEach(groupedVolKeys, (items, path) => {\n const volumeName = KubernetesVolumeHelper.generatedApplicationConfigVolumeName(app.Name);\n const configurationName = config.SelectedConfiguration.Name;\n const itemsMap = _.map(items, (item) => {\n const entry = new KubernetesApplicationVolumeEntryPayload();\n entry.key = item.Key;\n entry.path = item.Key;\n return entry;\n });\n\n const mount = isBasic ? new KubernetesApplicationVolumeMountPayload() : new KubernetesApplicationVolumeMountPayload(true);\n const volume = isBasic ? new KubernetesApplicationVolumeConfigMapPayload() : new KubernetesApplicationVolumeSecretPayload();\n\n mount.name = volumeName;\n mount.mountPath = path;\n volume.name = volumeName;\n if (isBasic) {\n volume.configMap.name = configurationName;\n volume.configMap.items = itemsMap;\n } else {\n volume.secret.secretName = configurationName;\n volume.secret.items = itemsMap;\n }\n\n finalMounts.push(mount);\n finalVolumes.push(volume);\n });\n }\n });\n app.Env = _.concat(app.Env, finalEnv);\n app.Volumes = _.concat(app.Volumes, finalVolumes);\n app.VolumeMounts = _.concat(app.VolumeMounts, finalMounts);\n return app;\n }\n /* #endregion */\n\n /* #region SERVICES -> SERVICES FORM VALUES */\n static generateServicesFormValuesFromServices(app) {\n let services = [];\n if (app.Services) {\n app.Services.forEach(function (service) {\n //skip generate formValues if service = headless service ( clusterIp === \"None\" )\n if (service.spec.clusterIP !== 'None') {\n const svc = new KubernetesService();\n svc.Namespace = service.metadata.namespace;\n svc.Name = service.metadata.name;\n svc.StackName = service.StackName;\n svc.ApplicationOwner = app.ApplicationOwner;\n svc.ApplicationName = app.ApplicationName;\n svc.Type = service.spec.type;\n if (service.spec.type === KubernetesServiceTypes.CLUSTER_IP) {\n svc.Type = 1;\n } else if (service.spec.type === KubernetesServiceTypes.NODE_PORT) {\n svc.Type = 2;\n } else if (service.spec.type === KubernetesServiceTypes.LOAD_BALANCER) {\n svc.Type = 3;\n }\n\n let ports = [];\n service.spec.ports.forEach(function (port) {\n const svcport = new KubernetesServicePort();\n svcport.name = port.name;\n svcport.port = port.port;\n svcport.nodePort = port.nodePort || 0;\n svcport.protocol = port.protocol;\n svcport.targetPort = port.targetPort;\n svcport.serviceName = service.metadata.name;\n svcport.ingressPaths = [];\n\n app.Ingresses.value.forEach((ingress) => {\n const matchingIngressPaths = ingress.Paths.filter((ingPath) => ingPath.ServiceName === service.metadata.name && ingPath.Port === port.port);\n // only add ingress info to the port if the ingress serviceport and name matches\n const newPaths = matchingIngressPaths.map((ingPath) => ({\n IngressName: ingPath.IngressName,\n Host: ingPath.Host,\n Path: ingPath.Path,\n }));\n svcport.ingressPaths = [...svcport.ingressPaths, ...newPaths];\n svc.Ingress = matchingIngressPaths.length > 0;\n });\n\n ports.push(svcport);\n });\n svc.Ports = ports;\n svc.Selector = app.Raw.spec.selector.matchLabels;\n services.push(svc);\n }\n });\n\n return services;\n }\n }\n /* #endregion */\n static generateSelectorFromService(app) {\n if (app.Raw.kind !== 'Pod') {\n const selector = app.Raw.spec.selector.matchLabels;\n return selector;\n }\n }\n\n /* #region PUBLISHED PORTS FV <> PUBLISHED PORTS */\n static generatePublishedPortsFormValuesFromPublishedPorts(serviceType, publishedPorts, ingress) {\n const generatePort = (port, rule) => {\n const res = new KubernetesApplicationPublishedPortFormValue();\n res.IsNew = false;\n if (rule) {\n res.IngressName = rule.IngressName;\n res.IngressRoute = rule.Path;\n res.IngressHost = rule.Host;\n res.IngressHosts = ingress && ingress.find((i) => i.Name === rule.IngressName).Hosts;\n }\n res.Protocol = port.Protocol;\n res.ContainerPort = port.TargetPort;\n if (serviceType === KubernetesServiceTypes.LOAD_BALANCER) {\n res.LoadBalancerPort = port.Port;\n res.LoadBalancerNodePort = port.NodePort;\n } else if (serviceType === KubernetesServiceTypes.NODE_PORT) {\n res.NodePort = port.NodePort;\n }\n return res;\n };\n\n const finalRes = _.flatMap(publishedPorts, (port) => {\n if (port.IngressRules.length) {\n return _.map(port.IngressRules, (rule) => generatePort(port, rule));\n }\n return generatePort(port);\n });\n return finalRes;\n }\n /* #endregion */\n\n /* #region AUTOSCALER FV <> HORIZONTAL POD AUTOSCALER */\n static generateAutoScalerFormValueFromHorizontalPodAutoScaler(autoScaler, replicasCount) {\n const res = new KubernetesApplicationAutoScalerFormValue();\n if (autoScaler) {\n res.IsUsed = true;\n res.MinReplicas = autoScaler.MinReplicas;\n res.MaxReplicas = autoScaler.MaxReplicas;\n res.TargetCPUUtilization = autoScaler.TargetCPUUtilization;\n res.ApiVersion = autoScaler.ApiVersion;\n } else {\n res.ApiVersion = 'apps/v1';\n res.MinReplicas = replicasCount;\n res.MaxReplicas = replicasCount;\n }\n return res;\n }\n\n /* #endregion */\n\n /* #region PERSISTED FOLDERS FV <> VOLUMES */\n static generatePersistedFoldersFormValuesFromPersistedFolders(persistedFolders, persistentVolumeClaims) {\n const finalRes = _.map(persistedFolders, (folder) => {\n const pvc = _.find(persistentVolumeClaims, (item) => _.startsWith(item.Name, folder.PersistentVolumeClaimName));\n const res = new KubernetesApplicationPersistedFolderFormValue(pvc.StorageClass);\n res.PersistentVolumeClaimName = folder.PersistentVolumeClaimName;\n res.Size = parseInt(pvc.Storage, 10);\n res.SizeUnit = pvc.Storage.slice(-2);\n res.ContainerPath = folder.MountPath;\n return res;\n });\n return finalRes;\n }\n\n static generateVolumesFromPersistentVolumClaims(app, volumeClaims) {\n app.VolumeMounts = [];\n app.Volumes = [];\n _.forEach(volumeClaims, (item) => {\n const volumeMount = new KubernetesApplicationVolumeMountPayload();\n const name = item.Name;\n volumeMount.name = name;\n volumeMount.mountPath = item.MountPath;\n app.VolumeMounts.push(volumeMount);\n\n const volume = new KubernetesApplicationVolumePersistentPayload();\n volume.name = name;\n volume.persistentVolumeClaim.claimName = name;\n app.Volumes.push(volume);\n });\n }\n\n static hasRWOOnly(formValues) {\n return _.find(formValues.PersistedFolders, (item) => item.StorageClass && _.isEqual(item.StorageClass.AccessModes, ['RWO']));\n }\n\n static hasRWX(claims) {\n return _.find(claims, (item) => item.StorageClass && _.includes(item.StorageClass.AccessModes, 'RWX')) !== undefined;\n }\n /* #endregion */\n\n /* #region PLACEMENTS FV <> AFFINITY */\n static generatePlacementsFormValuesFromAffinity(formValues, podAffinity, nodesLabels) {\n let placements = formValues.Placements;\n let type = formValues.PlacementType;\n const affinity = podAffinity.nodeAffinity;\n if (affinity && affinity.requiredDuringSchedulingIgnoredDuringExecution) {\n type = KubernetesApplicationPlacementTypes.MANDATORY;\n _.forEach(affinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms, (term) => {\n _.forEach(term.matchExpressions, (exp) => {\n const placement = new KubernetesApplicationPlacementFormValue();\n const label = _.find(nodesLabels, { Key: exp.key });\n placement.Label = label;\n placement.Value = exp.values[0];\n placement.IsNew = false;\n placements.push(placement);\n });\n });\n } else if (affinity && affinity.preferredDuringSchedulingIgnoredDuringExecution) {\n type = KubernetesApplicationPlacementTypes.PREFERRED;\n _.forEach(affinity.preferredDuringSchedulingIgnoredDuringExecution, (term) => {\n _.forEach(term.preference.matchExpressions, (exp) => {\n const placement = new KubernetesApplicationPlacementFormValue();\n const label = _.find(nodesLabels, { Key: exp.key });\n placement.Label = label;\n placement.Value = exp.values[0];\n placement.IsNew = false;\n placements.push(placement);\n });\n });\n }\n formValues.Placements = placements;\n formValues.PlacementType = type;\n }\n\n static generateAffinityFromPlacements(app, formValues) {\n if (formValues.DeploymentType === KubernetesApplicationDeploymentTypes.REPLICATED) {\n const placements = formValues.Placements;\n const res = new KubernetesPodNodeAffinityPayload();\n let expressions = _.map(placements, (p) => {\n if (!p.NeedsDeletion) {\n const exp = new KubernetesNodeSelectorRequirementPayload();\n exp.key = p.Label.Key;\n if (p.Value) {\n exp.operator = KubernetesPodNodeAffinityNodeSelectorRequirementOperators.IN;\n exp.values = [p.Value];\n } else {\n exp.operator = KubernetesPodNodeAffinityNodeSelectorRequirementOperators.EXISTS;\n delete exp.values;\n }\n return exp;\n }\n });\n expressions = _.without(expressions, undefined);\n if (expressions.length) {\n if (formValues.PlacementType === KubernetesApplicationPlacementTypes.MANDATORY) {\n const term = new KubernetesNodeSelectorTermPayload();\n term.matchExpressions = expressions;\n res.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.push(term);\n delete res.preferredDuringSchedulingIgnoredDuringExecution;\n } else if (formValues.PlacementType === KubernetesApplicationPlacementTypes.PREFERRED) {\n const term = new KubernetesPreferredSchedulingTermPayload();\n term.preference = new KubernetesNodeSelectorTermPayload();\n term.preference.matchExpressions = expressions;\n res.preferredDuringSchedulingIgnoredDuringExecution.push(term);\n delete res.requiredDuringSchedulingIgnoredDuringExecution;\n }\n app.Affinity = new KubernetesPodAffinity();\n app.Affinity.nodeAffinity = res;\n }\n }\n }\n /* #endregion */\n\n /**\n * Get Helm managed applications\n * @param {KubernetesApplication[]} applications Application list\n * @returns {Object} { [releaseName]: [app1, app2, ...], [releaseName2]: [app3, app4, ...] }\n */\n static getHelmApplications(applications) {\n // filter out all the applications that are managed by helm\n // to identify the helm managed applications, we need to check if the applications pod labels include\n // `app.kubernetes.io/instance` and `app.kubernetes.io/managed-by` = `helm`\n const helmManagedApps = applications.filter(\n (app) => app.Metadata.labels && app.Metadata.labels[PodKubernetesInstanceLabel] && app.Metadata.labels[PodManagedByLabel] === 'Helm'\n );\n\n // groups the helm managed applications by helm release name\n // the release name is retrieved from the `app.kubernetes.io/instance` label on the pods within the apps\n // `namespacedHelmReleases` object structure:\n // {\n // [namespace1]: {\n // [releaseName]: [app1, app2, ...],\n // },\n // [namespace2]: {\n // [releaseName2]: [app1, app2, ...],\n // }\n // }\n const namespacedHelmReleases = {};\n helmManagedApps.forEach((app) => {\n const namespace = app.ResourcePool;\n const instanceLabel = app.Metadata.labels[PodKubernetesInstanceLabel];\n if (namespacedHelmReleases[namespace]) {\n namespacedHelmReleases[namespace][instanceLabel] = [...(namespacedHelmReleases[namespace][instanceLabel] || []), app];\n } else {\n namespacedHelmReleases[namespace] = { [instanceLabel]: [app] };\n }\n });\n\n // `helmAppsEntriesList` object structure:\n // [\n // [\"airflow-test\", Array(5)],\n // [\"traefik\", Array(1)],\n // [\"airflow-test\", Array(2)],\n // ...,\n // ]\n const helmAppsEntriesList = Object.values(namespacedHelmReleases).flatMap((r) => Object.entries(r));\n const helmAppsList = helmAppsEntriesList.map(([helmInstance, applications]) => {\n const helmApp = new HelmApplication();\n helmApp.Name = helmInstance;\n helmApp.ApplicationType = KubernetesApplicationTypes.HELM;\n helmApp.ApplicationOwner = applications[0].ApplicationOwner;\n helmApp.KubernetesApplications = applications;\n\n // the status of helm app is `Ready` based on whether the underlying RunningPodsCount of the k8s app\n // reaches the TotalPodsCount of the app\n const appsNotReady = applications.some((app) => app.RunningPodsCount < app.TotalPodsCount);\n helmApp.Status = appsNotReady ? 'Not ready' : 'Ready';\n\n // use earliest date\n helmApp.CreationDate = applications.map((app) => app.CreationDate).sort((a, b) => new Date(a) - new Date(b))[0];\n\n // use first app namespace as helm app namespace\n helmApp.ResourcePool = applications[0].ResourcePool;\n\n // required for persisting table expansion state and differenting same named helm apps across different namespaces\n helmApp.Id = helmApp.ResourcePool + '-' + helmApp.Name.toLowerCase().replaceAll(' ', '-');\n\n return helmApp;\n });\n\n return helmAppsList;\n }\n\n /**\n * Get nested applications -\n * @param {KubernetesApplication[]} applications Application list\n * @returns {Object} { helmApplications: [app1, app2, ...], nonHelmApplications: [app3, app4, ...] }\n */\n static getNestedApplications(applications) {\n const helmApplications = KubernetesApplicationHelper.getHelmApplications(applications);\n\n // filter out helm managed applications\n const helmAppNames = [...new Set(helmApplications.map((hma) => hma.Name))]; // distinct helm app names\n const nonHelmApplications = applications.filter((app) => {\n if (app.Metadata.labels) {\n return !helmAppNames.includes(app.Metadata.labels[PodKubernetesInstanceLabel]);\n }\n return true;\n });\n\n return { helmApplications, nonHelmApplications };\n }\n}\nexport default KubernetesApplicationHelper;\n","import _ from 'lodash-es';\n\nclass KubernetesCommonHelper {\n static assignOrDeleteIfEmpty(obj, path, value) {\n if (!value || (value instanceof Array && !value.length)) {\n _.unset(obj, path);\n } else {\n _.set(obj, path, value);\n }\n }\n\n static ownerToLabel(owner) {\n let label = _.replace(owner, /[^-A-Za-z0-9_.]/g, '.');\n label = _.truncate(label, { length: 63, omission: '' });\n label = _.replace(label, /^[-_.]*/g, '');\n label = _.replace(label, /[-_.]*$/g, '');\n return label;\n }\n\n static assignOrDeleteIfEmptyOrZero(obj, path, value) {\n if (!value || value === 0 || (value instanceof Array && !value.length)) {\n _.unset(obj, path);\n } else {\n _.set(obj, path, value);\n }\n }\n}\nexport default KubernetesCommonHelper;\n","import _ from 'lodash-es';\n\nimport { KubernetesPortainerConfigMapAccessKey } from 'Kubernetes/models/config-map/models';\nimport { UserAccessViewModel, TeamAccessViewModel } from 'Portainer/models/access';\n\nclass KubernetesConfigMapHelper {\n static parseJSONData(configMap) {\n _.forIn(configMap.Data, (value, key) => {\n try {\n configMap.Data[key] = JSON.parse(value);\n } catch (err) {\n configMap.Data[key] = value;\n }\n });\n return configMap;\n }\n\n static modifiyNamespaceAccesses(configMap, namespace, accesses) {\n configMap.Data[KubernetesPortainerConfigMapAccessKey][namespace] = {\n UserAccessPolicies: {},\n TeamAccessPolicies: {},\n };\n _.forEach(accesses, (item) => {\n if (item instanceof UserAccessViewModel) {\n configMap.Data[KubernetesPortainerConfigMapAccessKey][namespace].UserAccessPolicies[item.Id] = { RoleId: 0 };\n } else if (item instanceof TeamAccessViewModel) {\n configMap.Data[KubernetesPortainerConfigMapAccessKey][namespace].TeamAccessPolicies[item.Id] = { RoleId: 0 };\n }\n });\n _.forIn(configMap.Data, (value, key) => {\n configMap.Data[key] = JSON.stringify(value);\n });\n return configMap;\n }\n}\nexport default KubernetesConfigMapHelper;\n","import _ from 'lodash-es';\nimport YAML from 'yaml';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\nimport { KubernetesConfigurationFormValuesEntry } from 'Kubernetes/models/configuration/formvalues';\n\nclass KubernetesConfigurationHelper {\n static getUsingApplications(config, applications) {\n return _.filter(applications, (app) => {\n let envFind;\n let volumeFind;\n if (config.Kind === KubernetesConfigurationKinds.CONFIGMAP) {\n envFind = _.find(app.Env, { valueFrom: { configMapKeyRef: { name: config.Name } } });\n volumeFind = _.find(app.Volumes, { configMap: { name: config.Name } });\n } else {\n envFind = _.find(app.Env, { valueFrom: { secretKeyRef: { name: config.Name } } });\n volumeFind = _.find(app.Volumes, { secret: { secretName: config.Name } });\n }\n return envFind || volumeFind;\n });\n }\n\n static isSystemToken(config) {\n return _.startsWith(config.Name, 'default-token-');\n }\n\n static isBinary(encoding) {\n return encoding !== '' && !_.includes(encoding, 'ISO') && !_.includes(encoding, 'UTF');\n }\n\n static setConfigurationUsed(config) {\n config.Used = config.Applications && config.Applications.length !== 0;\n }\n\n static setConfigurationsUsed(configurations, applications) {\n _.forEach(configurations, (config) => {\n config.Applications = KubernetesConfigurationHelper.getUsingApplications(config, applications);\n KubernetesConfigurationHelper.setConfigurationUsed(config);\n });\n }\n\n static getApplicationConfigurations(applications, configurations) {\n const configurationsUsed = configurations.filter((config) => KubernetesConfigurationHelper.getUsingApplications(config, applications).length !== 0);\n // set the configurations used for each application in the list\n const configuredApps = applications.map((app) => {\n const configMappedByName = configurationsUsed.filter((config) => app.ApplicationName === config.Name && app.ResourcePool === config.Namespace);\n const configMappedByVolume = configurationsUsed\n .filter((config) => app.ConfigurationVolumes.some((cv) => cv.configurationName === config.Name))\n .filter((config) => !configMappedByName.some((c) => c.Name === config.Name)); // filter out duplicates that are mapped by name\n app.Configurations = [...configMappedByName, ...configMappedByVolume];\n return app;\n });\n return configuredApps;\n }\n\n static parseYaml(formValues) {\n YAML.defaultOptions.customTags = ['binary'];\n const data = _.map(YAML.parse(formValues.DataYaml), (value, key) => {\n const entry = new KubernetesConfigurationFormValuesEntry();\n entry.Key = key;\n entry.Value = value;\n const oldEntry = _.find(formValues.Data, { Key: entry.Key });\n entry.IsBinary = oldEntry ? oldEntry.IsBinary : false;\n return entry;\n });\n return data;\n }\n\n static parseData(formValues) {\n if (!formValues.Data.length) return '';\n\n const data = _.reduce(\n formValues.Data,\n (acc, entry) => {\n acc[entry.Key] = entry.Value;\n return acc;\n },\n {}\n );\n return YAML.stringify(data);\n }\n\n static isExternalConfiguration(configuration) {\n return !configuration.ConfigurationOwner;\n }\n}\n\nexport default KubernetesConfigurationHelper;\n","import _ from 'lodash-es';\n\nclass KubernetesEventHelper {\n static warningCount(events) {\n const warnings = _.filter(events, (event) => event.Type === 'Warning');\n return warnings.length;\n }\n}\n\nexport default KubernetesEventHelper;\n","import _ from 'lodash-es';\n\nclass KubernetesFormValidationHelper {\n static getInvalidKeys(names) {\n const res = {};\n _.forEach(names, (name, index) => {\n const valid = /^[-._a-zA-Z0-9]+$/.test(name);\n if (!valid) {\n res[index] = true;\n }\n });\n return res;\n }\n\n static getDuplicates(names) {\n const grouped = _.groupBy(names);\n const res = {};\n _.forEach(names, (name, index) => {\n if (name && grouped[name].length > 1) {\n res[index] = name;\n }\n });\n return res;\n }\n\n static getDuplicateNodePorts(serviceNodePorts, allOtherNodePorts) {\n const res = {};\n serviceNodePorts.forEach((sNodePort, index) => {\n if (allOtherNodePorts.includes(sNodePort) || serviceNodePorts.filter((snp) => snp === sNodePort).length > 1) {\n res[index] = sNodePort;\n }\n });\n return res;\n }\n}\nexport default KubernetesFormValidationHelper;\n","import _ from 'lodash-es';\n\nimport { KUBERNETES_DEFAULT_NAMESPACE, KUBERNETES_DEFAULT_SYSTEM_NAMESPACES } from 'Kubernetes/models/namespace/models';\nimport { isSystem } from 'Kubernetes/store/namespace';\n\nexport default class KubernetesNamespaceHelper {\n /**\n * Check if namespace is system or not\n * @param {String} namespace Namespace (string name) to evaluate\n * @returns Boolean\n */\n static isSystemNamespace(namespace) {\n return isSystem(namespace);\n }\n\n /**\n * Check if namespace is default or not\n * @param {String} namespace Namespace (string name) to evaluate\n * @returns Boolean\n */\n static isDefaultNamespace(namespace) {\n return namespace === KUBERNETES_DEFAULT_NAMESPACE;\n }\n\n /**\n * Check if namespace is one of the default system namespaces\n * @param {String} namespace Namespace (string name) to evaluate\n * @returns Boolean\n */\n static isDefaultSystemNamespace(namespace) {\n return _.includes(KUBERNETES_DEFAULT_SYSTEM_NAMESPACES, namespace);\n }\n}\n","import { KubernetesPortainerResourceQuotaPrefix } from 'Kubernetes/models/resource-quota/models';\n\nclass KubernetesResourceQuotaHelper {\n static generateResourceQuotaName(name) {\n return KubernetesPortainerResourceQuotaPrefix + name;\n }\n\n static formatBytes(bytes, decimals = 0, base10 = true) {\n const res = {\n Size: 0,\n SizeUnit: 'B',\n };\n\n if (bytes === 0) {\n return res;\n }\n\n const k = base10 ? 1000 : 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return {\n Size: parseFloat((bytes / Math.pow(k, i)).toFixed(dm)),\n SizeUnit: sizes[i],\n };\n }\n}\n\nexport default KubernetesResourceQuotaHelper;\n","import _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\nimport { KubernetesResourceReservation } from 'Kubernetes/models/resource-reservation/models';\n\nclass KubernetesResourceReservationHelper {\n static computeResourceReservation(pods) {\n const containers = _.reduce(pods, (acc, pod) => _.concat(acc, pod.Containers), []);\n\n return _.reduce(\n containers,\n (acc, container) => {\n if (container.Requests) {\n if (container.Requests.memory) {\n acc.Memory += filesizeParser(container.Requests.memory, { base: 10 });\n }\n\n if (container.Requests.cpu) {\n acc.CPU += KubernetesResourceReservationHelper.parseCPU(container.Requests.cpu);\n }\n }\n\n return acc;\n },\n new KubernetesResourceReservation()\n );\n }\n\n static parseCPU(cpu) {\n let res = parseInt(cpu, 10);\n if (_.endsWith(cpu, 'm')) {\n res /= 1000;\n } else if (_.endsWith(cpu, 'n')) {\n res /= 1000000000;\n }\n return res;\n }\n\n static megaBytesValue(value) {\n return Math.floor(filesizeParser(value) / 1000 / 1000);\n }\n\n static bytesValue(mem) {\n return filesizeParser(mem) * 1000 * 1000;\n }\n}\nexport default KubernetesResourceReservationHelper;\n","import _ from 'lodash-es';\nimport { KubernetesServiceHeadlessPrefix } from 'Kubernetes/models/service/models';\n\nclass KubernetesServiceHelper {\n static generateHeadlessServiceName(name) {\n return KubernetesServiceHeadlessPrefix + name;\n }\n\n static findApplicationBoundService(services, rawApp) {\n if (!rawApp.spec.template) {\n return undefined;\n }\n return _.find(services, (item) => item.spec.selector && _.isMatch(rawApp.spec.template.metadata.labels, item.spec.selector));\n }\n\n static findApplicationBoundServices(services, rawApp) {\n if (!rawApp.spec.template) {\n return undefined;\n }\n return _.filter(services, (item) => item.spec.selector && _.isMatch(rawApp.spec.template.metadata.labels, item.spec.selector));\n }\n}\nexport default KubernetesServiceHelper;\n","import _ from 'lodash-es';\nimport { KubernetesStack } from 'Kubernetes/models/stack/models';\n\nclass KubernetesStackHelper {\n static stacksFromApplications(applications) {\n const res = _.reduce(\n applications,\n (acc, app) => {\n if (app.StackName) {\n let stack = _.find(acc, { Name: app.StackName, ResourcePool: app.ResourcePool });\n if (!stack) {\n stack = new KubernetesStack();\n stack.Name = app.StackName;\n stack.ResourcePool = app.ResourcePool;\n acc.push(stack);\n }\n stack.Applications.push(app);\n }\n return acc;\n },\n []\n );\n return res;\n }\n}\nexport default KubernetesStackHelper;\n","import KubernetesStackHelper from './stackHelper';\n\ndescribe('stacksFromApplications', () => {\n const { stacksFromApplications } = KubernetesStackHelper;\n test('should return an empty array when passed an empty array', () => {\n expect(stacksFromApplications([])).toHaveLength(0);\n });\n\n test('should return an empty array when passed a list of applications without stacks', () => {\n expect(stacksFromApplications([{ StackName: '' }, { StackName: '' }, { StackName: '' }, { StackName: '' }])).toHaveLength(0);\n });\n});\n","import _ from 'lodash-es';\nimport uuidv4 from 'uuid/v4';\nimport { KubernetesApplicationTypes } from 'Kubernetes/models/application/models';\n\nclass KubernetesVolumeHelper {\n // TODO: review\n // the following condition\n // && (app.ApplicationType === KubernetesApplicationTypes.STATEFULSET ? _.includes(volume.PersistentVolumeClaim.Name, app.Name) : true);\n // is made to enforce finding the good SFS when multiple SFS in the same namespace\n // are referencing an internal PVC using the same internal name\n // (PVC are not exposed to other apps so they can have the same name in differents SFS)\n static getUsingApplications(volume, applications) {\n return _.filter(applications, (app) => {\n const names = _.without(_.map(app.Volumes, 'persistentVolumeClaim.claimName'), undefined);\n const matchingNames = _.filter(names, (name) => _.startsWith(volume.PersistentVolumeClaim.Name, name));\n return (\n volume.ResourcePool.Namespace.Name === app.ResourcePool &&\n matchingNames.length &&\n (app.ApplicationType === KubernetesApplicationTypes.STATEFULSET ? _.includes(volume.PersistentVolumeClaim.Name, app.Name) : true)\n );\n });\n }\n\n static isUsed(item) {\n return item.Applications.length !== 0;\n }\n\n static generatedApplicationConfigVolumeName(name) {\n return 'config-' + name + '-' + uuidv4();\n }\n\n static isExternalVolume(volume) {\n return !volume.PersistentVolumeClaim.ApplicationOwner;\n }\n}\n\nexport default KubernetesVolumeHelper;\n","import * as JsonPatch from 'fast-json-patch';\nimport { KubernetesHorizontalPodAutoScaler } from './models';\nimport { KubernetesHorizontalPodAutoScalerCreatePayload } from './payload';\n\nexport class KubernetesHorizontalPodAutoScalerConverter {\n /**\n * Convert API data to KubernetesHorizontalPodAutoScaler model\n */\n static apiToModel(data, yaml) {\n const res = new KubernetesHorizontalPodAutoScaler();\n res.Id = data.metadata.uid;\n res.Namespace = data.metadata.namespace;\n res.Name = data.metadata.name;\n res.MinReplicas = data.spec.minReplicas;\n res.MaxReplicas = data.spec.maxReplicas;\n res.TargetCPUUtilization = data.spec.targetCPUUtilizationPercentage;\n\n if (data.spec.scaleTargetRef) {\n res.TargetEntity.ApiVersion = data.spec.scaleTargetRef.apiVersion;\n res.TargetEntity.Kind = data.spec.scaleTargetRef.kind;\n res.TargetEntity.Name = data.spec.scaleTargetRef.name;\n }\n res.Yaml = yaml ? yaml.data : '';\n return res;\n }\n\n static createPayload(data) {\n const payload = new KubernetesHorizontalPodAutoScalerCreatePayload();\n payload.metadata.namespace = data.Namespace;\n payload.metadata.name = data.TargetEntity.Name;\n payload.spec.minReplicas = data.MinReplicas;\n payload.spec.maxReplicas = data.MaxReplicas;\n payload.spec.targetCPUUtilizationPercentage = data.TargetCPUUtilization;\n payload.spec.scaleTargetRef.apiVersion = data.TargetEntity.ApiVersion;\n payload.spec.scaleTargetRef.kind = data.TargetEntity.Kind;\n payload.spec.scaleTargetRef.name = data.TargetEntity.Name;\n return payload;\n }\n\n static patchPayload(oldScaler, newScaler) {\n const oldPayload = KubernetesHorizontalPodAutoScalerConverter.createPayload(oldScaler);\n const newPayload = KubernetesHorizontalPodAutoScalerConverter.createPayload(newScaler);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n\n static applicationFormValuesToModel(formValues, kind) {\n const res = new KubernetesHorizontalPodAutoScaler();\n res.Name = formValues.Name;\n res.Namespace = formValues.ResourcePool.Namespace.Name;\n res.MinReplicas = formValues.AutoScaler.MinReplicas;\n res.MaxReplicas = formValues.AutoScaler.MaxReplicas;\n res.TargetCPUUtilization = formValues.AutoScaler.TargetCPUUtilization;\n res.TargetEntity.Name = formValues.Name;\n res.TargetEntity.Kind = kind;\n res.TargetEntity.ApiVersion = formValues.AutoScaler.ApiVersion;\n return res;\n }\n\n /**\n * Convertion functions to use with v2beta2 model\n */\n\n // static apiToModel(data, yaml) {\n // const res = new KubernetesHorizontalPodAutoScaler();\n // res.Id = data.metadata.uid;\n // res.Namespace = data.metadata.namespace;\n // res.Name = data.metadata.name;\n // res.MinReplicas = data.spec.minReplicas;\n // res.MaxReplicas = data.spec.maxReplicas;\n // res.TargetCPUUtilization = data.spec.targetCPUUtilization;\n\n // _.forEach(data.spec.metrics, (metric) => {\n // if (metric.type === 'Resource') {\n // if (metric.resource.name === 'cpu') {\n // res.TargetCPUUtilization = metric.resource.target.averageUtilization;\n // }\n // if (metric.resource.name === 'memory') {\n // res.TargetMemoryValue = parseFloat(metric.resource.target.averageValue) / 1000;\n // }\n // }\n // });\n\n // if (data.spec.scaleTargetRef) {\n // res.TargetEntity.ApiVersion = data.spec.scaleTargetRef.apiVersion;\n // res.TargetEntity.Kind = data.spec.scaleTargetRef.kind;\n // res.TargetEntity.Name = data.spec.scaleTargetRef.name;\n // }\n // res.Yaml = yaml ? yaml.data : '';\n // return res;\n // }\n\n // static createPayload(data) {\n // const payload = new KubernetesHorizontalPodAutoScalerCreatePayload();\n // payload.metadata.namespace = data.Namespace;\n // payload.metadata.name = data.TargetEntity.Name;\n // payload.spec.minReplicas = data.MinReplicas;\n // payload.spec.maxReplicas = data.MaxReplicas;\n\n // if (data.TargetMemoryValue) {\n // const memoryMetric = new KubernetesHorizontalPodAutoScalerMemoryMetric();\n // memoryMetric.resource.target.averageValue = data.TargetMemoryValue;\n // payload.spec.metrics.push(memoryMetric);\n // }\n\n // if (data.TargetCPUUtilization) {\n // const cpuMetric = new KubernetesHorizontalPodAutoScalerCPUMetric();\n // cpuMetric.resource.target.averageUtilization = data.TargetCPUUtilization;\n // payload.spec.metrics.push(cpuMetric);\n // }\n\n // payload.spec.scaleTargetRef.apiVersion = data.TargetEntity.ApiVersion;\n // payload.spec.scaleTargetRef.kind = data.TargetEntity.Kind;\n // payload.spec.scaleTargetRef.name = data.TargetEntity.Name;\n\n // return payload;\n // }\n\n // static applicationFormValuesToModel(formValues, kind) {\n // const res = new KubernetesHorizontalPodAutoScaler();\n // res.Name = formValues.Name;\n // res.Namespace = formValues.ResourcePool.Namespace.Name;\n // res.MinReplicas = formValues.AutoScaler.MinReplicas;\n // res.MaxReplicas = formValues.AutoScaler.MaxReplicas;\n // res.TargetCPUUtilization = formValues.AutoScaler.TargetCPUUtilization;\n // if (formValues.AutoScaler.TargetMemoryValue) {\n // res.TargetMemoryValue = formValues.AutoScaler.TargetMemoryValue + 'M';\n // }\n // res.TargetEntity.Name = formValues.Name;\n // res.TargetEntity.Kind = kind;\n // return res;\n // }\n}\n","import _ from 'lodash-es';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesApplication, KubernetesApplicationTypes, KubernetesApplicationTypeStrings } from 'Kubernetes/models/application/models';\nimport { KubernetesDeployment } from 'Kubernetes/models/deployment/models';\nimport { KubernetesStatefulSet } from 'Kubernetes/models/stateful-set/models';\nimport { KubernetesDaemonSet } from 'Kubernetes/models/daemon-set/models';\n\nexport class KubernetesHorizontalPodAutoScalerHelper {\n static findApplicationBoundScaler(sList, app) {\n const kind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(app);\n return _.find(sList, (item) => item.TargetEntity.Kind === kind && item.TargetEntity.Name === app.Name);\n }\n\n static getApplicationTypeString(app) {\n if ((app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.DEPLOYMENT) || app instanceof KubernetesDeployment) {\n return KubernetesApplicationTypeStrings.DEPLOYMENT;\n } else if ((app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.DAEMONSET) || app instanceof KubernetesDaemonSet) {\n return KubernetesApplicationTypeStrings.DAEMONSET;\n } else if ((app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.STATEFULSET) || app instanceof KubernetesStatefulSet) {\n return KubernetesApplicationTypeStrings.STATEFULSET;\n } else if (app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.POD) {\n return KubernetesApplicationTypeStrings.POD;\n } else {\n throw new PortainerError('Unable to determine application type');\n }\n }\n}\n","/**\n * KubernetesHorizontalPodAutoScaler Model\n */\nconst _KubernetesHorizontalPodAutoScaler = Object.freeze({\n Id: '',\n Namespace: '',\n Name: '',\n MinReplicas: 1,\n MaxReplicas: 1,\n TargetCPUUtilization: 0,\n TargetEntity: {\n ApiVersion: '',\n Kind: '',\n Name: '',\n },\n Yaml: '',\n});\n\nexport class KubernetesHorizontalPodAutoScaler {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScaler)));\n }\n}\n","/**\n * KubernetesHorizontalPodAutoScaler Create Payload Model\n */\nconst _KubernetesHorizontalPodAutoScalerCreatePayload = Object.freeze({\n metadata: {\n namespace: '',\n name: '',\n },\n spec: {\n maxReplicas: 0,\n minReplicas: 0,\n targetCPUUtilizationPercentage: 0,\n scaleTargetRef: {\n kind: '',\n name: '',\n },\n },\n});\n\nexport class KubernetesHorizontalPodAutoScalerCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScalerCreatePayload)));\n }\n}\n\n/**\n * KubernetesHorizontalPodAutoScaler Create Payload Model for v2beta2\n * Include support of memory usage\n */\n\n// const _KubernetesHorizontalPodAutoScalerCreatePayload = Object.freeze({\n// metadata: {\n// namespace: '',\n// name: ''\n// },\n// spec: {\n// maxReplicas: 0,\n// minReplicas: 0,\n// targetCPUUtilizationPercentage: 0,\n// scaleTargetRef: {\n// kind: '',\n// name: ''\n// },\n// metrics: []\n// }\n// });\n\n// export class KubernetesHorizontalPodAutoScalerCreatePayload {\n// constructor() {\n// Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScalerCreatePayload)));\n// }\n// }\n\n// const _KubernetesHorizontalPodAutoScalerCPUMetric = Object.freeze({\n// type: 'Resource',\n// resource: {\n// name: 'cpu',\n// target: {\n// type: 'Utilization',\n// averageUtilization: 0\n// }\n// }\n// });\n\n// export class KubernetesHorizontalPodAutoScalerCPUMetric {\n// constructor() {\n// Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScalerCPUMetric)));\n// }\n// }\n\n// const _KubernetesHorizontalPodAutoScalerMemoryMetric = Object.freeze({\n// type: 'Resource',\n// resource: {\n// name: 'memory',\n// target: {\n// type: 'AverageValue',\n// averageValue: ''\n// }\n// }\n// });\n\n// export class KubernetesHorizontalPodAutoScalerMemoryMetric {\n// constructor() {\n// Object.assign(this, JSON.parse(JSON.stringify(_KubernetesHorizontalPodAutoScalerMemoryMetric)));\n// }\n// }\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesHorizontalPodAutoScalers', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesHorizontalPodAutoScalersFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/autoscaling/v1' + (namespace ? '/namespaces/:namespace' : '') + '/horizontalpodautoscalers/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n rollback: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport { KubernetesHorizontalPodAutoScalerConverter } from './converter';\n\nclass KubernetesHorizontalPodAutoScalerService {\n /* @ngInject */\n constructor($async, KubernetesHorizontalPodAutoScalers) {\n this.$async = $async;\n this.KubernetesHorizontalPodAutoScalers = KubernetesHorizontalPodAutoScalers;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n // this.rollbackAsync = this.rollbackAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([\n this.KubernetesHorizontalPodAutoScalers(namespace).get(params).$promise,\n this.KubernetesHorizontalPodAutoScalers(namespace).getYaml(params).$promise,\n ]);\n const res = KubernetesHorizontalPodAutoScalerConverter.apiToModel(raw, yaml);\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve HorizontalPodAutoScaler', err);\n }\n }\n\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesHorizontalPodAutoScalers(namespace).get().$promise;\n const res = _.map(data.items, (item) => KubernetesHorizontalPodAutoScalerConverter.apiToModel(item));\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve HorizontalPodAutoScalers', err);\n }\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * CREATE\n */\n async createAsync(horizontalPodAutoScaler) {\n try {\n const params = {};\n const payload = KubernetesHorizontalPodAutoScalerConverter.createPayload(horizontalPodAutoScaler);\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesHorizontalPodAutoScalers(namespace).create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create horizontalPodAutoScaler', err);\n }\n }\n\n create(horizontalPodAutoScaler) {\n return this.$async(this.createAsync, horizontalPodAutoScaler);\n }\n\n /**\n * PATCH\n */\n async patchAsync(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler) {\n try {\n const params = new KubernetesCommonParams();\n params.id = newHorizontalPodAutoScaler.Name;\n const namespace = newHorizontalPodAutoScaler.Namespace;\n const payload = KubernetesHorizontalPodAutoScalerConverter.patchPayload(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler);\n if (!payload.length) {\n return;\n }\n const data = await this.KubernetesHorizontalPodAutoScalers(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to patch horizontalPodAutoScaler', err);\n }\n }\n\n patch(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler) {\n return this.$async(this.patchAsync, oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(horizontalPodAutoScaler) {\n try {\n const params = new KubernetesCommonParams();\n params.id = horizontalPodAutoScaler.Name;\n const namespace = horizontalPodAutoScaler.Namespace;\n await this.KubernetesHorizontalPodAutoScalers(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to remove horizontalPodAutoScaler', err);\n }\n }\n\n delete(horizontalPodAutoScaler) {\n return this.$async(this.deleteAsync, horizontalPodAutoScaler);\n }\n}\n\nexport default KubernetesHorizontalPodAutoScalerService;\nangular.module('portainer.kubernetes').service('KubernetesHorizontalPodAutoScalerService', KubernetesHorizontalPodAutoScalerService);\n","export const KubernetesIngressClassAnnotation = 'kubernetes.io/ingress.class';\n\n// keys must match KubernetesIngressClassTypes values to map them quickly using the ingress type\n// KubernetesIngressClassRewriteTargetAnnotations[KubernetesIngressClassTypes.NGINX] for example\n\nexport const KubernetesNginxRewriteTargetAnnotations = {\n Key: 'nginx.ingress.kubernetes.io/rewrite-target',\n Value: '/$1',\n};\n\nexport const KubernetesTraefikRewriteTargetAnnotations = {\n Key: 'traefik.ingress.kubernetes.io/rewrite-target',\n Value: '/$1',\n};\n\nexport const KubernetesNginxUseregexAnnotations = {\n Key: 'nginx.ingress.kubernetes.io/use-regex',\n Value: 'true',\n};\n\nexport const KubernetesIngressClassTypes = Object.freeze({\n NGINX: 'nginx',\n TRAEFIK: 'traefik',\n});\n\nexport const PortainerIngressClassTypes = 'ingress.portainer.io/ingress-type';\n","import _ from 'lodash-es';\nimport * as JsonPatch from 'fast-json-patch';\n\nimport KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';\nimport {\n KubernetesResourcePoolIngressClassAnnotationFormValue,\n KubernetesResourcePoolIngressClassFormValue,\n KubernetesResourcePoolIngressClassHostFormValue,\n} from 'Kubernetes/models/resource-pool/formValues';\nimport { KubernetesApplicationPublishingTypes } from '../models/application/models';\nimport { KubernetesIngress, KubernetesIngressRule } from './models';\nimport { KubernetesIngressCreatePayload, KubernetesIngressRuleCreatePayload, KubernetesIngressRulePathCreatePayload } from './payloads';\nimport { KubernetesIngressClassAnnotation, PortainerIngressClassTypes } from './constants';\n\nexport class KubernetesIngressConverter {\n static apiToModel(data) {\n const paths = _.flatMap(data.spec.rules, (rule) => {\n return !rule.http\n ? []\n : _.map(rule.http.paths, (path) => {\n const ingRule = new KubernetesIngressRule();\n ingRule.IngressName = data.metadata.name;\n ingRule.ServiceName = path.backend.service.name;\n ingRule.Host = rule.host || '';\n ingRule.IP = data.status.loadBalancer.ingress ? data.status.loadBalancer.ingress[0].ip : undefined;\n ingRule.Port = path.backend.service.port.number;\n ingRule.Path = path.path;\n ingRule.TLS = data.spec.tls;\n return ingRule;\n });\n });\n\n const res = new KubernetesIngress();\n res.Name = data.metadata.name;\n res.Namespace = data.metadata.namespace;\n res.Annotations = data.metadata.annotations || {};\n res.IngressClassName =\n data.metadata.annotations && data.metadata.annotations[KubernetesIngressClassAnnotation]\n ? data.metadata.annotations[KubernetesIngressClassAnnotation]\n : data.spec.ingressClassName;\n res.Paths = paths;\n res.Hosts = _.uniq(_.map(data.spec.rules, 'host'));\n const idx = _.findIndex(res.Hosts, (h) => h === undefined);\n if (idx >= 0) {\n res.Hosts.splice(idx, 1, '');\n }\n res.TLS = data.spec.tls;\n return res;\n }\n\n /**\n * Converts Application Form Value (from Create Application View) to Ingresses\n * @param {KubernetesApplicationFormValues} formValues\n * @param {string} serviceName\n * @returns {KubernetesIngressRule[]}\n */\n static applicationFormValuesToIngresses(formValues, serviceName) {\n const isPublishingToIngress = formValues.PublishingType === KubernetesApplicationPublishingTypes.INGRESS;\n const ingresses = angular.copy(formValues.OriginalIngresses);\n _.forEach(formValues.PublishedPorts, (p) => {\n const ingress = _.find(ingresses, { Name: p.IngressName });\n if (ingress) {\n if (p.NeedsDeletion) {\n _.remove(ingress.Paths, (path) => path.Port === p.ContainerPort && path.ServiceName === serviceName && path.Path === p.IngressRoute);\n } else if (isPublishingToIngress && p.IsNew) {\n const rule = new KubernetesIngressRule();\n rule.IngressName = ingress.Name;\n rule.ServiceName = serviceName;\n rule.Port = p.ContainerPort;\n if (p.IngressRoute) {\n rule.Path = _.startsWith(p.IngressRoute, '/') ? p.IngressRoute : '/' + p.IngressRoute;\n }\n rule.Host = p.IngressHost;\n ingress.Paths.push(rule);\n }\n }\n });\n return ingresses;\n }\n\n static applicationFormValuesToDeleteIngresses(formValues, application) {\n const ingresses = angular.copy(formValues.OriginalIngresses);\n application.Services.forEach((service) => {\n ingresses.forEach((ingress) => {\n const paths = _.filter(ingress.Paths, { ServiceName: service.metadata.name });\n paths.forEach((path) => _.remove(ingress.Paths, path));\n });\n });\n return ingresses;\n }\n\n static removeIngressesPaths(ingresses, services) {\n const originalIngress = angular.copy(ingresses);\n originalIngress.forEach((ingress) => {\n services.forEach((service) => {\n _.remove(ingress.Paths, { ServiceName: service.Name });\n });\n });\n return originalIngress;\n }\n\n static generateNewIngresses(ingresses, services) {\n const originalIngresses = angular.copy(ingresses);\n services\n .filter((s) => s.Ingress)\n .forEach((service) => {\n if (service.Ports.length !== 0) {\n const matchedIngress = _.find(originalIngresses, { Name: service.Ports[0].ingress.IngressName });\n if (matchedIngress) {\n const rule = new KubernetesIngressRule();\n rule.ServiceName = service.Name;\n rule.IngressName = service.Ports[0].ingress.IngressName;\n rule.Host = service.Ports[0].ingress.Host;\n rule.Path = _.startsWith(service.Ports[0].ingress.Path, '/') ? service.Ports[0].ingress.Path : '/' + service.Ports[0].ingress.Path;\n rule.Port = service.Ports[0].port;\n\n matchedIngress.Paths.push(rule);\n }\n }\n });\n return originalIngresses;\n }\n\n // need this function for [ resource summary ] controller\n static newApplicationFormValuesToIngresses(formValues, serviceName, servicePorts) {\n const ingresses = angular.copy(formValues.OriginalIngresses);\n servicePorts.forEach((port) => {\n const ingress = port.ingress && _.find(ingresses, { Name: port.ingress.IngressName });\n if (ingress) {\n const rule = new KubernetesIngressRule();\n rule.ServiceName = serviceName;\n rule.IngressName = port.ingress.IngressName;\n rule.Host = port.ingress.Host;\n rule.Path = _.startsWith(port.ingress.Path, '/') ? port.ingress.Path : '/' + port.ingress.Path;\n rule.Port = port.port;\n\n ingress.Paths.push(rule);\n }\n });\n return ingresses;\n }\n\n /**\n *\n * @param {KubernetesResourcePoolIngressClassFormValue[]} formValues\n * @returns {KubernetesIngress} Ingress\n */\n static resourcePoolIngressClassFormValueToIngress(formValues) {\n const res = new KubernetesIngress();\n res.Name = formValues.IngressClass.Name;\n res.Namespace = formValues.Namespace;\n const pairs = _.map(formValues.Annotations, (a) => [a.Key, a.Value]);\n res.Annotations = _.fromPairs(pairs);\n res.Annotations[PortainerIngressClassTypes] = formValues.IngressClass.Name;\n res.IngressClassName = formValues.IngressClass.Name;\n res.Hosts = formValues.Hosts;\n res.Paths = formValues.Paths;\n return res;\n }\n\n /**\n *\n * @param {KubernetesIngressClass} ics Ingress classes (saved in Portainer DB)\n * @param {KubernetesIngress[]} ingresses Existing Kubernetes ingresses. Must be empty for RP CREATE VIEW and filled for RP EDIT VIEW\n */\n static ingressClassesToFormValues(ics, ingresses) {\n const res = _.map(ics, (ic) => {\n const fv = new KubernetesResourcePoolIngressClassFormValue(ic);\n const ingress = _.find(ingresses, { Name: ic.Name });\n if (ingress) {\n fv.Selected = true;\n fv.WasSelected = true;\n fv.Hosts = _.map(ingress.Hosts, (host) => {\n const hfv = new KubernetesResourcePoolIngressClassHostFormValue();\n hfv.Host = host;\n hfv.PreviousHost = host;\n hfv.IsNew = false;\n return hfv;\n });\n const annotations = _.map(_.toPairs(ingress.Annotations), ([key, value]) => {\n if (key !== PortainerIngressClassTypes) {\n const annotation = new KubernetesResourcePoolIngressClassAnnotationFormValue();\n annotation.Key = key;\n annotation.Value = value;\n return annotation;\n }\n });\n fv.Annotations = _.without(annotations, undefined);\n fv.AdvancedConfig = fv.Annotations.length > 0;\n fv.Paths = ingress.Paths;\n }\n return fv;\n });\n return res;\n }\n\n static createPayload(data) {\n const res = new KubernetesIngressCreatePayload();\n res.metadata.name = data.Name;\n res.metadata.namespace = data.Namespace;\n res.metadata.annotations = data.Annotations;\n res.spec.ingressClassName = data.IngressClassName;\n if (data.Paths && data.Paths.length) {\n _.forEach(data.Paths, (p) => {\n if (p.Host === 'undefined' || p.Host === undefined) {\n p.Host = '';\n }\n });\n const hostsWithRules = [];\n const groups = _.groupBy(data.Paths, 'Host');\n let rules = _.map(groups, (paths, host) => {\n const updatedHost = _.find(data.Hosts, (h) => {\n return h === host || h.PreviousHost === host;\n });\n host = updatedHost.Host || updatedHost;\n if (updatedHost.NeedsDeletion) {\n return;\n }\n const rule = new KubernetesIngressRuleCreatePayload();\n KubernetesCommonHelper.assignOrDeleteIfEmpty(rule, 'host', host);\n rule.http.paths = _.map(paths, (p) => {\n const path = new KubernetesIngressRulePathCreatePayload();\n path.path = p.Path;\n path.backend.service.name = p.ServiceName;\n path.backend.service.port.number = p.Port;\n return path;\n });\n hostsWithRules.push(host);\n return rule;\n });\n rules = _.without(rules, undefined);\n const keptHosts = _.without(\n _.map(data.Hosts, (h) => (h.NeedsDeletion ? undefined : h.Host || h)),\n undefined\n );\n const hostsWithoutRules = _.without(keptHosts, ...hostsWithRules);\n const emptyRules = _.map(hostsWithoutRules, (host) => {\n return { host: host };\n });\n rules = _.concat(rules, emptyRules);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(res, 'spec.rules', rules);\n } else if (data.Hosts) {\n res.spec.rules = [];\n _.forEach(data.Hosts, (host) => {\n if (!host.NeedsDeletion) {\n res.spec.rules.push({ host: host.Host || host });\n }\n });\n } else {\n delete res.spec.rules;\n }\n return res;\n }\n\n static patchPayload(oldData, newData) {\n const oldPayload = KubernetesIngressConverter.createPayload(oldData);\n const newPayload = KubernetesIngressConverter.createPayload(newData);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n","import _ from 'lodash-es';\n\nexport class KubernetesIngressHelper {\n static findSBoundServiceIngressesRules(ingresses, serviceName) {\n const rules = _.flatMap(ingresses, 'Paths');\n return _.filter(rules, { ServiceName: serviceName });\n }\n}\n","export function KubernetesIngress() {\n return {\n Name: '',\n Namespace: '',\n Annotations: {},\n // Host: undefined,\n Hosts: [],\n // PreviousHost: undefined, // only use for RP ingress host edit\n Paths: [],\n IngressClassName: '',\n TLS: [],\n };\n}\n\n// TODO: refactor @LP\n// rename this model to KubernetesIngressPath (and all it's references)\n// as it's conceptually not an ingress rule (element of ingress.spec.rules)\n// but a path (element of ingress.spec.rules[].paths)\nexport function KubernetesIngressRule() {\n return {\n IngressName: '',\n ServiceName: '',\n Host: '',\n IP: '',\n Port: '',\n Path: '',\n };\n}\n\nexport function KubernetesIngressClass() {\n return {\n Name: '',\n Type: undefined,\n NeedsDeletion: false,\n IsNew: true,\n };\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\nexport function KubernetesIngressCreatePayload() {\n return {\n metadata: new KubernetesCommonMetadataPayload(),\n spec: {\n ingressClassName: '',\n rules: [],\n },\n };\n}\n\nexport function KubernetesIngressRuleCreatePayload() {\n return {\n host: '',\n http: {\n paths: [],\n },\n };\n}\n\nexport function KubernetesIngressRulePathCreatePayload() {\n return {\n path: '',\n pathType: 'ImplementationSpecific',\n backend: {\n service: {\n name: '',\n port: {\n number: 0,\n },\n },\n },\n };\n}\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesIngresses', factory);\n\nfunction factory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = `${API_ENDPOINT_ENDPOINTS}/:endpointId/kubernetes/apis/networking.k8s.io/v1${namespace ? '/namespaces/:namespace' : ''}/ingresses/:id/:action`;\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n rollback: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n}\n","import _ from 'lodash-es';\nimport angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport { KubernetesIngressConverter } from './converter';\n\n/* @ngInject */\nexport function KubernetesIngressService($async, KubernetesIngresses) {\n return {\n get,\n create,\n patch,\n delete: _delete,\n };\n\n async function getOne(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([KubernetesIngresses(namespace).get(params).$promise, KubernetesIngresses(namespace).getYaml(params).$promise]);\n const res = {\n Raw: KubernetesIngressConverter.apiToModel(raw),\n Yaml: yaml.data,\n };\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve Ingress', err);\n }\n }\n\n async function getAll(namespace) {\n try {\n const data = await KubernetesIngresses(namespace).get().$promise;\n const res = _.reduce(data.items, (arr, item) => _.concat(arr, KubernetesIngressConverter.apiToModel(item)), []);\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve Ingresses', err);\n }\n }\n\n function get(namespace, name) {\n if (name) {\n return $async(getOne, namespace, name);\n }\n return $async(getAll, namespace);\n }\n\n function create(ingress) {\n return $async(async () => {\n try {\n const params = {};\n const payload = KubernetesIngressConverter.createPayload(ingress);\n const namespace = payload.metadata.namespace;\n const data = await KubernetesIngresses(namespace).create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create ingress', err);\n }\n });\n }\n\n function patch(oldIngress, newIngress) {\n return $async(async () => {\n try {\n const params = new KubernetesCommonParams();\n params.id = newIngress.Name;\n const namespace = newIngress.Namespace;\n const payload = KubernetesIngressConverter.patchPayload(oldIngress, newIngress);\n if (!payload.length) {\n return;\n }\n const data = await KubernetesIngresses(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to patch ingress', err);\n }\n });\n }\n\n function _delete(namespace, ingressClassName) {\n return $async(async () => {\n try {\n const params = new KubernetesCommonParams();\n params.id = ingressClassName;\n await KubernetesIngresses(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to delete ingress', err);\n }\n });\n }\n}\n\nangular.module('portainer.kubernetes').service('KubernetesIngressService', KubernetesIngressService);\n","import { PorImageRegistryModel } from '@/docker/models/porImageRegistry';\nimport { KubernetesApplicationDataAccessPolicies, KubernetesApplicationDeploymentTypes, KubernetesApplicationPlacementTypes } from './models';\n\n/**\n * KubernetesApplicationFormValues Model\n */\nexport function KubernetesApplicationFormValues() {\n this.ApplicationType = undefined; // will only exist for formValues generated from Application (app edit situation;\n this.ResourcePool = {};\n this.Name = '';\n this.StackName = '';\n this.ApplicationOwner = '';\n this.ImageModel = new PorImageRegistryModel();\n this.Note = '';\n this.MemoryLimit = 0;\n this.CpuLimit = 0;\n this.DeploymentType = KubernetesApplicationDeploymentTypes.REPLICATED;\n this.ReplicaCount = 1;\n this.AutoScaler = {};\n this.Containers = [];\n this.Services = [];\n this.EnvironmentVariables = []; // KubernetesApplicationEnvironmentVariableFormValue lis;\n this.DataAccessPolicy = KubernetesApplicationDataAccessPolicies.ISOLATED;\n this.PersistedFolders = []; // KubernetesApplicationPersistedFolderFormValue lis;\n this.ConfigMaps = [];\n this.Secrets = [];\n this.PublishedPorts = []; // KubernetesApplicationPublishedPortFormValue lis;\n this.PlacementType = KubernetesApplicationPlacementTypes.PREFERRED;\n this.Placements = []; // KubernetesApplicationPlacementFormValue lis;\n this.OriginalIngresses = undefined;\n}\n\nexport const KubernetesApplicationConfigurationFormValueOverridenKeyTypes = Object.freeze({\n NONE: 0,\n ENVIRONMENT: 1,\n FILESYSTEM: 2,\n});\n\n/**\n * KubernetesApplicationConfigurationFormValueOverridenKey Model\n */\nconst _KubernetesApplicationConfigurationFormValueOverridenKey = Object.freeze({\n Key: '',\n Path: '',\n Type: KubernetesApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT,\n});\n\nexport class KubernetesApplicationConfigurationFormValueOverridenKey {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationConfigurationFormValueOverridenKey)));\n }\n}\n\n/**\n * KubernetesApplicationConfigurationFormValue Model\n */\nconst _KubernetesApplicationConfigurationFormValue = Object.freeze({\n SelectedConfiguration: undefined,\n Overriden: false,\n OverridenKeys: [], // KubernetesApplicationConfigurationFormValueOverridenKey list\n});\n\nexport class KubernetesApplicationConfigurationFormValue {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationConfigurationFormValue)));\n }\n}\n\n/**\n * KubernetesApplicationEnvironmentVariableFormValue Model\n */\nconst _KubernetesApplicationEnvironmentVariableFormValue = Object.freeze({\n Name: '',\n Value: '',\n IsSecret: false,\n NeedsDeletion: false,\n IsNew: true,\n NameIndex: '', // keep the original name for sorting\n});\n\nexport class KubernetesApplicationEnvironmentVariableFormValue {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationEnvironmentVariableFormValue)));\n }\n}\n\n/**\n * KubernetesApplicationPersistedFolderFormValue Model\n */\nconst _KubernetesApplicationPersistedFolderFormValue = Object.freeze({\n PersistentVolumeClaimName: '', // will be empty for new volumes (create/edit app) and filled for existing ones (edit)\n NeedsDeletion: false,\n ContainerPath: '',\n Size: '',\n SizeUnit: 'GB',\n StorageClass: {},\n ExistingVolume: null,\n UseNewVolume: true,\n});\n\nexport class KubernetesApplicationPersistedFolderFormValue {\n constructor(storageClass) {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationPersistedFolderFormValue)));\n this.StorageClass = storageClass;\n }\n}\n\n/**\n * KubernetesApplicationPublishedPortFormValue Model\n */\nexport function KubernetesApplicationPublishedPortFormValue() {\n return {\n NeedsDeletion: false,\n IsNew: true,\n ContainerPort: '',\n NodePort: '',\n LoadBalancerPort: '',\n LoadBalancerNodePort: undefined, // only filled to save existing loadbalancer nodePort and drop it when moving app exposure from LB to Internal/NodePort\n Protocol: 'TCP',\n IngressName: undefined,\n IngressRoute: undefined,\n IngressHost: undefined,\n IngressHosts: [],\n };\n}\n\nexport function KubernetesApplicationPlacementFormValue() {\n return {\n Label: {},\n Value: '',\n NeedsDeletion: false,\n IsNew: true,\n };\n}\n\n/**\n * KubernetesApplicationAutoScalerFormValue Model\n */\nconst _KubernetesApplicationAutoScalerFormValue = Object.freeze({\n MinReplicas: 0,\n MaxReplicas: 0,\n TargetCPUUtilization: 50,\n ApiVersion: '',\n IsUsed: false,\n});\n\nexport class KubernetesApplicationAutoScalerFormValue {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationAutoScalerFormValue)));\n }\n}\n\nexport function KubernetesFormValidationReferences() {\n return {\n refs: {},\n hasRefs: false,\n };\n}\n","export const KubernetesApplicationDeploymentTypes = Object.freeze({\n REPLICATED: 1,\n GLOBAL: 2,\n});\n\nexport const KubernetesApplicationDataAccessPolicies = Object.freeze({\n SHARED: 1,\n ISOLATED: 2,\n});\n\nexport const KubernetesApplicationTypes = Object.freeze({\n DEPLOYMENT: 1,\n DAEMONSET: 2,\n STATEFULSET: 3,\n POD: 4,\n HELM: 5,\n});\n\nexport const KubernetesApplicationTypeStrings = Object.freeze({\n HELM: 'Helm',\n DEPLOYMENT: 'Deployment',\n DAEMONSET: 'DaemonSet',\n STATEFULSET: 'StatefulSet',\n POD: 'Pod',\n});\n\nexport const KubernetesApplicationPublishingTypes = Object.freeze({\n CLUSTER_IP: 1,\n NODE_PORT: 2,\n LOAD_BALANCER: 3,\n});\n\nexport const KubernetesApplicationPlacementTypes = Object.freeze({\n PREFERRED: 1,\n MANDATORY: 2,\n});\n\nexport const KubernetesApplicationQuotaDefaults = {\n CpuLimit: 0.1,\n MemoryLimit: 64, // MB\n};\n\nexport const KubernetesPortainerApplicationStackNameLabel = 'io.portainer.kubernetes.application.stack';\n\nexport const KubernetesPortainerApplicationStackIdLabel = 'io.portainer.kubernetes.application.stackid';\n\nexport const KubernetesPortainerApplicationKindLabel = 'io.portainer.kubernetes.application.kind';\n\nexport const KubernetesPortainerApplicationNameLabel = 'io.portainer.kubernetes.application.name';\n\nexport const KubernetesPortainerApplicationOwnerLabel = 'io.portainer.kubernetes.application.owner';\n\nexport const KubernetesPortainerApplicationNote = 'io.portainer.kubernetes.application.note';\n","export * from './constants';\n\n/**\n * KubernetesApplication Model (Composite)\n */\nconst _KubernetesApplication = Object.freeze({\n Id: '',\n Name: '',\n StackName: '',\n StackId: '',\n ApplicationKind: '',\n ApplicationOwner: '',\n ApplicationName: '',\n ResourcePool: '',\n Image: '',\n CreationDate: 0,\n Pods: [],\n Containers: [],\n Metadata: {},\n Limits: {},\n ServiceType: '',\n ServiceId: '',\n ServiceName: '',\n HeadlessServiceName: undefined, // only used for StatefulSet\n LoadBalancerIPAddress: undefined, // only filled when bound service is LoadBalancer and state is available\n PublishedPorts: [],\n Volumes: [],\n Env: [],\n PersistedFolders: [], // KubernetesApplicationPersistedFolder list\n ConfigurationVolumes: [], // KubernetesApplicationConfigurationVolume list\n DeploymentType: 'Unknown',\n DataAccessPolicy: 'Unknown',\n ApplicationType: 'Unknown',\n RunningPodsCount: 0,\n TotalPodsCount: 0,\n Yaml: '',\n Note: '',\n Raw: undefined, // only filled when inspecting app details / create / edit view (never filled in multiple-apps views)\n AutoScaler: undefined, // only filled if the application has an HorizontalPodAutoScaler bound to it\n});\n\nexport class KubernetesApplication {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplication)));\n }\n}\n\n/**\n * HelmApplication Model (Composite)\n */\nexport class HelmApplication {\n constructor() {\n this.Id = '';\n this.Name = '';\n this.KubernetesApplications = [];\n this.ApplicationOwner = '';\n this.CreationDate = 0;\n this.ApplicationType = 'Unknown';\n this.Status = '';\n this.StackName = '-';\n this.ResourcePool = '-';\n this.Image = '-';\n this.PublishedPorts = [];\n }\n}\n\n/**\n * KubernetesApplicationPersistedFolder Model\n */\nconst _KubernetesApplicationPersistedFolder = Object.freeze({\n MountPath: '',\n PersistentVolumeClaimName: '',\n HostPath: '',\n});\n\nexport class KubernetesApplicationPersistedFolder {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationPersistedFolder)));\n }\n}\n\n/**\n * KubernetesApplicationConfigurationVolume Model\n */\nconst _KubernetesApplicationConfigurationVolume = Object.freeze({\n fileMountPath: '',\n rootMountPath: '',\n configurationKey: '',\n configurationName: '',\n});\n\nexport class KubernetesApplicationConfigurationVolume {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationConfigurationVolume)));\n }\n}\n\n/**\n * KubernetesApplicationPort Model\n */\nconst _KubernetesApplicationPort = Object.freeze({\n IngressRules: [], // KubernetesIngressRule[]\n NodePort: 0,\n TargetPort: 0,\n Port: 0,\n Protocol: '',\n});\n\nexport class KubernetesApplicationPort {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationPort)));\n }\n}\n\nexport const KubernetesDeploymentTypes = Object.freeze({\n GIT: 'git',\n CONTENT: 'content',\n APPLICATION_FORM: 'application form',\n URL: 'url',\n});\n","/////////////////////////// VOLUME MOUNT ///////////////////////////////\n/**\n * KubernetesApplicationVolumeMount Model\n */\nconst _KubernetesApplicationVolumeMount = Object.freeze({\n name: '',\n mountPath: '',\n readOnly: false,\n});\n\nexport class KubernetesApplicationVolumeMountPayload {\n constructor(readOnly) {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumeMount)));\n if (readOnly) {\n this.readOnly = true;\n } else {\n delete this.readOnly;\n }\n }\n}\n\n///////////////////////////////// PVC /////////////////////////////////\n/**\n * KubernetesApplicationVolumePersistentPayload Model\n */\nconst _KubernetesApplicationVolumePersistentPayload = Object.freeze({\n name: '',\n persistentVolumeClaim: {\n claimName: '',\n },\n});\n\nexport class KubernetesApplicationVolumePersistentPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumePersistentPayload)));\n }\n}\n\n/////////////////////////////// CONFIG AS VOLUME ////////////////////////\n/**\n * KubernetesApplicationVolumeConfigMapPayload Model\n */\nconst _KubernetesApplicationVolumeConfigMapPayload = Object.freeze({\n name: '',\n configMap: {\n name: '',\n items: [], // KubernetesApplicationVolumeEntryPayload\n },\n});\n\nexport class KubernetesApplicationVolumeConfigMapPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumeConfigMapPayload)));\n }\n}\n\n//////////////////// SECRET AS VOLUME /////////////////////////////////////\n/**\n * KubernetesApplicationVolumeSecretPayload Model\n */\nconst _KubernetesApplicationVolumeSecretPayload = Object.freeze({\n name: '',\n secret: {\n secretName: '',\n items: [], // KubernetesApplicationVolumeEntryPayload\n },\n});\n\nexport class KubernetesApplicationVolumeSecretPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumeSecretPayload)));\n }\n}\n\n/**\n * KubernetesApplicationVolumeEntryPayload Model\n */\nconst _KubernetesApplicationVolumeEntryPayload = Object.freeze({\n key: '',\n path: '',\n});\n\nexport class KubernetesApplicationVolumeEntryPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationVolumeEntryPayload)));\n }\n}\n\n//////////////////////////// ENV ENTRY //////////////////////////////\n/**\n * KubernetesApplicationEnvPayload Model\n */\nconst _KubernetesApplicationEnvPayload = Object.freeze({\n name: '',\n value: '',\n});\n\nexport class KubernetesApplicationEnvPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationEnvPayload)));\n }\n}\n\n///////////////////////// CONFIG AS ENV ////////////////////////////////\n/**\n * KubernetesApplicationEnvConfigMapPayload Model\n */\nconst _KubernetesApplicationEnvConfigMapPayload = Object.freeze({\n name: '',\n valueFrom: {\n configMapKeyRef: {\n name: '',\n key: '',\n },\n },\n});\n\nexport class KubernetesApplicationEnvConfigMapPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationEnvConfigMapPayload)));\n }\n}\n\n//////////////////////// SECRET AS ENV //////////////////////////////////\n/**\n * KubernetesApplicationEnvSecretPayload Model\n */\nconst _KubernetesApplicationEnvSecretPayload = Object.freeze({\n name: '',\n valueFrom: {\n secretKeyRef: {\n name: '',\n key: '',\n },\n },\n});\n\nexport class KubernetesApplicationEnvSecretPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationEnvSecretPayload)));\n }\n}\n","/**\n * Generic params\n */\nexport function KubernetesCommonParams() {\n return {\n id: '',\n };\n}\n","/**\n * Generic metadata payload\n */\nconst _KubernetesCommonMetadataPayload = Object.freeze({\n uid: '',\n name: '',\n namespace: '',\n labels: {},\n annotations: {},\n});\nexport class KubernetesCommonMetadataPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesCommonMetadataPayload)));\n }\n}\n","export const KubernetesPortainerConfigMapNamespace = 'portainer';\nexport const KubernetesPortainerConfigMapConfigName = 'portainer-config';\nexport const KubernetesPortainerConfigMapAccessKey = 'NamespaceAccessPolicies';\n\nexport function KubernetesPortainerAccessConfigMap() {\n return {\n Id: 0,\n Name: KubernetesPortainerConfigMapConfigName,\n Namespace: KubernetesPortainerConfigMapNamespace,\n Data: {},\n };\n}\n\n/**\n * ConfigMap Model\n */\nconst _KubernetesConfigMap = Object.freeze({\n Id: 0,\n Name: '',\n Namespace: '',\n Yaml: '',\n ConfigurationOwner: '',\n Data: [],\n});\n\nexport class KubernetesConfigMap {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfigMap)));\n }\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\n/**\n * Payload for CREATE\n */\nconst _KubernetesConfigMapCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n data: {},\n binaryData: {},\n});\nexport class KubernetesConfigMapCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfigMapCreatePayload)));\n }\n}\n\n/**\n * Payload for UPDATE\n */\nconst _KubernetesConfigMapUpdatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n data: {},\n binaryData: {},\n});\nexport class KubernetesConfigMapUpdatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfigMapUpdatePayload)));\n }\n}\n","import { KubernetesConfigurationKinds, KubernetesSecretTypeOptions } from './models';\n\n/**\n * KubernetesConfigurationFormValues Model\n */\nconst _KubernetesConfigurationFormValues = Object.freeze({\n Id: '',\n ResourcePool: '',\n Name: '',\n ConfigurationOwner: '',\n Kind: KubernetesConfigurationKinds.CONFIGMAP,\n Data: [],\n DataYaml: '',\n IsSimple: true,\n ServiceAccountName: '',\n Type: KubernetesSecretTypeOptions.OPAQUE.value,\n});\n\nexport class KubernetesConfigurationFormValues {\n constructor() {\n Object.assign(this, _KubernetesConfigurationFormValues);\n }\n}\n\nconst _KubernetesConfigurationFormValuesEntry = Object.freeze({\n Key: '',\n Value: '',\n IsBinary: false,\n});\n\nexport class KubernetesConfigurationFormValuesEntry {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfigurationFormValuesEntry)));\n }\n}\n","export const KubernetesPortainerConfigurationOwnerLabel = 'io.portainer.kubernetes.configuration.owner';\nexport const KubernetesPortainerConfigurationDataAnnotation = 'io.portainer.kubernetes.configuration.data';\n\n/**\n * Configuration Model (Composite)\n */\nconst _KubernetesConfiguration = Object.freeze({\n Id: 0,\n Name: '',\n Kind: '',\n Namespace: '',\n CreationDate: '',\n ConfigurationOwner: '',\n Used: false,\n Applications: [],\n Data: {},\n SecretType: '',\n});\n\nexport class KubernetesConfiguration {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesConfiguration)));\n }\n}\n\nexport const KubernetesConfigurationKinds = Object.freeze({\n CONFIGMAP: 1,\n SECRET: 2,\n});\n\nexport const KubernetesSecretTypeOptions = Object.freeze({\n OPAQUE: { name: 'Opaque', value: 'Opaque' },\n SERVICEACCOUNTTOKEN: { name: 'Service account token', value: 'kubernetes.io/service-account-token' },\n DOCKERCFG: { name: 'Dockercfg', value: 'kubernetes.io/dockercfg' },\n DOCKERCONFIGJSON: { name: 'Dockerconfigjson', value: 'kubernetes.io/dockerconfigjson' },\n BASICAUTH: { name: 'Basic auth', value: 'kubernetes.io/basic-auth' },\n SSHAUTH: { name: 'SSH auth', value: 'kubernetes.io/ssh-auth' },\n TLS: { name: 'TLS', value: 'kubernetes.io/tls' },\n BOOTSTRAPTOKEN: { name: 'Bootstrap token', value: 'bootstrap.kubernetes.io/token' },\n CUSTOM: { name: 'Custom', value: 'Custom' },\n});\n","/**\n * KubernetesDaemonSet Model\n */\nconst _KubernetesDaemonSet = Object.freeze({\n Namespace: '',\n Name: '',\n StackName: '',\n ImageModel: null,\n Env: [],\n CpuLimit: 0,\n MemoryLimit: 0,\n VoluemMounts: [],\n Volumes: [],\n Secret: undefined,\n ApplicationName: '',\n ApplicationOwner: '',\n Note: '',\n Affinity: undefined, // KubernetesPodAffinity\n});\n\nexport class KubernetesDaemonSet {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesDaemonSet)));\n }\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\n/**\n * KubernetesDaemonSetCreatePayload Model\n */\nconst _KubernetesDaemonSetCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n spec: {\n replicas: 0,\n selector: {\n matchLabels: {\n app: '',\n },\n },\n updateStrategy: {\n type: 'RollingUpdate',\n rollingUpdate: {\n maxUnavailable: 1,\n },\n },\n template: {\n metadata: {\n labels: {\n app: '',\n },\n },\n spec: {\n containers: [\n {\n name: '',\n image: '',\n env: [],\n resources: {\n limits: {},\n requests: {},\n },\n volumeMounts: [],\n },\n ],\n volumes: [],\n },\n },\n },\n});\n\nexport class KubernetesDaemonSetCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesDaemonSetCreatePayload)));\n }\n}\n","export const KubernetesDeployManifestTypes = Object.freeze({\n KUBERNETES: 1,\n});\n\nexport const KubernetesDeployBuildMethods = Object.freeze({\n GIT: 1,\n WEB_EDITOR: 2,\n CUSTOM_TEMPLATE: 3,\n URL: 4,\n});\n\nexport const KubernetesDeployRequestMethods = Object.freeze({\n REPOSITORY: 'repository',\n STRING: 'string',\n URL: 'url',\n});\n\nexport const RepositoryMechanismTypes = Object.freeze({\n WEBHOOK: 'Webhook',\n INTERVAL: 'Interval',\n});\n","/**\n * KubernetesDeployment Model\n */\nconst _KubernetesDeployment = Object.freeze({\n Namespace: '',\n Name: '',\n StackName: '',\n ReplicaCount: 0,\n ImageModel: null,\n Env: [],\n CpuLimit: 0,\n MemoryLimit: 0,\n VolumeMounts: [],\n Volumes: [],\n Secret: undefined,\n ApplicationName: '',\n ApplicationOwner: '',\n Note: '',\n Affinity: undefined, // KubernetesPodAffinity\n});\n\nexport class KubernetesDeployment {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesDeployment)));\n }\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\n/**\n * KubernetesDeploymentCreatePayload Model\n */\nconst _KubernetesDeploymentCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n spec: {\n replicas: 0,\n selector: {\n matchLabels: {\n app: '',\n },\n },\n strategy: {\n type: 'RollingUpdate',\n rollingUpdate: {\n maxSurge: 0,\n maxUnavailable: '100%',\n },\n },\n template: {\n metadata: {\n labels: {\n app: '',\n },\n },\n spec: {\n affinity: {},\n containers: [\n {\n name: '',\n image: '',\n env: [],\n resources: {\n limits: {},\n requests: {},\n },\n volumeMounts: [],\n },\n ],\n volumes: [],\n },\n },\n },\n});\n\nexport class KubernetesDeploymentCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesDeploymentCreatePayload)));\n }\n}\n","/**\n * KubernetesEvent Model\n */\nconst _KubernetesEvent = Object.freeze({\n Id: '',\n Date: 0,\n Type: '',\n Message: '',\n Involved: {},\n});\n\nexport class KubernetesEvent {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesEvent)));\n }\n}\n","export const KubernetesSystem_DefaultDeploymentUniqueLabelKey = 'pod-template-hash';\nexport const KubernetesSystem_RevisionAnnotation = 'deployment.kubernetes.io/revision';\nexport const KubernetesSystem_RevisionHistoryAnnotation = 'deployment.kubernetes.io/revision-history';\nexport const KubernetesSystem_DesiredReplicasAnnotation = 'deployment.kubernetes.io/desired-replicas';\nexport const KubernetesSystem_MaxReplicasAnnotation = 'deployment.kubernetes.io/max-replicas';\n\n// annotationsToSkip lists the annotations that should be preserved from the deployment and not\n// copied from the replicaset when rolling a deployment back\n// var annotationsToSkip = map[string]bool{\n// corev1.LastAppliedConfigAnnotation: true,\n// deploymentutil.RevisionAnnotation: true,\n// deploymentutil.RevisionHistoryAnnotation: true,\n// deploymentutil.DesiredReplicasAnnotation: true,\n// deploymentutil.MaxReplicasAnnotation: true,\n// appsv1.DeprecatedRollbackTo: true,\n// }\n\n// LastAppliedConfigAnnotation is the annotation used to store the previous\n// configuration of a resource for use in a three way diff by UpdateApplyAnnotation.\nconst LastAppliedConfigAnnotation = 'kubectl.kubernetes.io/last-applied-configuration';\n\nconst DeprecatedRollbackTo = 'deprecated.deployment.rollback.to';\n\nexport const KubernetesSystem_AnnotationsToSkip = {\n [LastAppliedConfigAnnotation]: true,\n [KubernetesSystem_RevisionAnnotation]: true,\n [KubernetesSystem_RevisionHistoryAnnotation]: true,\n [KubernetesSystem_DesiredReplicasAnnotation]: true,\n [KubernetesSystem_MaxReplicasAnnotation]: true,\n [DeprecatedRollbackTo]: true,\n};\n","export class KubernetesNamespace {\n constructor() {\n this.Id = '';\n this.Name = '';\n this.CreationDate = '';\n this.Status = '';\n this.Yaml = '';\n this.ResourcePoolName = '';\n this.ResourcePoolOwner = '';\n this.IsSystem = false;\n }\n}\n\nexport const KUBERNETES_DEFAULT_SYSTEM_NAMESPACES = ['kube-system', 'kube-public', 'kube-node-lease', 'portainer'];\nexport const KUBERNETES_DEFAULT_NAMESPACE = 'default';\n","import { KubernetesCommonMetadataPayload } from '../common/payloads';\n\n/**\n * KubernetesNamespaceCreatePayload Model\n */\nconst _KubernetesNamespaceCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n});\n\nexport class KubernetesNamespaceCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNamespaceCreatePayload)));\n }\n}\n","import _ from 'lodash-es';\n\n/**\n * NodesLimits Model\n */\nexport class KubernetesNodesLimits {\n constructor(nodesLimits) {\n this.MaxCPU = 0;\n this.MaxMemory = 0;\n this.nodesLimits = this.convertCPU(nodesLimits);\n\n this.calculateMaxCPUMemory();\n }\n\n convertCPU(nodesLimits) {\n _.forEach(nodesLimits, (value) => {\n if (value.CPU) {\n value.CPU /= 1000.0;\n }\n });\n return nodesLimits;\n }\n\n calculateMaxCPUMemory() {\n const nodesLimitsArray = Object.values(this.nodesLimits);\n this.MaxCPU = _.maxBy(nodesLimitsArray, 'CPU').CPU;\n this.MaxMemory = _.maxBy(nodesLimitsArray, 'Memory').Memory;\n }\n\n // check if there is enough cpu and memory to allocate containers in replica mode\n overflowForReplica(cpu, memory, instances) {\n _.forEach(this.nodesLimits, (value) => {\n instances -= Math.min(Math.floor(value.CPU / cpu), Math.floor(value.Memory / memory));\n });\n\n return instances > 0;\n }\n\n // check if there is enough cpu and memory to allocate containers in global mode\n overflowForGlobal(cpu, memory) {\n let overflow = false;\n\n _.forEach(this.nodesLimits, (value) => {\n if (cpu > value.CPU || memory > value.Memory) {\n overflow = true;\n }\n });\n\n return overflow;\n }\n\n excludesPods(pods, cpuLimit, memoryLimit) {\n const nodesLimits = this.nodesLimits;\n\n _.forEach(pods, (value) => {\n const node = value.Node;\n if (node && nodesLimits[node]) {\n nodesLimits[node].CPU += cpuLimit;\n nodesLimits[node].Memory += memoryLimit;\n }\n });\n\n this.calculateMaxCPUMemory();\n }\n}\n","/**\n * PortMappingPort Model\n */\nconst _KubernetesPortMappingPort = Object.freeze({\n Port: 0,\n TargetPort: 0,\n Protocol: '',\n IngressRules: [], // KubernetesIngressRule[]\n});\n\nexport class KubernetesPortMappingPort {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPortMappingPort)));\n }\n}\n\n/**\n * PortMapping Model\n */\nconst _KubernetesPortMapping = Object.freeze({\n Expanded: false,\n Highlighted: false,\n ResourcePool: '',\n ServiceType: '',\n ApplicationOwner: '',\n LoadBalancerIPAddress: '',\n Ports: [],\n});\n\nexport class KubernetesPortMapping {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPortMapping)));\n }\n}\n","import { KubernetesNginxRewriteTargetAnnotations, KubernetesNginxUseregexAnnotations, KubernetesTraefikRewriteTargetAnnotations } from 'Kubernetes/ingress/constants';\n\nexport function KubernetesResourcePoolFormValues(defaults) {\n this.Name = '';\n this.MemoryLimit = defaults.MemoryLimit;\n this.CpuLimit = defaults.CpuLimit;\n this.HasQuota = false;\n this.IngressClasses = []; // KubernetesResourcePoolIngressClassFormValue\n this.Registries = []; // RegistryViewModel\n this.EndpointId = 0;\n this.IsSystem = false;\n}\n\n/**\n * @param {KubernetesIngressClass} ingressClass\n */\nexport function KubernetesResourcePoolIngressClassFormValue(ingressClass) {\n return {\n Namespace: undefined, // will be filled inside ResourcePoolService.create\n IngressClass: ingressClass,\n RewriteTarget: false,\n Annotations: [], // KubernetesResourcePoolIngressClassAnnotationFormValue\n Hosts: [],\n Selected: false,\n WasSelected: false,\n AdvancedConfig: false,\n Paths: [], // will be filled to save IngressClass.Paths inside ingressClassesToFormValues() on RP EDIT\n };\n}\n\nexport function KubernetesResourcePoolIngressClassAnnotationFormValue() {\n return {\n Key: '',\n Value: '',\n };\n}\n\nexport function KubernetesResourcePoolIngressClassHostFormValue() {\n return {\n Host: '',\n PreviousHost: '',\n NeedsDeletion: false,\n IsNew: true,\n };\n}\n\nexport function KubernetesResourcePoolNginxRewriteAnnotationFormValue() {\n return KubernetesNginxRewriteTargetAnnotations;\n}\n\nexport function KubernetesResourcePoolNginxUseregexAnnotationFormValue() {\n return KubernetesNginxUseregexAnnotations;\n}\n\nexport function KubernetesResourcePoolTraefikRewriteAnnotationFormValue() {\n return KubernetesTraefikRewriteTargetAnnotations;\n}\n","export const KubernetesPortainerResourcePoolNameLabel = 'io.portainer.kubernetes.resourcepool.name';\n\nexport const KubernetesPortainerResourcePoolOwnerLabel = 'io.portainer.kubernetes.resourcepool.owner';\n\nexport const KubernetesPortainerNamespaceSystemLabel = 'io.portainer.kubernetes.namespace.system';\n\n/**\n * KubernetesResourcePool Model\n */\nexport function KubernetesResourcePool() {\n return {\n Namespace: {}, // KubernetesNamespace\n Quota: undefined, // KubernetesResourceQuota,\n Ingresses: [], // KubernetesIngress[]\n Yaml: '',\n };\n}\n","import KubernetesResourceQuotaHelper from 'Kubernetes/helpers/resourceQuotaHelper';\n\nexport const KubernetesPortainerResourceQuotaPrefix = 'portainer-rq-';\nexport const KubernetesPortainerResourceQuotaCPULimit = 'limits.cpu';\nexport const KubernetesPortainerResourceQuotaMemoryLimit = 'limits.memory';\nexport const KubernetesPortainerResourceQuotaCPURequest = 'requests.cpu';\nexport const KubernetesPortainerResourceQuotaMemoryRequest = 'requests.memory';\n\nexport const KubernetesResourceQuotaDefaults = {\n CpuLimit: 0,\n MemoryLimit: 0,\n};\n\nexport function KubernetesResourceQuota(namespace) {\n return {\n Id: '',\n Namespace: namespace ? namespace : '',\n Name: namespace ? KubernetesResourceQuotaHelper.generateResourceQuotaName(namespace) : '',\n CpuLimit: KubernetesResourceQuotaDefaults.CpuLimit,\n MemoryLimit: KubernetesResourceQuotaDefaults.MemoryLimit,\n CpuLimitUsed: KubernetesResourceQuotaDefaults.CpuLimit,\n MemoryLimitUsed: KubernetesResourceQuotaDefaults.MemoryLimit,\n Yaml: '',\n ResourcePoolName: '',\n ResourcePoolOwner: '',\n };\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\nimport {\n KubernetesPortainerResourceQuotaCPURequest,\n KubernetesPortainerResourceQuotaMemoryRequest,\n KubernetesPortainerResourceQuotaCPULimit,\n KubernetesPortainerResourceQuotaMemoryLimit,\n} from './models';\n\nexport function KubernetesResourceQuotaCreatePayload() {\n return {\n metadata: new KubernetesCommonMetadataPayload(),\n spec: {\n hard: {\n [KubernetesPortainerResourceQuotaCPURequest]: 0,\n [KubernetesPortainerResourceQuotaMemoryRequest]: 0,\n [KubernetesPortainerResourceQuotaCPULimit]: 0,\n [KubernetesPortainerResourceQuotaMemoryLimit]: 0,\n },\n },\n };\n}\n","/**\n * KubernetesResourceReservation Model\n */\nconst _KubernetesResourceReservation = Object.freeze({\n Memory: 0,\n CPU: 0,\n});\n\nexport class KubernetesResourceReservation {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesResourceReservation)));\n }\n}\n","export const KubernetesResourceTypes = Object.freeze({\n NAMESPACE: 'Namespace',\n RESOURCEQUOTA: 'ResourceQuota',\n CONFIGMAP: 'ConfigMap',\n SECRET: 'Secret',\n DEPLOYMENT: 'Deployment',\n STATEFULSET: 'StatefulSet',\n DAEMONSET: 'Daemonset',\n PERSISTENT_VOLUME_CLAIM: 'PersistentVolumeClaim',\n SERVICE: 'Service',\n INGRESS: 'Ingress',\n HORIZONTAL_POD_AUTOSCALER: 'HorizontalPodAutoscaler',\n});\n\nexport const KubernetesResourceActions = Object.freeze({\n CREATE: 'Create',\n UPDATE: 'Update',\n DELETE: 'Delete',\n});\n","/**\n * KubernetesApplicationSecret Model\n */\nconst _KubernetesApplicationSecret = Object.freeze({\n Id: 0,\n Name: '',\n Namespace: '',\n Type: '',\n CreationDate: '',\n ConfigurationOwner: '',\n Yaml: '',\n Data: [],\n SecretType: '',\n Annotations: [],\n});\n\nexport class KubernetesApplicationSecret {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesApplicationSecret)));\n }\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\n/**\n * KubernetesSecretCreatePayload Model\n */\nconst _KubernetesSecretCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n type: '',\n data: {},\n stringData: {},\n});\n\nexport class KubernetesSecretCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesSecretCreatePayload)));\n }\n}\n\n/**\n * KubernetesSecretUpdatePayload Model\n */\nconst _KubernetesSecretUpdatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n type: '',\n data: {},\n stringData: {},\n});\n\nexport class KubernetesSecretUpdatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesSecretUpdatePayload)));\n }\n}\n","export const KubernetesServiceHeadlessPrefix = 'headless-';\nexport const KubernetesServiceHeadlessClusterIP = 'None';\nexport const KubernetesServiceTypes = Object.freeze({\n LOAD_BALANCER: 'LoadBalancer',\n NODE_PORT: 'NodePort',\n CLUSTER_IP: 'ClusterIP',\n INGRESS: 'Ingress',\n});\n\n/**\n * KubernetesService Model\n */\nconst _KubernetesService = Object.freeze({\n Headless: false,\n Namespace: '',\n Name: '',\n StackName: '',\n Ports: [],\n Type: '',\n ClusterIP: '',\n ApplicationName: '',\n ApplicationOwner: '',\n Note: '',\n Ingress: false,\n Selector: {},\n nodePortError: false,\n servicePortError: false,\n});\n\nexport class KubernetesService {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesService)));\n }\n}\n\nconst _KubernetesIngressService = Object.freeze({\n Headless: false,\n Namespace: '',\n Name: '',\n StackName: '',\n Ports: [],\n Type: '',\n ClusterIP: '',\n ApplicationName: '',\n ApplicationOwner: '',\n Note: '',\n Ingress: true,\n IngressRoute: [],\n});\n\nexport class KubernetesIngressService {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesIngressService)));\n }\n}\n\n/**\n * KubernetesServicePort Model\n */\nconst _KubernetesServicePort = Object.freeze({\n name: '',\n port: 0,\n targetPort: 0,\n protocol: '',\n nodePort: 0,\n ingress: '',\n});\n\nexport class KubernetesServicePort {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesServicePort)));\n }\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\n/**\n * KubernetesServiceCreatePayload Model\n */\nconst _KubernetesServiceCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n spec: {\n ports: [],\n selector: {\n app: '',\n },\n type: '',\n clusterIP: '',\n },\n});\n\nexport class KubernetesServiceCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesServiceCreatePayload)));\n }\n}\n","/**\n * Stack Model\n */\nconst _KubernetesStack = Object.freeze({\n Name: '',\n ResourcePool: '',\n Applications: [],\n});\n\nexport class KubernetesStack {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStack)));\n }\n}\n","/**\n * KubernetesStatefulSet Model\n */\nconst _KubernetesStatefulSet = Object.freeze({\n Namespace: '',\n Name: '',\n StackName: '',\n ReplicaCount: 0,\n ImageModel: null,\n Env: [],\n CpuLimit: '',\n MemoryLimit: '',\n VolumeMounts: [],\n Volumes: [],\n Secret: undefined,\n VolumeClaims: [],\n ServiceName: '',\n ApplicationName: '',\n ApplicationOwner: '',\n Note: '',\n Affinity: undefined, // KubernetesPodAffinity\n});\n\nexport class KubernetesStatefulSet {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStatefulSet)));\n }\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\n/**\n * KubernetesStatefulSetCreatePayload Model\n */\nconst _KubernetesStatefulSetCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n spec: {\n replicas: 0,\n serviceName: '',\n selector: {\n matchLabels: {\n app: '',\n },\n },\n volumeClaimTemplates: [],\n updateStrategy: {\n type: 'RollingUpdate',\n rollingUpdate: {\n partition: 0,\n },\n },\n template: {\n metadata: {\n labels: {\n app: '',\n },\n },\n spec: {\n containers: [\n {\n name: '',\n image: '',\n env: [],\n resources: {\n limits: {},\n requests: {},\n },\n volumeMounts: [],\n },\n ],\n volumes: [],\n },\n },\n },\n});\n\nexport class KubernetesStatefulSetCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStatefulSetCreatePayload)));\n }\n}\n","/**\n * KubernetesStorageClassAccessPolicies Model\n */\nconst _KubernetesStorageClassAccessPolicies = Object.freeze([\n {\n Name: 'RWO',\n Description: 'Allow read-write from a single pod only (RWO)',\n selected: true,\n },\n {\n Name: 'RWX',\n Description: 'Allow read-write access from one or more pods concurrently (RWX)',\n selected: false,\n },\n]);\n\nexport function KubernetesStorageClassAccessPolicies() {\n return JSON.parse(JSON.stringify(_KubernetesStorageClassAccessPolicies));\n}\n\n/**\n * KubernetesStorageClass Model\n */\nconst _KubernetesStorageClass = Object.freeze({\n Name: '',\n AccessModes: [],\n Provisioner: '',\n AllowVolumeExpansion: false,\n});\n\nexport class KubernetesStorageClass {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStorageClass)));\n }\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\n/**\n * KubernetesStorageClassCreatePayload Model\n */\nconst _KubernetesStorageClassCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n provisioner: '',\n allowVolumeExpansion: false,\n});\n\nexport class KubernetesStorageClassCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesStorageClassCreatePayload)));\n }\n}\n","import uuidv4 from 'uuid/v4';\n/**\n * KubernetesPersistentVolumeClaim Model\n */\nconst _KubernetesPersistentVolumeClaim = Object.freeze({\n Id: '',\n Name: '',\n PreviousName: '',\n Namespace: '',\n Storage: 0,\n StorageClass: {}, // KubernetesStorageClass\n CreationDate: '',\n ApplicationOwner: '',\n ApplicationName: '',\n MountPath: '', // used for Application creation from ApplicationFormValues | not used from API conversion\n Yaml: '',\n});\n\nexport class KubernetesPersistentVolumeClaim {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPersistentVolumeClaim)));\n this.Name = uuidv4();\n }\n}\n\n/**\n * KubernetesVolume Model (Composite)\n */\nconst _KubernetesVolume = Object.freeze({\n ResourcePool: {}, // KubernetesResourcePool\n PersistentVolumeClaim: {}, // KubernetesPersistentVolumeClaim\n Applications: [], // KubernetesApplication\n});\n\nexport class KubernetesVolume {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesVolume)));\n }\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\n/**\n * KubernetesPersistentVolumClaimCreatePayload Model\n */\nconst _KubernetesPersistentVolumClaimCreatePayload = Object.freeze({\n metadata: new KubernetesCommonMetadataPayload(),\n spec: {\n accessModes: ['ReadWriteOnce'],\n resources: {\n requests: {\n storage: '',\n },\n },\n storageClassName: '',\n },\n});\n\nexport class KubernetesPersistentVolumClaimCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPersistentVolumClaimCreatePayload)));\n }\n}\n","import _ from 'lodash-es';\n\nimport * as JsonPatch from 'fast-json-patch';\nimport { KubernetesNode, KubernetesNodeDetails, KubernetesNodeTaint, KubernetesNodeAvailabilities, KubernetesPortainerNodeDrainLabel } from 'Kubernetes/node/models';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport { KubernetesNodeFormValues, KubernetesNodeTaintFormValues, KubernetesNodeLabelFormValues } from 'Kubernetes/node/formValues';\nimport { KubernetesNodeCreatePayload, KubernetesNodeTaintPayload } from 'Kubernetes/node/payload';\n\nclass KubernetesNodeConverter {\n static apiToNode(data, res) {\n if (!res) {\n res = new KubernetesNode();\n }\n res.Id = data.metadata.uid;\n const hostName = _.find(data.status.addresses, { type: 'Hostname' });\n res.Name = data.metadata.name ? data.metadata.name : hostName.address;\n res.Labels = data.metadata.labels;\n // most kube clusters set control-plane label, older clusters set master, microk8s doesn't have either but instead sets microk8s-controlplane\n let masters = ['node-role.kubernetes.io/control-plane', 'node-role.kubernetes.io/master', 'node.kubernetes.io/microk8s-controlplane'];\n res.Role = _.some(masters, (master) => _.has(data.metadata.labels, master)) ? 'Master' : 'Worker';\n\n const ready = _.find(data.status.conditions, { type: KubernetesNodeConditionTypes.READY });\n const memoryPressure = _.find(data.status.conditions, { type: KubernetesNodeConditionTypes.MEMORY_PRESSURE });\n const PIDPressure = _.find(data.status.conditions, { type: KubernetesNodeConditionTypes.PID_PRESSURE });\n const diskPressure = _.find(data.status.conditions, { type: KubernetesNodeConditionTypes.DISK_PRESSURE });\n const networkUnavailable = _.find(data.status.conditions, { type: KubernetesNodeConditionTypes.NETWORK_UNAVAILABLE });\n\n res.Conditions = {\n MemoryPressure: memoryPressure && memoryPressure.status === 'True',\n PIDPressure: PIDPressure && PIDPressure.status === 'True',\n DiskPressure: diskPressure && diskPressure.status === 'True',\n NetworkUnavailable: networkUnavailable && networkUnavailable.status === 'True',\n };\n\n res.Availability = KubernetesNodeAvailabilities.ACTIVE;\n if (data.spec.unschedulable === true) {\n res.Availability = _.has(data.metadata.labels, KubernetesPortainerNodeDrainLabel) ? KubernetesNodeAvailabilities.DRAIN : KubernetesNodeAvailabilities.PAUSE;\n }\n\n if (ready.status === 'False') {\n res.Status = 'Unhealthy';\n } else if (ready.status === 'Unknown' || res.Conditions.MemoryPressure || res.Conditions.PIDPressure || res.Conditions.DiskPressure || res.Conditions.NetworkUnavailable) {\n res.Status = 'Warning';\n } else {\n res.Status = 'Ready';\n }\n\n res.CPU = KubernetesResourceReservationHelper.parseCPU(data.status.allocatable.cpu);\n res.Memory = data.status.allocatable.memory;\n res.Version = data.status.nodeInfo.kubeletVersion;\n const internalIP = _.find(data.status.addresses, { type: 'InternalIP' });\n res.IPAddress = internalIP ? internalIP.address : '-';\n res.Taints = _.map(data.spec.taints, (taint) => {\n const res = new KubernetesNodeTaint();\n res.Key = taint.key;\n res.Value = taint.value;\n res.Effect = taint.effect;\n return res;\n });\n return res;\n }\n\n static apiToNodeDetails(data, yaml) {\n let res = new KubernetesNodeDetails();\n res = KubernetesNodeConverter.apiToNode(data, res);\n res.CreationDate = data.metadata.creationTimestamp;\n res.OS.Architecture = data.status.nodeInfo.architecture;\n res.OS.Platform = data.status.nodeInfo.operatingSystem;\n res.OS.Image = data.status.nodeInfo.osImage;\n res.Yaml = yaml ? yaml.data : '';\n return res;\n }\n\n static nodeToFormValues(node) {\n const res = new KubernetesNodeFormValues();\n\n res.Availability = node.Availability;\n\n res.Taints = _.map(node.Taints, (taint) => {\n const res = new KubernetesNodeTaintFormValues();\n res.Key = taint.Key;\n res.Value = taint.Value;\n res.Effect = taint.Effect;\n res.NeedsDeletion = false;\n res.IsNew = false;\n return res;\n });\n\n res.Labels = _.map(node.Labels, (value, key) => {\n const res = new KubernetesNodeLabelFormValues();\n res.Key = key;\n res.Value = value;\n res.NeedsDeletion = false;\n res.IsNew = false;\n return res;\n });\n\n return res;\n }\n\n static formValuesToNode(node, formValues) {\n const res = angular.copy(node);\n\n res.Availability = formValues.Availability;\n\n const filteredTaints = _.filter(formValues.Taints, (taint) => !taint.NeedsDeletion);\n res.Taints = _.map(filteredTaints, (item) => {\n const taint = new KubernetesNodeTaint();\n taint.Key = item.Key;\n taint.Value = item.Value;\n taint.Effect = item.Effect;\n return taint;\n });\n\n const filteredLabels = _.filter(formValues.Labels, (label) => !label.NeedsDeletion);\n res.Labels = _.reduce(\n filteredLabels,\n (acc, item) => {\n acc[item.Key] = item.Value ? item.Value : '';\n return acc;\n },\n {}\n );\n\n return res;\n }\n\n static createPayload(node) {\n const payload = new KubernetesNodeCreatePayload();\n payload.metadata.name = node.Name;\n\n const taints = _.map(node.Taints, (taint) => {\n const res = new KubernetesNodeTaintPayload();\n res.key = taint.Key;\n res.value = taint.Value;\n res.effect = taint.Effect;\n return res;\n });\n\n payload.spec.taints = taints.length ? taints : undefined;\n\n payload.metadata.labels = node.Labels;\n\n if (node.Availability !== KubernetesNodeAvailabilities.ACTIVE) {\n payload.spec.unschedulable = true;\n if (node.Availability === KubernetesNodeAvailabilities.DRAIN) {\n payload.metadata.labels[KubernetesPortainerNodeDrainLabel] = '';\n } else {\n delete payload.metadata.labels[KubernetesPortainerNodeDrainLabel];\n }\n }\n\n return payload;\n }\n\n static patchPayload(oldNode, newNode) {\n const oldPayload = KubernetesNodeConverter.createPayload(oldNode);\n const newPayload = KubernetesNodeConverter.createPayload(newNode);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n\nexport const KubernetesNodeConditionTypes = Object.freeze({\n READY: 'Ready',\n MEMORY_PRESSURE: 'MemoryPressure',\n PID_PRESSURE: 'PIDPressure',\n DISK_PRESSURE: 'DiskPressure',\n NETWORK_UNAVAILABLE: 'NetworkUnavailable',\n});\n\nexport default KubernetesNodeConverter;\n","import _ from 'lodash-es';\n\nangular\n .module('portainer.kubernetes')\n .filter('kubernetesNodeStatusColor', function () {\n 'use strict';\n return function (text) {\n var status = _.toLower(text);\n switch (status) {\n case 'ready':\n return 'success';\n case 'warning':\n return 'warning';\n default:\n return 'danger';\n }\n };\n })\n .filter('kubernetesNodeConditionsMessage', function () {\n 'use strict';\n return function (conditions) {\n if (conditions.MemoryPressure) {\n return 'Node memory is running low';\n }\n if (conditions.PIDPressure) {\n return 'Too many processes running on the node';\n }\n if (conditions.DiskPressure) {\n return 'Node disk capacity is running low';\n }\n if (conditions.NetworkUnavailable) {\n return 'Incorrect node network configuration';\n }\n };\n });\n","const _KubernetesNodeFormValues = Object.freeze({\n Taints: [],\n Labels: [],\n Availability: '',\n});\n\nexport class KubernetesNodeFormValues {\n constructor() {\n Object.assign(JSON.parse(JSON.stringify(_KubernetesNodeFormValues)));\n }\n}\n\nconst _KubernetesNodeTaintFormValues = Object.freeze({\n Key: '',\n Values: '',\n Effect: '',\n NeedsDeletion: false,\n IsNew: false,\n IsChanged: false,\n});\n\nexport class KubernetesNodeTaintFormValues {\n constructor() {\n Object.assign(JSON.parse(JSON.stringify(_KubernetesNodeTaintFormValues)));\n }\n}\n\nconst _KubernetesNodeLabelFormValues = Object.freeze({\n Key: '',\n Values: '',\n NeedsDeletion: false,\n IsNew: false,\n IsUsed: false,\n IsChanged: false,\n});\n\nexport class KubernetesNodeLabelFormValues {\n constructor() {\n Object.assign(JSON.parse(JSON.stringify(_KubernetesNodeLabelFormValues)));\n }\n}\n","import _ from 'lodash-es';\n\nexport class KubernetesNodeHelper {\n static isSystemLabel(label) {\n return !label.IsNew && (_.startsWith(label.Key, 'beta.kubernetes.io') || _.startsWith(label.Key, 'kubernetes.io') || label.Key === 'node-role.kubernetes.io/master');\n }\n\n static reorderLabels(labels) {\n return _.sortBy(labels, (label) => {\n return !KubernetesNodeHelper.isSystemLabel(label);\n });\n }\n\n static computeUsedLabels(applications, labels) {\n const pods = _.flatten(_.map(applications, 'Pods'));\n const nodeSelectors = _.uniq(_.flatten(_.map(pods, 'NodeSelector')));\n\n return _.map(labels, (label) => {\n label.IsUsed = _.find(nodeSelectors, (ns) => ns && ns[label.Key] === label.Value) ? true : false;\n return label;\n });\n }\n\n static generateNodeLabelsFromNodes(nodes) {\n const pairs = _.flatMap(nodes, (node) => {\n return _.map(_.toPairs(node.Labels), ([k, v]) => {\n return { key: k, value: v };\n });\n });\n return _.map(_.groupBy(pairs, 'key'), (values, key) => {\n return { Key: key, Values: _.uniq(_.map(values, 'value')) };\n });\n }\n}\n","export const KubernetesPortainerNodeDrainLabel = 'io.portainer/node-status-drain';\n\n/**\n * KubernetesNode Model\n */\nconst _KubernetesNode = Object.freeze({\n Id: '',\n Name: '',\n Labels: {},\n Role: '',\n Status: '',\n CPU: 0,\n Memory: '',\n Version: '',\n IPAddress: '',\n Api: false,\n Taints: [],\n Port: 0,\n Availability: '',\n});\n\nexport class KubernetesNode {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNode)));\n }\n}\n\n/**\n * KubernetesNodeDetails Model\n */\nconst _KubernetesNodeDetails = Object.freeze({\n CreationDate: '',\n OS: {\n Architecture: '',\n Platform: '',\n Image: '',\n },\n Conditions: [],\n Yaml: '',\n});\n\nexport class KubernetesNodeDetails {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNode)));\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNodeDetails)));\n }\n}\n\n/**\n * KubernetesNodeTaint Model\n */\nconst _KubernetesNodeTaint = Object.freeze({\n Key: '',\n Value: '',\n Effect: '',\n});\n\nexport class KubernetesNodeTaint {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNodeTaint)));\n }\n}\n\nexport const KubernetesNodeAvailabilities = Object.freeze({\n ACTIVE: 'Active',\n PAUSE: 'Pause',\n DRAIN: 'Drain',\n});\n\nexport const KubernetesNodeTaintEffects = Object.freeze({\n NOSCHEDULE: 'NoSchedule',\n PREFERNOSCHEDULE: 'PreferNoSchedule',\n NOEXECUTE: 'NoExecute',\n});\n","/**\n * KubernetesNode Create Payload Model\n * Note: The current payload is here just to create patch payload.\n */\nconst _KubernetesNodeCreatePayload = Object.freeze({\n metadata: {\n name: '',\n labels: {},\n },\n spec: {\n taints: undefined,\n },\n});\n\nexport class KubernetesNodeCreatePayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNodeCreatePayload)));\n }\n}\n\nconst _KubernetesNodeTaintPayload = Object.freeze({\n key: '',\n value: '',\n effect: '',\n});\n\nexport class KubernetesNodeTaintPayload {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesNodeTaintPayload)));\n }\n}\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesNodes', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesNodesFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function () {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1/nodes/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import angular from 'angular';\nimport _ from 'lodash-es';\n\nimport PortainerError from 'Portainer/error';\nimport KubernetesNodeConverter from 'Kubernetes/node/converter';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\n\nclass KubernetesNodeService {\n /* @ngInject */\n constructor($async, KubernetesNodes) {\n this.$async = $async;\n this.KubernetesNodes = KubernetesNodes;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [details, yaml] = await Promise.all([this.KubernetesNodes().get(params).$promise, this.KubernetesNodes().getYaml(params).$promise]);\n return KubernetesNodeConverter.apiToNodeDetails(details, yaml);\n } catch (err) {\n // changing the structure of error message to fix [object, Object] issue\n const errData = err.data;\n throw new PortainerError('Unable to retrieve node details', errData);\n }\n }\n\n async getAllAsync() {\n try {\n const data = await this.KubernetesNodes().get().$promise;\n return _.map(data.items, (item) => KubernetesNodeConverter.apiToNode(item));\n } catch (err) {\n throw { msg: 'Unable to retrieve nodes', err: err };\n }\n }\n\n get(name) {\n if (name) {\n return this.$async(this.getAsync, name);\n }\n return this.$async(this.getAllAsync);\n }\n\n /**\n * PATCH\n */\n\n async patchAsync(node, nodeFormValues) {\n try {\n const params = new KubernetesCommonParams();\n params.id = node.Name;\n const newNode = KubernetesNodeConverter.formValuesToNode(node, nodeFormValues);\n const payload = KubernetesNodeConverter.patchPayload(node, newNode);\n const data = await this.KubernetesNodes().patch(params, payload).$promise;\n const patchedNode = KubernetesNodeConverter.apiToNodeDetails(data);\n return patchedNode;\n } catch (err) {\n throw { msg: 'Unable to patch node', err: err };\n }\n }\n\n patch(node, nodeFormValues) {\n return this.$async(this.patchAsync, node, nodeFormValues);\n }\n}\n\nexport default KubernetesNodeService;\nangular.module('portainer.kubernetes').service('KubernetesNodeService', KubernetesNodeService);\n","import * as JsonPatch from 'fast-json-patch';\nimport _ from 'lodash-es';\n\nimport KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';\nimport {\n KubernetesPortainerApplicationStackNameLabel,\n KubernetesPortainerApplicationNameLabel,\n KubernetesPortainerApplicationOwnerLabel,\n KubernetesPortainerApplicationNote,\n} from 'Kubernetes/models/application/models';\n\nimport { KubernetesPod, KubernetesPodToleration, KubernetesPodAffinity, KubernetesPodContainer, KubernetesPodContainerTypes, KubernetesPodEviction } from 'Kubernetes/pod/models';\nimport { createPayloadFactory } from './payloads/create';\n\nfunction computeStatus(statuses) {\n const containerStatuses = _.map(statuses, 'state');\n const running = _.filter(containerStatuses, (s) => s.running).length;\n const waiting = _.filter(containerStatuses, (s) => s.waiting).length;\n if (waiting) {\n return 'Waiting';\n } else if (!running) {\n return 'Terminated';\n }\n return 'Running';\n}\n\nfunction computeContainerStatus(statuses, name) {\n const status = _.find(statuses, { name: name });\n if (!status) {\n return 'Terminated';\n }\n const state = status.state;\n if (state.waiting) {\n return 'Waiting';\n }\n if (!state.running) {\n return 'Terminated';\n }\n return 'Running';\n}\n\nfunction computeAffinity(affinity) {\n const res = new KubernetesPodAffinity();\n if (affinity) {\n res.nodeAffinity = affinity.nodeAffinity || {};\n }\n return res;\n}\n\nfunction computeTolerations(tolerations) {\n return _.map(tolerations, (item) => {\n const res = new KubernetesPodToleration();\n res.Key = item.key;\n res.Operator = item.operator;\n res.Value = item.value;\n res.TolerationSeconds = item.tolerationSeconds;\n res.Effect = item.effect;\n return res;\n });\n}\n\nfunction computeContainers(data) {\n const containers = data.spec.containers;\n const initContainers = data.spec.initContainers;\n\n return _.concat(\n _.map(containers, (item) => {\n const res = new KubernetesPodContainer();\n res.Type = KubernetesPodContainerTypes.APP;\n res.PodName = data.metadata.name;\n res.PodIP = data.status.podIP;\n res.Name = item.name;\n res.Image = item.image;\n res.ImagePullPolicy = item.imagePullPolicy;\n res.Node = data.spec.nodeName;\n res.CreationDate = data.status.startTime;\n res.Status = computeContainerStatus(data.status.containerStatuses, item.name);\n res.Limits = item.resources.limits;\n res.Requests = item.resources.requests;\n res.VolumeMounts = item.volumeMounts;\n res.Env = item.env;\n return res;\n }),\n _.map(initContainers, (item) => {\n const res = new KubernetesPodContainer();\n res.Type = KubernetesPodContainerTypes.INIT;\n res.PodName = data.metadata.name;\n res.Name = item.name;\n res.Image = item.image;\n res.Node = data.spec.nodeName;\n res.CreationDate = data.status.startTime;\n res.Status = computeContainerStatus(data.status.containerStatuses, item.name);\n res.Limits = item.resources.limits;\n res.Requests = item.resources.requests;\n res.VolumeMounts = item.volumeMounts;\n res.Env = item.env;\n return res;\n })\n );\n}\n\nexport default class KubernetesPodConverter {\n static apiToModel(data) {\n const res = new KubernetesPod();\n res.Id = data.metadata.uid;\n res.Name = data.metadata.name;\n res.Namespace = data.metadata.namespace;\n res.Images = _.map(data.spec.containers, 'image');\n res.Status = computeStatus(data.status.containerStatuses);\n res.Restarts = _.sumBy(data.status.containerStatuses, 'restartCount');\n res.Node = data.spec.nodeName;\n res.CreationDate = data.status.startTime;\n res.Containers = computeContainers(data);\n res.Labels = data.metadata.labels;\n res.Affinity = computeAffinity(data.spec.affinity);\n res.NodeSelector = data.spec.nodeSelector;\n res.Tolerations = computeTolerations(data.spec.tolerations);\n return res;\n }\n\n static evictionPayload(pod) {\n const res = new KubernetesPodEviction();\n res.metadata.name = pod.Name;\n res.metadata.namespace = pod.Namespace;\n return res;\n }\n\n static patchPayload(oldPod, newPod) {\n const oldPayload = createPayload(oldPod);\n const newPayload = createPayload(newPod);\n const payload = JsonPatch.compare(oldPayload, newPayload);\n return payload;\n }\n}\n\nfunction createPayload(pod) {\n const payload = createPayloadFactory();\n payload.metadata.name = pod.Name;\n payload.metadata.namespace = pod.Namespace;\n payload.metadata.labels[KubernetesPortainerApplicationStackNameLabel] = pod.StackName;\n payload.metadata.labels[KubernetesPortainerApplicationNameLabel] = pod.ApplicationName;\n payload.metadata.labels[KubernetesPortainerApplicationOwnerLabel] = pod.ApplicationOwner;\n if (pod.Note) {\n payload.metadata.annotations[KubernetesPortainerApplicationNote] = pod.Note;\n } else {\n payload.metadata.annotations = undefined;\n }\n\n payload.spec.replicas = pod.ReplicaCount;\n payload.spec.selector.matchLabels.app = pod.Name;\n payload.spec.template.metadata.labels.app = pod.Name;\n payload.spec.template.metadata.labels[KubernetesPortainerApplicationNameLabel] = pod.ApplicationName;\n payload.spec.template.spec.containers[0].name = pod.Name;\n payload.spec.template.spec.containers[0].image = pod.Image;\n payload.spec.template.spec.affinity = pod.Affinity;\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].env', pod.Env);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.containers[0].volumeMounts', pod.VolumeMounts);\n KubernetesCommonHelper.assignOrDeleteIfEmpty(payload, 'spec.template.spec.volumes', pod.Volumes);\n if (pod.MemoryLimit) {\n payload.spec.template.spec.containers[0].resources.limits.memory = pod.MemoryLimit;\n payload.spec.template.spec.containers[0].resources.requests.memory = pod.MemoryLimit;\n }\n if (pod.CpuLimit) {\n payload.spec.template.spec.containers[0].resources.limits.cpu = pod.CpuLimit;\n payload.spec.template.spec.containers[0].resources.requests.cpu = pod.CpuLimit;\n }\n if (!pod.CpuLimit && !pod.MemoryLimit) {\n delete payload.spec.template.spec.containers[0].resources;\n }\n return payload;\n}\n","import _ from 'lodash-es';\n\nangular\n .module('portainer.kubernetes')\n .filter('kubernetesPodStatusColor', function () {\n 'use strict';\n return function (text) {\n var status = _.toLower(text);\n switch (status) {\n case 'running':\n return 'success';\n case 'waiting':\n return 'warning';\n case 'terminated':\n return 'info';\n default:\n return 'danger';\n }\n };\n })\n .filter('kubernetesPodConditionStatusText', function () {\n 'use strict';\n return function (status, type) {\n switch (type) {\n case 'Unschedulable':\n switch (status) {\n case 'True':\n return 'Alert';\n case 'False':\n return 'OK';\n case 'Unknown':\n return 'Warning';\n }\n break;\n case 'PodScheduled':\n case 'Ready':\n case 'Initialized':\n case 'ContainersReady':\n switch (status) {\n case 'True':\n return 'Ok';\n case 'False':\n return 'Alert';\n case 'Unknown':\n return 'Warning';\n }\n break;\n default:\n return 'Unknown';\n }\n };\n });\n","export const KubernetesPodNodeAffinityNodeSelectorRequirementOperators = Object.freeze({\n IN: 'In',\n NOT_IN: 'NotIn',\n EXISTS: 'Exists',\n DOES_NOT_EXIST: 'DoesNotExist',\n GREATER_THAN: 'Gt',\n LOWER_THAN: 'Lt',\n});\n\n/**\n * KubernetesPodAffinity Model\n */\n// this model will contain non transformed data (raw payload data)\n// either during creation flow (model > api)\n// than during reading flow (api > model)\nexport function KubernetesPodAffinity() {\n return {\n nodeAffinity: {}, // KubernetesPodNodeAffinityPayload\n // podAffinity: {},\n // podAntiAffinity: {},\n };\n}\n","export * from './affinities';\n\n/**\n * KubernetesPod Model\n */\nconst _KubernetesPod = Object.freeze({\n Id: '',\n Name: '',\n Namespace: '',\n Images: [],\n Status: '',\n Restarts: 0,\n Node: '',\n CreationDate: '',\n Containers: [],\n Labels: [],\n Affinity: {}, // KubernetesPodAffinity\n Tolerations: [], // KubernetesPodToleration[]\n NodeSelector: undefined,\n});\n\nexport class KubernetesPod {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPod)));\n }\n}\n\n/**\n * KubernetesPodToleration Model\n */\nconst _KubernetesPodToleration = Object.freeze({\n Key: '',\n Operator: '',\n Value: '',\n TolerationSeconds: 0,\n Effect: '',\n});\n\nexport class KubernetesPodToleration {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPodToleration)));\n }\n}\n\nconst _KubernetesPodContainer = Object.freeze({\n Type: 0,\n PodName: '',\n Name: '',\n Image: '',\n ImagePullPolicy: '',\n Node: '',\n CreationDate: '',\n Status: '',\n Limits: {},\n Requests: {},\n VolumeMounts: {},\n ConfigurationVolumes: [],\n PersistedFolders: [],\n Env: [],\n});\n\nexport class KubernetesPodContainer {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPodContainer)));\n }\n}\n\nconst _KubernetesPodEviction = Object.freeze({\n apiVersion: 'policy/v1beta1',\n kind: 'Eviction',\n metadata: {\n name: '',\n namespace: '',\n },\n});\n\nexport class KubernetesPodEviction {\n constructor() {\n Object.assign(this, JSON.parse(JSON.stringify(_KubernetesPodEviction)));\n }\n}\n\nexport const KubernetesPodContainerTypes = {\n INIT: 1,\n APP: 2,\n};\n","export function KubernetesPodNodeAffinityPayload() {\n return {\n requiredDuringSchedulingIgnoredDuringExecution: {\n nodeSelectorTerms: [], // []KubernetesNodeSelectorTermPayload\n },\n preferredDuringSchedulingIgnoredDuringExecution: [], // []KubernetesPreferredSchedulingTermPayload\n };\n}\n\nexport function KubernetesPreferredSchedulingTermPayload() {\n return {\n weight: 1,\n preference: {}, // KubernetesNodeSelectorTermPayload\n };\n}\n\nexport function KubernetesNodeSelectorTermPayload() {\n return {\n matchExpressions: [], // []KubernetesNodeSelectorRequirementPayload\n };\n}\n\nexport function KubernetesNodeSelectorRequirementPayload() {\n return {\n key: '', // string\n operator: '', // KubernetesPodNodeAffinityNodeSelectorRequirementOperators\n values: [], // []string\n };\n}\n","import { KubernetesCommonMetadataPayload } from 'Kubernetes/models/common/payloads';\n\nexport function createPayloadFactory() {\n return {\n metadata: new KubernetesCommonMetadataPayload(),\n spec: {\n replicas: 0,\n selector: {\n matchLabels: {\n app: '',\n },\n },\n strategy: {\n type: 'RollingUpdate',\n rollingUpdate: {\n maxSurge: 0,\n maxUnavailable: '100%',\n },\n },\n template: {\n metadata: {\n labels: {\n app: '',\n },\n },\n spec: {\n affinity: {},\n containers: [\n {\n name: '',\n image: '',\n env: [],\n resources: {\n limits: {},\n requests: {},\n },\n volumeMounts: [],\n },\n ],\n volumes: [],\n },\n },\n },\n };\n}\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\n\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport KubernetesPodConverter from 'Kubernetes/pod/converter';\n\nclass KubernetesPodService {\n /* @ngInject */\n constructor($async, KubernetesPods) {\n this.$async = $async;\n this.KubernetesPods = KubernetesPods;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.logsAsync = this.logsAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n this.evictionAsync = this.evictionAsync.bind(this);\n }\n\n async getAsync(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([this.KubernetesPods(namespace).get(params).$promise, this.KubernetesPods(namespace).getYaml(params).$promise]);\n const res = {\n Raw: raw,\n Yaml: yaml.data,\n };\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve pod', err);\n }\n }\n\n /**\n * GET ALL\n */\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesPods(namespace).get().$promise;\n return data.items;\n } catch (err) {\n throw new PortainerError('Unable to retrieve pods', err);\n }\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * Logs\n *\n * @param {string} namespace\n * @param {string} podName\n * @param {string} containerName\n */\n async logsAsync(namespace, podName, containerName) {\n try {\n const params = new KubernetesCommonParams();\n params.id = podName;\n if (containerName) {\n params.container = containerName;\n }\n const data = await this.KubernetesPods(namespace).logs(params).$promise;\n return data.logs;\n } catch (err) {\n throw new PortainerError('Unable to retrieve pod logs', err);\n }\n }\n\n logs(namespace, podName, containerName) {\n return this.$async(this.logsAsync, namespace, podName, containerName);\n }\n\n /**\n * PATCH\n */\n async patchAsync(oldPod, newPod) {\n try {\n const params = new KubernetesCommonParams();\n params.id = newPod.Name;\n const namespace = newPod.Namespace;\n const payload = KubernetesPodConverter.patchPayload(oldPod, newPod);\n if (!payload.length) {\n return;\n }\n const data = await this.KubernetesPods(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to patch pod', err);\n }\n }\n\n patch(oldPod, newPod) {\n return this.$async(this.patchAsync, oldPod, newPod);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(pod) {\n try {\n const params = new KubernetesCommonParams();\n params.id = pod.Name;\n const namespace = pod.Namespace;\n await this.KubernetesPods(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to remove pod', err);\n }\n }\n\n delete(pod) {\n return this.$async(this.deleteAsync, pod);\n }\n\n /**\n * EVICT\n */\n async evictionAsync(pod) {\n try {\n const params = new KubernetesCommonParams();\n params.id = pod.Name;\n params.action = 'eviction';\n const namespace = pod.Namespace;\n const podEvictionPayload = KubernetesPodConverter.evictionPayload(pod);\n await this.KubernetesPods(namespace).evict(params, podEvictionPayload).$promise;\n } catch (err) {\n throw new PortainerError('Unable to evict pod', err);\n }\n }\n\n eviction(pod) {\n return this.$async(this.evictionAsync, pod);\n }\n}\n\nexport default KubernetesPodService;\nangular.module('portainer.kubernetes').service('KubernetesPodService', KubernetesPodService);\n","import angular from 'angular';\n\nimport { kubernetesRegistryAccessView } from './kube-registry-access-view';\n\nexport default angular.module('portainer.kubernetes.registries', []).component('kubernetesRegistryAccessView', kubernetesRegistryAccessView).name;\n","const autoNgTemplateLoaderTemplate1 = require('./kube-registry-access-view.html');\n\nimport controller from './kube-registry-access-view.controller';\n\nexport const kubernetesRegistryAccessView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n endpoint: '<',\n },\n};\n","import KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { confirmDeleteAccess } from '@/react/kubernetes/cluster/RegistryAccessView/ConfirmDeleteAccess';\n\nexport default class KubernetesRegistryAccessController {\n /* @ngInject */\n constructor($async, $scope, $state, EndpointService, Notifications, RegistryService, KubernetesResourcePoolService) {\n this.$async = $async;\n this.$scope = $scope;\n this.$state = $state;\n this.Notifications = Notifications;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.RegistryService = RegistryService;\n this.EndpointService = EndpointService;\n\n this.state = {\n actionInProgress: false,\n };\n\n this.selectedResourcePools = [];\n this.resourcePools = [];\n this.savedResourcePools = [];\n\n this.handleRemove = this.handleRemove.bind(this);\n this.onChangeResourcePools = this.onChangeResourcePools.bind(this);\n }\n\n async submit() {\n return this.updateNamespaces([...this.savedResourcePools.map(({ value }) => value), ...this.selectedResourcePools]);\n }\n\n handleRemove(namespaces) {\n const removeNamespaces = namespaces.map(({ value }) => value);\n const nsToUpdate = this.savedResourcePools.map(({ value }) => value).filter((value) => !removeNamespaces.includes(value));\n\n confirmDeleteAccess().then((confirmed) => {\n if (confirmed) {\n return this.updateNamespaces(nsToUpdate);\n }\n });\n }\n\n updateNamespaces(namespaces) {\n return this.$async(async () => {\n try {\n await this.EndpointService.updateRegistryAccess(this.endpoint.Id, this.registry.Id, {\n namespaces,\n });\n this.$state.reload(this.$state.current);\n this.Notifications.success('Success', 'Registry access updated');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed saving registry access');\n }\n });\n }\n\n onChangeResourcePools(resourcePools) {\n return this.$scope.$evalAsync(() => {\n this.selectedResourcePools = resourcePools;\n });\n }\n\n $onInit() {\n return this.$async(async () => {\n try {\n this.state = {\n registryId: this.$state.params.id,\n };\n this.registry = await this.RegistryService.registry(this.state.registryId, this.endpoint.Id);\n if (this.registry.RegistryAccesses && this.registry.RegistryAccesses[this.endpoint.Id]) {\n this.savedResourcePools = this.registry.RegistryAccesses[this.endpoint.Id].Namespaces.map((value) => ({ value }));\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registry details');\n }\n\n try {\n const resourcePools = await this.KubernetesResourcePoolService.get();\n\n this.resourcePools = resourcePools\n .filter((pool) => !KubernetesNamespaceHelper.isSystemNamespace(pool.Namespace.Name) && !this.savedResourcePools.find(({ value }) => value === pool.Namespace.Name))\n .map((pool) => ({ name: pool.Namespace.Name, id: pool.Namespace.Id }));\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve namespaces');\n }\n });\n }\n}\n","import { confirmDestructive } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport function confirmDeleteAccess() {\n return confirmDestructive({\n title: 'Are you sure?',\n message: (\n <>\n <p>\n This registry might be used by one or more applications inside this\n environment. Removing the registry access could lead to a service\n interruption for these applications.\n </p>\n <p>Are you sure you wish to continue?</p>\n </>\n ),\n confirmButton: buildConfirmButton('Remove', 'danger'),\n });\n}\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesConfigMaps', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesConfigMapsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/configmaps/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesControllerRevisions', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesControllerRevisionsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/controllerrevisions/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesDaemonSets', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesDaemonSetsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/daemonsets/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n rollback: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/strategic-merge-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesDeployments', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesDeploymentsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/deployments/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n rollback: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","angular.module('portainer.kubernetes').factory('KubernetesEndpoints', function KubernetesEndpointsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/endpoints/:id';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n }\n );\n };\n});\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesEvents', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesEventsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/events/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","angular.module('portainer.kubernetes').factory('KubernetesHealth', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n function KubernetesHealthFactory($resource, API_ENDPOINT_ENDPOINTS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:id/kubernetes/healthz',\n {},\n {\n ping: { method: 'GET', params: { id: 'id' } },\n }\n );\n },\n]);\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesNamespaces', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesNamespacesFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function () {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1/namespaces/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n getJSON: {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n delete: { method: 'DELETE' },\n status: {\n method: 'GET',\n params: { action: 'status' },\n ignoreLoadingBar: true,\n },\n }\n );\n };\n },\n]);\n","import angular from 'angular';\n\nangular.module('portainer.kubernetes').factory('KubernetesNodesLimits', KubernetesNodesLimitsFactory);\n\n/* @ngInject */\nfunction KubernetesNodesLimitsFactory($resource, API_ENDPOINT_KUBERNETES, EndpointProvider) {\n const url = API_ENDPOINT_KUBERNETES + '/:endpointId/nodes_limits';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n transformResponse: (data) => ({ data: JSON.parse(data) }),\n },\n }\n );\n}\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesPersistentVolumeClaims', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesPersistentVolumeClaimsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/persistentvolumeclaims/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\nimport { logsHandler } from 'Docker/rest/response/handlers';\n\nangular.module('portainer.kubernetes').factory('KubernetesPods', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesPodsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/pods/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n delete: { method: 'DELETE' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n logs: {\n method: 'GET',\n params: { action: 'log' },\n transformResponse: logsHandler,\n },\n evict: { method: 'POST' },\n }\n );\n };\n },\n]);\n","angular.module('portainer.kubernetes').factory('KubernetesPortainerNamespaces', KubernetesPortainerNamespacesFactory);\n\nfunction KubernetesPortainerNamespacesFactory($resource) {\n const url = '/api/kubernetes/:endpointId/namespaces/:namespaceName/:action';\n return $resource(\n url,\n {},\n {\n toggleSystem: { method: 'PUT', params: { action: 'system' } },\n }\n );\n}\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesReplicaSets', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesReplicaSetsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/replicasets/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesResourceQuotas', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesResourceQuotasFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/resourcequotas/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","// Returns the raw response without JSON parsing\nexport function rawResponse(data) {\n const response = {\n data: data,\n };\n return response;\n}\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesSecrets', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesSecretsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/secrets/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesServices', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesServicesFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/api/v1' + (namespace ? '/namespaces/:namespace' : '') + '/services/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\n\nexport async function getServiceAccounts(environmentId, namespaceId) {\n try {\n const {\n data: { items },\n } = await axios.get(urlBuilder(environmentId, namespaceId));\n return items;\n } catch (error) {\n throw parseAxiosError(error);\n }\n}\n\nfunction urlBuilder(environmentId, namespaceId) {\n return `endpoints/${environmentId}/kubernetes/api/v1/namespaces/${namespaceId}/serviceaccounts`;\n}\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesStatefulSets', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesStatefulSetsFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function (namespace) {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/apps/v1' + (namespace ? '/namespaces/:namespace' : '') + '/statefulsets/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n namespace: namespace,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n rollback: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/strategic-merge-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import { rawResponse } from 'Kubernetes/rest/response/transform';\n\nangular.module('portainer.kubernetes').factory('KubernetesStorage', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n 'EndpointProvider',\n function KubernetesStorageFactory($resource, API_ENDPOINT_ENDPOINTS, EndpointProvider) {\n 'use strict';\n return function () {\n const url = API_ENDPOINT_ENDPOINTS + '/:endpointId/kubernetes/apis/storage.k8s.io/v1/storageclasses/:id/:action';\n return $resource(\n url,\n {\n endpointId: EndpointProvider.endpointID,\n },\n {\n get: {\n method: 'GET',\n ignoreLoadingBar: true,\n },\n getYaml: {\n method: 'GET',\n headers: {\n Accept: 'application/yaml',\n },\n transformResponse: rawResponse,\n ignoreLoadingBar: true,\n },\n create: { method: 'POST' },\n update: { method: 'PUT' },\n patch: {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json-patch+json',\n },\n },\n delete: { method: 'DELETE' },\n }\n );\n };\n },\n]);\n","import _ from 'lodash-es';\nimport angular from 'angular';\nimport PortainerError from 'Portainer/error';\n\nimport { KubernetesApplication, KubernetesApplicationDeploymentTypes, KubernetesApplicationTypes } from 'Kubernetes/models/application/models';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport KubernetesApplicationConverter from 'Kubernetes/converters/application';\nimport { KubernetesDeployment } from 'Kubernetes/models/deployment/models';\nimport { KubernetesStatefulSet } from 'Kubernetes/models/stateful-set/models';\nimport { KubernetesDaemonSet } from 'Kubernetes/models/daemon-set/models';\nimport KubernetesServiceHelper from 'Kubernetes/helpers/serviceHelper';\nimport { KubernetesHorizontalPodAutoScalerHelper } from 'Kubernetes/horizontal-pod-auto-scaler/helper';\nimport { KubernetesHorizontalPodAutoScalerConverter } from 'Kubernetes/horizontal-pod-auto-scaler/converter';\nimport KubernetesPodConverter from 'Kubernetes/pod/converter';\nimport { notifyError } from '@/portainer/services/notifications';\nimport { KubernetesIngressConverter } from 'Kubernetes/ingress/converter';\nimport { generateNewIngressesFromFormPaths } from '@/react/kubernetes/applications/CreateView/application-services/utils';\n\nclass KubernetesApplicationService {\n /* #region CONSTRUCTOR */\n /* @ngInject */\n constructor(\n $async,\n Authentication,\n KubernetesDeploymentService,\n KubernetesDaemonSetService,\n KubernetesStatefulSetService,\n KubernetesServiceService,\n KubernetesSecretService,\n KubernetesPersistentVolumeClaimService,\n KubernetesNamespaceService,\n KubernetesPodService,\n KubernetesHorizontalPodAutoScalerService,\n KubernetesIngressService\n ) {\n this.$async = $async;\n this.Authentication = Authentication;\n this.KubernetesDeploymentService = KubernetesDeploymentService;\n this.KubernetesDaemonSetService = KubernetesDaemonSetService;\n this.KubernetesStatefulSetService = KubernetesStatefulSetService;\n this.KubernetesServiceService = KubernetesServiceService;\n this.KubernetesSecretService = KubernetesSecretService;\n this.KubernetesPersistentVolumeClaimService = KubernetesPersistentVolumeClaimService;\n this.KubernetesNamespaceService = KubernetesNamespaceService;\n this.KubernetesPodService = KubernetesPodService;\n this.KubernetesHorizontalPodAutoScalerService = KubernetesHorizontalPodAutoScalerService;\n this.KubernetesIngressService = KubernetesIngressService;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n this.patchPartialAsync = this.patchPartialAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n /* #endregion */\n\n /* #region UTILS */\n _getApplicationApiService(app) {\n let apiService;\n if (app instanceof KubernetesDeployment || (app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.DEPLOYMENT)) {\n apiService = this.KubernetesDeploymentService;\n } else if (app instanceof KubernetesDaemonSet || (app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.DAEMONSET)) {\n apiService = this.KubernetesDaemonSetService;\n } else if (app instanceof KubernetesStatefulSet || (app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.STATEFULSET)) {\n apiService = this.KubernetesStatefulSetService;\n } else if (app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.POD) {\n apiService = this.KubernetesPodService;\n } else {\n throw new PortainerError('Unable to determine which association to use to retrieve API Service');\n }\n return apiService;\n }\n\n _generateIngressPatchPromises(oldIngresses, newIngresses) {\n return _.map(newIngresses, (newIng) => {\n const oldIng = _.find(oldIngresses, { Name: newIng.Name });\n return this.KubernetesIngressService.patch(oldIng, newIng);\n });\n }\n /* #endregion */\n\n /* #region GET */\n async getAsync(namespace, name) {\n const [deployment, daemonSet, statefulSet, pod, pods, autoScalers, ingresses] = await Promise.allSettled([\n this.KubernetesDeploymentService.get(namespace, name),\n this.KubernetesDaemonSetService.get(namespace, name),\n this.KubernetesStatefulSetService.get(namespace, name),\n this.KubernetesPodService.get(namespace, name),\n this.KubernetesPodService.get(namespace),\n this.KubernetesHorizontalPodAutoScalerService.get(namespace),\n this.KubernetesIngressService.get(namespace),\n ]);\n\n let rootItem;\n let converterFunc;\n if (deployment.status === 'fulfilled') {\n rootItem = deployment;\n converterFunc = KubernetesApplicationConverter.apiDeploymentToApplication;\n } else if (daemonSet.status === 'fulfilled') {\n rootItem = daemonSet;\n converterFunc = KubernetesApplicationConverter.apiDaemonSetToApplication;\n } else if (statefulSet.status === 'fulfilled') {\n rootItem = statefulSet;\n converterFunc = KubernetesApplicationConverter.apiStatefulSetToapplication;\n } else if (pod.status === 'fulfilled') {\n rootItem = pod;\n converterFunc = KubernetesApplicationConverter.apiPodToApplication;\n } else {\n throw new PortainerError('Unable to determine which association to use to convert application');\n }\n\n const services = await this.KubernetesServiceService.get(namespace);\n const boundService = KubernetesServiceHelper.findApplicationBoundService(services, rootItem.value.Raw);\n const service = boundService ? await this.KubernetesServiceService.get(namespace, boundService.metadata.name) : {};\n const boundServices = KubernetesServiceHelper.findApplicationBoundServices(services, rootItem.value.Raw);\n\n const application = converterFunc(rootItem.value.Raw, pods.value, service.Raw, ingresses.value);\n application.Yaml = rootItem.value.Yaml;\n application.Raw = rootItem.value.Raw;\n application.Pods = _.map(application.Pods, (item) => KubernetesPodConverter.apiToModel(item));\n application.Containers = KubernetesApplicationHelper.associateContainersAndApplication(application);\n application.Services = boundServices;\n\n const boundScaler = KubernetesHorizontalPodAutoScalerHelper.findApplicationBoundScaler(autoScalers.value, application);\n const scaler = boundScaler ? await this.KubernetesHorizontalPodAutoScalerService.get(namespace, boundScaler.Name) : undefined;\n application.AutoScaler = scaler;\n application.Ingresses = ingresses;\n\n if (service.Yaml) {\n application.Yaml += '---\\n' + service.Yaml;\n }\n if (scaler && scaler.Yaml) {\n application.Yaml += '---\\n' + scaler.Yaml;\n }\n // TODO: refactor @LP\n // append ingress yaml ?\n return application;\n }\n\n async getAllAsync(namespace) {\n const namespaces = namespace ? [namespace] : _.map(await this.KubernetesNamespaceService.get(), 'Name');\n\n const convertToApplication = (item, converterFunc, services, pods, ingresses) => {\n const service = KubernetesServiceHelper.findApplicationBoundService(services, item);\n const servicesFound = KubernetesServiceHelper.findApplicationBoundServices(services, item);\n const application = converterFunc(item, pods, service, ingresses);\n application.Containers = KubernetesApplicationHelper.associateContainersAndApplication(application);\n application.Services = servicesFound;\n return application;\n };\n\n const res = await Promise.all(\n _.map(namespaces, async (ns) => {\n const [deployments, daemonSets, statefulSets, services, pods, ingresses, autoScalers] = await Promise.all([\n this.KubernetesDeploymentService.get(ns),\n this.KubernetesDaemonSetService.get(ns),\n this.KubernetesStatefulSetService.get(ns),\n this.KubernetesServiceService.get(ns),\n this.KubernetesPodService.get(ns),\n this.KubernetesIngressService.get(ns),\n this.KubernetesHorizontalPodAutoScalerService.get(ns),\n ]);\n\n const deploymentApplications = _.map(deployments, (item) =>\n convertToApplication(item, KubernetesApplicationConverter.apiDeploymentToApplication, services, pods, ingresses)\n );\n const daemonSetApplications = _.map(daemonSets, (item) => convertToApplication(item, KubernetesApplicationConverter.apiDaemonSetToApplication, services, pods, ingresses));\n const statefulSetApplications = _.map(statefulSets, (item) =>\n convertToApplication(item, KubernetesApplicationConverter.apiStatefulSetToapplication, services, pods, ingresses)\n );\n\n const boundPods = _.concat(_.flatMap(deploymentApplications, 'Pods'), _.flatMap(daemonSetApplications, 'Pods'), _.flatMap(statefulSetApplications, 'Pods'));\n const unboundPods = _.without(pods, ...boundPods);\n const nakedPodsApplications = _.map(unboundPods, (item) => convertToApplication(item, KubernetesApplicationConverter.apiPodToApplication, services, pods, ingresses));\n\n const applications = _.concat(deploymentApplications, daemonSetApplications, statefulSetApplications, nakedPodsApplications);\n _.forEach(applications, (app) => {\n app.Pods = _.map(app.Pods, (item) => KubernetesPodConverter.apiToModel(item));\n });\n await Promise.all(\n _.forEach(applications, async (application) => {\n const boundScaler = KubernetesHorizontalPodAutoScalerHelper.findApplicationBoundScaler(autoScalers, application);\n const scaler = boundScaler ? await this.KubernetesHorizontalPodAutoScalerService.get(ns, boundScaler.Name) : undefined;\n application.AutoScaler = scaler;\n application.Ingresses = await this.KubernetesIngressService.get(ns);\n })\n );\n return applications;\n })\n );\n return _.flatten(res);\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n /* #endregion */\n\n /* #region CREATE */\n // TODO: review\n // resource creation flow\n // should we keep formValues > Resource_1 || Resource_2\n // or should we switch to formValues > Composite > Resource_1 || Resource_2\n /**\n * NOTE: Keep this method flow in sync with `getCreatedApplicationResources` method in the `applicationService` file\n * To synchronise with kubernetes resource creation summary output, any new resources created in this method should\n * also be displayed in the summary output (getCreatedApplicationResources)\n */\n async createAsync(formValues) {\n // formValues -> Application\n let [app, headlessService, services, , claims] = KubernetesApplicationConverter.applicationFormValuesToApplication(formValues);\n\n if (services) {\n services.forEach(async (service) => {\n try {\n await this.KubernetesServiceService.create(service);\n } catch (error) {\n notifyError('Unable to create service', error);\n }\n });\n\n try {\n //Generate all ingresses from current form by passing services object\n const newServicePorts = formValues.Services.flatMap((service) => service.Ports);\n const newIngresses = generateNewIngressesFromFormPaths(formValues.OriginalIngresses, newServicePorts);\n if (newIngresses) {\n //Update original ingress with current ingress\n await Promise.all(this._generateIngressPatchPromises(formValues.OriginalIngresses, newIngresses));\n }\n } catch (error) {\n notifyError('Unable to update service', error);\n }\n }\n\n const apiService = this._getApplicationApiService(app);\n\n if (app instanceof KubernetesStatefulSet) {\n app.VolumeClaims = claims;\n try {\n headlessService = await this.KubernetesServiceService.create(headlessService);\n } catch (error) {\n notifyError('Unable to create service', error);\n }\n app.ServiceName = headlessService.metadata.name;\n } else {\n const claimPromises = _.map(claims, (item) => {\n if (!item.PreviousName && !item.Id) {\n return this.KubernetesPersistentVolumeClaimService.create(item);\n }\n });\n await Promise.all(_.without(claimPromises, undefined));\n }\n\n if (formValues.AutoScaler.IsUsed && formValues.DeploymentType !== KubernetesApplicationDeploymentTypes.GLOBAL) {\n const kind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(app);\n const autoScaler = KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(formValues, kind);\n await this.KubernetesHorizontalPodAutoScalerService.create(autoScaler);\n }\n\n await apiService.create(app);\n }\n\n create(formValues) {\n return this.$async(this.createAsync, formValues);\n }\n /* #endregion */\n\n /* #region PATCH */\n // this function accepts KubernetesApplicationFormValues as parameters\n /**\n * NOTE: Keep this method flow in sync with `getUpdatedApplicationResources` method in the `applicationService` file\n * To synchronise with kubernetes resource creation, update and delete summary output, any new resources created\n * in this method should also be displayed in the summary output (getUpdatedApplicationResources)\n */\n async patchAsync(oldFormValues, newFormValues, originalServicePorts) {\n const [oldApp, oldHeadlessService, oldServices, , oldClaims] = KubernetesApplicationConverter.applicationFormValuesToApplication(oldFormValues);\n const [newApp, newHeadlessService, newServices, , newClaims] = KubernetesApplicationConverter.applicationFormValuesToApplication(newFormValues);\n const oldApiService = this._getApplicationApiService(oldApp);\n const newApiService = this._getApplicationApiService(newApp);\n\n if (oldApiService !== newApiService) {\n // delete services first\n if (oldServices) {\n await this.KubernetesServiceService.delete(oldServices);\n }\n\n // delete the app\n await this.delete(oldApp);\n\n // sleep for 5 seconds to allow the app/services to be deleted\n await new Promise((r) => setTimeout(r, 5000));\n\n // create the app\n return await this.create(newFormValues);\n }\n\n if (newApp instanceof KubernetesStatefulSet) {\n try {\n await this.KubernetesServiceService.patch(oldHeadlessService, newHeadlessService);\n } catch (error) {\n notifyError('Unable to update service', error);\n }\n } else {\n const claimPromises = _.map(newClaims, (newClaim) => {\n if (!newClaim.PreviousName && !newClaim.Id) {\n return this.KubernetesPersistentVolumeClaimService.create(newClaim);\n } else if (!newClaim.Id) {\n const oldClaim = _.find(oldClaims, { Name: newClaim.PreviousName });\n return this.KubernetesPersistentVolumeClaimService.patch(oldClaim, newClaim);\n }\n });\n await Promise.all(claimPromises);\n }\n\n await newApiService.patch(oldApp, newApp);\n\n // Create services\n if (oldServices.length === 0 && newServices.length !== 0) {\n newServices.forEach(async (service) => {\n try {\n await this.KubernetesServiceService.create(service);\n } catch (error) {\n notifyError('Unable to create service', error);\n }\n });\n }\n\n // Delete services ( only called when all services been deleted )\n if (oldServices.length !== 0 && newServices.length === 0) {\n await this.KubernetesServiceService.deleteAll(oldServices);\n }\n\n // Patch services ( Action including: Delete, Update, Create )\n if (oldServices.length !== 0 && newServices.length !== 0) {\n oldServices.forEach(async (oldService) => {\n const newServiceMatched = _.find(newServices, { Name: oldService.Name });\n if (!newServiceMatched) {\n await this.KubernetesServiceService.deleteSingle(oldService);\n }\n });\n\n newServices.forEach(async (newService) => {\n const oldServiceMatched = _.find(oldServices, { Name: newService.Name });\n if (oldServiceMatched) {\n try {\n await this.KubernetesServiceService.patch(oldServiceMatched, newService);\n } catch (error) {\n notifyError('Unable to update service', error);\n }\n } else {\n try {\n await this.KubernetesServiceService.create(newService);\n } catch (error) {\n notifyError('Unable to create service', error);\n }\n }\n });\n }\n\n // Update ingresses\n if (newServices) {\n try {\n //Generate all ingresses from current form by passing services object\n const newServicePorts = newFormValues.Services.flatMap((service) => service.Ports);\n const newIngresses = generateNewIngressesFromFormPaths(newFormValues.OriginalIngresses, newServicePorts, originalServicePorts);\n if (newIngresses) {\n //Update original ingress with current ingress\n await Promise.all(this._generateIngressPatchPromises(newFormValues.OriginalIngresses, newIngresses));\n }\n } catch (error) {\n notifyError('Unable to update service', error);\n }\n }\n\n const newKind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(newApp);\n const newAutoScaler = KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(newFormValues, newKind);\n if (!oldFormValues.AutoScaler.IsUsed) {\n if (newFormValues.AutoScaler.IsUsed) {\n await this.KubernetesHorizontalPodAutoScalerService.create(newAutoScaler);\n }\n } else {\n const oldKind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(oldApp);\n const oldAutoScaler = KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(oldFormValues, oldKind);\n if (newFormValues.AutoScaler.IsUsed) {\n await this.KubernetesHorizontalPodAutoScalerService.patch(oldAutoScaler, newAutoScaler);\n } else {\n await this.KubernetesHorizontalPodAutoScalerService.delete(oldAutoScaler);\n }\n }\n }\n\n // this function accepts KubernetesApplication as parameters\n async patchPartialAsync(oldApp, newApp) {\n const oldAppPayload = {\n Name: oldApp.Name,\n Namespace: oldApp.ResourcePool,\n StackName: oldApp.StackName,\n Note: oldApp.Note,\n };\n const newAppPayload = {\n Name: newApp.Name,\n Namespace: newApp.ResourcePool,\n StackName: newApp.StackName,\n Note: newApp.Note,\n };\n const apiService = this._getApplicationApiService(oldApp);\n await apiService.patch(oldAppPayload, newAppPayload);\n }\n\n // accept either formValues or applications as parameters depending on partial value\n // true = KubernetesApplication\n // false = KubernetesApplicationFormValues\n //\n // e.g. signatures are\n //\n // patch(oldValues: KubernetesApplication, newValues: KubernetesApplication, partial: (undefined | false)): Promise<unknown>\n // patch(oldValues: KubernetesApplicationFormValues, newValues: KubernetesApplicationFormValues, partial: true): Promise<unknown>\n patch(oldValues, newValues, partial = false, originalServicePorts) {\n if (partial) {\n return this.$async(this.patchPartialAsync, oldValues, newValues);\n }\n return this.$async(this.patchAsync, oldValues, newValues, originalServicePorts);\n }\n /* #endregion */\n\n /* #region DELETE */\n async deleteAsync(application) {\n const payload = {\n Namespace: application.ResourcePool || application.Namespace,\n Name: application.Name,\n };\n const servicePayload = angular.copy(payload);\n servicePayload.Name = application.Name;\n\n const apiService = this._getApplicationApiService(application);\n await apiService.delete(payload);\n\n if (apiService === this.KubernetesStatefulSetService) {\n const headlessServicePayload = angular.copy(payload);\n headlessServicePayload.Name = application instanceof KubernetesStatefulSet ? application.ServiceName : application.HeadlessServiceName;\n }\n\n if (application.ServiceType) {\n // delete headless service && non-headless service\n await this.KubernetesServiceService.delete(application.Services);\n if (application.Ingresses.length) {\n const originalIngresses = await this.KubernetesIngressService.get(payload.Namespace);\n const formValues = {\n OriginalIngresses: originalIngresses,\n PublishedPorts: KubernetesApplicationHelper.generatePublishedPortsFormValuesFromPublishedPorts(application.ServiceType, application.PublishedPorts),\n };\n const ingresses = KubernetesIngressConverter.applicationFormValuesToDeleteIngresses(formValues, application);\n\n await Promise.all(this._generateIngressPatchPromises(formValues.OriginalIngresses, ingresses));\n }\n }\n if (!_.isEmpty(application.AutoScaler)) {\n await this.KubernetesHorizontalPodAutoScalerService.delete(application.AutoScaler);\n }\n }\n\n delete(application) {\n return this.$async(this.deleteAsync, application);\n }\n /* #endregion */\n}\n\nexport default KubernetesApplicationService;\nangular.module('portainer.kubernetes').service('KubernetesApplicationService', KubernetesApplicationService);\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport PortainerError from 'Portainer/error';\nimport KubernetesConfigMapConverter from 'Kubernetes/converters/configMap';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport { KubernetesPortainerAccessConfigMap } from 'Kubernetes/models/config-map/models';\n\nclass KubernetesConfigMapService {\n /* @ngInject */\n constructor($async, KubernetesConfigMaps) {\n this.$async = $async;\n this.KubernetesConfigMaps = KubernetesConfigMaps;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.updateAsync = this.updateAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n getAccess(namespace, name) {\n return this.$async(async () => {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const raw = await this.KubernetesConfigMaps(namespace).get(params).$promise;\n return KubernetesConfigMapConverter.apiToPortainerAccessConfigMap(raw);\n } catch (err) {\n if (err.status === 404) {\n return new KubernetesPortainerAccessConfigMap();\n }\n throw new PortainerError('Unable to retrieve Portainer accesses', err);\n }\n });\n }\n\n createAccess(config) {\n return this.$async(async () => {\n try {\n const payload = KubernetesConfigMapConverter.createAccessPayload(config);\n const params = {};\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesConfigMaps(namespace).create(params, payload).$promise;\n return KubernetesConfigMapConverter.apiToPortainerAccessConfigMap(data);\n } catch (err) {\n throw new PortainerError('Unable to create Portainer accesses', err);\n }\n });\n }\n\n updateAccess(config) {\n return this.$async(async () => {\n try {\n if (!config.Id) {\n return await this.createAccess(config);\n }\n const payload = KubernetesConfigMapConverter.updateAccessPayload(config);\n const params = new KubernetesCommonParams();\n params.id = payload.metadata.name;\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesConfigMaps(namespace).update(params, payload).$promise;\n return KubernetesConfigMapConverter.apiToPortainerAccessConfigMap(data);\n } catch (err) {\n throw new PortainerError('Unable to update Portainer accesses', err);\n }\n });\n }\n\n /**\n * GET\n */\n async getAsync(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [rawPromise, yamlPromise] = await Promise.allSettled([\n this.KubernetesConfigMaps(namespace).get(params).$promise,\n this.KubernetesConfigMaps(namespace).getYaml(params).$promise,\n ]);\n\n if (_.get(rawPromise, 'reason.status') === 404 && _.get(yamlPromise, 'reason.status') === 404) {\n return KubernetesConfigMapConverter.defaultConfigMap(namespace, name);\n }\n\n // Saving binary data to 'data' field in configMap Object is not allowed by kubernetes and getYaml() may get\n // an error. We should keep binary data to 'binaryData' field instead of 'data'. Before that, we\n // use response from get() and ignore 500 error as a workaround.\n if (rawPromise.value) {\n return KubernetesConfigMapConverter.apiToConfigMap(rawPromise.value, yamlPromise.value);\n }\n\n throw new PortainerError('Unable to retrieve config map ', name);\n } catch (err) {\n if (err.status === 404) {\n return KubernetesConfigMapConverter.defaultConfigMap(namespace, name);\n }\n throw new PortainerError('Unable to retrieve config map', err);\n }\n }\n\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesConfigMaps(namespace).get().$promise;\n return _.map(data.items, (item) => KubernetesConfigMapConverter.apiToConfigMap(item));\n } catch (err) {\n throw new PortainerError('Unable to retrieve config maps', err);\n }\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * CREATE\n */\n async createAsync(config) {\n try {\n const payload = KubernetesConfigMapConverter.createPayload(config);\n const params = {};\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesConfigMaps(namespace).create(params, payload).$promise;\n return KubernetesConfigMapConverter.apiToConfigMap(data);\n } catch (err) {\n throw new PortainerError('Unable to create config map', err);\n }\n }\n\n create(config) {\n return this.$async(this.createAsync, config);\n }\n\n /**\n * UPDATE\n */\n async updateAsync(config) {\n try {\n if (!config.Id) {\n return await this.create(config);\n }\n const payload = KubernetesConfigMapConverter.updatePayload(config);\n const params = new KubernetesCommonParams();\n params.id = payload.metadata.name;\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesConfigMaps(namespace).update(params, payload).$promise;\n return KubernetesConfigMapConverter.apiToConfigMap(data);\n } catch (err) {\n throw new PortainerError('Unable to update config map', err);\n }\n }\n update(config) {\n return this.$async(this.updateAsync, config);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(config) {\n try {\n const params = new KubernetesCommonParams();\n params.id = config.Name;\n const namespace = config.Namespace;\n await this.KubernetesConfigMaps(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to delete config map', err);\n }\n }\n\n delete(config) {\n return this.$async(this.deleteAsync, config);\n }\n}\n\nexport default KubernetesConfigMapService;\nangular.module('portainer.kubernetes').service('KubernetesConfigMapService', KubernetesConfigMapService);\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport KubernetesConfigurationConverter from 'Kubernetes/converters/configuration';\nimport KubernetesConfigMapConverter from 'Kubernetes/converters/configMap';\nimport KubernetesSecretConverter from 'Kubernetes/converters/secret';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\nimport KubernetesCommonHelper from 'Kubernetes/helpers/commonHelper';\n\nclass KubernetesConfigurationService {\n /* @ngInject */\n constructor($async, Authentication, KubernetesNamespaceService, KubernetesConfigMapService, KubernetesSecretService) {\n this.$async = $async;\n this.Authentication = Authentication;\n this.KubernetesNamespaceService = KubernetesNamespaceService;\n this.KubernetesConfigMapService = KubernetesConfigMapService;\n this.KubernetesSecretService = KubernetesSecretService;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.updateAsync = this.updateAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(namespace, name) {\n const [configMap, secret] = await Promise.allSettled([this.KubernetesConfigMapService.get(namespace, name), this.KubernetesSecretService.get(namespace, name)]);\n let configuration;\n if (secret.status === 'fulfilled') {\n configuration = KubernetesConfigurationConverter.secretToConfiguration(secret.value);\n return configuration;\n }\n configuration = KubernetesConfigurationConverter.configMapToConfiguration(configMap.value);\n return configuration;\n }\n\n async getAllAsync(namespace) {\n const namespaces = namespace ? [namespace] : _.map(await this.KubernetesNamespaceService.get(), 'Name');\n const res = await Promise.all(\n _.map(namespaces, async (ns) => {\n const [configMaps, secrets] = await Promise.all([this.KubernetesConfigMapService.get(ns), this.KubernetesSecretService.get(ns)]);\n const secretsConfigurations = _.map(secrets, (secret) => KubernetesConfigurationConverter.secretToConfiguration(secret));\n const configMapsConfigurations = _.map(configMaps, (configMap) => KubernetesConfigurationConverter.configMapToConfiguration(configMap));\n return _.concat(configMapsConfigurations, secretsConfigurations);\n })\n );\n return _.flatten(res);\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * CREATE\n */\n async createAsync(formValues) {\n formValues.ConfigurationOwner = KubernetesCommonHelper.ownerToLabel(formValues.ConfigurationOwner);\n\n if (formValues.Kind === KubernetesConfigurationKinds.CONFIGMAP) {\n const configMap = KubernetesConfigMapConverter.configurationFormValuesToConfigMap(formValues);\n await this.KubernetesConfigMapService.create(configMap);\n } else {\n const secret = KubernetesSecretConverter.configurationFormValuesToSecret(formValues);\n await this.KubernetesSecretService.create(secret);\n }\n }\n\n create(formValues) {\n return this.$async(this.createAsync, formValues);\n }\n\n /**\n * UPDATE\n */\n async updateAsync(formValues, configuration) {\n if (formValues.Kind === KubernetesConfigurationKinds.CONFIGMAP) {\n const configMap = KubernetesConfigMapConverter.configurationFormValuesToConfigMap(formValues);\n configMap.ConfigurationOwner = configuration.ConfigurationOwner;\n await this.KubernetesConfigMapService.update(configMap);\n } else {\n const secret = KubernetesSecretConverter.configurationFormValuesToSecret(formValues);\n secret.ConfigurationOwner = configuration.ConfigurationOwner;\n await this.KubernetesSecretService.update(secret);\n }\n }\n\n update(formValues, configuration) {\n return this.$async(this.updateAsync, formValues, configuration);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(config) {\n if (config.Kind == KubernetesConfigurationKinds.CONFIGMAP) {\n await this.KubernetesConfigMapService.delete(config);\n } else {\n await this.KubernetesSecretService.delete(config);\n }\n }\n\n delete(config) {\n return this.$async(this.deleteAsync, config);\n }\n}\n\nexport default KubernetesConfigurationService;\nangular.module('portainer.kubernetes').service('KubernetesConfigurationService', KubernetesConfigurationService);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\n\nclass KubernetesControllerRevisionService {\n /* @ngInject */\n constructor($async, KubernetesControllerRevisions) {\n this.$async = $async;\n this.KubernetesControllerRevisions = KubernetesControllerRevisions;\n\n this.getAllAsync = this.getAllAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesControllerRevisions(namespace).get().$promise;\n return data.items;\n } catch (err) {\n throw new PortainerError('Unable to retrieve ControllerRevisions', err);\n }\n }\n\n get(namespace) {\n return this.$async(this.getAllAsync, namespace);\n }\n}\n\nexport default KubernetesControllerRevisionService;\nangular.module('portainer.kubernetes').service('KubernetesControllerRevisionService', KubernetesControllerRevisionService);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport KubernetesDaemonSetConverter from 'Kubernetes/converters/daemonSet';\n\nclass KubernetesDaemonSetService {\n /* @ngInject */\n constructor($async, KubernetesDaemonSets) {\n this.$async = $async;\n this.KubernetesDaemonSets = KubernetesDaemonSets;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([this.KubernetesDaemonSets(namespace).get(params).$promise, this.KubernetesDaemonSets(namespace).getYaml(params).$promise]);\n const res = {\n Raw: raw,\n Yaml: yaml.data,\n };\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve DaemonSet', err);\n }\n }\n\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesDaemonSets(namespace).get().$promise;\n return data.items;\n } catch (err) {\n throw new PortainerError('Unable to retrieve DaemonSets', err);\n }\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * CREATE\n */\n async createAsync(daemonSet) {\n try {\n const params = {};\n const payload = KubernetesDaemonSetConverter.createPayload(daemonSet);\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesDaemonSets(namespace).create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create daemonset', err);\n }\n }\n\n create(daemonSet) {\n return this.$async(this.createAsync, daemonSet);\n }\n\n /**\n * PATCH\n */\n async patchAsync(oldDaemonSet, newDaemonSet) {\n try {\n const params = new KubernetesCommonParams();\n params.id = newDaemonSet.Name;\n const namespace = newDaemonSet.Namespace;\n const payload = KubernetesDaemonSetConverter.patchPayload(oldDaemonSet, newDaemonSet);\n if (!payload.length) {\n return;\n }\n const data = await this.KubernetesDaemonSets(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to patch daemonSet', err);\n }\n }\n\n patch(oldDaemonSet, newDaemonSet) {\n return this.$async(this.patchAsync, oldDaemonSet, newDaemonSet);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(daemonSet) {\n try {\n const params = new KubernetesCommonParams();\n params.id = daemonSet.Name;\n const namespace = daemonSet.Namespace;\n await this.KubernetesDaemonSets(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to remove daemonset', err);\n }\n }\n\n delete(daemonSet) {\n return this.$async(this.deleteAsync, daemonSet);\n }\n}\n\nexport default KubernetesDaemonSetService;\nangular.module('portainer.kubernetes').service('KubernetesDaemonSetService', KubernetesDaemonSetService);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport KubernetesDeploymentConverter from 'Kubernetes/converters/deployment';\n\nclass KubernetesDeploymentService {\n /* @ngInject */\n constructor($async, KubernetesDeployments) {\n this.$async = $async;\n this.KubernetesDeployments = KubernetesDeployments;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([this.KubernetesDeployments(namespace).get(params).$promise, this.KubernetesDeployments(namespace).getYaml(params).$promise]);\n const res = {\n Raw: raw,\n Yaml: yaml.data,\n };\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve Deployment', err);\n }\n }\n\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesDeployments(namespace).get().$promise;\n return data.items;\n } catch (err) {\n throw new PortainerError('Unable to retrieve Deployments', err);\n }\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * CREATE\n */\n async createAsync(deployment) {\n try {\n const params = {};\n const payload = KubernetesDeploymentConverter.createPayload(deployment);\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesDeployments(namespace).create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create deployment', err);\n }\n }\n\n create(deployment) {\n return this.$async(this.createAsync, deployment);\n }\n\n /**\n * PATCH\n */\n async patchAsync(oldDeployment, newDeployment) {\n try {\n const params = new KubernetesCommonParams();\n params.id = newDeployment.Name;\n const namespace = newDeployment.Namespace;\n const payload = KubernetesDeploymentConverter.patchPayload(oldDeployment, newDeployment);\n if (!payload.length) {\n return;\n }\n const data = await this.KubernetesDeployments(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to patch deployment', err);\n }\n }\n\n patch(oldDeployment, newDeployment) {\n return this.$async(this.patchAsync, oldDeployment, newDeployment);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(deployment) {\n try {\n const params = new KubernetesCommonParams();\n params.id = deployment.Name;\n const namespace = deployment.Namespace;\n await this.KubernetesDeployments(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to remove deployment', err);\n }\n }\n\n delete(deployment) {\n return this.$async(this.deleteAsync, deployment);\n }\n}\n\nexport default KubernetesDeploymentService;\nangular.module('portainer.kubernetes').service('KubernetesDeploymentService', KubernetesDeploymentService);\n","import _ from 'lodash-es';\nimport angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport KubernetesEventConverter from 'Kubernetes/converters/event';\n\nclass KubernetesEventService {\n /* @ngInject */\n constructor($async, KubernetesEvents) {\n this.$async = $async;\n this.KubernetesEvents = KubernetesEvents;\n\n this.getAllAsync = this.getAllAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesEvents(namespace).get().$promise;\n const res = _.map(data.items, (item) => KubernetesEventConverter.apiToEvent(item));\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve events', err);\n }\n }\n\n get(namespace) {\n return this.$async(this.getAllAsync, namespace);\n }\n}\n\nexport default KubernetesEventService;\nangular.module('portainer.kubernetes').service('KubernetesEventService', KubernetesEventService);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\n\nclass KubernetesHealthService {\n /* @ngInject */\n constructor($async, KubernetesHealth) {\n this.$async = $async;\n this.KubernetesHealth = KubernetesHealth;\n\n this.pingAsync = this.pingAsync.bind(this);\n }\n\n /**\n * PING\n */\n async pingAsync(endpointID) {\n try {\n return await this.KubernetesHealth.ping({ id: endpointID }).$promise;\n } catch (err) {\n throw new PortainerError('Unable to retrieve environment health', err);\n }\n }\n\n ping(endpointID) {\n return this.$async(this.pingAsync, endpointID);\n }\n}\n\nexport default KubernetesHealthService;\nangular.module('portainer.kubernetes').service('KubernetesHealthService', KubernetesHealthService);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport KubernetesNamespaceConverter from 'Kubernetes/converters/namespace';\nimport { updateNamespaces } from 'Kubernetes/store/namespace';\nimport $allSettled from 'Portainer/services/allSettled';\n\nclass KubernetesNamespaceService {\n /* @ngInject */\n constructor($async, KubernetesNamespaces, LocalStorage) {\n this.$async = $async;\n this.KubernetesNamespaces = KubernetesNamespaces;\n this.LocalStorage = LocalStorage;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n this.getJSONAsync = this.getJSONAsync.bind(this);\n this.updateFinalizeAsync = this.updateFinalizeAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n await this.KubernetesNamespaces().status(params).$promise;\n const [raw, yaml] = await Promise.all([this.KubernetesNamespaces().get(params).$promise, this.KubernetesNamespaces().getYaml(params).$promise]);\n const ns = KubernetesNamespaceConverter.apiToNamespace(raw, yaml);\n updateNamespaces([ns]);\n return ns;\n } catch (err) {\n throw new PortainerError('Unable to retrieve namespace', err);\n }\n }\n\n /**\n * GET namesspace in JSON format\n */\n async getJSONAsync(name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n await this.KubernetesNamespaces().status(params).$promise;\n return await this.KubernetesNamespaces().getJSON(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to retrieve namespace', err);\n }\n }\n\n /**\n * Update finalize\n */\n async updateFinalizeAsync(namespace) {\n try {\n return await this.KubernetesNamespaces().update({ id: namespace.metadata.name, action: 'finalize' }, namespace).$promise;\n } catch (err) {\n throw new PortainerError('Unable to update namespace', err);\n }\n }\n\n async getAllAsync() {\n try {\n // get the list of all namespaces (RBAC allows users to see the list of namespaces)\n const data = await this.KubernetesNamespaces().get().$promise;\n // get the status of each namespace (RBAC will give permission denied for status of unauthorised namespaces)\n const promises = data.items.map((item) => this.KubernetesNamespaces().status({ id: item.metadata.name }).$promise);\n const namespaces = await $allSettled(promises);\n // only return namespaces if the user has access to namespaces\n const allNamespaces = namespaces.fulfilled.map((item) => {\n return KubernetesNamespaceConverter.apiToNamespace(item);\n });\n updateNamespaces(allNamespaces);\n return allNamespaces;\n } catch (err) {\n throw new PortainerError('Unable to retrieve namespaces', err);\n }\n }\n\n async get(name) {\n if (name) {\n return this.$async(this.getAsync, name);\n }\n const allowedNamespaces = await this.getAllAsync();\n updateNamespaces(allowedNamespaces);\n return allowedNamespaces;\n }\n\n /**\n * CREATE\n */\n async createAsync(namespace) {\n try {\n const payload = KubernetesNamespaceConverter.createPayload(namespace);\n const params = {};\n const data = await this.KubernetesNamespaces().create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create namespace', err);\n }\n }\n\n create(namespace) {\n return this.$async(this.createAsync, namespace);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(namespace) {\n try {\n const params = new KubernetesCommonParams();\n params.id = namespace.Name;\n await this.KubernetesNamespaces().delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to delete namespace', err);\n }\n }\n\n delete(namespace) {\n return this.$async(this.deleteAsync, namespace);\n }\n}\n\nexport default KubernetesNamespaceService;\nangular.module('portainer.kubernetes').service('KubernetesNamespaceService', KubernetesNamespaceService);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesNodesLimits } from 'Kubernetes/models/nodes-limits/models';\n\nclass KubernetesNodesLimitsService {\n /* @ngInject */\n constructor(KubernetesNodesLimits) {\n this.KubernetesNodesLimits = KubernetesNodesLimits;\n }\n\n /**\n * GET\n */\n async get() {\n try {\n const nodesLimits = await this.KubernetesNodesLimits.get().$promise;\n return new KubernetesNodesLimits(nodesLimits.data);\n } catch (err) {\n throw new PortainerError('Unable to retrieve nodes limits', err);\n }\n }\n}\n\nexport default KubernetesNodesLimitsService;\nangular.module('portainer.kubernetes').service('KubernetesNodesLimitsService', KubernetesNodesLimitsService);\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport PortainerError from 'Portainer/error';\nimport KubernetesPersistentVolumeClaimConverter from 'Kubernetes/converters/persistentVolumeClaim';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\n\nclass KubernetesPersistentVolumeClaimService {\n /* @ngInject */\n constructor($async, KubernetesPersistentVolumeClaims) {\n this.$async = $async;\n this.KubernetesPersistentVolumeClaims = KubernetesPersistentVolumeClaims;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n async getAsync(namespace, storageClasses, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([\n this.KubernetesPersistentVolumeClaims(namespace).get(params).$promise,\n this.KubernetesPersistentVolumeClaims(namespace).getYaml(params).$promise,\n ]);\n\n return KubernetesPersistentVolumeClaimConverter.apiToPersistentVolumeClaim(raw, storageClasses, yaml);\n } catch (err) {\n throw new PortainerError('Unable to retrieve persistent volume claim', err);\n }\n }\n\n async getAllAsync(namespace, storageClasses) {\n try {\n const data = await this.KubernetesPersistentVolumeClaims(namespace).get().$promise;\n\n return _.map(data.items, (item) => KubernetesPersistentVolumeClaimConverter.apiToPersistentVolumeClaim(item, storageClasses));\n } catch (err) {\n throw new PortainerError('Unable to retrieve persistent volume claims', err);\n }\n }\n\n get(namespace, storageClasses, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, storageClasses, name);\n }\n return this.$async(this.getAllAsync, namespace, storageClasses);\n }\n\n /**\n * CREATE\n */\n async createAsync(claim) {\n try {\n const params = {};\n const payload = KubernetesPersistentVolumeClaimConverter.createPayload(claim);\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesPersistentVolumeClaims(namespace).create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create persistent volume claim', err);\n }\n }\n\n create(claim) {\n return this.$async(this.createAsync, claim);\n }\n\n /**\n * PATCH\n */\n async patchAsync(oldPVC, newPVC) {\n try {\n const params = new KubernetesCommonParams();\n params.id = newPVC.Name;\n const namespace = newPVC.Namespace;\n const payload = KubernetesPersistentVolumeClaimConverter.patchPayload(oldPVC, newPVC);\n if (!payload.length) {\n return;\n }\n const data = await this.KubernetesPersistentVolumeClaims(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to patch persistent volume claim', err);\n }\n }\n\n patch(oldPVC, newPVC) {\n return this.$async(this.patchAsync, oldPVC, newPVC);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(pvc) {\n try {\n const params = new KubernetesCommonParams();\n params.id = pvc.Name;\n const namespace = pvc.Namespace;\n await this.KubernetesPersistentVolumeClaims(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to delete persistent volume claim', err);\n }\n }\n\n delete(pvc) {\n return this.$async(this.deleteAsync, pvc);\n }\n}\n\nexport default KubernetesPersistentVolumeClaimService;\nangular.module('portainer.kubernetes').service('KubernetesPersistentVolumeClaimService', KubernetesPersistentVolumeClaimService);\n","import _ from 'lodash-es';\n\nimport angular from 'angular';\nimport KubernetesResourcePoolConverter from 'Kubernetes/converters/resourcePool';\nimport KubernetesResourceQuotaHelper from 'Kubernetes/helpers/resourceQuotaHelper';\n\n/* @ngInject */\nexport function KubernetesResourcePoolService(\n $async,\n EndpointService,\n KubernetesNamespaceService,\n KubernetesResourceQuotaService,\n KubernetesIngressService,\n KubernetesPortainerNamespaces\n) {\n return {\n get,\n create,\n patch,\n delete: _delete,\n toggleSystem,\n };\n\n // getting quota isn't a costly operation for one namespace, so we can get it by default\n async function getOne(name, { getQuota = true }) {\n const namespace = await KubernetesNamespaceService.get(name);\n const pool = KubernetesResourcePoolConverter.apiToResourcePool(namespace);\n if (getQuota) {\n const [quotaAttempt] = await Promise.allSettled([KubernetesResourceQuotaService.get(name, KubernetesResourceQuotaHelper.generateResourceQuotaName(name))]);\n if (quotaAttempt.status === 'fulfilled') {\n pool.Quota = quotaAttempt.value;\n pool.Yaml += '---\\n' + quotaAttempt.value.Yaml;\n }\n }\n return pool;\n }\n\n // getting the quota for all namespaces is costly by default, so disable getting it by default\n async function getAll({ getQuota = false }) {\n const namespaces = await KubernetesNamespaceService.get();\n const pools = await Promise.all(\n _.map(namespaces, async (namespace) => {\n const name = namespace.Name;\n const pool = KubernetesResourcePoolConverter.apiToResourcePool(namespace);\n if (getQuota) {\n const [quotaAttempt] = await Promise.allSettled([KubernetesResourceQuotaService.get(name, KubernetesResourceQuotaHelper.generateResourceQuotaName(name))]);\n if (quotaAttempt.status === 'fulfilled') {\n pool.Quota = quotaAttempt.value;\n pool.Yaml += '---\\n' + quotaAttempt.value.Yaml;\n }\n }\n return pool;\n })\n );\n return pools;\n }\n\n function get(name, options = {}) {\n if (name) {\n return $async(getOne, name, options);\n }\n return $async(getAll, options);\n }\n\n function create(formValues) {\n return $async(async () => {\n const [namespace, quota, ingresses, registries] = KubernetesResourcePoolConverter.formValuesToResourcePool(formValues);\n await KubernetesNamespaceService.create(namespace);\n\n if (quota) {\n await KubernetesResourceQuotaService.create(quota);\n }\n const ingressPromises = _.map(ingresses, (i) => KubernetesIngressService.create(i));\n await Promise.all(ingressPromises);\n\n const endpointId = formValues.EndpointId;\n const registriesPromises = _.map(registries, (r) => EndpointService.updateRegistryAccess(endpointId, r.Id, r.RegistryAccesses[endpointId]));\n await Promise.all(registriesPromises);\n });\n }\n\n function patch(oldFormValues, newFormValues) {\n return $async(async () => {\n const [, oldQuota, oldIngresses, oldRegistries] = KubernetesResourcePoolConverter.formValuesToResourcePool(oldFormValues);\n const [, newQuota, newIngresses, newRegistries] = KubernetesResourcePoolConverter.formValuesToResourcePool(newFormValues);\n\n if (oldQuota && newQuota) {\n await KubernetesResourceQuotaService.patch(oldQuota, newQuota);\n } else if (!oldQuota && newQuota) {\n await KubernetesResourceQuotaService.create(newQuota);\n } else if (oldQuota && !newQuota) {\n await KubernetesResourceQuotaService.delete(oldQuota);\n }\n\n const create = _.filter(newIngresses, (ing) => !_.find(oldIngresses, { Name: ing.Name }));\n const del = _.filter(oldIngresses, (ing) => !_.find(newIngresses, { Name: ing.Name }));\n const patch = _.without(newIngresses, ...create);\n\n const createPromises = _.map(create, (i) => KubernetesIngressService.create(i));\n const delPromises = _.map(del, (i) => KubernetesIngressService.delete(i.Namespace, i.Name));\n const patchPromises = _.map(patch, (ing) => {\n const old = _.find(oldIngresses, { Name: ing.Name });\n ing.Paths = angular.copy(old.Paths);\n ing.PreviousHost = old.Host;\n return KubernetesIngressService.patch(old, ing);\n });\n\n const promises = _.flatten([createPromises, delPromises, patchPromises]);\n await Promise.all(promises);\n\n const endpointId = newFormValues.EndpointId;\n const keptRegistries = _.intersectionBy(oldRegistries, newRegistries, 'Id');\n const removedRegistries = _.without(oldRegistries, ...keptRegistries);\n\n const newRegistriesPromises = _.map(newRegistries, (r) => EndpointService.updateRegistryAccess(endpointId, r.Id, r.RegistryAccesses[endpointId]));\n const removedRegistriesPromises = _.map(removedRegistries, (r) => {\n _.pull(r.RegistryAccesses[endpointId].Namespaces, newFormValues.Name);\n return EndpointService.updateRegistryAccess(endpointId, r.Id, r.RegistryAccesses[endpointId]);\n });\n\n await Promise.all(_.concat(newRegistriesPromises, removedRegistriesPromises));\n });\n }\n\n function _delete(pool) {\n return $async(async () => {\n await KubernetesNamespaceService.delete(pool.Namespace);\n });\n }\n\n function toggleSystem(endpointId, namespaceName, system) {\n return KubernetesPortainerNamespaces.toggleSystem({ namespaceName, endpointId }, { system }).$promise;\n }\n}\n\nangular.module('portainer.kubernetes').service('KubernetesResourcePoolService', KubernetesResourcePoolService);\n","import _ from 'lodash-es';\n\nimport angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport KubernetesResourceQuotaConverter from 'Kubernetes/converters/resourceQuota';\n\n/* @ngInject */\nexport function KubernetesResourceQuotaService($async, KubernetesResourceQuotas) {\n return {\n get,\n create,\n patch,\n delete: _delete,\n };\n\n async function getOne(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([KubernetesResourceQuotas(namespace).get(params).$promise, KubernetesResourceQuotas(namespace).getYaml(params).$promise]);\n return KubernetesResourceQuotaConverter.apiToResourceQuota(raw, yaml);\n } catch (err) {\n throw new PortainerError('Unable to retrieve resource quota', err);\n }\n }\n\n async function getAll(namespace) {\n try {\n const data = await KubernetesResourceQuotas(namespace).get().$promise;\n return _.map(data.items, (item) => KubernetesResourceQuotaConverter.apiToResourceQuota(item));\n } catch (err) {\n throw new PortainerError('Unable to retrieve resource quotas', err);\n }\n }\n\n function get(namespace, name) {\n if (name) {\n return $async(getOne, namespace, name);\n }\n return $async(getAll, namespace);\n }\n\n function create(quota) {\n return $async(async () => {\n try {\n const payload = KubernetesResourceQuotaConverter.createPayload(quota);\n const namespace = payload.metadata.namespace;\n const params = {};\n const data = await KubernetesResourceQuotas(namespace).create(params, payload).$promise;\n return KubernetesResourceQuotaConverter.apiToResourceQuota(data);\n } catch (err) {\n throw new PortainerError('Unable to create quota', err);\n }\n });\n }\n\n function patch(oldQuota, newQuota) {\n return $async(async () => {\n try {\n const params = new KubernetesCommonParams();\n params.id = newQuota.Name;\n const namespace = newQuota.Namespace;\n const payload = KubernetesResourceQuotaConverter.patchPayload(oldQuota, newQuota);\n if (!payload.length) {\n return;\n }\n const data = await KubernetesResourceQuotas(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to update resource quota', err);\n }\n });\n }\n\n function _delete(quota) {\n return $async(async () => {\n try {\n const params = new KubernetesCommonParams();\n params.id = quota.Name;\n await KubernetesResourceQuotas(quota.Namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to delete quota', err);\n }\n });\n }\n}\n\nangular.module('portainer.kubernetes').service('KubernetesResourceQuotaService', KubernetesResourceQuotaService);\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport PortainerError from 'Portainer/error';\nimport KubernetesSecretConverter from 'Kubernetes/converters/secret';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\n\nclass KubernetesSecretService {\n /* @ngInject */\n constructor($async, KubernetesSecrets) {\n this.$async = $async;\n this.KubernetesSecrets = KubernetesSecrets;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.updateAsync = this.updateAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([this.KubernetesSecrets(namespace).get(params).$promise, this.KubernetesSecrets(namespace).getYaml(params).$promise]);\n const secret = KubernetesSecretConverter.apiToSecret(raw, yaml);\n return secret;\n } catch (err) {\n throw new PortainerError('Unable to retrieve secret', err);\n }\n }\n\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesSecrets(namespace).get().$promise;\n return _.map(data.items, (item) => KubernetesSecretConverter.apiToSecret(item));\n } catch (err) {\n throw new PortainerError('Unable to retrieve secrets', err);\n }\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * CREATE\n */\n async createAsync(secret) {\n try {\n const payload = KubernetesSecretConverter.createPayload(secret);\n const namespace = payload.metadata.namespace;\n const params = {};\n const data = await this.KubernetesSecrets(namespace).create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create secret', err);\n }\n }\n\n create(secret) {\n return this.$async(this.createAsync, secret);\n }\n\n /**\n * UPDATE\n */\n async updateAsync(secret) {\n try {\n const payload = KubernetesSecretConverter.updatePayload(secret);\n const params = new KubernetesCommonParams();\n params.id = payload.metadata.name;\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesSecrets(namespace).update(params, payload).$promise;\n return KubernetesSecretConverter.apiToSecret(data);\n } catch (err) {\n throw new PortainerError('Unable to update secret', err);\n }\n }\n\n update(secret) {\n return this.$async(this.updateAsync, secret);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(secret) {\n try {\n const params = new KubernetesCommonParams();\n params.id = secret.Name;\n const namespace = secret.Namespace;\n await this.KubernetesSecrets(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to delete secret', err);\n }\n }\n\n delete(secret) {\n return this.$async(this.deleteAsync, secret);\n }\n}\n\nexport default KubernetesSecretService;\nangular.module('portainer.kubernetes').service('KubernetesSecretService', KubernetesSecretService);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport KubernetesServiceConverter from 'Kubernetes/converters/service';\n\nclass KubernetesServiceService {\n /* @ngInject */\n constructor($async, KubernetesServices) {\n this.$async = $async;\n this.KubernetesServices = KubernetesServices;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n this.deleteSingleAsync = this.deleteSingleAsync.bind(this);\n this.deleteAllAsync = this.deleteAllAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([this.KubernetesServices(namespace).get(params).$promise, this.KubernetesServices(namespace).getYaml(params).$promise]);\n const res = {\n Raw: raw,\n Yaml: yaml.data,\n };\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve service', err);\n }\n }\n\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesServices(namespace).get().$promise;\n return data.items;\n } catch (err) {\n throw new PortainerError('Unable to retrieve services', err);\n }\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * CREATE\n */\n async createAsync(service) {\n try {\n const params = {};\n const payload = KubernetesServiceConverter.createPayload(service);\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesServices(namespace).create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create service', err);\n }\n }\n\n create(service) {\n return this.$async(this.createAsync, service);\n }\n\n /**\n * PATCH\n */\n async patchAsync(oldService, newService) {\n try {\n const params = new KubernetesCommonParams();\n params.id = newService.Name;\n const namespace = newService.Namespace;\n const payload = KubernetesServiceConverter.patchPayload(oldService, newService);\n if (!payload.length) {\n return;\n }\n const data = await this.KubernetesServices(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to patch service', err);\n }\n }\n\n patch(oldService, newService) {\n return this.$async(this.patchAsync, oldService, newService);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(services) {\n services.forEach(async (service) => {\n try {\n const params = new KubernetesCommonParams();\n params.id = (service.metadata && service.metadata.name) || service.Name;\n const namespace = (service.metadata && service.metadata.namespace) || service.Namespace;\n await this.KubernetesServices(namespace).delete(params).$promise;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('unable to remove service', err);\n }\n });\n }\n\n delete(services) {\n return this.$async(this.deleteAsync, services);\n }\n\n async deleteAllAsync(formValuesServices) {\n formValuesServices.forEach(async (service) => {\n try {\n const params = new KubernetesCommonParams();\n params.id = service.Name;\n const namespace = service.Namespace;\n await this.KubernetesServices(namespace).delete(params).$promise;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('unable to remove service', err);\n }\n });\n }\n\n deleteAll(formValuesServices) {\n return this.$async(this.deleteAllAsync, formValuesServices);\n }\n\n async deleteSingleAsync(service) {\n try {\n const params = new KubernetesCommonParams();\n params.id = service.Name;\n const namespace = service.Namespace;\n await this.KubernetesServices(namespace).delete(params).$promise;\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('unable to remove service', err);\n }\n }\n\n deleteSingle(service) {\n return this.$async(this.deleteSingleAsync, service);\n }\n}\n\nexport default KubernetesServiceService;\nangular.module('portainer.kubernetes').service('KubernetesServiceService', KubernetesServiceService);\n","import _ from 'lodash-es';\nimport angular from 'angular';\n\nclass KubernetesStackService {\n /* @ngInject */\n constructor($async, KubernetesApplicationService) {\n this.$async = $async;\n this.KubernetesApplicationService = KubernetesApplicationService;\n\n this.getAllAsync = this.getAllAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAllAsync(namespace) {\n const applications = await this.KubernetesApplicationService.get(namespace);\n const stacks = _.map(applications, (item) => item.StackName);\n return _.uniq(_.without(stacks, '-', ''));\n }\n\n get(namespace) {\n return this.$async(this.getAllAsync, namespace);\n }\n}\n\nexport default KubernetesStackService;\nangular.module('portainer.kubernetes').service('KubernetesStackService', KubernetesStackService);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\nimport KubernetesStatefulSetConverter from 'Kubernetes/converters/statefulSet';\n\nclass KubernetesStatefulSetService {\n /* @ngInject */\n constructor($async, KubernetesStatefulSets, KubernetesServiceService) {\n this.$async = $async;\n this.KubernetesStatefulSets = KubernetesStatefulSets;\n this.KubernetesServiceService = KubernetesServiceService;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.createAsync = this.createAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(namespace, name) {\n try {\n const params = new KubernetesCommonParams();\n params.id = name;\n const [raw, yaml] = await Promise.all([this.KubernetesStatefulSets(namespace).get(params).$promise, this.KubernetesStatefulSets(namespace).getYaml(params).$promise]);\n const res = {\n Raw: raw,\n Yaml: yaml.data,\n };\n const headlessServiceName = raw.spec.serviceName;\n if (headlessServiceName) {\n try {\n const headlessService = await this.KubernetesServiceService.get(namespace, headlessServiceName);\n res.Yaml += '---\\n' + headlessService.Yaml;\n } catch (error) {\n // if has error means headless service does not exist\n // skip error as we don't care in this case\n }\n }\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve StatefulSet', err);\n }\n }\n\n async getAllAsync(namespace) {\n try {\n const data = await this.KubernetesStatefulSets(namespace).get().$promise;\n return data.items;\n } catch (err) {\n throw new PortainerError('Unable to retrieve StatefulSets', err);\n }\n }\n\n get(namespace, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, name);\n }\n return this.$async(this.getAllAsync, namespace);\n }\n\n /**\n * CREATE\n */\n async createAsync(statefulSet) {\n try {\n const params = {};\n const payload = KubernetesStatefulSetConverter.createPayload(statefulSet);\n const namespace = payload.metadata.namespace;\n const data = await this.KubernetesStatefulSets(namespace).create(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to create statefulSet', err);\n }\n }\n\n create(statefulSet) {\n return this.$async(this.createAsync, statefulSet);\n }\n\n /**\n * PATCH\n */\n async patchAsync(oldStatefulSet, newStatefulSet) {\n try {\n const params = new KubernetesCommonParams();\n params.id = newStatefulSet.Name;\n const namespace = newStatefulSet.Namespace;\n const payload = KubernetesStatefulSetConverter.patchPayload(oldStatefulSet, newStatefulSet);\n if (!payload.length) {\n return;\n }\n\n const data = await this.KubernetesStatefulSets(namespace).patch(params, payload).$promise;\n return data;\n } catch (err) {\n throw new PortainerError('Unable to patch statefulSet', err);\n }\n }\n\n patch(oldStatefulSet, newStatefulSet) {\n return this.$async(this.patchAsync, oldStatefulSet, newStatefulSet);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(statefulSet) {\n try {\n const params = new KubernetesCommonParams();\n params.id = statefulSet.Name;\n const namespace = statefulSet.Namespace;\n await this.KubernetesStatefulSets(namespace).delete(params).$promise;\n } catch (err) {\n throw new PortainerError('Unable to remove statefulSet', err);\n }\n }\n\n delete(statefulSet) {\n return this.$async(this.deleteAsync, statefulSet);\n }\n}\n\nexport default KubernetesStatefulSetService;\nangular.module('portainer.kubernetes').service('KubernetesStatefulSetService', KubernetesStatefulSetService);\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport PortainerError from 'Portainer/error';\nimport KubernetesStorageClassConverter from 'Kubernetes/converters/storageClass';\nimport { KubernetesCommonParams } from 'Kubernetes/models/common/params';\n\nclass KubernetesStorageService {\n /* @ngInject */\n constructor($async, KubernetesStorage) {\n this.$async = $async;\n this.KubernetesStorage = KubernetesStorage;\n\n this.getAsync = this.getAsync.bind(this);\n this.patchAsync = this.patchAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(endpointId) {\n try {\n const params = {\n endpointId: endpointId,\n };\n const classes = await this.KubernetesStorage().get(params).$promise;\n const res = _.map(classes.items, (item) => KubernetesStorageClassConverter.apiToStorageClass(item));\n return res;\n } catch (err) {\n throw new PortainerError('Unable to retrieve storage classes', err);\n }\n }\n\n get(endpointId) {\n return this.$async(this.getAsync, endpointId);\n }\n\n /**\n * PATCH\n */\n async patchAsync(endpointId, oldStorageClass, newStorageClass) {\n try {\n const params = new KubernetesCommonParams();\n params.id = newStorageClass.Name;\n params.endpointId = endpointId;\n const payload = KubernetesStorageClassConverter.patchPayload(oldStorageClass, newStorageClass);\n await this.KubernetesStorage().patch(params, payload).$promise;\n } catch (err) {\n throw new PortainerError('Unable to patch storage class', err);\n }\n }\n\n patch(endpointId, oldStorageClass, newStorageClass) {\n return this.$async(this.patchAsync, endpointId, oldStorageClass, newStorageClass);\n }\n}\n\nexport default KubernetesStorageService;\nangular.module('portainer.kubernetes').service('KubernetesStorageService', KubernetesStorageService);\n","import angular from 'angular';\nimport _ from 'lodash-es';\n\nimport KubernetesVolumeConverter from 'Kubernetes/converters/volume';\n\nclass KubernetesVolumeService {\n /* @ngInject */\n constructor($async, KubernetesResourcePoolService, KubernetesApplicationService, KubernetesPersistentVolumeClaimService) {\n this.$async = $async;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesPersistentVolumeClaimService = KubernetesPersistentVolumeClaimService;\n\n this.getAsync = this.getAsync.bind(this);\n this.getAllAsync = this.getAllAsync.bind(this);\n this.deleteAsync = this.deleteAsync.bind(this);\n }\n\n /**\n * GET\n */\n async getAsync(namespace, storageClasses, name) {\n const [pvc, pool] = await Promise.all([this.KubernetesPersistentVolumeClaimService.get(namespace, storageClasses, name), this.KubernetesResourcePoolService.get(namespace)]);\n return KubernetesVolumeConverter.pvcToVolume(pvc, pool);\n }\n\n async getAllAsync(namespace, storageClasses) {\n const data = await this.KubernetesResourcePoolService.get(namespace);\n const pools = data instanceof Array ? data : [data];\n const res = await Promise.all(\n _.map(pools, async (pool) => {\n const pvcs = await this.KubernetesPersistentVolumeClaimService.get(pool.Namespace.Name, storageClasses);\n return _.map(pvcs, (pvc) => KubernetesVolumeConverter.pvcToVolume(pvc, pool));\n })\n );\n return _.flatten(res);\n }\n\n get(namespace, storageClasses, name) {\n if (name) {\n return this.$async(this.getAsync, namespace, storageClasses, name);\n }\n return this.$async(this.getAllAsync, namespace, storageClasses);\n }\n\n /**\n * DELETE\n */\n async deleteAsync(volume) {\n await this.KubernetesPersistentVolumeClaimService.delete(volume.PersistentVolumeClaim);\n }\n\n delete(volume) {\n return this.$async(this.deleteAsync, volume);\n }\n}\n\nexport default KubernetesVolumeService;\nangular.module('portainer.kubernetes').service('KubernetesVolumeService', KubernetesVolumeService);\n","// singleton pattern as:\n// * we don't want to use AngularJS DI to fetch the single instance\n// * we need to use the Store in static functions / non-instanciated classes\nconst storeNamespaces = {};\n\n/**\n * Check if a namespace of the store is system or not\n * @param {String} name Namespace name\n * @returns Boolean\n */\nexport function isSystem(name) {\n return storeNamespaces[name] && storeNamespaces[name].IsSystem;\n}\n\n/**\n * Called from KubernetesNamespaceService.get()\n * @param {KubernetesNamespace[]} namespaces list of namespaces to update in Store\n */\nexport function updateNamespaces(namespaces) {\n namespaces.forEach((ns) => (storeNamespaces[ns.Name] = ns));\n}\n","const autoNgTemplateLoaderTemplate1 = require('./applications.html');\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesApplicationsController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n endpoint: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport KubernetesStackHelper from 'Kubernetes/helpers/stackHelper';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport KubernetesConfigurationHelper from 'Kubernetes/helpers/configurationHelper';\nimport { KubernetesApplicationTypes } from 'Kubernetes/models/application/models';\nimport { KubernetesPortainerApplicationStackNameLabel } from 'Kubernetes/models/application/models';\nimport { confirmDelete } from '@@/modals/confirm';\n\nclass KubernetesApplicationsController {\n /* @ngInject */\n constructor(\n $async,\n $state,\n $scope,\n Authentication,\n Notifications,\n KubernetesApplicationService,\n HelmService,\n KubernetesConfigurationService,\n LocalStorage,\n StackService,\n KubernetesNamespaceService\n ) {\n this.$async = $async;\n this.$state = $state;\n this.$scope = $scope;\n this.Authentication = Authentication;\n this.Notifications = Notifications;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.HelmService = HelmService;\n this.KubernetesConfigurationService = KubernetesConfigurationService;\n this.Authentication = Authentication;\n this.LocalStorage = LocalStorage;\n this.StackService = StackService;\n this.KubernetesNamespaceService = KubernetesNamespaceService;\n\n this.onInit = this.onInit.bind(this);\n this.getApplications = this.getApplications.bind(this);\n this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n this.removeAction = this.removeAction.bind(this);\n this.removeActionAsync = this.removeActionAsync.bind(this);\n this.removeStacksAction = this.removeStacksAction.bind(this);\n this.removeStacksActionAsync = this.removeStacksActionAsync.bind(this);\n this.onPublishingModeClick = this.onPublishingModeClick.bind(this);\n this.onChangeNamespaceDropdown = this.onChangeNamespaceDropdown.bind(this);\n this.setSystemResources = this.setSystemResources.bind(this);\n }\n\n selectTab(index) {\n this.LocalStorage.storeActiveTab('applications', index);\n }\n\n async removeStacksActionAsync(selectedItems) {\n let actionCount = selectedItems.length;\n for (const stack of selectedItems) {\n try {\n const isAppFormCreated = stack.Applications.some((x) => !x.ApplicationKind);\n\n if (isAppFormCreated) {\n const promises = _.map(stack.Applications, (app) => this.KubernetesApplicationService.delete(app));\n await Promise.all(promises);\n } else {\n const application = stack.Applications.find((x) => x.StackId !== null);\n if (application && application.StackId) {\n await this.StackService.remove({ Id: application.StackId }, false, this.endpoint.Id);\n }\n }\n\n this.Notifications.success('Stack successfully removed', stack.Name);\n _.remove(this.state.stacks, { Name: stack.Name });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove stack');\n } finally {\n --actionCount;\n if (actionCount === 0) {\n this.$state.reload(this.$state.current);\n }\n }\n }\n }\n\n removeStacksAction(selectedItems) {\n confirmDelete('Are you sure that you want to remove the selected stack(s) ? This will remove all the applications associated to the stack(s).').then((confirmed) => {\n if (confirmed) {\n return this.$async(this.removeStacksActionAsync, selectedItems);\n }\n });\n }\n\n async removeActionAsync(selectedItems) {\n let actionCount = selectedItems.length;\n for (const application of selectedItems) {\n try {\n if (application.ApplicationType === KubernetesApplicationTypes.HELM) {\n await this.HelmService.uninstall(this.endpoint.Id, application);\n } else {\n await this.KubernetesApplicationService.delete(application);\n\n if (application.Metadata.labels[KubernetesPortainerApplicationStackNameLabel]) {\n // Update applications in stack\n const stack = this.state.stacks.find((x) => x.Name === application.StackName);\n const index = stack.Applications.indexOf(application);\n stack.Applications.splice(index, 1);\n\n // remove stack if no app left in the stack\n if (stack.Applications.length === 0 && application.StackId) {\n await this.StackService.remove({ Id: application.StackId }, false, this.endpoint.Id);\n }\n }\n }\n this.Notifications.success('Application successfully removed', application.Name);\n const index = this.state.applications.indexOf(application);\n this.state.applications.splice(index, 1);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove application');\n } finally {\n --actionCount;\n if (actionCount === 0) {\n this.$state.reload(this.$state.current);\n }\n }\n }\n }\n\n removeAction(selectedItems) {\n confirmDelete('Do you want to remove the selected application(s)?').then((confirmed) => {\n if (confirmed) {\n return this.$async(this.removeActionAsync, selectedItems);\n }\n });\n }\n\n onPublishingModeClick(application) {\n this.state.activeTab = 1;\n _.forEach(this.state.ports, (item) => {\n item.Expanded = false;\n item.Highlighted = false;\n if (item.Name === application.Name && item.Ports.length > 1) {\n item.Expanded = true;\n item.Highlighted = true;\n }\n });\n }\n\n onChangeNamespaceDropdown(namespaceName) {\n this.state.namespaceName = namespaceName;\n // save the selected namespaceName in local storage with the key 'kubernetes_namespace_filter_${environmentId}_${userID}'\n this.LocalStorage.storeNamespaceFilter(this.endpoint.Id, this.user.ID, namespaceName);\n return this.$async(this.getApplicationsAsync);\n }\n\n async getApplicationsAsync() {\n try {\n this.state.isAppsLoading = true;\n const [applications, configurations] = await Promise.all([\n this.KubernetesApplicationService.get(this.state.namespaceName),\n this.KubernetesConfigurationService.get(this.state.namespaceName),\n ]);\n const configuredApplications = KubernetesConfigurationHelper.getApplicationConfigurations(applications, configurations);\n const { helmApplications, nonHelmApplications } = KubernetesApplicationHelper.getNestedApplications(configuredApplications);\n\n this.state.applications = [...helmApplications, ...nonHelmApplications];\n this.state.stacks = KubernetesStackHelper.stacksFromApplications(applications);\n this.state.ports = KubernetesApplicationHelper.portMappingsFromApplications(applications);\n\n this.$scope.$apply();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve applications');\n } finally {\n this.state.isAppsLoading = false;\n }\n }\n\n setSystemResources(flag) {\n this.state.isSystemResources = flag;\n }\n\n getApplications() {\n return this.$async(this.getApplicationsAsync);\n }\n\n async onInit() {\n this.state = {\n activeTab: this.LocalStorage.getActiveTab('applications'),\n currentName: this.$state.$current.name,\n isAdmin: this.Authentication.isAdmin(),\n viewReady: false,\n applications: [],\n stacks: [],\n ports: [],\n namespaces: [],\n namespaceName: '',\n isSystemResources: undefined,\n };\n\n this.user = this.Authentication.getUserDetails();\n this.state.namespaces = await this.KubernetesNamespaceService.get();\n\n const savedNamespace = this.LocalStorage.getNamespaceFilter(this.endpoint.Id, this.user.ID); // could be null if not found, and '' if all namepsaces is selected\n const preferredNamespace = savedNamespace === null ? 'default' : savedNamespace;\n\n this.state.namespaces = this.state.namespaces.filter((n) => n.Status === 'Active');\n this.state.namespaces = _.sortBy(this.state.namespaces, 'Name');\n // set all namespaces ('') if there are no namespaces, or if all namespaces is selected\n if (!this.state.namespaces.length || preferredNamespace === '') {\n this.state.namespaceName = '';\n } else {\n // otherwise, set the preferred namespaceName if it exists, otherwise set the first namespaceName\n this.state.namespaceName = this.state.namespaces.find((n) => n.Name === preferredNamespace) ? preferredNamespace : this.state.namespaces[0].Name;\n }\n\n await this.getApplications();\n\n this.state.viewReady = true;\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n if (this.state.currentName !== this.$state.$current.name) {\n this.LocalStorage.storeActiveTab('applications', 0);\n }\n }\n}\n\nexport default KubernetesApplicationsController;\nangular.module('portainer.kubernetes').controller('KubernetesApplicationsController', KubernetesApplicationsController);\n","const autoNgTemplateLoaderTemplate1 = require('./createApplication.html');\n\nangular.module('portainer.kubernetes').component('kubernetesCreateApplicationView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesCreateApplicationController',\n controllerAs: 'ctrl',\n bindings: {\n endpoint: '<',\n },\n});\n","import { useState } from 'react';\n\nimport { Modal, openModal } from '@@/modals';\nimport { Button } from '@@/buttons';\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nfunction UpdateIngressPrompt({\n onSubmit,\n title,\n hasOneIngress,\n hasOnePort,\n}: {\n onSubmit: (value?: { noMatch: boolean }) => void;\n title: string;\n hasOneIngress: boolean;\n hasOnePort: boolean;\n}) {\n const [value, setValue] = useState(false);\n\n const rulePlural = !hasOneIngress ? 'rules' : 'rule';\n const noMatchSentence = !hasOnePort\n ? `Service ports in this application no longer match the ingress ${rulePlural}.`\n : `A service port in this application no longer matches the ingress ${rulePlural} which may break ingress rule paths.`;\n const inputLabel = `Update ingress ${rulePlural} to match the service port changes`;\n\n return (\n <Modal onDismiss={() => onSubmit()} aria-label={title}>\n <Modal.Header title={title} />\n\n <Modal.Body>\n <ul className=\"ml-3\">\n <li>Updating the application may cause a service interruption.</li>\n <li>{noMatchSentence}</li>\n </ul>\n\n <SwitchField\n name=\"noMatch\"\n label={inputLabel}\n checked={value}\n onChange={setValue}\n />\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => onSubmit({ noMatch: value })} color=\"primary\">\n Update\n </Button>\n </Modal.Footer>\n </Modal>\n );\n}\n\nexport function confirmUpdateAppIngress(\n ingressesToUpdate: Array<unknown>,\n servicePortsToUpdate: Array<unknown>\n) {\n const hasOneIngress = ingressesToUpdate.length === 1;\n const hasOnePort = servicePortsToUpdate.length === 1;\n\n return openModal(UpdateIngressPrompt, {\n title: 'Are you sure?',\n hasOneIngress,\n hasOnePort,\n });\n}\n","import { AlignJustify, Sliders } from 'lucide-react';\n\nimport { KubernetesApplicationPlacementTypes } from '@/kubernetes/models/application/models';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport const placementOptions: ReadonlyArray<BoxSelectorOption<number>> = [\n {\n id: 'placement_hard',\n value: KubernetesApplicationPlacementTypes.MANDATORY,\n icon: Sliders,\n iconType: 'badge',\n label: 'Mandatory',\n description: (\n <>\n Schedule this application <b>ONLY</b> on nodes that match <b>ALL</b>{' '}\n Rules\n </>\n ),\n },\n {\n id: 'placement_soft',\n value: KubernetesApplicationPlacementTypes.PREFERRED,\n icon: AlignJustify,\n iconType: 'badge',\n label: 'Preferred',\n description:\n 'Schedule this application on nodes that match the rules if possible',\n },\n] as const;\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\nimport * as JsonPatch from 'fast-json-patch';\nimport { RegistryTypes } from '@/portainer/models/registryTypes';\nimport { getServices } from '@/react/kubernetes/networks/services/service';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\n\nimport {\n KubernetesApplicationDataAccessPolicies,\n KubernetesApplicationDeploymentTypes,\n KubernetesApplicationPublishingTypes,\n KubernetesApplicationQuotaDefaults,\n KubernetesApplicationTypes,\n KubernetesApplicationPlacementTypes,\n KubernetesDeploymentTypes,\n} from 'Kubernetes/models/application/models';\nimport {\n KubernetesApplicationConfigurationFormValue,\n KubernetesApplicationConfigurationFormValueOverridenKey,\n KubernetesApplicationConfigurationFormValueOverridenKeyTypes,\n KubernetesApplicationEnvironmentVariableFormValue,\n KubernetesApplicationFormValues,\n KubernetesApplicationPersistedFolderFormValue,\n KubernetesApplicationPlacementFormValue,\n KubernetesFormValidationReferences,\n} from 'Kubernetes/models/application/formValues';\nimport KubernetesFormValidationHelper from 'Kubernetes/helpers/formValidationHelper';\nimport KubernetesApplicationConverter from 'Kubernetes/converters/application';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport { KubernetesServiceTypes } from 'Kubernetes/models/service/models';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application/index';\nimport KubernetesVolumeHelper from 'Kubernetes/helpers/volumeHelper';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { KubernetesNodeHelper } from 'Kubernetes/node/helper';\nimport { updateIngress, getIngresses } from '@/react/kubernetes/ingresses/service';\nimport { confirmUpdateAppIngress } from '@/react/kubernetes/applications/CreateView/UpdateIngressPrompt';\nimport { confirm, confirmUpdate, confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { ModalType } from '@@/modals';\nimport { placementOptions } from '@/react/kubernetes/applications/CreateView/placementTypes';\n\nclass KubernetesCreateApplicationController {\n /* #region CONSTRUCTOR */\n\n /* @ngInject */\n constructor(\n $scope,\n $async,\n $state,\n Notifications,\n Authentication,\n KubernetesResourcePoolService,\n KubernetesApplicationService,\n KubernetesStackService,\n KubernetesConfigurationService,\n KubernetesNodeService,\n KubernetesIngressService,\n KubernetesPersistentVolumeClaimService,\n KubernetesVolumeService,\n RegistryService,\n StackService,\n KubernetesNodesLimitsService\n ) {\n this.$scope = $scope;\n this.$async = $async;\n this.$state = $state;\n this.Notifications = Notifications;\n this.Authentication = Authentication;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesStackService = KubernetesStackService;\n this.KubernetesConfigurationService = KubernetesConfigurationService;\n this.KubernetesNodeService = KubernetesNodeService;\n this.KubernetesVolumeService = KubernetesVolumeService;\n this.KubernetesIngressService = KubernetesIngressService;\n this.KubernetesPersistentVolumeClaimService = KubernetesPersistentVolumeClaimService;\n this.RegistryService = RegistryService;\n this.StackService = StackService;\n this.KubernetesNodesLimitsService = KubernetesNodesLimitsService;\n\n this.ApplicationDeploymentTypes = KubernetesApplicationDeploymentTypes;\n this.ApplicationDataAccessPolicies = KubernetesApplicationDataAccessPolicies;\n this.ApplicationPublishingTypes = KubernetesApplicationPublishingTypes;\n this.ApplicationPlacementTypes = KubernetesApplicationPlacementTypes;\n this.ApplicationTypes = KubernetesApplicationTypes;\n this.ApplicationConfigurationFormValueOverridenKeyTypes = KubernetesApplicationConfigurationFormValueOverridenKeyTypes;\n this.ServiceTypes = KubernetesServiceTypes;\n this.KubernetesDeploymentTypes = KubernetesDeploymentTypes;\n\n this.placementOptions = placementOptions;\n\n this.state = {\n appType: this.KubernetesDeploymentTypes.APPLICATION_FORM,\n updateWebEditorInProgress: false,\n actionInProgress: false,\n useLoadBalancer: false,\n useServerMetrics: false,\n sliders: {\n cpu: {\n min: 0,\n max: 0,\n },\n memory: {\n min: 0,\n max: 0,\n },\n },\n nodes: {\n memory: 0,\n cpu: 0,\n },\n namespaceLimits: {\n memory: 0,\n cpu: 0,\n },\n resourcePoolHasQuota: false,\n viewReady: false,\n availableSizeUnits: ['MB', 'GB', 'TB'],\n alreadyExists: false,\n duplicates: {\n environmentVariables: new KubernetesFormValidationReferences(),\n persistedFolders: new KubernetesFormValidationReferences(),\n configMapPaths: new KubernetesFormValidationReferences(),\n secretPaths: new KubernetesFormValidationReferences(),\n existingVolumes: new KubernetesFormValidationReferences(),\n placements: new KubernetesFormValidationReferences(),\n },\n isEdit: this.$state.params.namespace && this.$state.params.name,\n persistedFoldersUseExistingVolumes: false,\n pullImageValidity: false,\n nodePortServices: [],\n };\n\n this.isAdmin = this.Authentication.isAdmin();\n\n this.editChanges = [];\n\n this.storageClasses = [];\n this.state.useLoadBalancer = false;\n this.state.useServerMetrics = false;\n\n this.formValues = new KubernetesApplicationFormValues();\n\n this.updateApplicationAsync = this.updateApplicationAsync.bind(this);\n this.deployApplicationAsync = this.deployApplicationAsync.bind(this);\n this.setPullImageValidity = this.setPullImageValidity.bind(this);\n this.onChangeFileContent = this.onChangeFileContent.bind(this);\n this.checkIngressesToUpdate = this.checkIngressesToUpdate.bind(this);\n this.confirmUpdateApplicationAsync = this.confirmUpdateApplicationAsync.bind(this);\n this.onDataAccessPolicyChange = this.onDataAccessPolicyChange.bind(this);\n this.onChangeDeploymentType = this.onChangeDeploymentType.bind(this);\n this.supportGlobalDeployment = this.supportGlobalDeployment.bind(this);\n this.onChangePlacementType = this.onChangePlacementType.bind(this);\n this.onServicesChange = this.onServicesChange.bind(this);\n }\n /* #endregion */\n\n onChangePlacementType(value) {\n this.$scope.$evalAsync(() => {\n this.formValues.PlacementType = value;\n });\n }\n\n onChangeDeploymentType(value) {\n this.$scope.$evalAsync(() => {\n this.formValues.DeploymentType = value;\n });\n }\n\n onChangeFileContent(value) {\n if (this.stackFileContent.replace(/(\\r\\n|\\n|\\r)/gm, '') !== value.replace(/(\\r\\n|\\n|\\r)/gm, '')) {\n this.state.isEditorDirty = true;\n this.stackFileContent = value;\n }\n }\n\n onDataAccessPolicyChange(value) {\n this.$scope.$evalAsync(() => {\n this.formValues.DataAccessPolicy = value;\n this.resetDeploymentType();\n });\n }\n\n async updateApplicationViaWebEditor() {\n return this.$async(async () => {\n try {\n const confirmed = await confirm({\n title: 'Are you sure?',\n message: 'Any changes to this application will be overridden and may cause a service interruption. Do you wish to continue?',\n confirmButton: buildConfirmButton('Update', 'warning'),\n modalType: ModalType.Warn,\n });\n if (!confirmed) {\n return;\n }\n\n this.state.updateWebEditorInProgress = true;\n await this.StackService.updateKubeStack({ EndpointId: this.endpoint.Id, Id: this.application.StackId }, { stackFile: this.stackFileContent });\n this.state.isEditorDirty = false;\n await this.$state.reload(this.$state.current);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed redeploying application');\n } finally {\n this.state.updateWebEditorInProgress = false;\n }\n });\n }\n\n async uiCanExit() {\n if (this.stackFileContent && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n setPullImageValidity(validity) {\n this.state.pullImageValidity = validity;\n }\n\n imageValidityIsValid() {\n return this.state.pullImageValidity || this.formValues.ImageModel.Registry.Type !== RegistryTypes.DOCKERHUB;\n }\n\n onChangeName() {\n const existingApplication = _.find(this.applications, { Name: this.formValues.Name });\n this.state.alreadyExists = (this.state.isEdit && existingApplication && this.application.Id !== existingApplication.Id) || (!this.state.isEdit && existingApplication);\n }\n\n /* #region AUTO SCALER UI MANAGEMENT */\n unselectAutoScaler() {\n if (this.formValues.DeploymentType === this.ApplicationDeploymentTypes.GLOBAL) {\n this.formValues.AutoScaler.IsUsed = false;\n }\n }\n /* #endregion */\n\n /* #region CONFIGMAP UI MANAGEMENT */\n addConfigMap() {\n let config = new KubernetesApplicationConfigurationFormValue();\n config.SelectedConfiguration = this.configMaps[0];\n this.formValues.ConfigMaps.push(config);\n }\n\n removeConfigMap(index) {\n this.formValues.ConfigMaps.splice(index, 1);\n this.onChangeConfigMapPath();\n }\n\n overrideConfigMap(index) {\n const config = this.formValues.ConfigMaps[index];\n config.Overriden = true;\n config.OverridenKeys = _.map(_.keys(config.SelectedConfiguration.Data), (key) => {\n const res = new KubernetesApplicationConfigurationFormValueOverridenKey();\n res.Key = key;\n return res;\n });\n }\n\n resetConfigMap(index) {\n const config = this.formValues.ConfigMaps[index];\n config.Overriden = false;\n config.OverridenKeys = [];\n this.onChangeConfigMapPath();\n }\n\n clearConfigMaps() {\n this.formValues.ConfigMaps = [];\n }\n\n onChangeConfigMapPath() {\n this.state.duplicates.configMapPaths.refs = [];\n\n const paths = _.reduce(\n this.formValues.ConfigMaps,\n (result, config) => {\n const uniqOverridenKeysPath = _.uniq(_.map(config.OverridenKeys, 'Path'));\n return _.concat(result, uniqOverridenKeysPath);\n },\n []\n );\n\n const duplicatePaths = KubernetesFormValidationHelper.getDuplicates(paths);\n\n _.forEach(this.formValues.ConfigMaps, (config, index) => {\n _.forEach(config.OverridenKeys, (overridenKey, keyIndex) => {\n const findPath = _.find(duplicatePaths, (path) => path === overridenKey.Path);\n if (findPath) {\n this.state.duplicates.configMapPaths.refs[index + '_' + keyIndex] = findPath;\n }\n });\n });\n\n this.state.duplicates.configMapPaths.hasRefs = Object.keys(this.state.duplicates.configMapPaths.refs).length > 0;\n }\n /* #endregion */\n\n /* #region SECRET UI MANAGEMENT */\n addSecret() {\n let secret = new KubernetesApplicationConfigurationFormValue();\n secret.SelectedConfiguration = this.secrets[0];\n this.formValues.Secrets.push(secret);\n }\n\n removeSecret(index) {\n this.formValues.Secrets.splice(index, 1);\n this.onChangeSecretPath();\n }\n\n overrideSecret(index) {\n const secret = this.formValues.Secrets[index];\n secret.Overriden = true;\n secret.OverridenKeys = _.map(_.keys(secret.SelectedConfiguration.Data), (key) => {\n const res = new KubernetesApplicationConfigurationFormValueOverridenKey();\n res.Key = key;\n return res;\n });\n }\n\n resetSecret(index) {\n const secret = this.formValues.Secrets[index];\n secret.Overriden = false;\n secret.OverridenKeys = [];\n this.onChangeSecretPath();\n }\n\n clearSecrets() {\n this.formValues.Secrets = [];\n }\n\n onChangeSecretPath() {\n this.state.duplicates.secretPaths.refs = [];\n\n const paths = _.reduce(\n this.formValues.Secrets,\n (result, secret) => {\n const uniqOverridenKeysPath = _.uniq(_.map(secret.OverridenKeys, 'Path'));\n return _.concat(result, uniqOverridenKeysPath);\n },\n []\n );\n\n const duplicatePaths = KubernetesFormValidationHelper.getDuplicates(paths);\n\n _.forEach(this.formValues.Secrets, (secret, index) => {\n _.forEach(secret.OverridenKeys, (overridenKey, keyIndex) => {\n const findPath = _.find(duplicatePaths, (path) => path === overridenKey.Path);\n if (findPath) {\n this.state.duplicates.secretPaths.refs[index + '_' + keyIndex] = findPath;\n }\n });\n });\n\n this.state.duplicates.secretPaths.hasRefs = Object.keys(this.state.duplicates.secretPaths.refs).length > 0;\n }\n /* #endregion */\n\n /* #region ENVIRONMENT UI MANAGEMENT */\n addEnvironmentVariable() {\n this.formValues.EnvironmentVariables.push(new KubernetesApplicationEnvironmentVariableFormValue());\n }\n\n restoreEnvironmentVariable(item) {\n item.NeedsDeletion = false;\n }\n\n removeEnvironmentVariable(item) {\n const index = this.formValues.EnvironmentVariables.indexOf(item);\n if (index !== -1) {\n const envVar = this.formValues.EnvironmentVariables[index];\n if (!envVar.IsNew) {\n envVar.NeedsDeletion = true;\n } else {\n this.formValues.EnvironmentVariables.splice(index, 1);\n }\n }\n this.onChangeEnvironmentName();\n }\n\n onChangeEnvironmentName() {\n this.state.duplicates.environmentVariables.refs = KubernetesFormValidationHelper.getDuplicates(_.map(this.formValues.EnvironmentVariables, 'Name'));\n this.state.duplicates.environmentVariables.hasRefs = Object.keys(this.state.duplicates.environmentVariables.refs).length > 0;\n }\n /* #endregion */\n\n /* #region PERSISTENT FOLDERS UI MANAGEMENT */\n addPersistedFolder() {\n let storageClass = {};\n if (this.storageClasses.length > 0) {\n storageClass = this.storageClasses[0];\n }\n\n const newPf = new KubernetesApplicationPersistedFolderFormValue(storageClass);\n this.formValues.PersistedFolders.push(newPf);\n this.resetDeploymentType();\n }\n\n restorePersistedFolder(index) {\n this.formValues.PersistedFolders[index].NeedsDeletion = false;\n this.validatePersistedFolders();\n }\n\n resetPersistedFolders() {\n this.formValues.PersistedFolders = _.forEach(this.formValues.PersistedFolders, (persistedFolder) => {\n persistedFolder.ExistingVolume = null;\n persistedFolder.UseNewVolume = true;\n });\n this.validatePersistedFolders();\n }\n\n removePersistedFolder(index) {\n if (this.state.isEdit && this.formValues.PersistedFolders[index].PersistentVolumeClaimName) {\n this.formValues.PersistedFolders[index].NeedsDeletion = true;\n } else {\n this.formValues.PersistedFolders.splice(index, 1);\n }\n this.validatePersistedFolders();\n }\n\n useNewVolume(index) {\n this.formValues.PersistedFolders[index].UseNewVolume = true;\n this.formValues.PersistedFolders[index].ExistingVolume = null;\n this.state.persistedFoldersUseExistingVolumes = !_.reduce(this.formValues.PersistedFolders, (acc, pf) => acc && pf.UseNewVolume, true);\n this.validatePersistedFolders();\n }\n\n useExistingVolume(index) {\n this.formValues.PersistedFolders[index].UseNewVolume = false;\n this.state.persistedFoldersUseExistingVolumes = _.find(this.formValues.PersistedFolders, { UseNewVolume: false }) ? true : false;\n if (this.formValues.DataAccessPolicy === this.ApplicationDataAccessPolicies.ISOLATED) {\n this.formValues.DataAccessPolicy = this.ApplicationDataAccessPolicies.SHARED;\n this.resetDeploymentType();\n }\n this.validatePersistedFolders();\n }\n /* #endregion */\n\n /* #region PERSISTENT FOLDERS ON CHANGE VALIDATION */\n validatePersistedFolders() {\n this.onChangePersistedFolderPath();\n this.onChangeExistingVolumeSelection();\n }\n\n onChangePersistedFolderPath() {\n this.state.duplicates.persistedFolders.refs = KubernetesFormValidationHelper.getDuplicates(\n _.map(this.formValues.PersistedFolders, (persistedFolder) => {\n if (persistedFolder.NeedsDeletion) {\n return undefined;\n }\n return persistedFolder.ContainerPath;\n })\n );\n this.state.duplicates.persistedFolders.hasRefs = Object.keys(this.state.duplicates.persistedFolders.refs).length > 0;\n }\n\n onChangeExistingVolumeSelection() {\n this.state.duplicates.existingVolumes.refs = KubernetesFormValidationHelper.getDuplicates(\n _.map(this.formValues.PersistedFolders, (persistedFolder) => {\n if (persistedFolder.NeedsDeletion) {\n return undefined;\n }\n return persistedFolder.ExistingVolume ? persistedFolder.ExistingVolume.PersistentVolumeClaim.Name : '';\n })\n );\n this.state.duplicates.existingVolumes.hasRefs = Object.keys(this.state.duplicates.existingVolumes.refs).length > 0;\n }\n /* #endregion */\n\n /* #region PLACEMENT UI MANAGEMENT */\n addPlacement() {\n const placement = new KubernetesApplicationPlacementFormValue();\n const label = this.nodesLabels[0];\n placement.Label = label;\n placement.Value = label.Values[0];\n this.formValues.Placements.push(placement);\n this.onChangePlacement();\n }\n\n restorePlacement(index) {\n this.formValues.Placements[index].NeedsDeletion = false;\n this.onChangePlacement();\n }\n\n removePlacement(index) {\n if (this.state.isEdit && !this.formValues.Placements[index].IsNew) {\n this.formValues.Placements[index].NeedsDeletion = true;\n } else {\n this.formValues.Placements.splice(index, 1);\n }\n this.onChangePlacement();\n }\n\n // call all validation functions when a placement is added/removed/restored\n onChangePlacement() {\n this.onChangePlacementLabelValidate();\n }\n\n onChangePlacementLabel(index) {\n this.formValues.Placements[index].Value = this.formValues.Placements[index].Label.Values[0];\n this.onChangePlacementLabelValidate();\n }\n\n onChangePlacementLabelValidate() {\n const state = this.state.duplicates.placements;\n const source = _.map(this.formValues.Placements, (p) => (p.NeedsDeletion ? undefined : p.Label.Key));\n const duplicates = KubernetesFormValidationHelper.getDuplicates(source);\n state.refs = duplicates;\n state.hasRefs = Object.keys(duplicates).length > 0;\n }\n\n /* #endregion */\n\n /* #region SERVICES UI MANAGEMENT */\n onServicesChange(services) {\n return this.$async(async () => {\n // if the ingress isn't found in the currently loaded ingresses, then refresh the ingresses\n const ingressNamesUsed = services.flatMap((s) => s.Ports.flatMap((p) => (p.ingressPaths ? p.ingressPaths.flatMap((ip) => ip.IngressName || []) : [])));\n if (ingressNamesUsed.length) {\n const uniqueIngressNamesUsed = Array.from(new Set(ingressNamesUsed)); // get the unique ingress names used\n const ingressNamesLoaded = this.ingresses.map((i) => i.Name);\n const areAllIngressesLoaded = uniqueIngressNamesUsed.every((ingressNameUsed) => ingressNamesLoaded.includes(ingressNameUsed));\n if (!areAllIngressesLoaded) {\n this.refreshIngresses();\n }\n }\n // update the services\n this.formValues.Services = services;\n });\n }\n /* #endregion */\n\n /* #region STATE VALIDATION FUNCTIONS */\n isValid() {\n return (\n !this.state.alreadyExists &&\n !this.state.duplicates.environmentVariables.hasRefs &&\n !this.state.duplicates.persistedFolders.hasRefs &&\n !this.state.duplicates.configMapPaths.hasRefs &&\n !this.state.duplicates.secretPaths.hasRefs &&\n !this.state.duplicates.existingVolumes.hasRefs\n );\n }\n\n storageClassAvailable() {\n return this.storageClasses && this.storageClasses.length > 0;\n }\n\n hasMultipleStorageClassesAvailable() {\n return this.storageClasses && this.storageClasses.length > 1;\n }\n\n resetDeploymentType() {\n this.formValues.DeploymentType = this.ApplicationDeploymentTypes.REPLICATED;\n }\n\n // The data access policy panel is not shown when:\n // * There is not persisted folder specified\n showDataAccessPolicySection() {\n return this.formValues.PersistedFolders.length !== 0;\n }\n\n // A global deployment is not available when either:\n // * For each persisted folder specified, if one of the storage object only supports the RWO access mode\n // * The data access policy is set to ISOLATED\n supportGlobalDeployment() {\n const hasFolders = this.formValues.PersistedFolders.length !== 0;\n const hasRWOOnly = KubernetesApplicationHelper.hasRWOOnly(this.formValues);\n const isIsolated = this.formValues.DataAccessPolicy === this.ApplicationDataAccessPolicies.ISOLATED;\n\n if (hasFolders && (hasRWOOnly || isIsolated)) {\n return false;\n }\n\n return true;\n }\n\n // A StatefulSet is defined by DataAccessPolicy === ISOLATED\n isEditAndStatefulSet() {\n return this.state.isEdit && this.formValues.DataAccessPolicy === this.ApplicationDataAccessPolicies.ISOLATED;\n }\n\n // A scalable deployment is available when either:\n // * No persisted folders are specified\n // * The access policy is set to shared and for each persisted folders specified, all the associated\n // storage objects support at least RWX access mode (no RWO only)\n // * The access policy is set to isolated\n supportScalableReplicaDeployment() {\n const hasFolders = this.formValues.PersistedFolders.length !== 0;\n const hasRWOOnly = KubernetesApplicationHelper.hasRWOOnly(this.formValues);\n const isIsolated = this.formValues.DataAccessPolicy === this.ApplicationDataAccessPolicies.ISOLATED;\n\n if (!hasFolders || isIsolated || (hasFolders && !hasRWOOnly)) {\n return true;\n }\n return false;\n }\n\n // For each persisted folders, returns the non scalable deployments options (storage class that only supports RWO)\n getNonScalableStorage() {\n let storageOptions = [];\n\n for (let i = 0; i < this.formValues.PersistedFolders.length; i++) {\n const folder = this.formValues.PersistedFolders[i];\n\n if (folder.StorageClass && _.isEqual(folder.StorageClass.AccessModes, ['RWO'])) {\n storageOptions.push(folder.StorageClass.Name);\n } else {\n storageOptions.push('<no storage option available>');\n }\n }\n\n return _.uniq(storageOptions).join(', ');\n }\n\n enforceReplicaCountMinimum() {\n if (this.formValues.ReplicaCount === null) {\n this.formValues.ReplicaCount = 1;\n }\n }\n\n resourceQuotaCapacityExceeded() {\n return !this.state.sliders.memory.max || !this.state.sliders.cpu.max;\n }\n\n nodeLimitsOverflow() {\n const cpu = this.formValues.CpuLimit;\n const memory = KubernetesResourceReservationHelper.bytesValue(this.formValues.MemoryLimit);\n\n const overflow = this.nodesLimits.overflowForReplica(cpu, memory, 1);\n\n return overflow;\n }\n\n effectiveInstances() {\n return this.formValues.DeploymentType === this.ApplicationDeploymentTypes.GLOBAL ? this.nodeNumber : this.formValues.ReplicaCount;\n }\n\n hasPortErrors() {\n const portError = this.formValues.Services.some((service) => service.nodePortError || service.servicePortError);\n return portError;\n }\n\n resourceReservationsOverflow() {\n const instances = this.effectiveInstances();\n const cpu = this.formValues.CpuLimit;\n const maxCpu = this.state.namespaceLimits.cpu;\n const memory = KubernetesResourceReservationHelper.bytesValue(this.formValues.MemoryLimit);\n const maxMemory = this.state.namespaceLimits.memory;\n\n // multiply 1000 can avoid 0.1 * 3 > 0.3\n if (cpu * 1000 * instances > maxCpu * 1000) {\n return true;\n }\n\n if (memory * instances > maxMemory) {\n return true;\n }\n\n if (this.formValues.DeploymentType === this.ApplicationDeploymentTypes.REPLICATED) {\n return this.nodesLimits.overflowForReplica(cpu, memory, instances);\n }\n\n // DeploymentType == GLOBAL\n return this.nodesLimits.overflowForGlobal(cpu, memory);\n }\n\n autoScalerOverflow() {\n const instances = this.formValues.AutoScaler.MaxReplicas;\n const cpu = this.formValues.CpuLimit;\n const maxCpu = this.state.namespaceLimits.cpu;\n const memory = KubernetesResourceReservationHelper.bytesValue(this.formValues.MemoryLimit);\n const maxMemory = this.state.namespaceLimits.memory;\n\n // multiply 1000 can avoid 0.1 * 3 > 0.3\n if (cpu * 1000 * instances > maxCpu * 1000) {\n return true;\n }\n\n if (memory * instances > maxMemory) {\n return true;\n }\n\n return this.nodesLimits.overflowForReplica(cpu, memory, instances);\n }\n\n publishViaIngressEnabled() {\n return this.ingresses.length;\n }\n\n isEditAndNoChangesMade() {\n if (!this.state.isEdit) return false;\n const changes = JsonPatch.compare(this.savedFormValues, this.formValues);\n this.editChanges = _.filter(changes, (change) => !_.includes(change.path, '$$hashKey') && change.path !== '/ApplicationType');\n return !this.editChanges.length;\n }\n\n /* #region PERSISTED FOLDERS */\n /* #region BUTTONS STATES */\n isAddPersistentFolderButtonShowed() {\n return !this.isEditAndStatefulSet() && this.formValues.Containers.length <= 1;\n }\n\n isNewVolumeButtonDisabled(index) {\n return this.isEditAndExistingPersistedFolder(index);\n }\n\n isExistingVolumeButtonDisabled() {\n return !this.hasAvailableVolumes() || (this.isEdit && this.application.ApplicationType === this.ApplicationTypes.STATEFULSET);\n }\n /* #endregion */\n\n hasAvailableVolumes() {\n return this.availableVolumes.length > 0;\n }\n\n isEditAndExistingPersistedFolder(index) {\n return this.state.isEdit && this.formValues.PersistedFolders[index].PersistentVolumeClaimName;\n }\n /* #endregion */\n\n isEditAndNotNewPlacement(index) {\n return this.state.isEdit && !this.formValues.Placements[index].IsNew;\n }\n\n showPlacementPolicySection() {\n const placements = _.filter(this.formValues.Placements, { NeedsDeletion: false });\n return placements.length !== 0;\n }\n\n isNonScalable() {\n const scalable = this.supportScalableReplicaDeployment();\n const global = this.supportGlobalDeployment();\n const replica = this.formValues.ReplicaCount > 1;\n const replicated = this.formValues.DeploymentType === this.ApplicationDeploymentTypes.REPLICATED;\n const res = (replicated && !scalable && replica) || (!replicated && !global);\n return res;\n }\n\n isDeployUpdateButtonDisabled() {\n const overflow = this.resourceReservationsOverflow();\n const autoScalerOverflow = this.autoScalerOverflow();\n const inProgress = this.state.actionInProgress;\n const invalid = !this.isValid();\n const hasNoChanges = this.isEditAndNoChangesMade();\n const nonScalable = this.isNonScalable();\n return overflow || autoScalerOverflow || inProgress || invalid || hasNoChanges || nonScalable;\n }\n\n isExternalApplication() {\n if (this.application) {\n return KubernetesApplicationHelper.isExternalApplication(this.application);\n } else {\n return false;\n }\n }\n /* #endregion */\n\n /* #region DATA AUTO REFRESH */\n updateSliders(namespaceWithQuota) {\n const quota = namespaceWithQuota.Quota;\n let minCpu = 0,\n minMemory = 0,\n maxCpu = this.state.namespaceLimits.cpu,\n maxMemory = this.state.namespaceLimits.memory;\n\n if (quota) {\n if (quota.CpuLimit) {\n minCpu = KubernetesApplicationQuotaDefaults.CpuLimit;\n }\n if (quota.MemoryLimit) {\n minMemory = KubernetesResourceReservationHelper.bytesValue(KubernetesApplicationQuotaDefaults.MemoryLimit);\n }\n }\n\n maxCpu = Math.min(maxCpu, this.nodesLimits.MaxCPU);\n maxMemory = Math.min(maxMemory, this.nodesLimits.MaxMemory);\n\n if (maxMemory < minMemory) {\n minMemory = 0;\n maxMemory = 0;\n }\n\n this.state.sliders.memory.min = KubernetesResourceReservationHelper.megaBytesValue(minMemory);\n this.state.sliders.memory.max = KubernetesResourceReservationHelper.megaBytesValue(maxMemory);\n this.state.sliders.cpu.min = minCpu;\n this.state.sliders.cpu.max = _.floor(maxCpu, 2);\n if (!this.state.isEdit) {\n this.formValues.CpuLimit = minCpu;\n this.formValues.MemoryLimit = KubernetesResourceReservationHelper.megaBytesValue(minMemory);\n }\n }\n\n updateNamespaceLimits(namespaceWithQuota) {\n return this.$async(async () => {\n let maxCpu = this.state.nodes.cpu;\n let maxMemory = this.state.nodes.memory;\n\n const quota = namespaceWithQuota.Quota;\n\n this.state.resourcePoolHasQuota = false;\n\n if (quota) {\n if (quota.CpuLimit) {\n this.state.resourcePoolHasQuota = true;\n maxCpu = quota.CpuLimit - quota.CpuLimitUsed;\n if (this.state.isEdit && this.savedFormValues.CpuLimit) {\n maxCpu += this.savedFormValues.CpuLimit * this.effectiveInstances();\n }\n }\n\n if (quota.MemoryLimit) {\n this.state.resourcePoolHasQuota = true;\n maxMemory = quota.MemoryLimit - quota.MemoryLimitUsed;\n if (this.state.isEdit && this.savedFormValues.MemoryLimit) {\n maxMemory += KubernetesResourceReservationHelper.bytesValue(this.savedFormValues.MemoryLimit) * this.effectiveInstances();\n }\n }\n }\n\n this.state.namespaceLimits.cpu = maxCpu;\n this.state.namespaceLimits.memory = maxMemory;\n });\n }\n\n refreshStacks(namespace) {\n return this.$async(async () => {\n try {\n this.stacks = await this.KubernetesStackService.get(namespace);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve stacks');\n }\n });\n }\n\n refreshConfigurations(namespace) {\n return this.$async(async () => {\n try {\n this.configurations = await this.KubernetesConfigurationService.get(namespace);\n this.configMaps = this.configurations.filter((configuration) => configuration.Kind === KubernetesConfigurationKinds.CONFIGMAP);\n this.secrets = this.configurations.filter((configuration) => configuration.Kind === KubernetesConfigurationKinds.SECRET);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve configurations');\n }\n });\n }\n\n refreshApplications(namespace) {\n return this.$async(async () => {\n try {\n this.applications = await this.KubernetesApplicationService.get(namespace);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve applications');\n }\n });\n }\n\n refreshVolumes(namespace) {\n return this.$async(async () => {\n try {\n const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n const volumes = await this.KubernetesVolumeService.get(namespace, storageClasses);\n _.forEach(volumes, (volume) => {\n volume.Applications = KubernetesVolumeHelper.getUsingApplications(volume, this.applications);\n });\n this.volumes = volumes;\n const filteredVolumes = _.filter(this.volumes, (volume) => {\n const isUnused = !KubernetesVolumeHelper.isUsed(volume);\n const isRWX = volume.PersistentVolumeClaim.StorageClass && _.includes(volume.PersistentVolumeClaim.StorageClass.AccessModes, 'RWX');\n return isUnused || isRWX;\n });\n this.availableVolumes = filteredVolumes;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve volumes');\n }\n });\n }\n\n refreshIngresses(namespace) {\n return this.$async(async () => {\n try {\n this.ingresses = await this.KubernetesIngressService.get(namespace);\n this.ingressPaths = this.ingresses.flatMap((ingress) => ingress.Paths);\n this.ingressHostnames = this.ingresses.length ? this.ingresses[0].Hosts : [];\n if (!this.publishViaIngressEnabled()) {\n if (this.savedFormValues) {\n this.formValues.PublishingType = this.savedFormValues.PublishingType;\n } else {\n this.formValues.PublishingType = this.ApplicationPublishingTypes.CLUSTER_IP;\n }\n }\n this.formValues.OriginalIngresses = this.ingresses;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve ingresses');\n }\n });\n }\n\n refreshNamespaceData(namespace) {\n return this.$async(async () => {\n await Promise.all([\n this.refreshStacks(namespace),\n this.refreshConfigurations(namespace),\n this.refreshApplications(namespace),\n this.refreshIngresses(namespace),\n this.refreshVolumes(namespace),\n ]);\n this.onChangeName();\n });\n }\n\n resetFormValues() {\n this.clearConfigMaps();\n this.clearSecrets();\n this.resetPersistedFolders();\n }\n\n onResourcePoolSelectionChange() {\n return this.$async(async () => {\n const namespaceWithQuota = await this.KubernetesResourcePoolService.get(this.formValues.ResourcePool.Namespace.Name);\n const namespace = this.formValues.ResourcePool.Namespace.Name;\n this.updateNamespaceLimits(namespaceWithQuota);\n this.updateSliders(namespaceWithQuota);\n await this.refreshNamespaceData(namespace);\n this.resetFormValues();\n });\n }\n /* #endregion */\n\n /* #region ACTIONS */\n async deployApplicationAsync() {\n this.state.actionInProgress = true;\n try {\n this.formValues.ApplicationOwner = this.Authentication.getUserDetails().username;\n // combine the secrets and configmap form values when submitting the form\n _.remove(this.formValues.Configurations, (item) => item.SelectedConfiguration === undefined);\n await this.KubernetesApplicationService.create(this.formValues, this.originalServicePorts);\n this.Notifications.success('Request to deploy application successfully submitted', this.formValues.Name);\n this.$state.go('kubernetes.applications');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create application');\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n async updateApplicationAsync(ingressesToUpdate) {\n if (ingressesToUpdate.length) {\n try {\n await Promise.all(ingressesToUpdate.map((ing) => updateIngress(this.endpoint.Id, ing)));\n this.Notifications.success('Success', `Ingress ${ingressesToUpdate.length > 1 ? 'rules' : 'rule'} successfully updated`);\n } catch (error) {\n this.Notifications.error('Failure', error, 'Unable to update ingress');\n }\n }\n\n try {\n this.state.actionInProgress = true;\n await this.KubernetesApplicationService.patch(this.savedFormValues, this.formValues, false, this.originalServicePorts);\n this.Notifications.success('Success', 'Request to update application successfully submitted');\n this.$state.go('kubernetes.applications.application', { name: this.application.Name, namespace: this.application.ResourcePool });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to update application');\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n async confirmUpdateApplicationAsync() {\n const [ingressesToUpdate, servicePortsToUpdate] = await this.checkIngressesToUpdate();\n // if there is an ingressesToUpdate, then show a warning modal with asking if they want to update the ingresses\n if (ingressesToUpdate.length) {\n const result = await confirmUpdateAppIngress(ingressesToUpdate, servicePortsToUpdate);\n if (!result) {\n return;\n }\n\n const { noMatch } = result;\n if (!noMatch) {\n return this.$async(this.updateApplicationAsync, []);\n }\n if (noMatch) {\n return this.$async(this.updateApplicationAsync, ingressesToUpdate);\n }\n } else {\n confirmUpdate('Updating the application may cause a service interruption. Do you wish to continue?', (confirmed) => {\n if (confirmed) {\n return this.$async(this.updateApplicationAsync, []);\n }\n });\n }\n }\n\n // check if service ports with ingresses have changed and allow the user to update the ingress to the new port values with a modal\n async checkIngressesToUpdate() {\n let ingressesToUpdate = [];\n let servicePortsToUpdate = [];\n const fullIngresses = await getIngresses(this.endpoint.Id, this.formValues.ResourcePool.Namespace.Name);\n this.formValues.Services.forEach((updatedService) => {\n const oldServiceIndex = this.oldFormValues.Services.findIndex((oldService) => oldService.Name === updatedService.Name);\n const numberOfPortsInOldService = this.oldFormValues.Services[oldServiceIndex] && this.oldFormValues.Services[oldServiceIndex].Ports.length;\n // if the service has an ingress and there is the same number of ports or more in the updated service\n if (updatedService.Ingress && numberOfPortsInOldService && numberOfPortsInOldService <= updatedService.Ports.length) {\n const updatedOldPorts = updatedService.Ports.slice(0, numberOfPortsInOldService);\n const ingressesForService = fullIngresses.filter((ing) => {\n if (ing.Paths) {\n const ingServiceNames = ing.Paths.map((path) => path.ServiceName);\n if (ingServiceNames.includes(updatedService.Name)) {\n return true;\n }\n }\n });\n ingressesForService.forEach((ingressForService) => {\n updatedOldPorts.forEach((servicePort, pIndex) => {\n if (servicePort.ingressPaths) {\n // if there isn't a ingress path that has a matching service name and port\n const doesIngressPathMatchServicePort = ingressForService.Paths.find((ingPath) => ingPath.ServiceName === updatedService.Name && ingPath.Port === servicePort.port);\n if (!doesIngressPathMatchServicePort) {\n // then find the ingress path index to update by looking for the matching port in the old form values\n const oldServicePort = this.oldFormValues.Services[oldServiceIndex].Ports[pIndex].port;\n const newServicePort = servicePort.port;\n\n const ingressPathIndex = ingressForService.Paths.findIndex((ingPath) => {\n return ingPath.ServiceName === updatedService.Name && ingPath.Port === oldServicePort;\n });\n if (ingressPathIndex !== -1) {\n // if the ingress to update isn't in the ingressesToUpdate list\n const ingressUpdateIndex = ingressesToUpdate.findIndex((ing) => ing.Name === ingressForService.Name);\n if (ingressUpdateIndex === -1) {\n // then add it to the list with the new port\n const ingressToUpdate = angular.copy(ingressForService);\n ingressToUpdate.Paths[ingressPathIndex].Port = newServicePort;\n ingressesToUpdate.push(ingressToUpdate);\n } else {\n // if the ingress is already in the list, then update the path with the new port\n ingressesToUpdate[ingressUpdateIndex].Paths[ingressPathIndex].Port = newServicePort;\n }\n if (!servicePortsToUpdate.includes(newServicePort)) {\n servicePortsToUpdate.push(newServicePort);\n }\n }\n }\n }\n });\n });\n }\n });\n return [ingressesToUpdate, servicePortsToUpdate];\n }\n\n deployApplication() {\n if (this.state.isEdit) {\n return this.$async(this.confirmUpdateApplicationAsync);\n } else {\n return this.$async(this.deployApplicationAsync);\n }\n }\n /* #endregion */\n\n /* #region APPLICATION - used on edit context only */\n getApplication() {\n return this.$async(async () => {\n try {\n const namespace = this.$state.params.namespace;\n const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n\n [this.application, this.persistentVolumeClaims] = await Promise.all([\n this.KubernetesApplicationService.get(namespace, this.$state.params.name),\n this.KubernetesPersistentVolumeClaimService.get(namespace, storageClasses),\n ]);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve application details');\n }\n });\n }\n\n async parseImageConfiguration(imageModel) {\n return this.$async(async () => {\n try {\n return await this.RegistryService.retrievePorRegistryModelFromRepository(imageModel.Image, this.endpoint.Id, imageModel.Registry.Id, this.$state.params.namespace);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registry');\n return imageModel;\n }\n });\n }\n /* #endregion */\n\n /* #region ON INIT */\n $onInit() {\n return this.$async(async () => {\n try {\n this.storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n this.state.useLoadBalancer = this.endpoint.Kubernetes.Configuration.UseLoadBalancer;\n this.state.useServerMetrics = this.endpoint.Kubernetes.Configuration.UseServerMetrics;\n\n const [resourcePools, nodes, nodesLimits] = await Promise.all([\n this.KubernetesResourcePoolService.get(),\n this.KubernetesNodeService.get(),\n this.KubernetesNodesLimitsService.get(),\n ]);\n this.nodesLimits = nodesLimits;\n\n const nonSystemNamespaces = _.filter(\n resourcePools,\n (resourcePool) => !KubernetesNamespaceHelper.isSystemNamespace(resourcePool.Namespace.Name) && resourcePool.Namespace.Status === 'Active'\n );\n\n this.allNamespaces = resourcePools.map(({ Namespace }) => Namespace.Name);\n this.resourcePools = _.sortBy(nonSystemNamespaces, ({ Namespace }) => (Namespace.Name === 'default' ? 0 : 1));\n\n // this.state.nodes.memory and this.state.nodes.cpu are used to calculate the slider limits, so set them before calling updateSliders()\n _.forEach(nodes, (item) => {\n this.state.nodes.memory += filesizeParser(item.Memory);\n this.state.nodes.cpu += item.CPU;\n });\n\n if (this.resourcePools.length) {\n const namespaceWithQuota = await this.KubernetesResourcePoolService.get(this.resourcePools[0].Namespace.Name);\n this.formValues.ResourcePool.Quota = namespaceWithQuota.Quota;\n this.updateNamespaceLimits(namespaceWithQuota);\n this.updateSliders(namespaceWithQuota);\n }\n this.formValues.ResourcePool = this.resourcePools[0];\n if (!this.formValues.ResourcePool) {\n return;\n }\n\n this.nodesLabels = KubernetesNodeHelper.generateNodeLabelsFromNodes(nodes);\n this.nodeNumber = nodes.length;\n\n const namespace = this.state.isEdit ? this.$state.params.namespace : this.formValues.ResourcePool.Namespace.Name;\n await this.refreshNamespaceData(namespace);\n\n if (this.state.isEdit) {\n await this.getApplication();\n this.formValues = KubernetesApplicationConverter.applicationToFormValues(\n this.application,\n this.resourcePools,\n this.configurations,\n this.persistentVolumeClaims,\n this.nodesLabels,\n this.ingresses\n );\n this.originalServicePorts = structuredClone(this.formValues.Services.flatMap((service) => service.Ports));\n this.originalIngressPaths = structuredClone(this.originalServicePorts.flatMap((port) => port.ingressPaths).filter((ingressPath) => ingressPath.Host));\n\n if (this.application.ApplicationKind) {\n this.state.appType = KubernetesDeploymentTypes[this.application.ApplicationKind.toUpperCase()];\n if (this.application.ApplicationKind === KubernetesDeploymentTypes.URL) {\n this.state.appType = KubernetesDeploymentTypes.CONTENT;\n }\n\n if (this.application.StackId) {\n this.stack = await this.StackService.stack(this.application.StackId);\n if (this.state.appType === KubernetesDeploymentTypes.CONTENT) {\n this.stackFileContent = await this.StackService.getStackFile(this.application.StackId);\n }\n }\n }\n\n this.formValues.OriginalIngresses = this.ingresses;\n this.formValues.ImageModel = await this.parseImageConfiguration(this.formValues.ImageModel);\n this.savedFormValues = angular.copy(this.formValues);\n delete this.formValues.ApplicationType;\n\n if (this.application.ApplicationType !== KubernetesApplicationTypes.STATEFULSET) {\n _.forEach(this.formValues.PersistedFolders, (persistedFolder) => {\n const volume = _.find(this.availableVolumes, ['PersistentVolumeClaim.Name', persistedFolder.PersistentVolumeClaimName]);\n if (volume) {\n persistedFolder.UseNewVolume = false;\n persistedFolder.ExistingVolume = volume;\n }\n });\n }\n await this.refreshNamespaceData(namespace);\n } else {\n this.formValues.AutoScaler = KubernetesApplicationHelper.generateAutoScalerFormValueFromHorizontalPodAutoScaler(null, this.formValues.ReplicaCount);\n }\n\n if (this.state.isEdit) {\n this.nodesLimits.excludesPods(this.application.Pods, this.formValues.CpuLimit, KubernetesResourceReservationHelper.bytesValue(this.formValues.MemoryLimit));\n }\n\n this.oldFormValues = angular.copy(this.formValues);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load view data');\n } finally {\n this.state.viewReady = true;\n }\n // get all nodeport services in the cluster, to validate unique nodeports in the form\n // this is below the try catch, to not block the page rendering\n const allSettledServices = await Promise.allSettled(this.resourcePools.map((namespace) => getServices(this.endpoint.Id, namespace.Namespace.Name)));\n const allServices = allSettledServices\n .filter((settledService) => settledService.status === 'fulfilled' && settledService.value)\n .map((fulfilledService) => fulfilledService.value)\n .flat();\n this.state.nodePortServices = allServices.filter((service) => service.Type === 'NodePort');\n });\n }\n\n /* #endregion */\n}\n\nexport default KubernetesCreateApplicationController;\nangular.module('portainer.kubernetes').controller('KubernetesCreateApplicationController', KubernetesCreateApplicationController);\n","const autoNgTemplateLoaderTemplate1 = require('./application.html');\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesApplicationController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n endpoint: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport * as JsonPatch from 'fast-json-patch';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport {\n KubernetesApplicationDataAccessPolicies,\n KubernetesApplicationDeploymentTypes,\n KubernetesApplicationTypes,\n KubernetesDeploymentTypes,\n} from 'Kubernetes/models/application/models';\nimport KubernetesEventHelper from 'Kubernetes/helpers/eventHelper';\nimport KubernetesApplicationHelper from 'Kubernetes/helpers/application';\nimport { KubernetesServiceTypes } from 'Kubernetes/models/service/models';\nimport { KubernetesPodNodeAffinityNodeSelectorRequirementOperators } from 'Kubernetes/pod/models';\nimport { KubernetesPodContainerTypes } from 'Kubernetes/pod/models/index';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\nfunction computeTolerations(nodes, application) {\n const pod = application.Pods[0];\n _.forEach(nodes, (n) => {\n n.AcceptsApplication = true;\n n.Expanded = false;\n if (!pod) {\n return;\n }\n n.UnmetTaints = [];\n _.forEach(n.Taints, (t) => {\n const matchKeyMatchValueMatchEffect = _.find(pod.Tolerations, { Key: t.Key, Operator: 'Equal', Value: t.Value, Effect: t.Effect });\n const matchKeyAnyValueMatchEffect = _.find(pod.Tolerations, { Key: t.Key, Operator: 'Exists', Effect: t.Effect });\n const matchKeyMatchValueAnyEffect = _.find(pod.Tolerations, { Key: t.Key, Operator: 'Equal', Value: t.Value, Effect: '' });\n const matchKeyAnyValueAnyEffect = _.find(pod.Tolerations, { Key: t.Key, Operator: 'Exists', Effect: '' });\n const anyKeyAnyValueAnyEffect = _.find(pod.Tolerations, { Key: '', Operator: 'Exists', Effect: '' });\n\n if (!matchKeyMatchValueMatchEffect && !matchKeyAnyValueMatchEffect && !matchKeyMatchValueAnyEffect && !matchKeyAnyValueAnyEffect && !anyKeyAnyValueAnyEffect) {\n n.AcceptsApplication = false;\n n.UnmetTaints.push(t);\n } else {\n n.AcceptsApplication = true;\n }\n });\n });\n return nodes;\n}\n\n// For node requirement format depending on operator value\n// see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#nodeselectorrequirement-v1-core\n// Some operators require empty \"values\" field, some only one element in \"values\" field, etc\n\nfunction computeAffinities(nodes, application) {\n if (!application.Pods || application.Pods.length === 0) {\n return nodes;\n }\n\n const pod = application.Pods[0];\n _.forEach(nodes, (n) => {\n if (pod.NodeSelector) {\n const patch = JsonPatch.compare(n.Labels, pod.NodeSelector);\n _.remove(patch, { op: 'remove' });\n n.UnmatchedNodeSelectorLabels = _.map(patch, (i) => {\n return { key: _.trimStart(i.path, '/'), value: i.value };\n });\n if (n.UnmatchedNodeSelectorLabels.length) {\n n.AcceptsApplication = false;\n }\n }\n\n if (pod.Affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution) {\n const unmatchedTerms = _.map(pod.Affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms, (t) => {\n const unmatchedExpressions = _.map(t.matchExpressions, (e) => {\n const exists = {}.hasOwnProperty.call(n.Labels, e.key);\n const isIn = exists && _.includes(e.values, n.Labels[e.key]);\n if (\n (e.operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.EXISTS && exists) ||\n (e.operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.DOES_NOT_EXIST && !exists) ||\n (e.operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.IN && isIn) ||\n (e.operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.NOT_IN && !isIn) ||\n (e.operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.GREATER_THAN && exists && parseInt(n.Labels[e.key], 10) > parseInt(e.values[0], 10)) ||\n (e.operator === KubernetesPodNodeAffinityNodeSelectorRequirementOperators.LOWER_THAN && exists && parseInt(n.Labels[e.key], 10) < parseInt(e.values[0], 10))\n ) {\n return;\n }\n return e;\n });\n return _.without(unmatchedExpressions, undefined);\n });\n _.remove(unmatchedTerms, (i) => i.length === 0);\n n.UnmatchedNodeAffinities = unmatchedTerms;\n if (n.UnmatchedNodeAffinities.length) {\n n.AcceptsApplication = false;\n }\n }\n });\n return nodes;\n}\n\nfunction computePlacements(nodes, application) {\n nodes = computeTolerations(nodes, application);\n nodes = computeAffinities(nodes, application);\n return nodes;\n}\n\nclass KubernetesApplicationController {\n /* @ngInject */\n constructor(\n $async,\n $state,\n clipboard,\n Notifications,\n LocalStorage,\n KubernetesResourcePoolService,\n KubernetesApplicationService,\n KubernetesEventService,\n KubernetesStackService,\n KubernetesPodService,\n KubernetesNodeService,\n StackService\n ) {\n this.$async = $async;\n this.$state = $state;\n this.clipboard = clipboard;\n this.Notifications = Notifications;\n this.LocalStorage = LocalStorage;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.StackService = StackService;\n\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesEventService = KubernetesEventService;\n this.KubernetesStackService = KubernetesStackService;\n this.KubernetesPodService = KubernetesPodService;\n this.KubernetesNodeService = KubernetesNodeService;\n\n this.KubernetesApplicationDeploymentTypes = KubernetesApplicationDeploymentTypes;\n this.KubernetesApplicationTypes = KubernetesApplicationTypes;\n this.KubernetesDeploymentTypes = KubernetesDeploymentTypes;\n\n this.ApplicationDataAccessPolicies = KubernetesApplicationDataAccessPolicies;\n this.KubernetesServiceTypes = KubernetesServiceTypes;\n this.KubernetesPodContainerTypes = KubernetesPodContainerTypes;\n\n this.onInit = this.onInit.bind(this);\n this.getApplication = this.getApplication.bind(this);\n this.getApplicationAsync = this.getApplicationAsync.bind(this);\n this.getEvents = this.getEvents.bind(this);\n this.getEventsAsync = this.getEventsAsync.bind(this);\n }\n\n selectTab(index) {\n this.LocalStorage.storeActiveTab('application', index);\n }\n\n showEditor() {\n this.state.showEditorTab = true;\n this.selectTab(3);\n }\n\n isSystemNamespace() {\n return KubernetesNamespaceHelper.isSystemNamespace(this.application.ResourcePool);\n }\n\n hasEventWarnings() {\n return this.state.eventWarningCount;\n }\n\n /**\n * EVENTS\n */\n async getEventsAsync() {\n try {\n this.state.eventsLoading = true;\n const events = await this.KubernetesEventService.get(this.state.params.namespace);\n this.events = _.filter(\n events,\n (event) =>\n event.Involved.uid === this.application.Id ||\n event.Involved.uid === this.application.ServiceId ||\n _.find(this.application.Pods, (pod) => pod.Id === event.Involved.uid) !== undefined\n );\n this.state.eventWarningCount = KubernetesEventHelper.warningCount(this.events);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve application related events');\n } finally {\n this.state.eventsLoading = false;\n }\n }\n\n getEvents() {\n return this.$async(this.getEventsAsync);\n }\n\n /**\n * APPLICATION\n */\n async getApplicationAsync() {\n try {\n this.state.dataLoading = true;\n const [application, nodes] = await Promise.all([\n this.KubernetesApplicationService.get(this.state.params.namespace, this.state.params.name),\n this.KubernetesNodeService.get(),\n ]);\n this.application = application;\n this.allContainers = KubernetesApplicationHelper.associateAllContainersAndApplication(application);\n\n this.placements = computePlacements(nodes, this.application);\n this.state.placementWarning = _.find(this.placements, { AcceptsApplication: true }) ? false : true;\n\n if (application.StackId) {\n const file = await this.StackService.getStackFile(application.StackId);\n this.stackFileContent = file;\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve application details');\n } finally {\n this.state.dataLoading = false;\n }\n }\n\n getApplication() {\n return this.$async(this.getApplicationAsync);\n }\n\n async onInit() {\n this.limitedFeature = FeatureId.K8S_ROLLING_RESTART;\n\n this.state = {\n activeTab: 0,\n currentName: this.$state.$current.name,\n showEditorTab: false,\n DisplayedPanel: 'pods',\n eventsLoading: true,\n dataLoading: true,\n viewReady: false,\n params: {\n namespace: this.$transition$.params().namespace,\n name: this.$transition$.params().name,\n },\n appType: this.KubernetesDeploymentTypes.APPLICATION_FORM,\n eventWarningCount: 0,\n placementWarning: false,\n expandedNote: false,\n useServerMetrics: this.endpoint.Kubernetes.Configuration.UseServerMetrics,\n publicUrl: this.endpoint.PublicURL,\n };\n\n this.state.activeTab = this.LocalStorage.getActiveTab('application');\n\n this.formValues = {\n Note: '',\n SelectedRevision: undefined,\n };\n\n await this.getApplication();\n await this.getEvents();\n this.state.viewReady = true;\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n if (this.state.currentName !== this.$state.$current.name) {\n this.LocalStorage.storeActiveTab('application', 0);\n }\n }\n}\n\nexport default KubernetesApplicationController;\nangular.module('portainer.kubernetes').controller('KubernetesApplicationController', KubernetesApplicationController);\n","import _ from 'lodash-es';\n\nangular.module('portainer.docker').controller('KubernetesApplicationPlacementsDatatableController', function ($scope, $controller, DatatableService, Authentication) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n this.state = Object.assign(this.state, {\n expandedItems: [],\n expandAll: false,\n });\n\n this.expandItem = function (item, expanded) {\n if (!this.itemCanExpand(item)) {\n return;\n }\n\n item.Expanded = expanded;\n if (!expanded) {\n item.Highlighted = false;\n }\n };\n\n this.itemCanExpand = function (item) {\n return !item.AcceptsApplication;\n };\n\n this.hasExpandableItems = function () {\n return _.filter(this.state.filteredDataSet, (item) => this.itemCanExpand(item)).length;\n };\n\n this.expandAll = function () {\n this.state.expandAll = !this.state.expandAll;\n _.forEach(this.state.filteredDataSet, (item) => {\n if (this.itemCanExpand(item)) {\n this.expandItem(item, this.state.expandAll);\n }\n });\n };\n\n this.$onInit = function () {\n this.isAdmin = Authentication.isAdmin();\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n});\n","const autoNgTemplateLoaderTemplate1 = require('./template.html');\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationPlacementsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesApplicationPlacementsDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n refreshCallback: '<',\n loading: '<',\n removeAction: '<',\n },\n});\n","import PortainerError from 'Portainer/error';\n\nexport default class KubernetesHelmApplicationController {\n /* @ngInject */\n constructor($async, $state, Authentication, Notifications, HelmService) {\n this.$async = $async;\n this.$state = $state;\n this.Authentication = Authentication;\n this.Notifications = Notifications;\n this.HelmService = HelmService;\n }\n\n /**\n * APPLICATION\n */\n async getHelmApplication() {\n try {\n this.state.dataLoading = true;\n const releases = await this.HelmService.listReleases(this.endpoint.Id, { selector: `name=${this.state.params.name}`, namespace: this.state.params.namespace });\n if (releases.length > 0) {\n this.state.release = releases[0];\n } else {\n throw new PortainerError(`Release ${this.state.params.name} not found`);\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve helm application details');\n } finally {\n this.state.dataLoading = false;\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n this.state = {\n dataLoading: true,\n viewReady: false,\n params: {\n name: this.$state.params.name,\n namespace: this.$state.params.namespace,\n },\n release: {\n name: undefined,\n chart: undefined,\n app_version: undefined,\n },\n };\n\n await this.getHelmApplication();\n this.state.viewReady = true;\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./helm.html');\n\nimport angular from 'angular';\nimport controller from './helm.controller';\nimport './helm.css';\n\nangular.module('portainer.kubernetes').component('kubernetesHelmApplicationView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n endpoint: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./logs.html');\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationLogsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesApplicationLogsController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n },\n});\n","import angular from 'angular';\n\nimport { concatLogsToString, formatLogs } from '@/docker/helpers/logHelper';\n\nclass KubernetesApplicationLogsController {\n /* @ngInject */\n constructor($async, $state, $interval, Notifications, KubernetesApplicationService, KubernetesPodService, Blob, FileSaver) {\n this.$async = $async;\n this.$state = $state;\n this.$interval = $interval;\n this.Notifications = Notifications;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesPodService = KubernetesPodService;\n this.Blob = Blob;\n this.FileSaver = FileSaver;\n\n this.onInit = this.onInit.bind(this);\n this.stopRepeater = this.stopRepeater.bind(this);\n this.getApplicationLogsAsync = this.getApplicationLogsAsync.bind(this);\n }\n\n updateAutoRefresh() {\n if (this.state.autoRefresh) {\n this.setUpdateRepeater();\n return;\n }\n\n this.stopRepeater();\n }\n\n stopRepeater() {\n if (angular.isDefined(this.repeater)) {\n this.$interval.cancel(this.repeater);\n this.repeater = null;\n }\n }\n\n setUpdateRepeater() {\n this.repeater = this.$interval(this.getApplicationLogsAsync, this.state.refreshRate);\n }\n\n downloadLogs() {\n const logsAsString = concatLogsToString(this.applicationLogs);\n const data = new this.Blob([logsAsString]);\n this.FileSaver.saveAs(data, this.podName + '_logs.txt');\n }\n\n async getApplicationLogsAsync() {\n try {\n const rawLogs = await this.KubernetesPodService.logs(this.application.ResourcePool, this.podName, this.containerName);\n this.applicationLogs = formatLogs(rawLogs);\n } catch (err) {\n this.stopRepeater();\n this.Notifications.error('Failure', err, 'Unable to retrieve application logs');\n }\n }\n\n async onInit() {\n this.state = {\n autoRefresh: false,\n refreshRate: 5000, // 5 seconds\n search: '',\n viewReady: false,\n };\n\n const podName = this.$transition$.params().pod;\n const applicationName = this.$transition$.params().name;\n const namespace = this.$transition$.params().namespace;\n const containerName = this.$transition$.params().container;\n\n this.applicationLogs = [];\n this.podName = podName;\n this.containerName = containerName;\n\n try {\n this.application = await this.KubernetesApplicationService.get(namespace, applicationName);\n await this.getApplicationLogsAsync();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve application logs');\n } finally {\n this.state.viewReady = true;\n }\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n this.stopRepeater();\n }\n}\n\nexport default KubernetesApplicationLogsController;\nangular.module('portainer.kubernetes').controller('KubernetesApplicationLogsController', KubernetesApplicationLogsController);\n","const autoNgTemplateLoaderTemplate1 = require('./stats.html');\n\nangular.module('portainer.kubernetes').component('kubernetesApplicationStatsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesApplicationStatsController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n },\n});\n","import angular from 'angular';\nimport moment from 'moment';\nimport _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport KubernetesPodConverter from 'Kubernetes/pod/converter';\nimport { getMetricsForPod } from '@/react/kubernetes/services/service.ts';\n\nclass KubernetesApplicationStatsController {\n /* @ngInject */\n constructor($async, $state, $interval, $document, Notifications, KubernetesPodService, KubernetesNodeService, ChartService) {\n this.$async = $async;\n this.$state = $state;\n this.$interval = $interval;\n this.$document = $document;\n this.Notifications = Notifications;\n this.KubernetesPodService = KubernetesPodService;\n this.KubernetesNodeService = KubernetesNodeService;\n this.ChartService = ChartService;\n\n this.onInit = this.onInit.bind(this);\n this.initCharts = this.initCharts.bind(this);\n }\n\n changeUpdateRepeater() {\n var cpuChart = this.cpuChart;\n var memoryChart = this.memoryChart;\n\n this.stopRepeater();\n this.setUpdateRepeater(cpuChart, memoryChart);\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(1500);\n }\n\n updateCPUChart() {\n const label = moment(this.stats.read).format('HH:mm:ss');\n\n this.ChartService.UpdateCPUChart(label, this.stats.CPUUsage, this.cpuChart);\n }\n\n updateMemoryChart() {\n const label = moment(this.stats.read).format('HH:mm:ss');\n\n this.ChartService.UpdateMemoryChart(label, this.stats.MemoryUsage, this.stats.MemoryCache, this.memoryChart);\n }\n\n stopRepeater() {\n var repeater = this.repeater;\n if (angular.isDefined(repeater)) {\n this.$interval.cancel(repeater);\n repeater = undefined;\n }\n }\n\n setUpdateRepeater() {\n const refreshRate = this.state.refreshRate;\n\n this.repeater = this.$interval(async () => {\n try {\n await this.getStats();\n\n this.updateCPUChart();\n this.updateMemoryChart();\n } catch (error) {\n this.stopRepeater();\n this.Notifications.error('Failure', error);\n }\n }, refreshRate * 1000);\n }\n\n initCharts() {\n let i = 0;\n const findCharts = setInterval(() => {\n let cpuChartCtx = $('#cpuChart');\n let memoryChartCtx = $('#memoryChart');\n if (cpuChartCtx.length !== 0 && memoryChartCtx.length !== 0) {\n const cpuChart = this.ChartService.CreateCPUChart(cpuChartCtx);\n this.cpuChart = cpuChart;\n const memoryChart = this.ChartService.CreateMemoryChart(memoryChartCtx);\n this.memoryChart = memoryChart;\n this.updateCPUChart();\n this.updateMemoryChart();\n this.setUpdateRepeater();\n clearInterval(findCharts);\n return;\n }\n i++;\n if (i >= 10) {\n clearInterval(findCharts);\n }\n }, 200);\n }\n\n getStats() {\n return this.$async(async () => {\n try {\n const stats = await getMetricsForPod(this.$state.params.endpointId, this.state.transition.namespace, this.state.transition.podName);\n const container = _.find(stats.containers, { name: this.state.transition.containerName });\n if (container) {\n const memory = filesizeParser(container.usage.memory);\n const cpu = KubernetesResourceReservationHelper.parseCPU(container.usage.cpu);\n this.stats = {\n read: stats.timestamp,\n preread: '',\n MemoryCache: 0,\n MemoryUsage: memory,\n NumProcs: '',\n isWindows: false,\n PreviousCPUTotalUsage: 0,\n CPUUsage: (cpu / this.nodeCPU) * 100,\n CPUCores: 0,\n };\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve application stats');\n }\n });\n }\n\n $onDestroy() {\n this.stopRepeater();\n }\n\n async onInit() {\n this.state = {\n autoRefresh: false,\n refreshRate: '30',\n viewReady: false,\n transition: {\n podName: this.$transition$.params().pod,\n containerName: this.$transition$.params().container,\n namespace: this.$transition$.params().namespace,\n applicationName: this.$transition$.params().name,\n },\n getMetrics: false,\n };\n\n try {\n await getMetricsForPod(this.$state.params.endpointId, this.state.transition.namespace, this.state.transition.podName);\n } catch (error) {\n this.state.getMetrics = false;\n this.state.viewReady = true;\n return;\n }\n\n try {\n const podRaw = await this.KubernetesPodService.get(this.state.transition.namespace, this.state.transition.podName);\n const pod = KubernetesPodConverter.apiToModel(podRaw.Raw);\n if (pod) {\n const node = await this.KubernetesNodeService.get(pod.Node);\n this.nodeCPU = node.CPU;\n } else {\n throw new Error('Unable to find pod');\n }\n await this.getStats();\n this.state.getMetrics = true;\n\n this.$document.ready(() => {\n this.initCharts();\n });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve application stats');\n } finally {\n this.state.viewReady = true;\n }\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n}\n\nexport default KubernetesApplicationStatsController;\nangular.module('portainer.kubernetes').controller('KubernetesApplicationStatsController', KubernetesApplicationStatsController);\n","const autoNgTemplateLoaderTemplate1 = require('./cluster.html');\n\nangular.module('portainer.kubernetes').component('kubernetesClusterView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesClusterController',\n controllerAs: 'ctrl',\n bindings: {\n endpoint: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport { KubernetesResourceReservation } from 'Kubernetes/models/resource-reservation/models';\nimport { getMetricsForAllNodes } from '@/react/kubernetes/services/service.ts';\n\nclass KubernetesClusterController {\n /* @ngInject */\n constructor($async, $state, Notifications, LocalStorage, Authentication, KubernetesNodeService, KubernetesApplicationService, KubernetesEndpointService) {\n this.$async = $async;\n this.$state = $state;\n this.Authentication = Authentication;\n this.Notifications = Notifications;\n this.LocalStorage = LocalStorage;\n this.KubernetesNodeService = KubernetesNodeService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesEndpointService = KubernetesEndpointService;\n\n this.onInit = this.onInit.bind(this);\n this.getNodes = this.getNodes.bind(this);\n this.getNodesAsync = this.getNodesAsync.bind(this);\n this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n this.getEndpointsAsync = this.getEndpointsAsync.bind(this);\n this.hasResourceUsageAccess = this.hasResourceUsageAccess.bind(this);\n }\n\n async getEndpointsAsync() {\n try {\n const endpoints = await this.KubernetesEndpointService.get();\n const systemEndpoints = _.filter(endpoints, { Namespace: 'kube-system' });\n this.systemEndpoints = _.filter(systemEndpoints, (ep) => ep.HolderIdentity);\n\n const kubernetesEndpoint = _.find(endpoints, { Name: 'kubernetes' });\n if (kubernetesEndpoint && kubernetesEndpoint.Subsets) {\n const ips = _.flatten(_.map(kubernetesEndpoint.Subsets, 'Ips'));\n _.forEach(this.nodes, (node) => {\n node.Api = _.includes(ips, node.IPAddress);\n });\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve environments');\n }\n }\n\n getEndpoints() {\n return this.$async(this.getEndpointsAsync);\n }\n\n async getNodesAsync() {\n try {\n const nodes = await this.KubernetesNodeService.get();\n _.forEach(nodes, (node) => (node.Memory = filesizeParser(node.Memory)));\n this.nodes = nodes;\n this.CPULimit = _.reduce(this.nodes, (acc, node) => node.CPU + acc, 0);\n this.CPULimit = Math.round(this.CPULimit * 10000) / 10000;\n this.MemoryLimit = _.reduce(this.nodes, (acc, node) => KubernetesResourceReservationHelper.megaBytesValue(node.Memory) + acc, 0);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve nodes');\n }\n }\n\n getNodes() {\n return this.$async(this.getNodesAsync);\n }\n\n async getApplicationsAsync() {\n try {\n this.state.applicationsLoading = true;\n this.applications = await this.KubernetesApplicationService.get();\n const nodeNames = _.map(this.nodes, (node) => node.Name);\n this.resourceReservation = _.reduce(\n this.applications,\n (acc, app) => {\n app.Pods = _.filter(app.Pods, (pod) => nodeNames.includes(pod.Node));\n const resourceReservation = KubernetesResourceReservationHelper.computeResourceReservation(app.Pods);\n acc.CPU += resourceReservation.CPU;\n acc.Memory += resourceReservation.Memory;\n return acc;\n },\n new KubernetesResourceReservation()\n );\n this.resourceReservation.Memory = KubernetesResourceReservationHelper.megaBytesValue(this.resourceReservation.Memory);\n\n if (this.hasResourceUsageAccess()) {\n await this.getResourceUsage(this.endpoint.Id);\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve applications');\n } finally {\n this.state.applicationsLoading = false;\n }\n }\n\n getApplications() {\n return this.$async(this.getApplicationsAsync);\n }\n\n async getResourceUsage(endpointId) {\n try {\n const nodeMetrics = await getMetricsForAllNodes(endpointId);\n const resourceUsageList = nodeMetrics.items.map((i) => i.usage);\n const clusterResourceUsage = resourceUsageList.reduce((total, u) => {\n total.CPU += KubernetesResourceReservationHelper.parseCPU(u.cpu);\n total.Memory += KubernetesResourceReservationHelper.megaBytesValue(u.memory);\n return total;\n }, new KubernetesResourceReservation());\n this.resourceUsage = clusterResourceUsage;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve cluster resource usage');\n }\n }\n\n /**\n * Check if resource usage stats can be displayed\n * @returns {boolean}\n */\n hasResourceUsageAccess() {\n return this.isAdmin && this.state.useServerMetrics;\n }\n\n async onInit() {\n this.isAdmin = this.Authentication.isAdmin();\n const useServerMetrics = this.endpoint.Kubernetes.Configuration.UseServerMetrics;\n\n this.state = {\n applicationsLoading: true,\n viewReady: false,\n useServerMetrics,\n };\n\n await this.getNodes();\n if (this.isAdmin) {\n await this.getEndpoints();\n await this.getApplications();\n }\n\n this.state.viewReady = true;\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n}\n\nexport default KubernetesClusterController;\nangular.module('portainer.kubernetes').controller('KubernetesClusterController', KubernetesClusterController);\n","const autoNgTemplateLoaderTemplate1 = require('./node.html');\n\nangular.module('portainer.kubernetes').component('kubernetesNodeView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesNodeController',\n controllerAs: 'ctrl',\n bindings: {\n endpoint: '<',\n $transition$: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport { KubernetesResourceReservation } from 'Kubernetes/models/resource-reservation/models';\nimport KubernetesEventHelper from 'Kubernetes/helpers/eventHelper';\nimport KubernetesNodeConverter from 'Kubernetes/node/converter';\nimport { KubernetesNodeLabelFormValues, KubernetesNodeTaintFormValues } from 'Kubernetes/node/formValues';\nimport { KubernetesNodeTaintEffects, KubernetesNodeAvailabilities } from 'Kubernetes/node/models';\nimport KubernetesFormValidationHelper from 'Kubernetes/helpers/formValidationHelper';\nimport { KubernetesNodeHelper } from 'Kubernetes/node/helper';\nimport { confirmUpdateNode } from '@/react/kubernetes/cluster/NodeView/ConfirmUpdateNode';\nimport { getMetricsForNode } from '@/react/kubernetes/services/service.ts';\n\nclass KubernetesNodeController {\n /* @ngInject */\n constructor(\n $async,\n $state,\n Notifications,\n LocalStorage,\n KubernetesNodeService,\n KubernetesEventService,\n KubernetesPodService,\n KubernetesApplicationService,\n KubernetesEndpointService,\n Authentication\n ) {\n this.$async = $async;\n this.$state = $state;\n this.Notifications = Notifications;\n this.LocalStorage = LocalStorage;\n this.KubernetesNodeService = KubernetesNodeService;\n this.KubernetesEventService = KubernetesEventService;\n this.KubernetesPodService = KubernetesPodService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesEndpointService = KubernetesEndpointService;\n this.Authentication = Authentication;\n\n this.onInit = this.onInit.bind(this);\n this.getNodesAsync = this.getNodesAsync.bind(this);\n this.getEvents = this.getEvents.bind(this);\n this.getEventsAsync = this.getEventsAsync.bind(this);\n this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n this.getEndpointsAsync = this.getEndpointsAsync.bind(this);\n this.updateNodeAsync = this.updateNodeAsync.bind(this);\n this.drainNodeAsync = this.drainNodeAsync.bind(this);\n this.hasResourceUsageAccess = this.hasResourceUsageAccess.bind(this);\n this.getNodeUsageAsync = this.getNodeUsageAsync.bind(this);\n }\n\n selectTab(index) {\n this.LocalStorage.storeActiveTab('node', index);\n }\n\n /* #region taint */\n\n onChangeTaintKey(index) {\n this.state.duplicateTaintKeys = KubernetesFormValidationHelper.getDuplicates(\n _.map(this.formValues.Taints, (taint) => {\n if (taint.NeedsDeletion) {\n return undefined;\n }\n return taint.Key;\n })\n );\n this.state.hasDuplicateTaintKeys = Object.keys(this.state.duplicateTaintKeys).length > 0;\n this.onChangeTaint(index);\n }\n\n onChangeTaint(index) {\n if (this.formValues.Taints[index]) {\n this.formValues.Taints[index].IsChanged = true;\n }\n }\n\n addTaint() {\n const taint = new KubernetesNodeTaintFormValues();\n taint.IsNew = true;\n taint.Effect = KubernetesNodeTaintEffects.NOSCHEDULE;\n this.formValues.Taints.push(taint);\n }\n\n removeTaint(index) {\n const taint = this.formValues.Taints[index];\n if (taint.IsNew) {\n this.formValues.Taints.splice(index, 1);\n } else {\n taint.NeedsDeletion = true;\n }\n this.onChangeTaintKey();\n }\n\n restoreTaint(index) {\n this.formValues.Taints[index].NeedsDeletion = false;\n this.onChangeTaintKey();\n }\n\n computeTaintsWarning() {\n return _.filter(this.formValues.Taints, (taint) => {\n return taint.Effect === KubernetesNodeTaintEffects.NOEXECUTE && (taint.IsNew || taint.IsChanged);\n }).length;\n }\n\n /* #endregion */\n\n /* #region label */\n\n onChangeLabelKey(index) {\n this.state.duplicateLabelKeys = KubernetesFormValidationHelper.getDuplicates(\n _.map(this.formValues.Labels, (label) => {\n if (label.NeedsDeletion) {\n return undefined;\n }\n return label.Key;\n })\n );\n this.state.hasDuplicateLabelKeys = Object.keys(this.state.duplicateLabelKeys).length > 0;\n this.onChangeLabel(index);\n }\n\n onChangeLabel(index) {\n if (this.formValues.Labels[index]) {\n this.formValues.Labels[index].IsChanged = true;\n }\n }\n\n addLabel() {\n const label = new KubernetesNodeLabelFormValues();\n label.IsNew = true;\n this.formValues.Labels.push(label);\n }\n\n removeLabel(index) {\n const label = this.formValues.Labels[index];\n if (label.IsNew) {\n this.formValues.Labels.splice(index, 1);\n } else {\n label.NeedsDeletion = true;\n }\n this.onChangeLabelKey();\n }\n\n restoreLabel(index) {\n this.formValues.Labels[index].NeedsDeletion = false;\n this.onChangeLabelKey();\n }\n\n isSystemLabel(index) {\n return KubernetesNodeHelper.isSystemLabel(this.formValues.Labels[index]);\n }\n\n computeLabelsWarning() {\n return _.filter(this.formValues.Labels, (label) => {\n return label.IsUsed && (label.NeedsDeletion || label.IsChanged);\n }).length;\n }\n\n /* #endregion */\n\n /* #region cordon */\n\n computeCordonWarning() {\n return this.formValues.Availability === this.availabilities.PAUSE;\n }\n\n /* #endregion */\n\n /* #region drain */\n\n computeDrainWarning() {\n return this.formValues.Availability === this.availabilities.DRAIN;\n }\n\n async drainNodeAsync() {\n const pods = _.flatten(_.map(this.applications, (app) => app.Pods));\n let actionCount = pods.length;\n for (const pod of pods) {\n try {\n await this.KubernetesPodService.eviction(pod);\n this.Notifications.success('Pod successfully evicted', pod.Name);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to evict pod');\n this.formValues.Availability = this.availabilities.PAUSE;\n await this.KubernetesNodeService.patch(this.node, this.formValues);\n } finally {\n --actionCount;\n if (actionCount === 0) {\n this.formValues.Availability = this.availabilities.PAUSE;\n await this.KubernetesNodeService.patch(this.node, this.formValues);\n }\n }\n }\n }\n\n drainNode() {\n return this.$async(this.drainNodeAsync);\n }\n\n /* #endregion */\n\n /* #region actions */\n\n isNoChangesMade() {\n const newNode = KubernetesNodeConverter.formValuesToNode(this.node, this.formValues);\n const payload = KubernetesNodeConverter.patchPayload(this.node, newNode);\n return !payload.length;\n }\n\n isDrainError() {\n return (this.state.isDrainOperation || this.state.isContainPortainer) && this.formValues.Availability === this.availabilities.DRAIN;\n }\n\n isFormValid() {\n return !this.state.hasDuplicateTaintKeys && !this.state.hasDuplicateLabelKeys && !this.isNoChangesMade() && !this.isDrainError();\n }\n\n resetFormValues() {\n this.formValues = KubernetesNodeConverter.nodeToFormValues(this.node);\n }\n\n /* #endregion */\n\n async getEndpointsAsync() {\n try {\n const endpoints = await this.KubernetesEndpointService.get();\n this.endpoint = _.find(endpoints, { Name: 'kubernetes' });\n if (this.endpoint && this.endpoint.Subsets) {\n _.forEach(this.endpoint.Subsets, (subset) => {\n return _.forEach(subset.Ips, (ip) => {\n if (ip === this.node.IPAddress) {\n this.node.Api = true;\n this.node.Port = subset.Port;\n return false;\n }\n });\n });\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve environments');\n }\n }\n\n getEndpoints() {\n return this.$async(this.getEndpointsAsync);\n }\n\n async updateNodeAsync() {\n try {\n this.node = await this.KubernetesNodeService.patch(this.node, this.formValues);\n if (this.formValues.Availability === 'Drain') {\n await this.drainNode();\n }\n this.Notifications.success('Success', 'Node updated successfully');\n this.$state.reload(this.$state.current);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to update node');\n }\n }\n\n updateNode() {\n const taintsWarning = this.computeTaintsWarning();\n const labelsWarning = this.computeLabelsWarning();\n const cordonWarning = this.computeCordonWarning();\n const drainWarning = this.computeDrainWarning();\n\n if (taintsWarning || labelsWarning || cordonWarning || drainWarning) {\n confirmUpdateNode(taintsWarning, labelsWarning, cordonWarning, drainWarning).then((confirmed) => {\n if (confirmed) {\n return this.$async(this.updateNodeAsync);\n }\n });\n } else {\n return this.$async(this.updateNodeAsync);\n }\n }\n\n async getNodesAsync() {\n try {\n this.state.dataLoading = true;\n const nodeName = this.$transition$.params().name;\n this.nodes = await this.KubernetesNodeService.get();\n this.node = _.find(this.nodes, { Name: nodeName });\n this.state.isDrainOperation = _.find(this.nodes, { Availability: this.availabilities.DRAIN });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve node');\n } finally {\n this.state.dataLoading = false;\n }\n }\n\n getNodes() {\n return this.$async(this.getNodesAsync);\n }\n\n hasResourceUsageAccess() {\n return this.state.isAdmin && this.state.useServerMetrics;\n }\n\n async getNodeUsageAsync() {\n try {\n const nodeName = this.$transition$.params().name;\n const node = await getMetricsForNode(this.$state.params.endpointId, nodeName);\n this.resourceUsage = new KubernetesResourceReservation();\n this.resourceUsage.CPU = KubernetesResourceReservationHelper.parseCPU(node.usage.cpu);\n this.resourceUsage.Memory = KubernetesResourceReservationHelper.megaBytesValue(node.usage.memory);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve node resource usage');\n }\n }\n\n getNodeUsage() {\n return this.$async(this.getNodeUsageAsync);\n }\n\n hasEventWarnings() {\n return this.state.eventWarningCount;\n }\n\n async getEventsAsync() {\n try {\n this.state.eventsLoading = true;\n const events = await this.KubernetesEventService.get();\n this.events = events.filter((item) => item.Involved.kind === 'Node');\n this.state.eventWarningCount = KubernetesEventHelper.warningCount(this.events);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve node events');\n } finally {\n this.state.eventsLoading = false;\n }\n }\n\n getEvents() {\n return this.$async(this.getEventsAsync);\n }\n\n showEditor() {\n this.state.showEditorTab = true;\n this.selectTab(2);\n }\n\n async getApplicationsAsync() {\n try {\n this.state.applicationsLoading = true;\n this.applications = await this.KubernetesApplicationService.get();\n\n this.resourceReservation = new KubernetesResourceReservation();\n this.applications = _.map(this.applications, (app) => {\n app.Pods = _.filter(app.Pods, (pod) => pod.Node === this.node.Name);\n return app;\n });\n this.applications = _.filter(this.applications, (app) => app.Pods.length !== 0);\n this.applications = _.map(this.applications, (app) => {\n const resourceReservation = KubernetesResourceReservationHelper.computeResourceReservation(app.Pods);\n app.CPU = resourceReservation.CPU;\n app.Memory = resourceReservation.Memory;\n this.resourceReservation.CPU += resourceReservation.CPU;\n this.resourceReservation.Memory += resourceReservation.Memory;\n return app;\n });\n this.resourceReservation.Memory = KubernetesResourceReservationHelper.megaBytesValue(this.resourceReservation.Memory);\n this.memoryLimit = KubernetesResourceReservationHelper.megaBytesValue(this.node.Memory);\n this.state.isContainPortainer = _.find(this.applications, { ApplicationName: 'portainer' });\n\n if (this.hasResourceUsageAccess()) {\n await this.getNodeUsage();\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve applications');\n } finally {\n this.state.applicationsLoading = false;\n }\n }\n\n getApplications() {\n return this.$async(this.getApplicationsAsync);\n }\n\n async onInit() {\n this.availabilities = KubernetesNodeAvailabilities;\n\n this.state = {\n isAdmin: this.Authentication.isAdmin(),\n activeTab: this.LocalStorage.getActiveTab('node'),\n currentName: this.$state.$current.name,\n dataLoading: true,\n eventsLoading: true,\n applicationsLoading: true,\n showEditorTab: false,\n viewReady: false,\n eventWarningCount: 0,\n duplicateTaintKeys: [],\n hasDuplicateTaintKeys: false,\n duplicateLabelKeys: [],\n hasDuplicateLabelKeys: false,\n isDrainOperation: false,\n isContainPortainer: false,\n useServerMetrics: this.endpoint.Kubernetes.Configuration.UseServerMetrics,\n };\n\n await this.getNodes();\n await this.getEvents();\n await this.getApplications();\n await this.getEndpoints();\n\n this.availableEffects = _.values(KubernetesNodeTaintEffects);\n this.formValues = KubernetesNodeConverter.nodeToFormValues(this.node);\n this.formValues.Labels = KubernetesNodeHelper.computeUsedLabels(this.applications, this.formValues.Labels);\n this.formValues.Labels = KubernetesNodeHelper.reorderLabels(this.formValues.Labels);\n\n this.state.viewReady = true;\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n if (this.state.currentName !== this.$state.$current.name) {\n this.LocalStorage.storeActiveTab('node', 0);\n }\n }\n}\n\nexport default KubernetesNodeController;\nangular.module('portainer.kubernetes').controller('KubernetesNodeController', KubernetesNodeController);\n","import { ModalType } from '@@/modals';\nimport { confirm } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport function confirmUpdateNode(\n taintsWarning: boolean,\n labelsWarning: boolean,\n cordonWarning: boolean,\n drainWarning: boolean\n) {\n let message;\n if (taintsWarning && !labelsWarning) {\n message =\n 'Changes to taints will immediately deschedule applications running on this node without the corresponding tolerations. Do you wish to continue?';\n } else if (!taintsWarning && labelsWarning) {\n message =\n 'Removing or changing a label that is used might prevent applications from being scheduled on this node in the future. Do you wish to continue?';\n } else if (taintsWarning && labelsWarning) {\n message = (\n <>\n <p>\n Changes to taints will immediately deschedule applications running on\n this node without the corresponding tolerations.\n </p>\n <p>\n Removing or changing a label that is used might prevent applications\n from scheduling on this node in the future.\n </p>\n <p>Do you wish to continue?</p>\n </>\n );\n } else if (cordonWarning) {\n message =\n 'Marking this node as unschedulable will effectively cordon the node and prevent any new workload from being scheduled on that node. Are you sure?';\n } else if (drainWarning) {\n message =\n 'Draining this node will cause all workloads to be evicted from that node. This might lead to some service interruption. Are you sure?';\n }\n\n return confirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n message,\n confirmButton: buildConfirmButton('Update', 'primary'),\n });\n}\n","const autoNgTemplateLoaderTemplate1 = require('./stats.html');\n\nangular.module('portainer.kubernetes').component('kubernetesNodeStatsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesNodeStatsController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n },\n});\n","import angular from 'angular';\nimport moment from 'moment';\nimport filesizeParser from 'filesize-parser';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport { PORTAINER_FADEOUT } from '@/constants';\nimport { getMetricsForNode } from '@/react/kubernetes/services/service.ts';\n\nclass KubernetesNodeStatsController {\n /* @ngInject */\n constructor($async, $state, $interval, $document, Notifications, KubernetesNodeService, ChartService) {\n this.$async = $async;\n this.$state = $state;\n this.$interval = $interval;\n this.$document = $document;\n this.Notifications = Notifications;\n this.KubernetesNodeService = KubernetesNodeService;\n this.ChartService = ChartService;\n\n this.onInit = this.onInit.bind(this);\n this.initCharts = this.initCharts.bind(this);\n }\n\n changeUpdateRepeater() {\n var cpuChart = this.cpuChart;\n var memoryChart = this.memoryChart;\n\n this.stopRepeater();\n this.setUpdateRepeater(cpuChart, memoryChart);\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(PORTAINER_FADEOUT);\n }\n\n updateCPUChart() {\n const label = moment(this.stats.read).format('HH:mm:ss');\n this.ChartService.UpdateCPUChart(label, this.stats.CPUUsage, this.cpuChart);\n }\n\n updateMemoryChart() {\n const label = moment(this.stats.read).format('HH:mm:ss');\n this.ChartService.UpdateMemoryChart(label, this.stats.MemoryUsage, 0, this.memoryChart);\n }\n\n stopRepeater() {\n var repeater = this.repeater;\n if (angular.isDefined(repeater)) {\n this.$interval.cancel(repeater);\n this.repeater = undefined;\n }\n }\n\n setUpdateRepeater() {\n const refreshRate = this.state.refreshRate;\n\n this.repeater = this.$interval(async () => {\n try {\n await this.getStats();\n this.updateCPUChart();\n this.updateMemoryChart();\n } catch (error) {\n this.stopRepeater();\n this.Notifications.error('Failure', error);\n }\n }, refreshRate * 1000);\n }\n\n initCharts() {\n const findCharts = setInterval(() => {\n let cpuChartCtx = $('#cpuChart');\n let memoryChartCtx = $('#memoryChart');\n if (cpuChartCtx.length !== 0 && memoryChartCtx.length !== 0) {\n const cpuChart = this.ChartService.CreateCPUChart(cpuChartCtx);\n this.cpuChart = cpuChart;\n const memoryChart = this.ChartService.CreateMemoryChart(memoryChartCtx);\n this.memoryChart = memoryChart;\n this.updateCPUChart();\n this.updateMemoryChart();\n this.setUpdateRepeater();\n clearInterval(findCharts);\n }\n }, 200);\n }\n\n getStats() {\n return this.$async(async () => {\n try {\n const stats = await getMetricsForNode(this.$state.params.endpointId, this.state.transition.nodeName);\n if (stats) {\n const memory = filesizeParser(stats.usage.memory);\n const cpu = KubernetesResourceReservationHelper.parseCPU(stats.usage.cpu);\n this.stats = {\n read: stats.metadata.creationTimestamp,\n MemoryUsage: memory,\n CPUUsage: (cpu / this.nodeCPU) * 100,\n };\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve node stats');\n }\n });\n }\n\n $onDestroy() {\n this.stopRepeater();\n }\n\n async onInit() {\n this.state = {\n autoRefresh: false,\n refreshRate: '30',\n viewReady: false,\n transition: {\n nodeName: this.$transition$.params().name,\n },\n getMetrics: true,\n };\n\n try {\n const nodeMetrics = await getMetricsForNode(this.$state.params.endpointId, this.state.transition.nodeName);\n\n if (nodeMetrics) {\n const node = await this.KubernetesNodeService.get(this.state.transition.nodeName);\n this.nodeCPU = node.CPU || 1;\n\n await this.getStats();\n } else {\n this.state.getMetrics = false;\n }\n } catch (err) {\n this.state.getMetrics = false;\n this.Notifications.error('Failure', err, 'Unable to retrieve node stats');\n } finally {\n this.state.viewReady = true;\n if (this.state.getMetrics) {\n this.$document.ready(() => {\n this.initCharts();\n });\n }\n }\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n}\n\nexport default KubernetesNodeStatsController;\nangular.module('portainer.kubernetes').controller('KubernetesNodeStatsController', KubernetesNodeStatsController);\n","const autoNgTemplateLoaderTemplate1 = require('./createConfigMap.html');\n\nangular.module('portainer.kubernetes').component('kubernetesCreateConfigMapView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesCreateConfigMapController',\n controllerAs: 'ctrl',\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport { KubernetesConfigurationFormValues, KubernetesConfigurationFormValuesEntry } from 'Kubernetes/models/configuration/formvalues';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\nimport KubernetesConfigurationHelper from 'Kubernetes/helpers/configurationHelper';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { getServiceAccounts } from 'Kubernetes/rest/serviceAccount';\nimport { typeOptions } from '@/react/kubernetes/configs/CreateView/options';\n\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { isConfigurationFormValid } from '../../validation';\n\nclass KubernetesCreateConfigMapController {\n /* @ngInject */\n constructor($async, $state, $scope, $window, Notifications, Authentication, KubernetesConfigurationService, KubernetesResourcePoolService, EndpointProvider) {\n this.$async = $async;\n this.$state = $state;\n this.$scope = $scope;\n this.$window = $window;\n this.EndpointProvider = EndpointProvider;\n this.Notifications = Notifications;\n this.Authentication = Authentication;\n this.KubernetesConfigurationService = KubernetesConfigurationService;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesConfigurationKinds = KubernetesConfigurationKinds;\n\n this.typeOptions = typeOptions;\n\n this.onInit = this.onInit.bind(this);\n this.createConfigurationAsync = this.createConfigurationAsync.bind(this);\n this.getConfigurationsAsync = this.getConfigurationsAsync.bind(this);\n this.onResourcePoolSelectionChangeAsync = this.onResourcePoolSelectionChangeAsync.bind(this);\n }\n\n onChangeName() {\n const filteredConfigurations = _.filter(\n this.configurations,\n (config) => config.Namespace === this.formValues.ResourcePool.Namespace.Name && config.Kind === this.formValues.Kind\n );\n this.state.alreadyExist = _.find(filteredConfigurations, (config) => config.Name === this.formValues.Name) !== undefined;\n }\n\n async onResourcePoolSelectionChangeAsync() {\n try {\n this.onChangeName();\n this.availableServiceAccounts = await getServiceAccounts(this.environmentId, this.formValues.ResourcePool.Namespace.Name);\n this.formValues.ServiceAccountName = this.availableServiceAccounts.length > 0 ? this.availableServiceAccounts[0].metadata.name : '';\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load service accounts');\n }\n }\n onResourcePoolSelectionChange() {\n this.$async(this.onResourcePoolSelectionChangeAsync);\n }\n\n addRequiredKeysToForm(keys) {\n // remove data entries that have an empty value\n this.formValues.Data = this.formValues.Data.filter((entry) => entry.Value);\n\n keys.forEach((key) => {\n // if the key doesn't exist on the form, add a new formValues.Data entry\n if (!this.formValues.Data.some((data) => data.Key === key)) {\n this.formValues.Data.push(new KubernetesConfigurationFormValuesEntry());\n const index = this.formValues.Data.length - 1;\n this.formValues.Data[index].Key = key;\n }\n });\n }\n\n isFormValid() {\n const [isValid] = isConfigurationFormValid(this.state.alreadyExist, this.state.isDataValid, this.formValues);\n return isValid;\n }\n\n async createConfigurationAsync() {\n try {\n this.state.actionInProgress = true;\n this.formValues.ConfigurationOwner = this.Authentication.getUserDetails().username;\n if (!this.formValues.IsSimple) {\n this.formValues.Data = KubernetesConfigurationHelper.parseYaml(this.formValues);\n }\n\n await this.KubernetesConfigurationService.create(this.formValues);\n this.Notifications.success('Success', `ConfigMap successfully created`);\n this.state.isEditorDirty = false;\n this.$state.go('kubernetes.configurations', { tab: 'configmaps' });\n } catch (err) {\n this.Notifications.error('Failure', err, `Unable to create ConfigMap`);\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n createConfiguration() {\n return this.$async(this.createConfigurationAsync);\n }\n\n async getConfigurationsAsync() {\n try {\n this.configurations = await this.KubernetesConfigurationService.get();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve ConfigMaps');\n }\n }\n\n getConfigurations() {\n return this.$async(this.getConfigurationsAsync);\n }\n\n async uiCanExit() {\n if (!this.formValues.IsSimple && this.formValues.DataYaml && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async onInit() {\n this.state = {\n actionInProgress: false,\n viewReady: false,\n alreadyExist: false,\n isDataValid: true,\n isEditorDirty: false,\n isDockerConfig: false,\n };\n\n this.formValues = new KubernetesConfigurationFormValues();\n this.formValues.Kind = KubernetesConfigurationKinds.CONFIGMAP;\n this.formValues.Data = [new KubernetesConfigurationFormValuesEntry()];\n\n try {\n const resourcePools = await this.KubernetesResourcePoolService.get();\n this.resourcePools = _.filter(\n resourcePools,\n (resourcePool) => !KubernetesNamespaceHelper.isSystemNamespace(resourcePool.Namespace.Name) && resourcePool.Namespace.Status === 'Active'\n );\n\n this.formValues.ResourcePool = this.resourcePools[0];\n if (!this.formValues.ResourcePool) {\n return;\n }\n\n await this.getConfigurations();\n\n this.environmentId = this.EndpointProvider.endpointID();\n this.availableServiceAccounts = await getServiceAccounts(this.environmentId, this.resourcePools[0].Namespace.Name);\n this.formValues.ServiceAccountName = this.availableServiceAccounts.length > 0 ? this.availableServiceAccounts[0].metadata.name : '';\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load view data');\n } finally {\n this.state.viewReady = true;\n }\n\n this.$window.onbeforeunload = () => {\n if (!this.formValues.IsSimple && this.formValues.DataYaml && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n}\n\nexport default KubernetesCreateConfigMapController;\nangular.module('portainer.kubernetes').controller('KubernetesCreateConfigMapController', KubernetesCreateConfigMapController);\n","const autoNgTemplateLoaderTemplate1 = require('./configMap.html');\n\nangular.module('portainer.kubernetes').component('kubernetesConfigMapView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesConfigMapController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\n\nimport { KubernetesConfigurationFormValues } from 'Kubernetes/models/configuration/formvalues';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\nimport KubernetesConfigurationHelper from 'Kubernetes/helpers/configurationHelper';\nimport KubernetesConfigurationConverter from 'Kubernetes/converters/configuration';\nimport KubernetesEventHelper from 'Kubernetes/helpers/eventHelper';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { confirmUpdate, confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { isConfigurationFormValid } from '../../validation';\n\nclass KubernetesConfigMapController {\n /* @ngInject */\n constructor(\n $async,\n $state,\n $window,\n clipboard,\n EndpointProvider,\n Notifications,\n LocalStorage,\n Authentication,\n KubernetesConfigurationService,\n KubernetesConfigMapService,\n KubernetesResourcePoolService,\n KubernetesApplicationService,\n KubernetesEventService\n ) {\n this.$async = $async;\n this.$state = $state;\n this.$window = $window;\n this.clipboard = clipboard;\n this.EndpointProvider = EndpointProvider;\n this.Notifications = Notifications;\n this.LocalStorage = LocalStorage;\n this.Authentication = Authentication;\n this.KubernetesConfigurationService = KubernetesConfigurationService;\n this.KubernetesConfigMapService = KubernetesConfigMapService;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesEventService = KubernetesEventService;\n this.KubernetesConfigurationKinds = KubernetesConfigurationKinds;\n\n this.onInit = this.onInit.bind(this);\n this.getConfigurationAsync = this.getConfigurationAsync.bind(this);\n this.getEvents = this.getEvents.bind(this);\n this.getEventsAsync = this.getEventsAsync.bind(this);\n this.getApplications = this.getApplications.bind(this);\n this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n this.getConfigurationsAsync = this.getConfigurationsAsync.bind(this);\n this.updateConfiguration = this.updateConfiguration.bind(this);\n this.updateConfigurationAsync = this.updateConfigurationAsync.bind(this);\n }\n\n isSystemNamespace() {\n return KubernetesNamespaceHelper.isSystemNamespace(this.configuration.Namespace);\n }\n\n isSystemConfig() {\n return this.isSystemNamespace();\n }\n\n selectTab(index) {\n this.LocalStorage.storeActiveTab('configuration', index);\n }\n\n showEditor() {\n this.state.showEditorTab = true;\n this.selectTab(2);\n }\n\n copyConfigurationValue(idx) {\n this.clipboard.copyText(this.formValues.Data[idx].Value);\n $('#copyValueNotification_' + idx)\n .show()\n .fadeOut(2500);\n }\n\n isFormValid() {\n const [isValid] = isConfigurationFormValid(this.state.alreadyExist, this.state.isDataValid, this.formValues);\n return isValid;\n }\n\n // TODO: refactor\n // It looks like we're still doing a create/delete process but we've decided to get rid of this\n // approach.\n async updateConfigurationAsync() {\n try {\n this.state.actionInProgress = true;\n if (\n this.formValues.Kind !== this.configuration.Kind ||\n this.formValues.ResourcePool.Namespace.Name !== this.configuration.Namespace ||\n this.formValues.Name !== this.configuration.Name\n ) {\n await this.KubernetesConfigurationService.create(this.formValues);\n await this.KubernetesConfigurationService.delete(this.configuration);\n this.Notifications.success('Success', `ConfigMap successfully updated`);\n this.$state.go(\n 'kubernetes.configurations.configmap',\n {\n namespace: this.formValues.ResourcePool.Namespace.Name,\n name: this.formValues.Name,\n },\n { reload: true }\n );\n } else {\n await this.KubernetesConfigurationService.update(this.formValues, this.configuration);\n this.Notifications.success('Success', `ConfigMap successfully updated`);\n this.$state.reload(this.$state.current);\n }\n } catch (err) {\n this.Notifications.error('Failure', err, `Unable to update ConfigMap`);\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n updateConfiguration() {\n if (this.configuration.Used) {\n confirmUpdate(\n `The changes will be propagated to ${this.configuration.Applications.length} running ${pluralize(\n this.configuration.Applications.length,\n 'application'\n )}. Are you sure you want to update this ConfigMap?`,\n (confirmed) => {\n if (confirmed) {\n return this.$async(this.updateConfigurationAsync);\n }\n }\n );\n } else {\n return this.$async(this.updateConfigurationAsync);\n }\n }\n\n async getConfigurationAsync() {\n try {\n this.state.configurationLoading = true;\n const name = this.$transition$.params().name;\n const namespace = this.$transition$.params().namespace;\n try {\n const configMap = await this.KubernetesConfigMapService.get(namespace, name);\n this.configuration = KubernetesConfigurationConverter.configMapToConfiguration(configMap);\n this.formValues.Data = configMap.Data;\n } catch (err) {\n if (err.status === 403) {\n this.$state.go('kubernetes.configurations', { tab: 'configmaps' });\n throw new Error('Not authorized to edit ConfigMap');\n }\n }\n\n this.formValues.ResourcePool = _.find(this.resourcePools, (resourcePool) => resourcePool.Namespace.Name === this.configuration.Namespace);\n this.formValues.Id = this.configuration.Id;\n this.formValues.Name = this.configuration.Name;\n this.formValues.Type = this.configuration.Type;\n this.formValues.Kind = this.configuration.Kind;\n this.oldDataYaml = this.formValues.DataYaml;\n\n return this.configuration;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve ConfigMap');\n } finally {\n this.state.configurationLoading = false;\n }\n }\n\n getConfiguration() {\n return this.$async(this.getConfigurationAsync);\n }\n\n async getApplicationsAsync(namespace) {\n try {\n this.state.applicationsLoading = true;\n const applications = await this.KubernetesApplicationService.get(namespace);\n this.configuration.Applications = KubernetesConfigurationHelper.getUsingApplications(this.configuration, applications);\n KubernetesConfigurationHelper.setConfigurationUsed(this.configuration);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve applications');\n } finally {\n this.state.applicationsLoading = false;\n }\n }\n\n getApplications(namespace) {\n return this.$async(this.getApplicationsAsync, namespace);\n }\n\n hasEventWarnings() {\n return this.state.eventWarningCount;\n }\n\n async getEventsAsync(namespace) {\n try {\n this.state.eventsLoading = true;\n this.events = await this.KubernetesEventService.get(namespace);\n this.events = _.filter(this.events, (event) => event.Involved.uid === this.configuration.Id);\n this.state.eventWarningCount = KubernetesEventHelper.warningCount(this.events);\n } catch (err) {\n this.Notifications('Failure', err, 'Unable to retrieve events');\n } finally {\n this.state.eventsLoading = false;\n }\n }\n\n getEvents(namespace) {\n return this.$async(this.getEventsAsync, namespace);\n }\n\n async getConfigurationsAsync() {\n try {\n this.configurations = await this.KubernetesConfigurationService.get();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve configurations');\n }\n }\n\n getConfigurations() {\n return this.$async(this.getConfigurationsAsync);\n }\n\n tagUsedDataKeys() {\n const configName = this.$transition$.params().name;\n const usedDataKeys = _.uniq(\n this.configuration.Applications.flatMap((app) =>\n app.Env.filter((e) => e.valueFrom && e.valueFrom.configMapKeyRef && e.valueFrom.configMapKeyRef.name === configName).map((e) => e.name)\n )\n );\n\n this.formValues.Data = this.formValues.Data.map((variable) => {\n if (!usedDataKeys.includes(variable.Key)) {\n return variable;\n }\n\n return { ...variable, Used: true };\n });\n }\n\n async uiCanExit() {\n if (!this.formValues.IsSimple && this.formValues.DataYaml !== this.oldDataYaml && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async onInit() {\n try {\n this.state = {\n actionInProgress: false,\n configurationLoading: true,\n applicationsLoading: true,\n eventsLoading: true,\n showEditorTab: false,\n viewReady: false,\n eventWarningCount: 0,\n activeTab: 0,\n currentName: this.$state.$current.name,\n isDataValid: true,\n isEditorDirty: false,\n };\n\n this.state.activeTab = this.LocalStorage.getActiveTab('configuration');\n\n this.formValues = new KubernetesConfigurationFormValues();\n\n this.resourcePools = await this.KubernetesResourcePoolService.get();\n\n const configuration = await this.getConfiguration();\n if (configuration) {\n await this.getApplications(this.configuration.Namespace);\n await this.getEvents(this.configuration.Namespace);\n await this.getConfigurations();\n }\n\n this.tagUsedDataKeys();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load view data');\n } finally {\n this.state.viewReady = true;\n }\n\n this.$window.onbeforeunload = () => {\n if (!this.formValues.IsSimple && this.formValues.DataYaml !== this.oldDataYaml && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n if (this.state.currentName !== this.$state.$current.name) {\n this.LocalStorage.storeActiveTab('configuration', 0);\n }\n this.state.isEditorDirty = false;\n }\n}\n\nexport default KubernetesConfigMapController;\nangular.module('portainer.kubernetes').controller('KubernetesConfigMapController', KubernetesConfigMapController);\n","import angular from 'angular';\nimport { confirmDelete } from '@@/modals/confirm';\nimport KubernetesConfigurationHelper from 'Kubernetes/helpers/configurationHelper';\n\nclass KubernetesConfigurationsController {\n /* @ngInject */\n constructor($async, $state, Notifications, Authentication, KubernetesConfigurationService, KubernetesApplicationService) {\n this.$async = $async;\n this.$state = $state;\n this.Notifications = Notifications;\n this.Authentication = Authentication;\n this.KubernetesConfigurationService = KubernetesConfigurationService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n\n this.onInit = this.onInit.bind(this);\n this.getConfigurations = this.getConfigurations.bind(this);\n this.getConfigurationsAsync = this.getConfigurationsAsync.bind(this);\n this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n this.removeAction = this.removeAction.bind(this);\n this.removeActionAsync = this.removeActionAsync.bind(this);\n this.refreshCallback = this.refreshCallback.bind(this);\n this.refreshCallbackAsync = this.refreshCallbackAsync.bind(this);\n }\n\n async getConfigurationsAsync() {\n try {\n this.state.configurationsLoading = true;\n this.configurations = await this.KubernetesConfigurationService.get();\n KubernetesConfigurationHelper.setConfigurationsUsed(this.configurations, this.applications);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve ConfigMaps & Secrets');\n } finally {\n this.state.configurationsLoading = false;\n }\n }\n\n getConfigurations() {\n return this.$async(this.getConfigurationsAsync);\n }\n\n async removeActionAsync(selectedItems) {\n let actionCount = selectedItems.length;\n for (const configuration of selectedItems) {\n try {\n await this.KubernetesConfigurationService.delete(configuration);\n this.Notifications.success('ConfigMaps/Secrets successfully removed', configuration.Name);\n const index = this.configurations.indexOf(configuration);\n this.configurations.splice(index, 1);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove ConfigMaps/Secrets');\n } finally {\n --actionCount;\n if (actionCount === 0) {\n this.$state.reload(this.$state.current);\n }\n }\n }\n }\n\n removeAction(selectedItems) {\n confirmDelete('Do you want to remove the selected ConfigMap(s) & Secret(s)?').then((confirmed) => {\n if (confirmed) {\n return this.$async(this.removeActionAsync, selectedItems);\n }\n });\n }\n\n async getApplicationsAsync() {\n try {\n this.state.applicationsLoading = true;\n this.applications = await this.KubernetesApplicationService.get();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve applications');\n } finally {\n this.state.applicationsLoading = false;\n }\n }\n\n getApplications() {\n return this.$async(this.getApplicationsAsync);\n }\n\n async refreshCallbackAsync() {\n await this.getConfigurations();\n await this.getApplications();\n }\n\n refreshCallback() {\n return this.$async(this.refreshCallbackAsync);\n }\n\n async onInit() {\n this.state = {\n configurationsLoading: true,\n applicationsLoading: true,\n viewReady: false,\n isAdmin: this.Authentication.isAdmin(),\n };\n\n await this.getApplications();\n await this.getConfigurations();\n\n this.state.viewReady = true;\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n}\n\nexport default KubernetesConfigurationsController;\nangular.module('portainer.kubernetes').controller('KubernetesConfigurationsController', KubernetesConfigurationsController);\n","const autoNgTemplateLoaderTemplate1 = require('./createSecret.html');\n\nangular.module('portainer.kubernetes').component('kubernetesCreateSecretView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesCreateSecretController',\n controllerAs: 'ctrl',\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport { KubernetesConfigurationFormValues, KubernetesConfigurationFormValuesEntry } from 'Kubernetes/models/configuration/formvalues';\nimport { KubernetesConfigurationKinds, KubernetesSecretTypeOptions } from 'Kubernetes/models/configuration/models';\nimport KubernetesConfigurationHelper from 'Kubernetes/helpers/configurationHelper';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { getServiceAccounts } from 'Kubernetes/rest/serviceAccount';\nimport { typeOptions } from '@/react/kubernetes/configs/CreateView/options';\n\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { isConfigurationFormValid } from '../../validation';\n\nclass KubernetesCreateSecretController {\n /* @ngInject */\n constructor($async, $state, $scope, $window, Notifications, Authentication, KubernetesConfigurationService, KubernetesResourcePoolService, EndpointProvider) {\n this.$async = $async;\n this.$state = $state;\n this.$scope = $scope;\n this.$window = $window;\n this.EndpointProvider = EndpointProvider;\n this.Notifications = Notifications;\n this.Authentication = Authentication;\n this.KubernetesConfigurationService = KubernetesConfigurationService;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesConfigurationKinds = KubernetesConfigurationKinds;\n this.KubernetesSecretTypeOptions = KubernetesSecretTypeOptions;\n\n this.typeOptions = typeOptions;\n\n this.onInit = this.onInit.bind(this);\n this.createConfigurationAsync = this.createConfigurationAsync.bind(this);\n this.getConfigurationsAsync = this.getConfigurationsAsync.bind(this);\n this.onResourcePoolSelectionChangeAsync = this.onResourcePoolSelectionChangeAsync.bind(this);\n this.onSecretTypeChange = this.onSecretTypeChange.bind(this);\n }\n\n onChangeName() {\n const filteredConfigurations = _.filter(\n this.configurations,\n (config) => config.Namespace === this.formValues.ResourcePool.Namespace.Name && config.Kind === this.formValues.Kind\n );\n this.state.alreadyExist = _.find(filteredConfigurations, (config) => config.Name === this.formValues.Name) !== undefined;\n }\n\n async onResourcePoolSelectionChangeAsync() {\n try {\n this.onChangeName();\n this.availableServiceAccounts = await getServiceAccounts(this.environmentId, this.formValues.ResourcePool.Namespace.Name);\n this.formValues.ServiceAccountName = this.availableServiceAccounts.length > 0 ? this.availableServiceAccounts[0].metadata.name : '';\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load service accounts');\n }\n }\n onResourcePoolSelectionChange() {\n this.$async(this.onResourcePoolSelectionChangeAsync);\n }\n\n onSecretTypeChange() {\n switch (this.formValues.Type) {\n case KubernetesSecretTypeOptions.OPAQUE.value:\n case KubernetesSecretTypeOptions.CUSTOM.value:\n this.formValues.Data = this.formValues.Data.filter((entry) => entry.Value !== '');\n if (this.formValues.Data.length === 0) {\n this.addRequiredKeysToForm(['']);\n }\n this.state.isDockerConfig = false;\n break;\n case KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value:\n // data isn't required for service account tokens, so remove the data fields if they are empty\n this.addRequiredKeysToForm([]);\n this.state.isDockerConfig = false;\n break;\n case KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:\n this.addRequiredKeysToForm(['.dockerconfigjson']);\n this.state.isDockerConfig = true;\n break;\n case KubernetesSecretTypeOptions.DOCKERCFG.value:\n this.addRequiredKeysToForm(['.dockercfg']);\n this.state.isDockerConfig = true;\n break;\n case KubernetesSecretTypeOptions.BASICAUTH.value:\n this.addRequiredKeysToForm(['username', 'password']);\n this.state.isDockerConfig = false;\n break;\n case KubernetesSecretTypeOptions.SSHAUTH.value:\n this.addRequiredKeysToForm(['ssh-privatekey']);\n this.state.isDockerConfig = false;\n break;\n case KubernetesSecretTypeOptions.TLS.value:\n this.addRequiredKeysToForm(['tls.crt', 'tls.key']);\n this.state.isDockerConfig = false;\n break;\n case KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:\n this.addRequiredKeysToForm(['token-id', 'token-secret']);\n this.state.isDockerConfig = false;\n break;\n default:\n this.state.isDockerConfig = false;\n break;\n }\n this.isFormValid();\n }\n\n addRequiredKeysToForm(keys) {\n // remove data entries that have an empty value\n this.formValues.Data = this.formValues.Data.filter((entry) => entry.Value);\n\n keys.forEach((key) => {\n // if the key doesn't exist on the form, add a new formValues.Data entry\n if (!this.formValues.Data.some((data) => data.Key === key)) {\n this.formValues.Data.push(new KubernetesConfigurationFormValuesEntry());\n const index = this.formValues.Data.length - 1;\n this.formValues.Data[index].Key = key;\n }\n });\n }\n\n isFormValid() {\n const [isValid, warningMessage] = isConfigurationFormValid(this.state.alreadyExist, this.state.isDataValid, this.formValues);\n this.state.secretWarningMessage = warningMessage;\n return isValid;\n }\n\n async createConfigurationAsync() {\n try {\n this.state.actionInProgress = true;\n this.formValues.ConfigurationOwner = this.Authentication.getUserDetails().username;\n if (!this.formValues.IsSimple) {\n this.formValues.Data = KubernetesConfigurationHelper.parseYaml(this.formValues);\n }\n\n await this.KubernetesConfigurationService.create(this.formValues);\n\n this.Notifications.success('Success', `Secret successfully created`);\n this.state.isEditorDirty = false;\n this.$state.go('kubernetes.configurations', { tab: 'secrets' });\n } catch (err) {\n this.Notifications.error('Failure', err, `Unable to create secret`);\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n createConfiguration() {\n return this.$async(this.createConfigurationAsync);\n }\n\n async getConfigurationsAsync() {\n try {\n this.configurations = await this.KubernetesConfigurationService.get();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve Secrets');\n }\n }\n\n getConfigurations() {\n return this.$async(this.getConfigurationsAsync);\n }\n\n async uiCanExit() {\n if (!this.formValues.IsSimple && this.formValues.DataYaml && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async onInit() {\n this.state = {\n actionInProgress: false,\n viewReady: false,\n alreadyExist: false,\n isDataValid: true,\n isEditorDirty: false,\n isDockerConfig: false,\n secretWarningMessage: '',\n };\n\n this.formValues = new KubernetesConfigurationFormValues();\n this.formValues.Kind = KubernetesConfigurationKinds.SECRET;\n this.formValues.Data = [new KubernetesConfigurationFormValuesEntry()];\n\n try {\n const resourcePools = await this.KubernetesResourcePoolService.get();\n this.resourcePools = _.filter(\n resourcePools,\n (resourcePool) => !KubernetesNamespaceHelper.isSystemNamespace(resourcePool.Namespace.Name) && resourcePool.Namespace.Status === 'Active'\n );\n\n this.formValues.ResourcePool = this.resourcePools[0];\n await this.getConfigurations();\n\n this.environmentId = this.EndpointProvider.endpointID();\n this.availableServiceAccounts = await getServiceAccounts(this.environmentId, this.resourcePools[0].Namespace.Name);\n this.formValues.ServiceAccountName = this.availableServiceAccounts.length > 0 ? this.availableServiceAccounts[0].metadata.name : '';\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load view data');\n } finally {\n this.state.viewReady = true;\n }\n\n this.$window.onbeforeunload = () => {\n if (!this.formValues.IsSimple && this.formValues.DataYaml && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n}\n\nexport default KubernetesCreateSecretController;\nangular.module('portainer.kubernetes').controller('KubernetesCreateSecretController', KubernetesCreateSecretController);\n","const autoNgTemplateLoaderTemplate1 = require('./secret.html');\n\nangular.module('portainer.kubernetes').component('kubernetesSecretView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesSecretController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\n\nimport { KubernetesConfigurationFormValues } from 'Kubernetes/models/configuration/formvalues';\nimport { KubernetesConfigurationKinds, KubernetesSecretTypeOptions } from 'Kubernetes/models/configuration/models';\nimport KubernetesConfigurationHelper from 'Kubernetes/helpers/configurationHelper';\nimport KubernetesConfigurationConverter from 'Kubernetes/converters/configuration';\nimport KubernetesEventHelper from 'Kubernetes/helpers/eventHelper';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\n\nimport { pluralize } from '@/portainer/helpers/strings';\n\nimport { confirmUpdate, confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { isConfigurationFormValid } from '../../validation';\n\nclass KubernetesSecretController {\n /* @ngInject */\n constructor(\n $async,\n $state,\n $window,\n clipboard,\n Notifications,\n LocalStorage,\n KubernetesConfigurationService,\n KubernetesSecretService,\n KubernetesResourcePoolService,\n KubernetesApplicationService,\n KubernetesEventService\n ) {\n this.$async = $async;\n this.$state = $state;\n this.$window = $window;\n this.clipboard = clipboard;\n this.Notifications = Notifications;\n this.LocalStorage = LocalStorage;\n this.KubernetesConfigurationService = KubernetesConfigurationService;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesEventService = KubernetesEventService;\n this.KubernetesConfigurationKinds = KubernetesConfigurationKinds;\n this.KubernetesSecretTypeOptions = KubernetesSecretTypeOptions;\n this.KubernetesSecretService = KubernetesSecretService;\n\n this.onInit = this.onInit.bind(this);\n this.getConfigurationAsync = this.getConfigurationAsync.bind(this);\n this.getEvents = this.getEvents.bind(this);\n this.getEventsAsync = this.getEventsAsync.bind(this);\n this.getApplications = this.getApplications.bind(this);\n this.getApplicationsAsync = this.getApplicationsAsync.bind(this);\n this.updateConfiguration = this.updateConfiguration.bind(this);\n this.updateConfigurationAsync = this.updateConfigurationAsync.bind(this);\n }\n\n isSystemNamespace() {\n return KubernetesNamespaceHelper.isSystemNamespace(this.configuration.Namespace);\n }\n\n isSystemConfig() {\n return this.isSystemNamespace() || this.configuration.IsRegistrySecret;\n }\n\n selectTab(index) {\n this.LocalStorage.storeActiveTab('configuration', index);\n }\n\n showEditor() {\n this.state.showEditorTab = true;\n this.selectTab(2);\n }\n\n copyConfigurationValue(idx) {\n this.clipboard.copyText(this.formValues.Data[idx].Value);\n $('#copyValueNotification_' + idx)\n .show()\n .fadeOut(2500);\n }\n\n isFormValid() {\n const [isValid, warningMessage] = isConfigurationFormValid(this.state.alreadyExist, this.state.isDataValid, this.formValues);\n this.state.secretWarningMessage = warningMessage;\n return isValid;\n }\n\n // TODO: refactor\n // It looks like we're still doing a create/delete process but we've decided to get rid of this\n // approach.\n async updateConfigurationAsync() {\n try {\n this.state.actionInProgress = true;\n if (\n this.formValues.Kind !== this.configuration.Kind ||\n this.formValues.ResourcePool.Namespace.Name !== this.configuration.Namespace ||\n this.formValues.Name !== this.configuration.Name\n ) {\n await this.KubernetesConfigurationService.create(this.formValues);\n await this.KubernetesConfigurationService.delete(this.configuration);\n this.Notifications.success('Success', `Secret successfully updated`);\n this.$state.go(\n 'kubernetes.secrets.secret',\n {\n namespace: this.formValues.ResourcePool.Namespace.Name,\n name: this.formValues.Name,\n },\n { reload: true }\n );\n } else {\n await this.KubernetesConfigurationService.update(this.formValues, this.configuration);\n this.Notifications.success('Success', `Secret successfully updated`);\n this.$state.reload(this.$state.current);\n }\n } catch (err) {\n this.Notifications.error('Failure', err, `Unable to update Secret`);\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n updateConfiguration() {\n if (this.configuration.Used) {\n confirmUpdate(\n `The changes will be propagated to ${this.configuration.Applications.length} running ${pluralize(\n this.configuration.Applications.length,\n 'application'\n )}. Are you sure you want to update this Secret?`,\n (confirmed) => {\n if (confirmed) {\n return this.$async(this.updateConfigurationAsync);\n }\n }\n );\n } else {\n return this.$async(this.updateConfigurationAsync);\n }\n }\n\n async getConfigurationAsync() {\n try {\n this.state.configurationLoading = true;\n const name = this.$transition$.params().name;\n const namespace = this.$transition$.params().namespace;\n try {\n const secret = await this.KubernetesSecretService.get(namespace, name);\n this.configuration = KubernetesConfigurationConverter.secretToConfiguration(secret);\n this.formValues.Data = secret.Data;\n } catch (err) {\n if (err.status === 403) {\n this.$state.go('kubernetes.configurations', { tab: 'secrets' });\n throw new Error('Not authorized to edit secret');\n }\n }\n this.formValues.ResourcePool = _.find(this.resourcePools, (resourcePool) => resourcePool.Namespace.Name === this.configuration.Namespace);\n this.formValues.Id = this.configuration.Id;\n this.formValues.Name = this.configuration.Name;\n this.formValues.Type = this.configuration.Type;\n this.formValues.Kind = this.configuration.Kind;\n this.oldDataYaml = this.formValues.DataYaml;\n\n return this.configuration;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve secret');\n } finally {\n this.state.configurationLoading = false;\n }\n }\n\n getConfiguration() {\n return this.$async(this.getConfigurationAsync);\n }\n\n async getApplicationsAsync(namespace) {\n try {\n this.state.applicationsLoading = true;\n const applications = await this.KubernetesApplicationService.get(namespace);\n this.configuration.Applications = KubernetesConfigurationHelper.getUsingApplications(this.configuration, applications);\n KubernetesConfigurationHelper.setConfigurationUsed(this.configuration);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve applications');\n } finally {\n this.state.applicationsLoading = false;\n }\n }\n\n getApplications(namespace) {\n return this.$async(this.getApplicationsAsync, namespace);\n }\n\n hasEventWarnings() {\n return this.state.eventWarningCount;\n }\n\n async getEventsAsync(namespace) {\n try {\n this.state.eventsLoading = true;\n this.events = await this.KubernetesEventService.get(namespace);\n this.events = _.filter(this.events, (event) => event.Involved.uid === this.configuration.Id);\n this.state.eventWarningCount = KubernetesEventHelper.warningCount(this.events);\n } catch (err) {\n this.Notifications('Failure', err, 'Unable to retrieve events');\n } finally {\n this.state.eventsLoading = false;\n }\n }\n\n getEvents(namespace) {\n return this.$async(this.getEventsAsync, namespace);\n }\n\n tagUsedDataKeys() {\n const configName = this.$transition$.params().name;\n const usedDataKeys = _.uniq(\n this.configuration.Applications.flatMap((app) =>\n app.Env.filter((e) => e.valueFrom && e.valueFrom.configMapKeyRef && e.valueFrom.configMapKeyRef.name === configName).map((e) => e.name)\n )\n );\n\n this.formValues.Data = this.formValues.Data.map((variable) => {\n if (!usedDataKeys.includes(variable.Key)) {\n return variable;\n }\n\n return { ...variable, Used: true };\n });\n }\n\n async uiCanExit() {\n if (!this.formValues.IsSimple && this.formValues.DataYaml !== this.oldDataYaml && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async onInit() {\n try {\n this.state = {\n actionInProgress: false,\n configurationLoading: true,\n applicationsLoading: true,\n eventsLoading: true,\n showEditorTab: false,\n viewReady: false,\n eventWarningCount: 0,\n activeTab: 0,\n currentName: this.$state.$current.name,\n isDataValid: true,\n isEditorDirty: false,\n isDockerConfig: false,\n secretWarningMessage: '',\n };\n\n this.state.activeTab = this.LocalStorage.getActiveTab('configuration');\n\n this.formValues = new KubernetesConfigurationFormValues();\n\n this.resourcePools = await this.KubernetesResourcePoolService.get();\n const configuration = await this.getConfiguration();\n if (configuration) {\n await this.getApplications(this.configuration.Namespace);\n await this.getEvents(this.configuration.Namespace);\n }\n\n // after loading the configuration, check if it is a docker config secret type\n if (\n this.formValues.Kind === this.KubernetesConfigurationKinds.SECRET &&\n (this.formValues.Type === this.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value || this.formValues.Type === this.KubernetesSecretTypeOptions.DOCKERCFG.value)\n ) {\n this.state.isDockerConfig = true;\n }\n // convert the secret type to a human readable value\n if (this.formValues.Type) {\n const secretTypeValues = Object.values(this.KubernetesSecretTypeOptions);\n const secretType = secretTypeValues.find((secretType) => secretType.value === this.formValues.Type);\n this.secretTypeName = secretType ? secretType.name : this.formValues.Type;\n } else {\n this.secretTypeName = '';\n }\n\n if (this.formValues.Type === this.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value) {\n this.formValues.ServiceAccountName = configuration.ServiceAccountName;\n }\n\n this.tagUsedDataKeys();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load view data');\n } finally {\n this.state.viewReady = true;\n }\n\n this.$window.onbeforeunload = () => {\n if (!this.formValues.IsSimple && this.formValues.DataYaml !== this.oldDataYaml && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n if (this.state.currentName !== this.$state.$current.name) {\n this.LocalStorage.storeActiveTab('configuration', 0);\n }\n this.state.isEditorDirty = false;\n }\n}\n\nexport default KubernetesSecretController;\nangular.module('portainer.kubernetes').controller('KubernetesSecretController', KubernetesSecretController);\n","import { KubernetesSecretTypeOptions } from '@/kubernetes/models/configuration/models';\nimport { KubernetesConfigurationKinds } from '@/kubernetes/models/configuration/models';\n\nexport function isConfigurationFormValid(alreadyExist, isDataValid, formValues) {\n const uniqueCheck = !alreadyExist && isDataValid;\n let secretWarningMessage = '';\n let isFormValid = false;\n\n if (formValues.IsSimple) {\n if (formValues.Kind === KubernetesConfigurationKinds.SECRET) {\n let isSecretDataValid = true;\n\n switch (formValues.Type) {\n case KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value:\n // data isn't required for service account tokens\n isFormValid = uniqueCheck && formValues.ResourcePool;\n return [isFormValid, ''];\n case KubernetesSecretTypeOptions.DOCKERCFG.value:\n // needs to contain a .dockercfg key\n isSecretDataValid = formValues.Data.some((entry) => entry.Key === '.dockercfg');\n secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a .dockercfg key is required.';\n break;\n case KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value:\n // needs to contain a .dockerconfigjson key\n isSecretDataValid = formValues.Data.some((entry) => entry.Key === '.dockerconfigjson');\n secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a .dockerconfigjson key. is required.';\n break;\n case KubernetesSecretTypeOptions.BASICAUTH.value:\n isSecretDataValid = formValues.Data.some((entry) => entry.Key === 'username' || entry.Key === 'password');\n secretWarningMessage = isSecretDataValid ? '' : 'A data entry with a username or password key is required.';\n break;\n case KubernetesSecretTypeOptions.SSHAUTH.value:\n isSecretDataValid = formValues.Data.some((entry) => entry.Key === 'ssh-privatekey');\n secretWarningMessage = isSecretDataValid ? '' : `A data entry with a 'ssh-privatekey' key is required.`;\n break;\n case KubernetesSecretTypeOptions.TLS.value:\n isSecretDataValid = formValues.Data.some((entry) => entry.Key === 'tls.crt') && formValues.Data.some((entry) => entry.Key === 'tls.key');\n secretWarningMessage = isSecretDataValid ? '' : `Data entries containing a 'tls.crt' key and a 'tls.key' key are required.`;\n break;\n case KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value:\n isSecretDataValid = formValues.Data.some((entry) => entry.Key === 'token-id') && formValues.Data.some((entry) => entry.Key === 'token-secret');\n secretWarningMessage = isSecretDataValid ? '' : `Data entries containing a 'token-id' key and a 'token-secret' key are required.`;\n break;\n default:\n break;\n }\n\n isFormValid = uniqueCheck && formValues.ResourcePool && formValues.Data.length >= 1 && isSecretDataValid;\n return [isFormValid, secretWarningMessage];\n }\n\n isFormValid = formValues.Data.length > 0 && uniqueCheck && formValues.ResourcePool;\n return [isFormValid, secretWarningMessage];\n }\n\n isFormValid = uniqueCheck && formValues.ResourcePool;\n return [isFormValid, secretWarningMessage];\n}\n","import _ from 'lodash-es';\nimport angular from 'angular';\nimport { KubernetesStorageClass, KubernetesStorageClassAccessPolicies } from 'Kubernetes/models/storage-class/models';\nimport { KubernetesFormValidationReferences } from 'Kubernetes/models/application/formValues';\nimport { KubernetesIngressClassTypes } from 'Kubernetes/ingress/constants';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { getIngressControllerClassMap, updateIngressControllerClassMap } from '@/react/kubernetes/cluster/ingressClass/utils';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { confirm } from '@@/modals/confirm';\nimport { getIsRBACEnabled } from '@/react/kubernetes/cluster/getIsRBACEnabled';\nimport { ModalType } from '@@/modals/Modal/types';\nimport { getMetricsForAllNodes } from '@/react/kubernetes/services/service.ts';\n\nclass KubernetesConfigureController {\n /* #region CONSTRUCTOR */\n\n /* @ngInject */\n constructor($async, $state, $scope, Notifications, KubernetesStorageService, EndpointService, EndpointProvider, KubernetesResourcePoolService, KubernetesIngressService) {\n this.$async = $async;\n this.$state = $state;\n this.$scope = $scope;\n this.Notifications = Notifications;\n this.KubernetesStorageService = KubernetesStorageService;\n this.EndpointService = EndpointService;\n this.EndpointProvider = EndpointProvider;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesIngressService = KubernetesIngressService;\n\n this.IngressClassTypes = KubernetesIngressClassTypes;\n\n this.onInit = this.onInit.bind(this);\n this.configureAsync = this.configureAsync.bind(this);\n this.areControllersChanged = this.areControllersChanged.bind(this);\n this.areFormValuesChanged = this.areFormValuesChanged.bind(this);\n this.areStorageClassesChanged = this.areStorageClassesChanged.bind(this);\n this.onBeforeOnload = this.onBeforeOnload.bind(this);\n this.limitedFeature = FeatureId.K8S_SETUP_DEFAULT;\n this.limitedFeatureAutoWindow = FeatureId.HIDE_AUTO_UPDATE_WINDOW;\n this.limitedFeatureIngressDeploy = FeatureId.K8S_ADM_ONLY_USR_INGRESS_DEPLY;\n this.onToggleAutoUpdate = this.onToggleAutoUpdate.bind(this);\n this.onChangeControllers = this.onChangeControllers.bind(this);\n this.onChangeEnableResourceOverCommit = this.onChangeEnableResourceOverCommit.bind(this);\n this.onToggleIngressAvailabilityPerNamespace = this.onToggleIngressAvailabilityPerNamespace.bind(this);\n this.onToggleAllowNoneIngressClass = this.onToggleAllowNoneIngressClass.bind(this);\n this.onChangeStorageClassAccessMode = this.onChangeStorageClassAccessMode.bind(this);\n this.onToggleRestrictNs = this.onToggleRestrictNs.bind(this);\n }\n /* #endregion */\n\n /* #region STORAGE CLASSES UI MANAGEMENT */\n storageClassAvailable() {\n return this.StorageClasses && this.StorageClasses.length > 0;\n }\n\n hasValidStorageConfiguration() {\n let valid = true;\n _.forEach(this.StorageClasses, (item) => {\n if (item.selected && item.AccessModes.length === 0) {\n valid = false;\n }\n });\n return valid;\n }\n /* #endregion */\n\n /* #region INGRESS CLASSES UI MANAGEMENT */\n onChangeControllers(controllerClassMap) {\n this.ingressControllers = controllerClassMap;\n }\n\n hasTraefikIngress() {\n return _.find(this.formValues.IngressClasses, { Type: this.IngressClassTypes.TRAEFIK });\n }\n\n toggleAdvancedIngSettings($event) {\n $event.stopPropagation();\n $event.preventDefault();\n this.$scope.$evalAsync(() => {\n this.state.isIngToggleSectionExpanded = !this.state.isIngToggleSectionExpanded;\n });\n }\n\n onToggleAllowNoneIngressClass() {\n this.$scope.$evalAsync(() => {\n this.formValues.AllowNoneIngressClass = !this.formValues.AllowNoneIngressClass;\n });\n }\n\n onToggleIngressAvailabilityPerNamespace() {\n this.$scope.$evalAsync(() => {\n this.formValues.IngressAvailabilityPerNamespace = !this.formValues.IngressAvailabilityPerNamespace;\n });\n }\n /* #endregion */\n\n /* #region RESOURCES AND METRICS */\n\n onChangeEnableResourceOverCommit(enabled) {\n this.$scope.$evalAsync(() => {\n this.formValues.EnableResourceOverCommit = enabled;\n if (enabled) {\n this.formValues.ResourceOverCommitPercentage = 20;\n }\n });\n }\n\n /* #endregion */\n\n /* #region CONFIGURE */\n assignFormValuesToEndpoint(endpoint, storageClasses, ingressClasses) {\n endpoint.Kubernetes.Configuration.StorageClasses = storageClasses;\n endpoint.Kubernetes.Configuration.UseLoadBalancer = this.formValues.UseLoadBalancer;\n endpoint.Kubernetes.Configuration.UseServerMetrics = this.formValues.UseServerMetrics;\n endpoint.Kubernetes.Configuration.EnableResourceOverCommit = this.formValues.EnableResourceOverCommit;\n endpoint.Kubernetes.Configuration.ResourceOverCommitPercentage = this.formValues.ResourceOverCommitPercentage;\n endpoint.Kubernetes.Configuration.IngressClasses = ingressClasses;\n endpoint.Kubernetes.Configuration.RestrictDefaultNamespace = this.formValues.RestrictDefaultNamespace;\n endpoint.Kubernetes.Configuration.IngressAvailabilityPerNamespace = this.formValues.IngressAvailabilityPerNamespace;\n endpoint.Kubernetes.Configuration.AllowNoneIngressClass = this.formValues.AllowNoneIngressClass;\n endpoint.ChangeWindow = this.state.autoUpdateSettings;\n }\n\n transformFormValues() {\n const storageClasses = _.map(this.StorageClasses, (item) => {\n if (item.selected) {\n const res = new KubernetesStorageClass();\n res.Name = item.Name;\n res.AccessModes = _.map(item.AccessModes, 'Name');\n res.Provisioner = item.Provisioner;\n res.AllowVolumeExpansion = item.AllowVolumeExpansion;\n return res;\n }\n });\n _.pull(storageClasses, undefined);\n\n const ingressClasses = _.without(\n _.map(this.formValues.IngressClasses, (ic) => (ic.NeedsDeletion ? undefined : ic)),\n undefined\n );\n _.pull(ingressClasses, undefined);\n\n return [storageClasses, ingressClasses];\n }\n\n async removeIngressesAcrossNamespaces() {\n const ingressesToDel = _.filter(this.formValues.IngressClasses, { NeedsDeletion: true });\n if (!ingressesToDel.length) {\n return;\n }\n const promises = [];\n const oldEndpoint = this.EndpointProvider.currentEndpoint();\n this.EndpointProvider.setCurrentEndpoint(this.endpoint);\n\n try {\n const allResourcePools = await this.KubernetesResourcePoolService.get();\n const resourcePools = _.filter(\n allResourcePools,\n (resourcePool) =>\n !KubernetesNamespaceHelper.isSystemNamespace(resourcePool.Namespace.Name) &&\n !KubernetesNamespaceHelper.isDefaultNamespace(resourcePool.Namespace.Name) &&\n resourcePool.Namespace.Status === 'Active'\n );\n\n ingressesToDel.forEach((ingress) => {\n resourcePools.forEach((resourcePool) => {\n promises.push(this.KubernetesIngressService.delete(resourcePool.Namespace.Name, ingress.Name));\n });\n });\n } finally {\n this.EndpointProvider.setCurrentEndpoint(oldEndpoint);\n }\n\n const responses = await Promise.allSettled(promises);\n responses.forEach((respons) => {\n if (respons.status == 'rejected' && respons.reason.err.status != 404) {\n throw respons.reason;\n }\n });\n }\n\n enableMetricsServer() {\n return this.$async(async () => {\n if (this.formValues.UseServerMetrics) {\n this.state.metrics.userClick = true;\n this.state.metrics.pending = true;\n try {\n await getMetricsForAllNodes(this.endpoint.Id);\n this.state.metrics.isServerRunning = true;\n this.state.metrics.pending = false;\n this.state.metrics.userClick = true;\n this.formValues.UseServerMetrics = true;\n } catch (_) {\n this.state.metrics.isServerRunning = false;\n this.state.metrics.pending = false;\n this.formValues.UseServerMetrics = false;\n }\n } else {\n this.state.metrics.userClick = false;\n this.formValues.UseServerMetrics = false;\n }\n });\n }\n\n async configureAsync() {\n try {\n this.state.actionInProgress = true;\n const [storageClasses, ingressClasses] = this.transformFormValues();\n\n await this.removeIngressesAcrossNamespaces();\n\n this.assignFormValuesToEndpoint(this.endpoint, storageClasses, ingressClasses);\n await this.EndpointService.updateEndpoint(this.endpoint.Id, this.endpoint);\n // updateIngressControllerClassMap must be done after updateEndpoint, as a hacky workaround. A better solution: saving ingresscontrollers somewhere else, is being discussed\n await updateIngressControllerClassMap(this.state.endpointId, this.ingressControllers || []);\n this.state.isSaving = true;\n const storagePromises = _.map(storageClasses, (storageClass) => {\n const oldStorageClass = _.find(this.oldStorageClasses, { Name: storageClass.Name });\n if (oldStorageClass) {\n return this.KubernetesStorageService.patch(this.state.endpointId, oldStorageClass, storageClass);\n }\n });\n await Promise.all(storagePromises);\n this.$state.reload();\n this.Notifications.success('Success', 'Configuration successfully applied');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to apply configuration');\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n configure() {\n return this.$async(this.configureAsync);\n }\n /* #endregion */\n\n restrictDefaultToggledOn() {\n return this.formValues.RestrictDefaultNamespace && !this.oldFormValues.RestrictDefaultNamespace;\n }\n\n onToggleAutoUpdate(value) {\n return this.$scope.$evalAsync(() => {\n this.state.autoUpdateSettings.Enabled = value;\n });\n }\n\n onChangeStorageClassAccessMode(storageClassName, accessModes) {\n return this.$scope.$evalAsync(() => {\n const storageClass = this.StorageClasses.find((item) => item.Name === storageClassName);\n\n if (!storageClass) {\n throw new Error('Storage class not found');\n }\n\n storageClass.AccessModes = accessModes;\n });\n }\n\n onToggleRestrictNs() {\n this.$scope.$evalAsync(() => {\n this.formValues.RestrictDefaultNamespace = !this.formValues.RestrictDefaultNamespace;\n });\n }\n\n /* #region ON INIT */\n async onInit() {\n this.state = {\n actionInProgress: false,\n displayConfigureClassPanel: {},\n viewReady: false,\n isIngToggleSectionExpanded: false,\n endpointId: this.$state.params.endpointId,\n duplicates: {\n ingressClasses: new KubernetesFormValidationReferences(),\n },\n metrics: {\n pending: false,\n isServerRunning: false,\n userClick: false,\n },\n timeZone: '',\n isSaving: false,\n };\n\n this.formValues = {\n UseLoadBalancer: false,\n UseServerMetrics: false,\n EnableResourceOverCommit: true,\n ResourceOverCommitPercentage: 20,\n IngressClasses: [],\n RestrictDefaultNamespace: false,\n enableAutoUpdateTimeWindow: false,\n IngressAvailabilityPerNamespace: false,\n };\n\n // default to true if error is thrown\n this.isRBACEnabled = true;\n\n this.isIngressControllersLoading = true;\n try {\n this.availableAccessModes = new KubernetesStorageClassAccessPolicies();\n\n [this.StorageClasses, this.endpoint, this.isRBACEnabled] = await Promise.all([\n this.KubernetesStorageService.get(this.state.endpointId),\n this.EndpointService.endpoint(this.state.endpointId),\n getIsRBACEnabled(this.state.endpointId),\n ]);\n\n this.ingressControllers = await getIngressControllerClassMap({ environmentId: this.state.endpointId });\n this.originalIngressControllers = structuredClone(this.ingressControllers) || [];\n\n this.state.autoUpdateSettings = this.endpoint.ChangeWindow;\n\n _.forEach(this.StorageClasses, (item) => {\n const storage = _.find(this.endpoint.Kubernetes.Configuration.StorageClasses, (sc) => sc.Name === item.Name);\n if (storage) {\n item.selected = true;\n item.AccessModes = storage.AccessModes.map((name) => this.availableAccessModes.find((accessMode) => accessMode.Name === name));\n } else if (this.availableAccessModes.length) {\n // set a default access mode if the storage class is not enabled and there are available access modes\n item.AccessModes = [this.availableAccessModes[0]];\n }\n });\n\n this.formValues.UseLoadBalancer = this.endpoint.Kubernetes.Configuration.UseLoadBalancer;\n this.formValues.UseServerMetrics = this.endpoint.Kubernetes.Configuration.UseServerMetrics;\n this.formValues.EnableResourceOverCommit = this.endpoint.Kubernetes.Configuration.EnableResourceOverCommit;\n this.formValues.ResourceOverCommitPercentage = this.endpoint.Kubernetes.Configuration.ResourceOverCommitPercentage;\n this.formValues.RestrictDefaultNamespace = this.endpoint.Kubernetes.Configuration.RestrictDefaultNamespace;\n this.formValues.IngressClasses = _.map(this.endpoint.Kubernetes.Configuration.IngressClasses, (ic) => {\n ic.IsNew = false;\n ic.NeedsDeletion = false;\n return ic;\n });\n this.formValues.IngressAvailabilityPerNamespace = this.endpoint.Kubernetes.Configuration.IngressAvailabilityPerNamespace;\n this.formValues.AllowNoneIngressClass = this.endpoint.Kubernetes.Configuration.AllowNoneIngressClass;\n\n this.oldStorageClasses = angular.copy(this.StorageClasses);\n this.oldFormValues = angular.copy(this.formValues);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve environment configuration');\n } finally {\n this.state.viewReady = true;\n this.isIngressControllersLoading = false;\n }\n\n window.addEventListener('beforeunload', this.onBeforeOnload);\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n /* #endregion */\n\n $onDestroy() {\n window.removeEventListener('beforeunload', this.onBeforeOnload);\n }\n\n areControllersChanged() {\n return !_.isEqual(this.ingressControllers, this.originalIngressControllers);\n }\n\n areFormValuesChanged() {\n return !_.isEqual(this.formValues, this.oldFormValues);\n }\n\n areStorageClassesChanged() {\n // angular is pesky and modifies this.StorageClasses (adds $$hashkey to each item)\n // angular.toJson removes this to make the comparison work\n const storageClassesWithoutHashKey = angular.toJson(this.StorageClasses);\n const oldStorageClassesWithoutHashKey = angular.toJson(this.oldStorageClasses);\n return !_.isEqual(storageClassesWithoutHashKey, oldStorageClassesWithoutHashKey);\n }\n\n onBeforeOnload(event) {\n if (!this.state.isSaving && (this.areControllersChanged() || this.areFormValuesChanged() || this.areStorageClassesChanged())) {\n event.preventDefault();\n event.returnValue = '';\n }\n }\n\n uiCanExit() {\n if (!this.state.isSaving && (this.areControllersChanged() || this.areFormValuesChanged() || this.areStorageClassesChanged()) && !this.isIngressControllersLoading) {\n return confirm({\n title: 'Are you sure?',\n message: 'You currently have unsaved changes in the cluster setup view. Are you sure you want to leave?',\n modalType: ModalType.Warn,\n confirmButton: buildConfirmButton('Yes', 'danger'),\n });\n }\n }\n}\n\nexport default KubernetesConfigureController;\nangular.module('portainer.kubernetes').controller('KubernetesConfigureController', KubernetesConfigureController);\n","const autoNgTemplateLoaderTemplate1 = require('./deploy.html');\n\nangular.module('portainer.kubernetes').component('kubernetesDeployView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesDeployController',\n controllerAs: 'ctrl',\n bindings: {\n endpoint: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport stripAnsi from 'strip-ansi';\n\nimport PortainerError from '@/portainer/error';\nimport { KubernetesDeployManifestTypes, KubernetesDeployBuildMethods, KubernetesDeployRequestMethods, RepositoryMechanismTypes } from 'Kubernetes/models/deploy';\nimport { renderTemplate } from '@/react/portainer/custom-templates/components/utils';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { kubernetes } from '@@/BoxSelector/common-options/deployment-methods';\nimport { editor, git, customTemplate, url } from '@@/BoxSelector/common-options/build-methods';\nimport { parseAutoUpdateResponse, transformAutoUpdateViewModel } from '@/react/portainer/gitops/AutoUpdateFieldset/utils';\nimport { baseStackWebhookUrl, createWebhookId } from '@/portainer/helpers/webhookHelper';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\n\nclass KubernetesDeployController {\n /* @ngInject */\n constructor($async, $state, $window, Authentication, Notifications, KubernetesResourcePoolService, StackService, CustomTemplateService) {\n this.$async = $async;\n this.$state = $state;\n this.$window = $window;\n this.Authentication = Authentication;\n this.Notifications = Notifications;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.StackService = StackService;\n this.CustomTemplateService = CustomTemplateService;\n\n this.isTemplateVariablesEnabled = isBE;\n\n this.deployOptions = [{ ...kubernetes, value: KubernetesDeployManifestTypes.KUBERNETES }];\n\n this.methodOptions = [\n { ...git, value: KubernetesDeployBuildMethods.GIT },\n { ...editor, value: KubernetesDeployBuildMethods.WEB_EDITOR },\n { ...url, value: KubernetesDeployBuildMethods.URL },\n { ...customTemplate, value: KubernetesDeployBuildMethods.CUSTOM_TEMPLATE },\n ];\n\n this.state = {\n DeployType: KubernetesDeployManifestTypes.KUBERNETES,\n BuildMethod: KubernetesDeployBuildMethods.GIT,\n tabLogsDisabled: true,\n activeTab: 0,\n viewReady: false,\n isEditorDirty: false,\n templateId: null,\n template: null,\n baseWebhookUrl: baseStackWebhookUrl(),\n webhookId: createWebhookId(),\n templateLoadFailed: false,\n isEditorReadOnly: false,\n };\n\n this.currentUser = {\n isAdmin: false,\n id: null,\n };\n\n this.formValues = {\n StackName: '',\n RepositoryURL: '',\n RepositoryReferenceName: '',\n RepositoryAuthentication: false,\n RepositoryUsername: '',\n RepositoryPassword: '',\n AdditionalFiles: [],\n ComposeFilePathInRepository: '',\n Variables: {},\n AutoUpdate: parseAutoUpdateResponse(),\n TLSSkipVerify: false,\n };\n\n this.ManifestDeployTypes = KubernetesDeployManifestTypes;\n this.BuildMethods = KubernetesDeployBuildMethods;\n\n this.onChangeTemplateId = this.onChangeTemplateId.bind(this);\n this.deployAsync = this.deployAsync.bind(this);\n this.onChangeFileContent = this.onChangeFileContent.bind(this);\n this.getNamespacesAsync = this.getNamespacesAsync.bind(this);\n this.onChangeFormValues = this.onChangeFormValues.bind(this);\n this.buildAnalyticsProperties = this.buildAnalyticsProperties.bind(this);\n this.onChangeMethod = this.onChangeMethod.bind(this);\n this.onChangeDeployType = this.onChangeDeployType.bind(this);\n this.onChangeTemplateVariables = this.onChangeTemplateVariables.bind(this);\n }\n\n onChangeTemplateVariables(value) {\n this.onChangeFormValues({ Variables: value });\n\n this.renderTemplate();\n }\n\n renderTemplate() {\n if (!this.isTemplateVariablesEnabled) {\n return;\n }\n\n const rendered = renderTemplate(this.state.templateContent, this.formValues.Variables, this.state.template.Variables);\n this.onChangeFormValues({ EditorContent: rendered });\n }\n\n buildAnalyticsProperties() {\n const metadata = {\n type: buildLabel(this.state.BuildMethod),\n format: formatLabel(this.state.DeployType),\n role: roleLabel(this.currentUser.isAdmin),\n 'automatic-updates': automaticUpdatesLabel(this.formValues.RepositoryAutomaticUpdates, this.formValues.RepositoryMechanism),\n };\n\n if (this.state.BuildMethod === KubernetesDeployBuildMethods.GIT) {\n metadata.auth = this.formValues.RepositoryAuthentication;\n }\n\n return { metadata };\n\n function automaticUpdatesLabel(repositoryAutomaticUpdates, repositoryMechanism) {\n switch (repositoryAutomaticUpdates && repositoryMechanism) {\n case RepositoryMechanismTypes.INTERVAL:\n return 'polling';\n case RepositoryMechanismTypes.WEBHOOK:\n return 'webhook';\n default:\n return 'off';\n }\n }\n\n function roleLabel(isAdmin) {\n if (isAdmin) {\n return 'admin';\n }\n\n return 'standard';\n }\n\n function buildLabel(buildMethod) {\n switch (buildMethod) {\n case KubernetesDeployBuildMethods.GIT:\n return 'git';\n case KubernetesDeployBuildMethods.WEB_EDITOR:\n return 'web-editor';\n }\n }\n\n function formatLabel(format) {\n switch (format) {\n case KubernetesDeployManifestTypes.COMPOSE:\n return 'compose';\n case KubernetesDeployManifestTypes.KUBERNETES:\n return 'manifest';\n }\n }\n }\n\n onChangeMethod(method) {\n return this.$async(async () => {\n this.state.BuildMethod = method;\n });\n }\n\n onChangeDeployType(type) {\n return this.$async(async () => {\n this.state.DeployType = type;\n });\n }\n\n disableDeploy() {\n const isWebEditorInvalid =\n this.state.BuildMethod === KubernetesDeployBuildMethods.WEB_EDITOR && _.isEmpty(this.formValues.EditorContent) && _.isEmpty(this.formValues.Namespace);\n const isURLFormInvalid = this.state.BuildMethod == KubernetesDeployBuildMethods.WEB_EDITOR.URL && _.isEmpty(this.formValues.ManifestURL);\n\n const isNamespaceInvalid = _.isEmpty(this.formValues.Namespace);\n return !this.formValues.StackName || isWebEditorInvalid || isURLFormInvalid || this.state.actionInProgress || isNamespaceInvalid;\n }\n\n onChangeFormValues(newValues) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...newValues,\n };\n });\n }\n\n onChangeTemplateId(templateId, template) {\n return this.$async(async () => {\n if (!template || (this.state.templateId === templateId && this.state.template === template)) {\n return;\n }\n\n this.state.templateId = templateId;\n this.state.template = template;\n\n try {\n try {\n this.state.templateContent = await this.CustomTemplateService.customTemplateFile(templateId, template.GitConfig !== null);\n this.onChangeFileContent(this.state.templateContent);\n\n this.state.isEditorReadOnly = true;\n } catch (err) {\n this.state.templateLoadFailed = true;\n throw err;\n }\n\n if (template.Variables && template.Variables.length > 0) {\n const variables = Object.fromEntries(template.Variables.map((variable) => [variable.name, '']));\n this.onChangeTemplateVariables(variables);\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load template file');\n }\n });\n }\n\n onChangeFileContent(value) {\n this.formValues.EditorContent = value;\n this.state.isEditorDirty = true;\n }\n\n displayErrorLog(log) {\n this.errorLog = stripAnsi(log);\n this.state.tabLogsDisabled = false;\n this.state.activeTab = 1;\n }\n\n async deployAsync() {\n this.errorLog = '';\n this.state.actionInProgress = true;\n\n try {\n let method;\n let composeFormat = this.state.DeployType === this.ManifestDeployTypes.COMPOSE;\n\n switch (this.state.BuildMethod) {\n case this.BuildMethods.GIT:\n method = KubernetesDeployRequestMethods.REPOSITORY;\n break;\n case this.BuildMethods.WEB_EDITOR:\n method = KubernetesDeployRequestMethods.STRING;\n break;\n case KubernetesDeployBuildMethods.CUSTOM_TEMPLATE:\n method = KubernetesDeployRequestMethods.STRING;\n composeFormat = false;\n break;\n case this.BuildMethods.URL:\n method = KubernetesDeployRequestMethods.URL;\n break;\n default:\n throw new PortainerError('Unable to determine build method');\n }\n\n let deployNamespace = '';\n\n if (this.formValues.namespace_toggle) {\n deployNamespace = '';\n } else {\n deployNamespace = this.formValues.Namespace;\n }\n\n const payload = {\n ComposeFormat: composeFormat,\n Namespace: deployNamespace,\n StackName: this.formValues.StackName,\n };\n\n if (method === KubernetesDeployRequestMethods.REPOSITORY) {\n payload.TLSSkipVerify = this.formValues.TLSSkipVerify;\n payload.RepositoryURL = this.formValues.RepositoryURL;\n payload.RepositoryReferenceName = this.formValues.RepositoryReferenceName;\n payload.RepositoryAuthentication = this.formValues.RepositoryAuthentication ? true : false;\n if (payload.RepositoryAuthentication) {\n payload.RepositoryUsername = this.formValues.RepositoryUsername;\n payload.RepositoryPassword = this.formValues.RepositoryPassword;\n }\n payload.ManifestFile = this.formValues.ComposeFilePathInRepository;\n payload.AdditionalFiles = this.formValues.AdditionalFiles;\n payload.AutoUpdate = transformAutoUpdateViewModel(this.formValues.AutoUpdate, this.state.webhookId);\n } else if (method === KubernetesDeployRequestMethods.STRING) {\n payload.StackFileContent = this.formValues.EditorContent;\n } else {\n payload.ManifestURL = this.formValues.ManifestURL;\n }\n\n await this.StackService.kubernetesDeploy(this.endpoint.Id, method, payload);\n\n this.Notifications.success('Success', 'Request to deploy manifest successfully submitted');\n this.state.isEditorDirty = false;\n\n if (this.$state.params.referrer && this.$state.params.tab) {\n this.$state.go(this.$state.params.referrer, { tab: this.$state.params.tab });\n return;\n }\n\n if (this.$state.params.referrer) {\n this.$state.go(this.$state.params.referrer);\n return;\n }\n\n this.$state.go('kubernetes.applications');\n } catch (err) {\n this.Notifications.error('Unable to deploy manifest', err, 'Unable to deploy resources');\n this.displayErrorLog(err.err.data.details);\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n deploy() {\n return this.$async(this.deployAsync);\n }\n\n async getNamespacesAsync() {\n try {\n const pools = await this.KubernetesResourcePoolService.get();\n let namespaces = pools.filter((pool) => pool.Namespace.Status === 'Active');\n namespaces = _.map(namespaces, 'Namespace').sort((a, b) => {\n if (a.Name === 'default') {\n return -1;\n }\n if (b.Name === 'default') {\n return 1;\n }\n return 0;\n });\n\n this.namespaces = namespaces;\n if (this.namespaces.length > 0) {\n this.formValues.Namespace = this.namespaces[0].Name;\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load namespaces data');\n }\n }\n\n getNamespaces() {\n return this.$async(this.getNamespacesAsync);\n }\n\n async uiCanExit() {\n if (this.formValues.EditorContent && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n this.currentUser.isAdmin = this.Authentication.isAdmin();\n this.currentUser.id = this.Authentication.getUserDetails().ID;\n\n this.formValues.namespace_toggle = false;\n await this.getNamespaces();\n\n if (this.$state.params.templateId) {\n const templateId = parseInt(this.$state.params.templateId, 10);\n if (templateId && !Number.isNaN(templateId)) {\n this.state.BuildMethod = KubernetesDeployBuildMethods.CUSTOM_TEMPLATE;\n this.state.templateId = templateId;\n }\n }\n\n this.state.viewReady = true;\n\n this.$window.onbeforeunload = () => {\n if (this.formValues.EditorContent && this.state.isEditorDirty) {\n return '';\n }\n };\n });\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n}\n\nexport default KubernetesDeployController;\nangular.module('portainer.kubernetes').controller('KubernetesDeployController', KubernetesDeployController);\n","const autoNgTemplateLoaderTemplate1 = require('./resourcePoolAccess.html');\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolAccessView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesResourcePoolAccessController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n endpoint: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport { KubernetesPortainerConfigMapConfigName, KubernetesPortainerConfigMapNamespace, KubernetesPortainerConfigMapAccessKey } from 'Kubernetes/models/config-map/models';\nimport { UserAccessViewModel, TeamAccessViewModel } from 'Portainer/models/access';\nimport KubernetesConfigMapHelper from 'Kubernetes/helpers/configMapHelper';\nimport { getIsRBACEnabled } from '@/react/kubernetes/cluster/getIsRBACEnabled';\n\nclass KubernetesResourcePoolAccessController {\n /* @ngInject */\n constructor($async, $state, $scope, Notifications, KubernetesResourcePoolService, KubernetesConfigMapService, GroupService, AccessService, EndpointProvider) {\n this.$async = $async;\n this.$state = $state;\n this.$scope = $scope;\n this.EndpointProvider = EndpointProvider;\n this.Notifications = Notifications;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesConfigMapService = KubernetesConfigMapService;\n\n this.GroupService = GroupService;\n this.AccessService = AccessService;\n\n this.onInit = this.onInit.bind(this);\n this.authorizeAccessAsync = this.authorizeAccessAsync.bind(this);\n this.unauthorizeAccessAsync = this.unauthorizeAccessAsync.bind(this);\n this.onUsersAndTeamsChange = this.onUsersAndTeamsChange.bind(this);\n this.unauthorizeAccess = this.unauthorizeAccess.bind(this);\n }\n\n initAccessConfigMap(configMap) {\n configMap.Name = KubernetesPortainerConfigMapConfigName;\n configMap.Namespace = KubernetesPortainerConfigMapNamespace;\n configMap.Data[KubernetesPortainerConfigMapAccessKey] = {};\n return configMap;\n }\n\n /**\n * Init\n */\n async onInit() {\n const endpoint = this.endpoint;\n this.state = {\n actionInProgress: false,\n viewReady: false,\n };\n\n this.formValues = {\n multiselectOutput: [],\n };\n\n // default to true if error is thrown\n this.isRBACEnabled = true;\n\n try {\n const name = this.$transition$.params().id;\n let [pool, configMap] = await Promise.all([\n this.KubernetesResourcePoolService.get(name),\n this.KubernetesConfigMapService.getAccess(KubernetesPortainerConfigMapNamespace, KubernetesPortainerConfigMapConfigName),\n ]);\n this.isRBACEnabled = await getIsRBACEnabled(this.EndpointProvider.endpointID());\n const group = await this.GroupService.group(endpoint.GroupId);\n const roles = [];\n const endpointAccesses = await this.AccessService.accesses(endpoint, group, roles);\n this.pool = pool;\n if (configMap.Id === 0) {\n configMap = this.initAccessConfigMap(configMap);\n }\n configMap = KubernetesConfigMapHelper.parseJSONData(configMap);\n\n this.authorizedUsersAndTeams = [];\n this.accessConfigMap = configMap;\n const poolAccesses = configMap.Data[KubernetesPortainerConfigMapAccessKey][name];\n if (poolAccesses) {\n this.authorizedUsersAndTeams = _.filter(endpointAccesses.authorizedUsersAndTeams, (item) => {\n if (item instanceof UserAccessViewModel && poolAccesses.UserAccessPolicies) {\n return poolAccesses.UserAccessPolicies[item.Id] !== undefined;\n } else if (item instanceof TeamAccessViewModel && poolAccesses.TeamAccessPolicies) {\n return poolAccesses.TeamAccessPolicies[item.Id] !== undefined;\n }\n return false;\n });\n }\n\n this.availableUsersAndTeams = _.without(endpointAccesses.authorizedUsersAndTeams, ...this.authorizedUsersAndTeams);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve namespace information');\n } finally {\n this.state.viewReady = true;\n }\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n /**\n * Authorize access\n */\n async authorizeAccessAsync() {\n try {\n this.state.actionInProgress = true;\n const newAccesses = _.concat(this.authorizedUsersAndTeams, this.formValues.multiselectOutput);\n const accessConfigMap = KubernetesConfigMapHelper.modifiyNamespaceAccesses(angular.copy(this.accessConfigMap), this.pool.Namespace.Name, newAccesses);\n await this.KubernetesConfigMapService.updateAccess(accessConfigMap);\n this.Notifications.success('Success', 'Access successfully created');\n this.$state.reload(this.$state.current);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create accesses');\n }\n }\n\n onUsersAndTeamsChange(value) {\n this.$scope.$evalAsync(() => {\n this.formValues.multiselectOutput = value;\n });\n }\n\n authorizeAccess() {\n return this.$async(this.authorizeAccessAsync);\n }\n\n /**\n *\n */\n async unauthorizeAccessAsync(selectedItems) {\n try {\n this.state.actionInProgress = true;\n const newAccesses = _.without(this.authorizedUsersAndTeams, ...selectedItems);\n const accessConfigMap = KubernetesConfigMapHelper.modifiyNamespaceAccesses(angular.copy(this.accessConfigMap), this.pool.Namespace.Name, newAccesses);\n await this.KubernetesConfigMapService.updateAccess(accessConfigMap);\n this.Notifications.success('Success', 'Access successfully removed');\n this.$state.reload(this.$state.current);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove accesses');\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n unauthorizeAccess(selectedItems) {\n return this.$async(this.unauthorizeAccessAsync, selectedItems);\n }\n}\n\nexport default KubernetesResourcePoolAccessController;\nangular.module('portainer.kubernetes').controller('KubernetesResourcePoolAccessController', KubernetesResourcePoolAccessController);\n","const autoNgTemplateLoaderTemplate1 = require('./storage-class-switch.html');\n\nimport angular from 'angular';\nimport controller from './storage-class-switch.controller.js';\n\nexport const storageClassSwitch = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n value: '<',\n onChange: '<',\n name: '<',\n },\n};\n\nangular.module('portainer.kubernetes').component('storageClassSwitch', storageClassSwitch);\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nclass StorageClassSwitchController {\n /* @ngInject */\n constructor() {\n this.featureId = FeatureId.K8S_RESOURCE_POOL_STORAGE_QUOTA;\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(value) {\n this.onChange(this.name, value);\n }\n}\n\nexport default StorageClassSwitchController;\n","const autoNgTemplateLoaderTemplate1 = require('./createResourcePool.html');\n\nimport angular from 'angular';\nimport KubernetesCreateResourcePoolController from './createResourcePoolController';\n\nangular.module('portainer.kubernetes').component('kubernetesCreateResourcePoolView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: KubernetesCreateResourcePoolController,\n bindings: {\n endpoint: '<',\n },\n});\n","import _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\nimport { KubernetesResourceQuotaDefaults } from 'Kubernetes/models/resource-quota/models';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport { KubernetesResourcePoolFormValues, KubernetesResourcePoolIngressClassHostFormValue } from 'Kubernetes/models/resource-pool/formValues';\nimport { KubernetesIngressConverter } from 'Kubernetes/ingress/converter';\nimport { KubernetesFormValidationReferences } from 'Kubernetes/models/application/formValues';\nimport { KubernetesIngressClassTypes } from 'Kubernetes/ingress/constants';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { getIngressControllerClassMap, updateIngressControllerClassMap } from '@/react/kubernetes/cluster/ingressClass/utils';\n\nclass KubernetesCreateResourcePoolController {\n /* #region CONSTRUCTOR */\n /* @ngInject */\n constructor($async, $state, $scope, Notifications, KubernetesNodeService, KubernetesResourcePoolService, KubernetesIngressService, Authentication, EndpointService) {\n Object.assign(this, {\n $async,\n $state,\n $scope,\n Notifications,\n KubernetesNodeService,\n KubernetesResourcePoolService,\n KubernetesIngressService,\n Authentication,\n EndpointService,\n });\n\n this.IngressClassTypes = KubernetesIngressClassTypes;\n this.LBQuotaFeatureId = FeatureId.K8S_RESOURCE_POOL_LB_QUOTA;\n\n this.onToggleStorageQuota = this.onToggleStorageQuota.bind(this);\n this.onToggleLoadBalancerQuota = this.onToggleLoadBalancerQuota.bind(this);\n this.onToggleResourceQuota = this.onToggleResourceQuota.bind(this);\n this.onChangeIngressControllerAvailability = this.onChangeIngressControllerAvailability.bind(this);\n this.onRegistriesChange = this.onRegistriesChange.bind(this);\n this.handleMemoryLimitChange = this.handleMemoryLimitChange.bind(this);\n this.handleCpuLimitChange = this.handleCpuLimitChange.bind(this);\n }\n /* #endregion */\n\n onRegistriesChange(registries) {\n return this.$scope.$evalAsync(() => {\n this.formValues.Registries = registries;\n });\n }\n\n onToggleStorageQuota(storageClassName, enabled) {\n this.$scope.$evalAsync(() => {\n this.formValues.StorageClasses = this.formValues.StorageClasses.map((sClass) => (sClass.Name !== storageClassName ? sClass : { ...sClass, Selected: enabled }));\n });\n }\n\n onToggleLoadBalancerQuota(enabled) {\n this.$scope.$evalAsync(() => {\n this.formValues.UseLoadBalancersQuota = enabled;\n });\n }\n\n onToggleResourceQuota(enabled) {\n this.$scope.$evalAsync(() => {\n this.formValues.HasQuota = enabled;\n });\n }\n\n /* #region INGRESS MANAGEMENT */\n onChangeIngressControllerAvailability(controllerClassMap) {\n this.ingressControllers = controllerClassMap;\n }\n /* #endregion */\n\n isCreateButtonDisabled() {\n return (\n this.state.actionInProgress ||\n (this.formValues.HasQuota && !this.isQuotaValid()) ||\n this.state.isAlreadyExist ||\n this.state.hasPrefixKube ||\n this.state.duplicates.ingressHosts.hasRefs\n );\n }\n\n onChangeName() {\n this.state.isAlreadyExist = _.find(this.resourcePools, (resourcePool) => resourcePool.Namespace.Name === this.formValues.Name) !== undefined;\n this.state.hasPrefixKube = /^kube-/.test(this.formValues.Name);\n }\n\n isQuotaValid() {\n if (\n this.state.sliderMaxCpu < this.formValues.CpuLimit ||\n this.state.sliderMaxMemory < this.formValues.MemoryLimit ||\n (this.formValues.CpuLimit === 0 && this.formValues.MemoryLimit === 0)\n ) {\n return false;\n }\n return true;\n }\n\n checkDefaults() {\n if (this.formValues.CpuLimit < this.defaults.CpuLimit) {\n this.formValues.CpuLimit = this.defaults.CpuLimit;\n }\n if (this.formValues.MemoryLimit < KubernetesResourceReservationHelper.megaBytesValue(this.defaults.MemoryLimit)) {\n this.formValues.MemoryLimit = KubernetesResourceReservationHelper.megaBytesValue(this.defaults.MemoryLimit);\n }\n }\n\n handleMemoryLimitChange(memoryLimit) {\n return this.$async(async () => {\n this.formValues.MemoryLimit = memoryLimit;\n });\n }\n\n handleCpuLimitChange(cpuLimit) {\n return this.$async(async () => {\n this.formValues.CpuLimit = cpuLimit;\n });\n }\n\n /* #region CREATE NAMESPACE */\n createResourcePool() {\n return this.$async(async () => {\n this.state.actionInProgress = true;\n try {\n this.checkDefaults();\n this.formValues.Owner = this.Authentication.getUserDetails().username;\n await this.KubernetesResourcePoolService.create(this.formValues);\n await updateIngressControllerClassMap(this.endpoint.Id, this.ingressControllers || [], this.formValues.Name);\n this.Notifications.success('Namespace successfully created', this.formValues.Name);\n this.$state.go('kubernetes.resourcePools');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create namespace');\n } finally {\n this.state.actionInProgress = false;\n }\n });\n }\n /* #endregion */\n\n /* #region GET INGRESSES */\n getIngresses() {\n return this.$async(async () => {\n try {\n this.allIngresses = await this.KubernetesIngressService.get();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve ingresses.');\n }\n });\n }\n /* #endregion */\n\n /* #region GET NAMESPACES */\n getResourcePools() {\n return this.$async(async () => {\n try {\n this.resourcePools = await this.KubernetesResourcePoolService.get('', { getQuota: true });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve namespaces');\n }\n });\n }\n /* #endregion */\n\n /* #region GET REGISTRIES */\n getRegistries() {\n return this.$async(async () => {\n try {\n this.registries = await this.EndpointService.registries(this.endpoint.Id);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registries');\n }\n });\n }\n /* #endregion */\n\n /* #region ON INIT */\n $onInit() {\n return this.$async(async () => {\n try {\n const endpoint = this.endpoint;\n this.defaults = KubernetesResourceQuotaDefaults;\n this.formValues = new KubernetesResourcePoolFormValues(this.defaults);\n this.formValues.EndpointId = this.endpoint.Id;\n this.formValues.HasQuota = false;\n\n this.state = {\n actionInProgress: false,\n sliderMaxMemory: 0,\n sliderMaxCpu: 0,\n viewReady: false,\n isAlreadyExist: false,\n hasPrefixKube: false,\n canUseIngress: false,\n duplicates: {\n ingressHosts: new KubernetesFormValidationReferences(),\n },\n isAdmin: this.Authentication.isAdmin(),\n ingressAvailabilityPerNamespace: endpoint.Kubernetes.Configuration.IngressAvailabilityPerNamespace,\n };\n\n const nodes = await this.KubernetesNodeService.get();\n\n this.ingressControllers = [];\n if (this.state.ingressAvailabilityPerNamespace) {\n this.ingressControllers = await getIngressControllerClassMap({ environmentId: this.endpoint.Id, allowedOnly: true });\n }\n\n _.forEach(nodes, (item) => {\n this.state.sliderMaxMemory += filesizeParser(item.Memory);\n this.state.sliderMaxCpu += item.CPU;\n });\n this.state.sliderMaxMemory = KubernetesResourceReservationHelper.megaBytesValue(this.state.sliderMaxMemory);\n await this.getResourcePools();\n if (this.state.canUseIngress) {\n await this.getIngresses();\n const ingressClasses = endpoint.Kubernetes.Configuration.IngressClasses;\n this.formValues.IngressClasses = KubernetesIngressConverter.ingressClassesToFormValues(ingressClasses);\n }\n _.forEach(this.formValues.IngressClasses, (ic) => {\n if (ic.Hosts.length === 0) {\n ic.Hosts.push(new KubernetesResourcePoolIngressClassHostFormValue());\n }\n });\n\n await this.getRegistries();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load view data');\n } finally {\n this.state.viewReady = true;\n }\n });\n }\n /* #endregion */\n}\n\nexport default KubernetesCreateResourcePoolController;\n","import _ from 'lodash-es';\n\nangular.module('portainer.kubernetes').controller('KubernetesResourcePoolIngressesDatatableController', function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n this.state = Object.assign(this.state, {\n expandedItems: [],\n expandAll: false,\n });\n\n this.onSettingsRepeaterChange = function () {\n DatatableService.setDataTableSettings(this.tableKey, this.settings);\n };\n\n this.expandItem = function (item, expanded) {\n if (!this.itemCanExpand(item)) {\n return;\n }\n\n item.Expanded = expanded;\n if (!expanded) {\n item.Highlighted = false;\n }\n };\n\n this.itemCanExpand = function (item) {\n return item.Paths.length > 0;\n };\n\n this.hasExpandableItems = function () {\n return _.filter(this.state.filteredDataSet, (item) => this.itemCanExpand(item)).length;\n };\n\n this.expandAll = function () {\n this.state.expandAll = !this.state.expandAll;\n _.forEach(this.state.filteredDataSet, (item) => {\n if (this.itemCanExpand(item)) {\n this.expandItem(item, this.state.expandAll);\n }\n });\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n});\n","const autoNgTemplateLoaderTemplate1 = require('./template.html');\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolIngressesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesResourcePoolIngressesDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n refreshCallback: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./resourcePool.html');\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesResourcePoolController',\n controllerAs: 'ctrl',\n bindings: {\n endpoint: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\nimport { KubernetesResourceQuotaDefaults } from 'Kubernetes/models/resource-quota/models';\nimport KubernetesResourceReservationHelper from 'Kubernetes/helpers/resourceReservationHelper';\nimport { KubernetesResourceReservation } from 'Kubernetes/models/resource-reservation/models';\nimport KubernetesEventHelper from 'Kubernetes/helpers/eventHelper';\n\nimport { KubernetesResourcePoolFormValues, KubernetesResourcePoolIngressClassHostFormValue } from 'Kubernetes/models/resource-pool/formValues';\nimport { KubernetesIngressConverter } from 'Kubernetes/ingress/converter';\nimport { KubernetesFormValidationReferences } from 'Kubernetes/models/application/formValues';\nimport { KubernetesIngressClassTypes } from 'Kubernetes/ingress/constants';\nimport KubernetesResourceQuotaConverter from 'Kubernetes/converters/resourceQuota';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { updateIngressControllerClassMap, getIngressControllerClassMap } from '@/react/kubernetes/cluster/ingressClass/utils';\nimport { confirmUpdate } from '@@/modals/confirm';\nimport { confirmUpdateNamespace } from '@/react/kubernetes/namespaces/ItemView/ConfirmUpdateNamespace';\nimport { getMetricsForAllPods } from '@/react/kubernetes/services/service.ts';\n\nclass KubernetesResourcePoolController {\n /* #region CONSTRUCTOR */\n /* @ngInject */\n constructor(\n $async,\n $state,\n $scope,\n Authentication,\n Notifications,\n LocalStorage,\n EndpointService,\n KubernetesResourceQuotaService,\n KubernetesResourcePoolService,\n KubernetesEventService,\n KubernetesPodService,\n KubernetesApplicationService,\n KubernetesIngressService,\n KubernetesVolumeService,\n KubernetesNamespaceService,\n KubernetesNodeService\n ) {\n Object.assign(this, {\n $async,\n $state,\n $scope,\n Authentication,\n Notifications,\n LocalStorage,\n EndpointService,\n KubernetesResourceQuotaService,\n KubernetesResourcePoolService,\n KubernetesEventService,\n KubernetesPodService,\n KubernetesApplicationService,\n KubernetesIngressService,\n KubernetesVolumeService,\n KubernetesNamespaceService,\n KubernetesNodeService,\n });\n\n this.IngressClassTypes = KubernetesIngressClassTypes;\n this.ResourceQuotaDefaults = KubernetesResourceQuotaDefaults;\n\n this.LBQuotaFeatureId = FeatureId.K8S_RESOURCE_POOL_LB_QUOTA;\n this.StorageQuotaFeatureId = FeatureId.K8S_RESOURCE_POOL_STORAGE_QUOTA;\n\n this.updateResourcePoolAsync = this.updateResourcePoolAsync.bind(this);\n this.getEvents = this.getEvents.bind(this);\n this.onToggleLoadBalancersQuota = this.onToggleLoadBalancersQuota.bind(this);\n this.onToggleStorageQuota = this.onToggleStorageQuota.bind(this);\n this.onChangeIngressControllerAvailability = this.onChangeIngressControllerAvailability.bind(this);\n this.onRegistriesChange = this.onRegistriesChange.bind(this);\n this.handleMemoryLimitChange = this.handleMemoryLimitChange.bind(this);\n this.handleCpuLimitChange = this.handleCpuLimitChange.bind(this);\n }\n /* #endregion */\n\n onRegistriesChange(registries) {\n return this.$scope.$evalAsync(() => {\n this.formValues.Registries = registries;\n });\n }\n\n onToggleLoadBalancersQuota(checked) {\n return this.$scope.$evalAsync(() => {\n this.formValues.UseLoadBalancersQuota = checked;\n });\n }\n\n onToggleStorageQuota(storageClassName, enabled) {\n this.$scope.$evalAsync(() => {\n this.formValues.StorageClasses = this.formValues.StorageClasses.map((sClass) => (sClass.Name !== storageClassName ? sClass : { ...sClass, Selected: enabled }));\n });\n }\n\n onChangeIngressControllerAvailability(controllerClassMap) {\n this.ingressControllers = controllerClassMap;\n }\n\n selectTab(index) {\n this.LocalStorage.storeActiveTab('resourcePool', index);\n }\n\n isUpdateButtonDisabled() {\n return this.state.actionInProgress || (this.formValues.HasQuota && !this.isQuotaValid()) || this.state.duplicates.ingressHosts.hasRefs;\n }\n\n isQuotaValid() {\n if (\n this.state.sliderMaxCpu < this.formValues.CpuLimit ||\n this.state.sliderMaxMemory < this.formValues.MemoryLimit ||\n (this.formValues.CpuLimit === 0 && this.formValues.MemoryLimit === 0)\n ) {\n return false;\n }\n return true;\n }\n\n checkDefaults() {\n if (this.formValues.CpuLimit < KubernetesResourceQuotaDefaults.CpuLimit) {\n this.formValues.CpuLimit = KubernetesResourceQuotaDefaults.CpuLimit;\n }\n if (this.formValues.MemoryLimit < KubernetesResourceReservationHelper.megaBytesValue(KubernetesResourceQuotaDefaults.MemoryLimit)) {\n this.formValues.MemoryLimit = KubernetesResourceReservationHelper.megaBytesValue(KubernetesResourceQuotaDefaults.MemoryLimit);\n }\n }\n\n handleMemoryLimitChange(memoryLimit) {\n return this.$async(async () => {\n this.formValues.MemoryLimit = memoryLimit;\n });\n }\n\n handleCpuLimitChange(cpuLimit) {\n return this.$async(async () => {\n this.formValues.CpuLimit = cpuLimit;\n });\n }\n\n showEditor() {\n this.state.showEditorTab = true;\n this.selectTab(2);\n }\n\n hasResourceQuotaBeenReduced() {\n if (this.formValues.HasQuota && this.oldQuota) {\n const cpuLimit = this.formValues.CpuLimit;\n const memoryLimit = KubernetesResourceReservationHelper.bytesValue(this.formValues.MemoryLimit);\n if (cpuLimit < this.oldQuota.CpuLimit || memoryLimit < this.oldQuota.MemoryLimit) {\n return true;\n }\n }\n return false;\n }\n\n /* #region UPDATE NAMESPACE */\n async updateResourcePoolAsync(oldFormValues, newFormValues) {\n this.state.actionInProgress = true;\n try {\n this.checkDefaults();\n await this.KubernetesResourcePoolService.patch(oldFormValues, newFormValues);\n await updateIngressControllerClassMap(this.endpoint.Id, this.ingressControllers || [], this.formValues.Name);\n this.Notifications.success('Namespace successfully updated', this.pool.Namespace.Name);\n this.$state.reload(this.$state.current);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create namespace');\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n updateResourcePool() {\n const ingressesToDelete = _.filter(this.formValues.IngressClasses, { WasSelected: true, Selected: false });\n const registriesToDelete = _.filter(this.registries, { WasChecked: true, Checked: false });\n const warnings = {\n quota: this.hasResourceQuotaBeenReduced(),\n ingress: ingressesToDelete.length !== 0,\n registries: registriesToDelete.length !== 0,\n };\n\n if (warnings.quota || warnings.registries) {\n confirmUpdateNamespace(warnings.quota, warnings.ingress, warnings.registries).then((confirmed) => {\n if (confirmed) {\n return this.$async(this.updateResourcePoolAsync, this.savedFormValues, this.formValues);\n }\n });\n } else {\n return this.$async(this.updateResourcePoolAsync, this.savedFormValues, this.formValues);\n }\n }\n\n async confirmMarkUnmarkAsSystem() {\n const message = this.isSystem\n ? 'Unmarking this namespace as system will allow non administrator users to manage it and the resources in contains depending on the access control settings. Are you sure?'\n : 'Marking this namespace as a system namespace will prevent non administrator users from managing it and the resources it contains. Are you sure?';\n\n return new Promise((resolve) => {\n confirmUpdate(message, resolve);\n });\n }\n\n markUnmarkAsSystem() {\n return this.$async(async () => {\n try {\n const namespaceName = this.$state.params.id;\n this.state.actionInProgress = true;\n\n const confirmed = await this.confirmMarkUnmarkAsSystem();\n if (!confirmed) {\n return;\n }\n await this.KubernetesResourcePoolService.toggleSystem(this.endpoint.Id, namespaceName, !this.isSystem);\n\n this.Notifications.success('Namespace successfully updated', namespaceName);\n this.$state.reload(this.$state.current);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create namespace');\n } finally {\n this.state.actionInProgress = false;\n }\n });\n }\n /* #endregion */\n\n hasEventWarnings() {\n return this.state.eventWarningCount;\n }\n\n /* #region GET EVENTS */\n getEvents() {\n return this.$async(async () => {\n try {\n this.state.eventsLoading = true;\n this.events = await this.KubernetesEventService.get(this.pool.Namespace.Name);\n this.state.eventWarningCount = KubernetesEventHelper.warningCount(this.events);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve namespace related events');\n } finally {\n this.state.eventsLoading = false;\n }\n });\n }\n /* #endregion */\n\n /* #region GET APPLICATIONS */\n getApplications() {\n return this.$async(async () => {\n try {\n this.state.applicationsLoading = true;\n this.applications = await this.KubernetesApplicationService.get(this.pool.Namespace.Name);\n this.applications = _.map(this.applications, (app) => {\n const resourceReservation = KubernetesResourceReservationHelper.computeResourceReservation(app.Pods);\n app.CPU = resourceReservation.CPU;\n app.Memory = resourceReservation.Memory;\n return app;\n });\n\n if (this.state.useServerMetrics) {\n await this.getResourceUsage(this.pool.Namespace.Name);\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve applications.');\n } finally {\n this.state.applicationsLoading = false;\n }\n });\n }\n /* #endregion */\n\n /* #region GET INGRESSES */\n getIngresses() {\n return this.$async(async () => {\n this.state.ingressesLoading = true;\n try {\n const namespace = this.pool.Namespace.Name;\n this.allIngresses = await this.KubernetesIngressService.get(this.state.hasWriteAuthorization ? '' : namespace);\n this.ingresses = _.filter(this.allIngresses, { Namespace: namespace });\n _.forEach(this.ingresses, (ing) => {\n ing.Namespace = namespace;\n _.forEach(ing.Paths, (path) => {\n const application = _.find(this.applications, { ServiceName: path.ServiceName });\n path.ApplicationName = application && application.Name ? application.Name : '-';\n });\n });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve ingresses.');\n } finally {\n this.state.ingressesLoading = false;\n }\n });\n }\n /* #endregion */\n\n /* #region GET REGISTRIES */\n getRegistries() {\n return this.$async(async () => {\n try {\n const namespace = this.$state.params.id;\n\n if (this.isAdmin) {\n this.registries = await this.EndpointService.registries(this.endpoint.Id);\n this.registries.forEach((reg) => {\n if (reg.RegistryAccesses && reg.RegistryAccesses[this.endpoint.Id] && reg.RegistryAccesses[this.endpoint.Id].Namespaces.includes(namespace)) {\n reg.Checked = true;\n reg.WasChecked = true;\n this.formValues.Registries.push(reg);\n }\n });\n this.selectedRegistries = this.formValues.Registries.map((r) => r.Name).join(', ');\n return;\n }\n\n const registries = await this.EndpointService.registries(this.endpoint.Id, namespace);\n this.selectedRegistries = registries.map((r) => r.Name).join(', ');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registries');\n }\n });\n }\n /* #endregion */\n\n async getResourceUsage(namespace) {\n try {\n const namespaceMetrics = await getMetricsForAllPods(this.$state.params.endpointId, namespace);\n // extract resource usage of all containers within each pod of the namespace\n const containerResourceUsageList = namespaceMetrics.items.flatMap((i) => i.containers.map((c) => c.usage));\n const namespaceResourceUsage = containerResourceUsageList.reduce((total, u) => {\n total.CPU += KubernetesResourceReservationHelper.parseCPU(u.cpu);\n total.Memory += KubernetesResourceReservationHelper.megaBytesValue(u.memory);\n return total;\n }, new KubernetesResourceReservation());\n this.state.resourceUsage = namespaceResourceUsage;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve namespace resource usage');\n }\n }\n\n /* #region ON INIT */\n $onInit() {\n return this.$async(async () => {\n try {\n this.isAdmin = this.Authentication.isAdmin();\n\n this.state = {\n actionInProgress: false,\n sliderMaxMemory: 0,\n sliderMaxCpu: 0,\n cpuUsage: 0,\n memoryUsage: 0,\n resourceReservation: { CPU: 0, Memory: 0 },\n activeTab: 0,\n currentName: this.$state.$current.name,\n showEditorTab: false,\n eventsLoading: true,\n applicationsLoading: true,\n ingressesLoading: true,\n viewReady: false,\n eventWarningCount: 0,\n canUseIngress: false,\n useServerMetrics: this.endpoint.Kubernetes.Configuration.UseServerMetrics,\n duplicates: {\n ingressHosts: new KubernetesFormValidationReferences(),\n },\n ingressAvailabilityPerNamespace: this.endpoint.Kubernetes.Configuration.IngressAvailabilityPerNamespace,\n };\n\n this.state.activeTab = this.LocalStorage.getActiveTab('resourcePool');\n\n const name = this.$state.params.id;\n\n const [nodes, pools] = await Promise.all([this.KubernetesNodeService.get(), this.KubernetesResourcePoolService.get('', { getQuota: true })]);\n\n this.ingressControllers = [];\n if (this.state.ingressAvailabilityPerNamespace) {\n this.ingressControllers = await getIngressControllerClassMap({ environmentId: this.endpoint.Id, namespace: name });\n }\n\n this.pool = _.find(pools, { Namespace: { Name: name } });\n this.formValues = new KubernetesResourcePoolFormValues(KubernetesResourceQuotaDefaults);\n this.formValues.Name = this.pool.Namespace.Name;\n this.formValues.EndpointId = this.endpoint.Id;\n this.formValues.IsSystem = this.pool.Namespace.IsSystem;\n\n _.forEach(nodes, (item) => {\n this.state.sliderMaxMemory += filesizeParser(item.Memory);\n this.state.sliderMaxCpu += item.CPU;\n });\n this.state.sliderMaxMemory = KubernetesResourceReservationHelper.megaBytesValue(this.state.sliderMaxMemory);\n\n const quota = this.pool.Quota;\n if (quota) {\n this.oldQuota = angular.copy(quota);\n this.formValues = KubernetesResourceQuotaConverter.quotaToResourcePoolFormValues(quota);\n this.formValues.EndpointId = this.endpoint.Id;\n\n this.state.resourceReservation.CPU = quota.CpuLimitUsed;\n this.state.resourceReservation.Memory = KubernetesResourceReservationHelper.megaBytesValue(quota.MemoryLimitUsed);\n }\n this.isSystem = KubernetesNamespaceHelper.isSystemNamespace(this.pool.Namespace.Name);\n this.isDefaultNamespace = KubernetesNamespaceHelper.isDefaultNamespace(this.pool.Namespace.Name);\n this.isEditable = !this.isSystem && !this.isDefaultNamespace;\n\n await this.getEvents();\n await this.getApplications();\n\n if (this.state.canUseIngress) {\n await this.getIngresses();\n const ingressClasses = this.endpoint.Kubernetes.Configuration.IngressClasses;\n this.formValues.IngressClasses = KubernetesIngressConverter.ingressClassesToFormValues(ingressClasses, this.ingresses);\n _.forEach(this.formValues.IngressClasses, (ic) => {\n if (ic.Hosts.length === 0) {\n ic.Hosts.push(new KubernetesResourcePoolIngressClassHostFormValue());\n }\n });\n }\n\n await this.getRegistries();\n\n this.savedFormValues = angular.copy(this.formValues);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load view data');\n } finally {\n this.state.viewReady = true;\n }\n });\n }\n\n /* #endregion */\n\n $onDestroy() {\n if (this.state.currentName !== this.$state.$current.name) {\n this.LocalStorage.storeActiveTab('resourcePool', 0);\n }\n }\n}\n\nexport default KubernetesResourcePoolController;\nangular.module('portainer.kubernetes').controller('KubernetesResourcePoolController', KubernetesResourcePoolController);\n","import { ModalType } from '@@/modals';\nimport { confirm } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport function confirmUpdateNamespace(\n quotaWarning: boolean,\n ingressWarning: boolean,\n registriesWarning: boolean\n) {\n const message = (\n <>\n {quotaWarning && (\n <p>\n Reducing the quota assigned to an "in-use" namespace may\n have unintended consequences, including preventing running\n applications from functioning correctly and potentially even blocking\n them from running at all.\n </p>\n )}\n {ingressWarning && (\n <p>\n Deactivating ingresses may cause applications to be unaccessible. All\n ingress configurations from affected applications will be removed.\n </p>\n )}\n {registriesWarning && (\n <p>\n Some registries you removed might be used by one or more applications\n inside this environment. Removing the registries access could lead to\n a service interruption for these applications.\n </p>\n )}\n <p>Are you sure you want to continue?</p>\n </>\n );\n\n return confirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n message,\n confirmButton: buildConfirmButton('Update', 'primary'),\n });\n}\n","const autoNgTemplateLoaderTemplate1 = require('./resourcePools.html');\n\nangular.module('portainer.kubernetes').component('kubernetesResourcePoolsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesResourcePoolsController',\n controllerAs: 'ctrl',\n bindings: {\n endpoint: '<',\n },\n});\n","import angular from 'angular';\nimport { confirm } from '@@/modals/confirm';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nclass KubernetesResourcePoolsController {\n /* @ngInject */\n constructor($async, $state, Notifications, KubernetesResourcePoolService, KubernetesNamespaceService) {\n this.$async = $async;\n this.$state = $state;\n this.Notifications = Notifications;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n this.KubernetesNamespaceService = KubernetesNamespaceService;\n\n this.onInit = this.onInit.bind(this);\n this.getResourcePools = this.getResourcePools.bind(this);\n this.getResourcePoolsAsync = this.getResourcePoolsAsync.bind(this);\n this.removeAction = this.removeAction.bind(this);\n this.removeActionAsync = this.removeActionAsync.bind(this);\n this.onReload = this.onReload.bind(this);\n }\n\n async onReload() {\n this.$state.reload(this.$state.current);\n }\n\n async removeActionAsync(selectedItems) {\n let actionCount = selectedItems.length;\n for (const pool of selectedItems) {\n try {\n const isTerminating = pool.Namespace.Status === 'Terminating';\n if (isTerminating) {\n const ns = await this.KubernetesNamespaceService.getJSONAsync(pool.Namespace.Name);\n ns.$promise.then(async (namespace) => {\n const n = JSON.parse(namespace.data);\n if (n.spec && n.spec.finalizers) {\n delete n.spec.finalizers;\n }\n await this.KubernetesNamespaceService.updateFinalizeAsync(n);\n });\n } else {\n await this.KubernetesResourcePoolService.delete(pool);\n }\n this.Notifications.success('Namespace successfully removed', pool.Namespace.Name);\n const index = this.resourcePools.indexOf(pool);\n this.resourcePools.splice(index, 1);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove namespace');\n } finally {\n --actionCount;\n if (actionCount === 0) {\n this.$state.reload(this.$state.current);\n }\n }\n }\n }\n\n removeAction(selectedItems) {\n const isTerminatingNS = selectedItems.some((pool) => pool.Namespace.Status === 'Terminating');\n const message = isTerminatingNS\n ? 'At least one namespace is in a terminating state. For terminating state namespaces, you may continue and force removal, but doing so without having properly cleaned up may lead to unstable and unpredictable behavior. Are you sure you wish to proceed?'\n : 'Do you want to remove the selected namespace(s)? All the resources associated to the selected namespace(s) will be removed too. Are you sure you wish to proceed?';\n confirm({\n title: isTerminatingNS ? 'Force namespace removal' : 'Are you sure?',\n message,\n confirmButton: buildConfirmButton('Remove', 'danger'),\n\n modalType: ModalType.Destructive,\n }).then((confirmed) => {\n if (confirmed) {\n return this.$async(this.removeActionAsync, selectedItems);\n }\n });\n }\n\n async getResourcePoolsAsync() {\n try {\n this.resourcePools = await this.KubernetesResourcePoolService.get('', { getQuota: true });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retreive namespaces');\n }\n }\n\n getResourcePools() {\n return this.$async(this.getResourcePoolsAsync);\n }\n\n async onInit() {\n this.state = {\n viewReady: false,\n };\n\n await this.getResourcePools();\n\n this.state.viewReady = true;\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n}\n\nexport default KubernetesResourcePoolsController;\nangular.module('portainer.kubernetes').controller('KubernetesResourcePoolsController', KubernetesResourcePoolsController);\n","import angular from 'angular';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nangular.module('portainer.kubernetes').controller('KubernetesSecurityConstraintController', [\n '$scope',\n 'EndpointProvider',\n 'EndpointService',\n function ($scope, EndpointProvider, EndpointService) {\n $scope.limitedFeaturePodSecurityPolicy = FeatureId.POD_SECURITY_POLICY_CONSTRAINT;\n $scope.state = {\n viewReady: false,\n actionInProgress: false,\n };\n\n async function initView() {\n const endpointID = EndpointProvider.endpointID();\n EndpointService.endpoint(endpointID).then((endpoint) => {\n $scope.endpoint = endpoint;\n $scope.state.viewReady = true;\n });\n }\n\n initView();\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./logs.html');\n\nangular.module('portainer.kubernetes').component('kubernetesStackLogsView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesStackLogsController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n },\n});\n","import { filter, flatMap, map } from 'lodash';\nimport angular from 'angular';\nimport $allSettled from 'Portainer/services/allSettled';\nimport { concatLogsToString, formatLogs } from '@/docker/helpers/logHelper';\n\nconst colors = ['red', 'orange', 'lime', 'green', 'darkgreen', 'cyan', 'turquoise', 'teal', 'deepskyblue', 'blue', 'darkblue', 'slateblue', 'magenta', 'darkviolet'];\n\nclass KubernetesStackLogsController {\n /* @ngInject */\n constructor($async, $state, $interval, Notifications, KubernetesApplicationService, KubernetesPodService, FileSaver, Blob) {\n this.$async = $async;\n this.$state = $state;\n this.$interval = $interval;\n this.Notifications = Notifications;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesPodService = KubernetesPodService;\n this.Blob = Blob;\n this.FileSaver = FileSaver;\n\n this.onInit = this.onInit.bind(this);\n this.stopRepeater = this.stopRepeater.bind(this);\n this.generateLogsPromise = this.generateLogsPromise.bind(this);\n this.generateAppPromise = this.generateAppPromise.bind(this);\n this.getStackLogsAsync = this.getStackLogsAsync.bind(this);\n }\n\n updateAutoRefresh() {\n if (this.state.autoRefresh) {\n this.setUpdateRepeater();\n return;\n }\n\n this.stopRepeater();\n }\n\n stopRepeater() {\n if (angular.isDefined(this.repeater)) {\n this.$interval.cancel(this.repeater);\n this.repeater = null;\n }\n }\n\n setUpdateRepeater() {\n this.repeater = this.$interval(this.getStackLogsAsync, this.state.refreshRate);\n }\n\n async generateLogsPromise(pod, container) {\n const res = {\n Pod: pod,\n Logs: [],\n };\n res.Logs = await this.KubernetesPodService.logs(pod.Namespace, pod.Name, container.Name);\n return res;\n }\n\n async generateAppPromise(app) {\n const res = {\n Application: app,\n Pods: [],\n };\n\n const promises = flatMap(map(app.Pods, (pod) => map(pod.Containers, (container) => this.generateLogsPromise(pod, container))));\n const result = await $allSettled(promises);\n res.Pods = result.fulfilled;\n return res;\n }\n\n async getStackLogsAsync() {\n try {\n const applications = await this.KubernetesApplicationService.get(this.state.transition.namespace);\n const filteredApplications = filter(applications, (app) => app.StackName === this.state.transition.name);\n const logsPromises = map(filteredApplications, this.generateAppPromise);\n const data = await Promise.all(logsPromises);\n const logs = flatMap(data, (app, index) =>\n flatMap(app.Pods, (pod) => formatLogs(pod.Logs).map((line) => ({ ...line, appColor: colors[index % colors.length], appName: pod.Pod.Name })))\n );\n this.stackLogs = logs;\n } catch (err) {\n this.stopRepeater();\n this.Notifications.error('Failure', err, 'Unable to retrieve application logs');\n }\n }\n\n downloadLogs() {\n const logsAsString = concatLogsToString(this.state.filteredLogs, (line) => `${line.appName} ${line.line}`);\n const data = new this.Blob([logsAsString]);\n this.FileSaver.saveAs(data, this.state.transition.name + '_logs.txt');\n }\n\n async onInit() {\n this.state = {\n autoRefresh: false,\n refreshRate: 30000, // 30 seconds\n search: '',\n viewReady: false,\n transition: {\n namespace: this.$transition$.params().namespace,\n name: this.$transition$.params().name,\n },\n };\n\n this.stackLogs = [];\n try {\n await this.getStackLogsAsync();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve stack logs');\n } finally {\n this.state.viewReady = true;\n }\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n this.stopRepeater();\n }\n}\n\nexport default KubernetesStackLogsController;\nangular.module('portainer.kubernetes').controller('KubernetesStackLogsController', KubernetesStackLogsController);\n","import _ from 'lodash-es';\nimport { KubernetesResourceTypes, KubernetesResourceActions } from 'Kubernetes/models/resource-types/models';\nimport { KubernetesApplicationFormValues } from 'Kubernetes/models/application/formValues';\nimport { KubernetesDeployment } from 'Kubernetes/models/deployment/models';\nimport { KubernetesStatefulSet } from 'Kubernetes/models/stateful-set/models';\nimport { KubernetesDaemonSet } from 'Kubernetes/models/daemon-set/models';\nimport { KubernetesService, KubernetesServiceTypes } from 'Kubernetes/models/service/models';\nimport { KubernetesApplication, KubernetesApplicationDeploymentTypes, KubernetesApplicationTypes } from 'Kubernetes/models/application/models';\nimport { KubernetesHorizontalPodAutoScalerHelper } from 'Kubernetes/horizontal-pod-auto-scaler/helper';\nimport { KubernetesHorizontalPodAutoScalerConverter } from 'Kubernetes/horizontal-pod-auto-scaler/converter';\nimport KubernetesApplicationConverter from 'Kubernetes/converters/application';\nimport KubernetesServiceConverter from 'Kubernetes/converters/service';\nimport { KubernetesIngressConverter } from 'Kubernetes/ingress/converter';\nimport KubernetesPersistentVolumeClaimConverter from 'Kubernetes/converters/persistentVolumeClaim';\nimport { generateNewIngressesFromFormPaths } from '@/react/kubernetes/applications/CreateView/application-services/utils';\n\nconst { CREATE, UPDATE, DELETE } = KubernetesResourceActions;\n\n/**\n * Get summary of Kubernetes resources to be created, updated or deleted\n * @param {KubernetesApplicationFormValues} formValues\n */\nexport function getApplicationResources(formValues, oldFormValues = {}) {\n if (oldFormValues instanceof KubernetesApplicationFormValues) {\n const resourceSummary = getUpdatedApplicationResources(oldFormValues, formValues);\n return resourceSummary;\n }\n const resourceSummary = getCreatedApplicationResources(formValues);\n return resourceSummary;\n}\n\n/**\n * Get summary of Kubernetes resources to be created\n * @param {KubernetesApplicationFormValues} formValues\n */\nfunction getCreatedApplicationResources(formValues) {\n const resources = [];\n\n let [app, headlessService, services, service, claims] = KubernetesApplicationConverter.applicationFormValuesToApplication(formValues);\n\n if (services) {\n services.forEach((service) => {\n resources.push({ action: CREATE, kind: KubernetesResourceTypes.SERVICE, name: service.Name, type: service.Type || KubernetesServiceTypes.CLUSTER_IP });\n // Ingress\n const newServicePorts = formValues.Services.flatMap((service) => service.Ports);\n const newIngresses = generateNewIngressesFromFormPaths(formValues.OriginalIngresses, newServicePorts);\n resources.push(...getIngressUpdateSummary(formValues.OriginalIngresses, newIngresses));\n });\n }\n\n if (service) {\n // Service\n resources.push({ action: CREATE, kind: KubernetesResourceTypes.SERVICE, name: service.Name, type: service.Type || KubernetesServiceTypes.CLUSTER_IP });\n }\n\n if (app instanceof KubernetesStatefulSet) {\n // Service\n resources.push({ action: CREATE, kind: KubernetesResourceTypes.SERVICE, name: headlessService.Name, type: headlessService.Type || KubernetesServiceTypes.CLUSTER_IP });\n } else {\n // Persistent volume claims\n const persistentVolumeClaimResources = claims\n .filter((pvc) => !pvc.PreviousName && !pvc.Id)\n .map((pvc) => ({ action: CREATE, kind: KubernetesResourceTypes.PERSISTENT_VOLUME_CLAIM, name: pvc.Name }));\n resources.push(...persistentVolumeClaimResources);\n }\n\n // Horizontal pod autoscalers\n if (formValues.AutoScaler.IsUsed && formValues.DeploymentType !== KubernetesApplicationDeploymentTypes.GLOBAL) {\n const kind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(app);\n const autoScaler = KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(formValues, kind);\n resources.push({ action: CREATE, kind: KubernetesResourceTypes.HORIZONTAL_POD_AUTOSCALER, name: autoScaler.Name });\n }\n\n // Deployment\n const appResourceType = getApplicationResourceType(app);\n if (appResourceType !== null) {\n resources.push({ action: CREATE, kind: appResourceType, name: app.Name });\n }\n\n return resources;\n}\n\n/**\n * Get summary of Kubernetes resources to be created, updated and/or deleted\n * @param {KubernetesApplicationFormValues} oldFormValues\n * @param {KubernetesApplicationFormValues} newFormValues\n */\nfunction getUpdatedApplicationResources(oldFormValues, newFormValues) {\n const resources = [];\n\n const [oldApp, oldHeadlessService, oldServices, oldService, oldClaims] = KubernetesApplicationConverter.applicationFormValuesToApplication(oldFormValues);\n const [newApp, newHeadlessService, newServices, newService, newClaims] = KubernetesApplicationConverter.applicationFormValuesToApplication(newFormValues);\n const oldAppResourceType = getApplicationResourceType(oldApp);\n const newAppResourceType = getApplicationResourceType(newApp);\n\n if (oldAppResourceType !== newAppResourceType) {\n // Deployment\n resources.push({ action: DELETE, kind: oldAppResourceType, name: oldApp.Name });\n if (oldService && oldServices) {\n // Service\n resources.push({ action: DELETE, kind: KubernetesResourceTypes.SERVICE, name: oldService.Name, type: oldService.Type || KubernetesServiceTypes.CLUSTER_IP });\n }\n // re-creation of resources\n const createdApplicationResourceSummary = getCreatedApplicationResources(newFormValues);\n resources.push(...createdApplicationResourceSummary);\n return resources;\n }\n\n if (newApp instanceof KubernetesStatefulSet) {\n const headlessServiceUpdateResourceSummary = getServiceUpdateResourceSummary(oldHeadlessService, newHeadlessService);\n if (headlessServiceUpdateResourceSummary) {\n resources.push(headlessServiceUpdateResourceSummary);\n }\n } else {\n // Persistent volume claims\n const claimSummaries = newClaims\n .map((pvc) => {\n if (!pvc.PreviousName && !pvc.Id) {\n return { action: CREATE, kind: KubernetesResourceTypes.PERSISTENT_VOLUME_CLAIM, name: pvc.Name };\n } else if (!pvc.Id) {\n const oldClaim = _.find(oldClaims, { Name: pvc.PreviousName });\n return getVolumeClaimUpdateResourceSummary(oldClaim, pvc);\n }\n })\n .filter((pvc) => pvc); // remove nulls\n resources.push(...claimSummaries);\n }\n\n // Deployment\n resources.push({ action: UPDATE, kind: oldAppResourceType, name: oldApp.Name });\n\n if (oldServices && newServices) {\n // Service\n const serviceUpdateResourceSummary = getServiceUpdateResourceSummary(oldServices, newServices);\n if (serviceUpdateResourceSummary !== null) {\n serviceUpdateResourceSummary.forEach((updateSummary) => {\n resources.push(updateSummary);\n });\n }\n\n // Ingress\n const oldServicePorts = oldFormValues.Services.flatMap((service) => service.Ports);\n const oldIngresses = generateNewIngressesFromFormPaths(oldFormValues.OriginalIngresses, oldServicePorts, oldServicePorts);\n const newServicePorts = newFormValues.Services.flatMap((service) => service.Ports);\n const newIngresses = generateNewIngressesFromFormPaths(newFormValues.OriginalIngresses, newServicePorts, oldServicePorts);\n resources.push(...getIngressUpdateSummary(oldIngresses, newIngresses));\n } else if (!oldService && newService) {\n // Service\n resources.push({ action: CREATE, kind: KubernetesResourceTypes.SERVICE, name: newService.Name, type: newService.Type || KubernetesServiceTypes.CLUSTER_IP });\n } else if (oldService && !newService) {\n // Service\n resources.push({ action: DELETE, kind: KubernetesResourceTypes.SERVICE, name: oldService.Name, type: oldService.Type || KubernetesServiceTypes.CLUSTER_IP });\n }\n\n const newKind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(newApp);\n const newAutoScaler = KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(newFormValues, newKind);\n if (!oldFormValues.AutoScaler.IsUsed) {\n if (newFormValues.AutoScaler.IsUsed) {\n // Horizontal pod autoscalers\n resources.push({ action: CREATE, kind: KubernetesResourceTypes.HORIZONTAL_POD_AUTOSCALER, name: newAutoScaler.Name });\n }\n } else {\n // Horizontal pod autoscalers\n const oldKind = KubernetesHorizontalPodAutoScalerHelper.getApplicationTypeString(oldApp);\n const oldAutoScaler = KubernetesHorizontalPodAutoScalerConverter.applicationFormValuesToModel(oldFormValues, oldKind);\n if (newFormValues.AutoScaler.IsUsed) {\n const hpaUpdateSummary = getHorizontalPodAutoScalerUpdateResourceSummary(oldAutoScaler, newAutoScaler);\n if (hpaUpdateSummary) {\n resources.push(hpaUpdateSummary);\n }\n } else {\n resources.push({ action: DELETE, kind: KubernetesResourceTypes.HORIZONTAL_POD_AUTOSCALER, name: oldAutoScaler.Name });\n }\n }\n\n return resources;\n}\n\nfunction getApplicationResourceType(app) {\n if (app instanceof KubernetesDeployment || (app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.DEPLOYMENT)) {\n return KubernetesResourceTypes.DEPLOYMENT;\n } else if (app instanceof KubernetesDaemonSet || (app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.DAEMONSET)) {\n return KubernetesResourceTypes.DAEMONSET;\n } else if (app instanceof KubernetesStatefulSet || (app instanceof KubernetesApplication && app.ApplicationType === KubernetesApplicationTypes.STATEFULSET)) {\n return KubernetesResourceTypes.STATEFULSET;\n }\n return null;\n}\n\nfunction getIngressUpdateSummary(oldIngresses, newIngresses) {\n const ingressesSummaries = newIngresses\n .map((newIng) => {\n const oldIng = oldIngresses.find((oldIng) => oldIng.Name === newIng.Name);\n return getIngressUpdateResourceSummary(oldIng, newIng);\n })\n .filter((s) => s); // remove nulls\n return ingressesSummaries;\n}\n\n// getIngressUpdateResourceSummary replicates KubernetesIngressService.patch\nfunction getIngressUpdateResourceSummary(oldIngress, newIngress) {\n const payload = KubernetesIngressConverter.patchPayload(oldIngress, newIngress);\n if (payload.length) {\n return { action: UPDATE, kind: KubernetesResourceTypes.INGRESS, name: oldIngress.Name };\n }\n return null;\n}\n\n// getVolumeClaimUpdateResourceSummary replicates KubernetesPersistentVolumeClaimService.patch\nfunction getVolumeClaimUpdateResourceSummary(oldPVC, newPVC) {\n const payload = KubernetesPersistentVolumeClaimConverter.patchPayload(oldPVC, newPVC);\n if (payload.length) {\n return { action: UPDATE, kind: KubernetesResourceTypes.PERSISTENT_VOLUME_CLAIM, name: oldPVC.Name };\n }\n return null;\n}\n\n// getServiceUpdateResourceSummary replicates KubernetesServiceService.patch\nfunction getServiceUpdateResourceSummary(oldServices, newServices) {\n let summary = [];\n // skip update summary when service is headless service\n if (!oldServices.Headless) {\n newServices.forEach((newService) => {\n const oldServiceMatched = _.find(oldServices, { Name: newService.Name });\n if (oldServiceMatched) {\n const payload = KubernetesServiceConverter.patchPayload(oldServiceMatched, newService);\n if (payload.length) {\n const serviceUpdate = {\n action: UPDATE,\n kind: KubernetesResourceTypes.SERVICE,\n name: oldServiceMatched.Name,\n type: oldServiceMatched.Type || KubernetesServiceTypes.CLUSTER_IP,\n };\n summary.push(serviceUpdate);\n }\n } else {\n const emptyService = new KubernetesService();\n const payload = KubernetesServiceConverter.patchPayload(emptyService, newService);\n if (payload.length) {\n const serviceCreate = { action: CREATE, kind: KubernetesResourceTypes.SERVICE, name: newService.Name, type: newService.Type || KubernetesServiceTypes.CLUSTER_IP };\n summary.push(serviceCreate);\n }\n }\n });\n\n oldServices.forEach((oldService) => {\n const newServiceMatched = _.find(newServices, { Name: oldService.Name });\n if (!newServiceMatched) {\n const serviceDelete = { action: DELETE, kind: KubernetesResourceTypes.SERVICE, name: oldService.Name, type: oldService.Type || KubernetesServiceTypes.CLUSTER_IP };\n summary.push(serviceDelete);\n }\n });\n }\n if (summary.length !== 0) {\n return summary;\n }\n return null;\n}\n\n// getHorizontalPodAutoScalerUpdateResourceSummary replicates KubernetesHorizontalPodAutoScalerService.patch\nfunction getHorizontalPodAutoScalerUpdateResourceSummary(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler) {\n const payload = KubernetesHorizontalPodAutoScalerConverter.patchPayload(oldHorizontalPodAutoScaler, newHorizontalPodAutoScaler);\n if (payload.length) {\n return { action: UPDATE, kind: KubernetesResourceTypes.HORIZONTAL_POD_AUTOSCALER, name: oldHorizontalPodAutoScaler.Name };\n }\n return null;\n}\n","import { KubernetesResourceTypes, KubernetesResourceActions } from 'Kubernetes/models/resource-types/models';\nimport { KubernetesConfigurationKinds } from 'Kubernetes/models/configuration/models';\n\nconst { CREATE, UPDATE } = KubernetesResourceActions;\n\nexport default function (formValues) {\n const action = formValues.Id ? UPDATE : CREATE;\n if (formValues.Kind === KubernetesConfigurationKinds.CONFIGMAP) {\n return [{ action, kind: KubernetesResourceTypes.CONFIGMAP, name: formValues.Name }];\n } else if (formValues.Kind === KubernetesConfigurationKinds.SECRET) {\n let type = formValues.Type;\n if (formValues.customType) {\n type = formValues.customType;\n }\n return [{ action, kind: KubernetesResourceTypes.SECRET, name: formValues.Name, type }];\n }\n}\n","import _ from 'lodash-es';\nimport * as JsonPatch from 'fast-json-patch';\nimport { KubernetesResourceActions } from 'Kubernetes/models/resource-types/models';\n\nfunction findCreateResources(newResources, oldResources) {\n return _.differenceBy(newResources, oldResources, 'Name');\n}\n\nfunction findDeleteResources(newResources, oldResources) {\n return _.differenceBy(oldResources, newResources, 'Name');\n}\n\nfunction findUpdateResources(newResources, oldResources) {\n const updateResources = _.intersectionWith(newResources, oldResources, (newResource, oldResource) => {\n // find out resources with same name but content changed\n if (newResource.Name != oldResource.Name) {\n return false;\n }\n return !isEqual(newResource, oldResource);\n });\n\n return updateResources;\n}\n\nfunction isEqual(newResource, oldResource) {\n let patches = JsonPatch.compare(newResource, oldResource);\n patches = _.filter(patches, (change) => {\n return !_.includes(change.path, '$$hashKey') && !_.includes(change.path, 'Duplicate');\n });\n\n return !patches.length;\n}\n\nfunction doGetResourcesSummary(newResources, oldResources, kind, action, actionFilter) {\n const filteredResources = actionFilter(newResources, oldResources);\n const summary = filteredResources.map((resource) => ({ name: resource.Name, action, kind }));\n\n return summary;\n}\n\nexport function getResourcesSummary(newResources, oldResources, kind) {\n if (!Array.isArray(newResources)) {\n newResources = newResources ? [newResources] : [];\n oldResources = oldResources ? [oldResources] : [];\n }\n\n const summary = [\n ...doGetResourcesSummary(newResources, oldResources, kind, KubernetesResourceActions.CREATE, findCreateResources),\n ...doGetResourcesSummary(newResources, oldResources, kind, KubernetesResourceActions.UPDATE, findUpdateResources),\n ...doGetResourcesSummary(newResources, oldResources, kind, KubernetesResourceActions.DELETE, findDeleteResources),\n ];\n\n return summary;\n}\n","import KubernetesResourcePoolConverter from 'Kubernetes/converters/resourcePool';\nimport { KubernetesResourcePoolFormValues } from 'Kubernetes/models/resource-pool/formValues';\nimport { KubernetesResourceQuotaDefaults } from 'Kubernetes/models/resource-quota/models';\nimport { KubernetesResourceTypes } from 'Kubernetes/models/resource-types/models';\nimport { getResourcesSummary } from 'Kubernetes/views/summary/resources/helpers';\n\nexport default function (newFormValues, oldFormValues) {\n const [newNamespace, newQuota, newIngresses] = KubernetesResourcePoolConverter.formValuesToResourcePool(newFormValues);\n\n if (!(oldFormValues instanceof KubernetesResourcePoolFormValues)) {\n oldFormValues = new KubernetesResourcePoolFormValues(KubernetesResourceQuotaDefaults);\n }\n\n const [oldNamespace, oldQuota, oldIngresses] = KubernetesResourcePoolConverter.formValuesToResourcePool(oldFormValues);\n\n const resources = [\n ...getResourcesSummary(newNamespace, oldNamespace, KubernetesResourceTypes.NAMESPACE),\n ...getResourcesSummary(newQuota, oldQuota, KubernetesResourceTypes.RESOURCEQUOTA),\n ...getResourcesSummary(newIngresses, oldIngresses, KubernetesResourceTypes.INGRESS),\n ];\n\n return resources;\n}\n","const autoNgTemplateLoaderTemplate1 = require('./summary.html');\n\nangular.module('portainer.kubernetes').component('kubernetesSummaryView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesSummaryController',\n controllerAs: '$ctrl',\n bindings: {\n formValues: '<',\n oldFormValues: '<',\n },\n});\n","import angular from 'angular';\nimport { KubernetesConfigurationFormValues } from 'Kubernetes/models/configuration/formvalues';\nimport { KubernetesResourcePoolFormValues } from 'Kubernetes/models/resource-pool/formValues';\nimport { KubernetesApplicationFormValues } from 'Kubernetes/models/application/formValues';\nimport { KubernetesResourceActions, KubernetesResourceTypes } from 'Kubernetes/models/resource-types/models';\nimport { getApplicationResources } from './resources/applicationResources';\nimport getNamespaceResources from './resources/namespaceResources';\nimport getConfigurationResources from './resources/configurationResources';\n\nclass KubernetesSummaryController {\n /* @ngInject */\n constructor($scope, LocalStorage, KubernetesResourcePoolService) {\n this.LocalStorage = LocalStorage;\n this.KubernetesResourcePoolService = KubernetesResourcePoolService;\n\n this.toggleSummary = this.toggleSummary.bind(this);\n this.generateResourceSummaryList = this.generateResourceSummaryList.bind(this);\n\n // Deep-watch changes on formValues property\n $scope.$watch(\n '$ctrl.formValues',\n (formValues) => {\n this.state.resources = this.generateResourceSummaryList(angular.copy(formValues));\n },\n true\n );\n }\n\n getArticle(resourceType, resourceAction) {\n let article = 'a';\n if (resourceAction === KubernetesResourceActions.CREATE) {\n if (resourceType === KubernetesResourceTypes.INGRESS) {\n article = 'an';\n }\n } else {\n article = 'the';\n }\n\n return article;\n }\n\n /**\n * toggleSummary toggles the summary panel state and persists it to browser localstorage\n */\n toggleSummary() {\n this.state.expandedTemplate = !this.state.expandedTemplate;\n this.LocalStorage.storeKubernetesSummaryToggle(this.state.expandedTemplate);\n }\n\n /**\n * generateResourceSummaryList maps formValues to custom object\n * @param {object} formValues\n * @returns {object} => { action: \"string\", kind: \"string\", name: \"string\" }\n */\n generateResourceSummaryList(formValues) {\n const oldFormValues = this.oldFormValues;\n\n if (formValues instanceof KubernetesConfigurationFormValues) {\n // Configuration\n return getConfigurationResources(formValues);\n } else if (formValues instanceof KubernetesResourcePoolFormValues) {\n // Namespaces\n return getNamespaceResources(formValues, oldFormValues);\n } else if (formValues instanceof KubernetesApplicationFormValues) {\n // Applications\n\n // extract cpu and memory requests & limits for pod\n this.state.limits = { cpu: formValues.CpuLimit, memory: formValues.MemoryLimit };\n\n return getApplicationResources(formValues, oldFormValues);\n }\n\n return [];\n }\n\n $onInit() {\n const toggleValue = this.LocalStorage.getKubernetesSummaryToggle();\n const expanded = typeof toggleValue === 'boolean' ? toggleValue : true;\n\n this.state = {\n expandedTemplate: expanded,\n resources: [],\n limits: { cpu: null, memory: null },\n };\n }\n}\n\nexport default KubernetesSummaryController;\nangular.module('portainer.kubernetes').controller('KubernetesSummaryController', KubernetesSummaryController);\n","import _ from 'lodash-es';\n\nangular.module('portainer.kubernetes').controller('KubernetesVolumesStoragesDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n this.state = Object.assign(this.state, {\n expandedItems: [],\n expandAll: false,\n });\n\n this.onSettingsRepeaterChange = function () {\n DatatableService.setDataTableSettings(this.tableKey, this.settings);\n };\n\n this.expandItem = function (item, expanded) {\n if (!this.itemCanExpand(item)) {\n return;\n }\n\n item.Expanded = expanded;\n if (!expanded) {\n item.Highlighted = false;\n }\n };\n\n this.itemCanExpand = function (item) {\n return item.Volumes.length > 0;\n };\n\n this.hasExpandableItems = function () {\n return _.filter(this.state.filteredDataSet, (item) => this.itemCanExpand(item)).length;\n };\n\n this.expandAll = function () {\n this.state.expandAll = !this.state.expandAll;\n _.forEach(this.state.filteredDataSet, (item) => {\n if (this.itemCanExpand(item)) {\n this.expandItem(item, this.state.expandAll);\n }\n });\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./template.html');\n\nangular.module('portainer.kubernetes').component('kubernetesVolumesStoragesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesVolumesStoragesDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n refreshCallback: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./volume.html');\n\nangular.module('portainer.kubernetes').component('kubernetesVolumeView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesVolumeController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n endpoint: '<',\n },\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\nimport KubernetesVolumeHelper from 'Kubernetes/helpers/volumeHelper';\nimport KubernetesEventHelper from 'Kubernetes/helpers/eventHelper';\nimport { KubernetesStorageClassAccessPolicies } from 'Kubernetes/models/storage-class/models';\nimport KubernetesNamespaceHelper from 'Kubernetes/helpers/namespaceHelper';\nimport { confirmRedeploy } from '@/react/kubernetes/volumes/ItemView/ConfirmRedeployModal';\n\nclass KubernetesVolumeController {\n /* @ngInject */\n constructor(\n $async,\n $state,\n Notifications,\n LocalStorage,\n KubernetesVolumeService,\n KubernetesEventService,\n KubernetesApplicationService,\n KubernetesPersistentVolumeClaimService,\n KubernetesPodService\n ) {\n this.$async = $async;\n this.$state = $state;\n this.Notifications = Notifications;\n this.LocalStorage = LocalStorage;\n\n this.KubernetesVolumeService = KubernetesVolumeService;\n this.KubernetesEventService = KubernetesEventService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n this.KubernetesPersistentVolumeClaimService = KubernetesPersistentVolumeClaimService;\n this.KubernetesPodService = KubernetesPodService;\n\n this.onInit = this.onInit.bind(this);\n this.getVolume = this.getVolume.bind(this);\n this.getVolumeAsync = this.getVolumeAsync.bind(this);\n this.updateVolumeAsync = this.updateVolumeAsync.bind(this);\n this.getEvents = this.getEvents.bind(this);\n this.getEventsAsync = this.getEventsAsync.bind(this);\n }\n\n selectTab(index) {\n this.LocalStorage.storeActiveTab('volume', index);\n }\n\n showEditor() {\n this.state.showEditorTab = true;\n this.selectTab(2);\n }\n\n isExternalVolume() {\n return KubernetesVolumeHelper.isExternalVolume(this.volume);\n }\n\n isSystemNamespace() {\n return KubernetesNamespaceHelper.isSystemNamespace(this.volume.ResourcePool.Namespace.Name);\n }\n\n isUsed() {\n return KubernetesVolumeHelper.isUsed(this.volume);\n }\n\n onChangeSize() {\n if (this.state.volumeSize) {\n const size = filesizeParser(this.state.volumeSize + this.state.volumeSizeUnit, { base: 10 });\n if (this.state.oldVolumeSize > size) {\n this.state.errors.volumeSize = true;\n } else {\n this.state.errors.volumeSize = false;\n }\n }\n }\n\n sizeIsValid() {\n return !this.state.errors.volumeSize && this.state.volumeSize && this.state.oldVolumeSize !== filesizeParser(this.state.volumeSize + this.state.volumeSizeUnit, { base: 10 });\n }\n\n /**\n * VOLUME\n */\n\n async updateVolumeAsync(redeploy) {\n try {\n this.volume.PersistentVolumeClaim.Storage = this.state.volumeSize + this.state.volumeSizeUnit.charAt(0);\n await this.KubernetesPersistentVolumeClaimService.patch(this.oldVolume.PersistentVolumeClaim, this.volume.PersistentVolumeClaim);\n this.Notifications.success('Success', 'Volume successfully updated');\n\n if (redeploy) {\n const promises = _.flatten(\n _.map(this.volume.Applications, (app) => {\n return _.map(app.Pods, (item) => this.KubernetesPodService.delete(item));\n })\n );\n await Promise.all(promises);\n this.Notifications.success('Success', 'Applications successfully redeployed');\n }\n\n this.$state.reload(this.$state.current);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to update volume.');\n }\n }\n\n updateVolume() {\n if (KubernetesVolumeHelper.isUsed(this.volume)) {\n confirmRedeploy().then((redeploy) => {\n return this.$async(this.updateVolumeAsync, redeploy);\n });\n } else {\n return this.$async(this.updateVolumeAsync, false);\n }\n }\n\n async getVolumeAsync() {\n const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n try {\n const [volume, applications] = await Promise.all([\n this.KubernetesVolumeService.get(this.state.namespace, storageClasses, this.state.name),\n this.KubernetesApplicationService.get(this.state.namespace),\n ]);\n volume.Applications = KubernetesVolumeHelper.getUsingApplications(volume, applications);\n this.volume = volume;\n this.oldVolume = angular.copy(volume);\n this.state.volumeSize = parseInt(volume.PersistentVolumeClaim.Storage.slice(0, -2), 10);\n this.state.volumeSizeUnit = volume.PersistentVolumeClaim.Storage.slice(-2);\n this.state.oldVolumeSize = filesizeParser(volume.PersistentVolumeClaim.Storage, { base: 10 });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve volume');\n }\n }\n\n getVolume() {\n return this.$async(this.getVolumeAsync);\n }\n\n /**\n * EVENTS\n */\n hasEventWarnings() {\n return this.state.eventWarningCount;\n }\n\n async getEventsAsync() {\n try {\n this.state.eventsLoading = true;\n const events = await this.KubernetesEventService.get(this.state.namespace);\n this.events = _.filter(events, (event) => event.Involved.uid === this.volume.PersistentVolumeClaim.Id);\n this.state.eventWarningCount = KubernetesEventHelper.warningCount(this.events);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve application related events');\n } finally {\n this.state.eventsLoading = false;\n }\n }\n\n getEvents() {\n return this.$async(this.getEventsAsync);\n }\n\n /**\n * ON INIT\n */\n async onInit() {\n this.state = {\n activeTab: 0,\n currentName: this.$state.$current.name,\n showEditorTab: false,\n eventsLoading: true,\n viewReady: false,\n namespace: this.$transition$.params().namespace,\n name: this.$transition$.params().name,\n eventWarningCount: 0,\n availableSizeUnits: ['MB', 'GB', 'TB'],\n increaseSize: false,\n volumeSize: 0,\n volumeSizeUnit: 'GB',\n volumeSharedAccessPolicy: '',\n volumeSharedAccessPolicyTooltip: '',\n errors: {\n volumeSize: false,\n },\n };\n\n this.state.activeTab = this.LocalStorage.getActiveTab('volume');\n\n try {\n await this.getVolume();\n await this.getEvents();\n if (this.volume.PersistentVolumeClaim.StorageClass !== undefined) {\n this.state.volumeSharedAccessPolicy = this.volume.PersistentVolumeClaim.StorageClass.AccessModes[this.volume.PersistentVolumeClaim.StorageClass.AccessModes.length - 1];\n let policies = KubernetesStorageClassAccessPolicies();\n\n policies.forEach((policy) => {\n if (policy.Name == this.state.volumeSharedAccessPolicy) {\n this.state.volumeSharedAccessPolicyTooltip = policy.Description;\n }\n });\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to load view data');\n } finally {\n this.state.viewReady = true;\n }\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n if (this.state.currentName !== this.$state.$current.name) {\n this.LocalStorage.storeActiveTab('volume', 0);\n }\n }\n}\n\nexport default KubernetesVolumeController;\nangular.module('portainer.kubernetes').controller('KubernetesVolumeController', KubernetesVolumeController);\n","import { confirm } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport function confirmRedeploy() {\n return confirm({\n title: '',\n message: (\n <>\n One or multiple applications are currently using this volume.\n <br /> For the change to be taken into account these applications will\n need to be redeployed. Do you want us to reschedule it now?\n </>\n ),\n confirmButton: buildConfirmButton('Redeploy the applications'),\n cancelButtonLabel: \"I'll do it later\",\n });\n}\n","const autoNgTemplateLoaderTemplate1 = require('./volumes.html');\n\nangular.module('portainer.kubernetes').component('kubernetesVolumesView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'KubernetesVolumesController',\n controllerAs: 'ctrl',\n bindings: {\n $transition$: '<',\n endpoint: '<',\n },\n});\n","import _ from 'lodash-es';\nimport filesizeParser from 'filesize-parser';\nimport angular from 'angular';\nimport KubernetesVolumeHelper from 'Kubernetes/helpers/volumeHelper';\nimport KubernetesResourceQuotaHelper from 'Kubernetes/helpers/resourceQuotaHelper';\nimport { confirmDelete } from '@@/modals/confirm';\n\nfunction buildStorages(storages, volumes) {\n _.forEach(storages, (s) => {\n const filteredVolumes = _.filter(volumes, ['PersistentVolumeClaim.StorageClass.Name', s.Name, 'PersistentVolumeClaim.StorageClass.Provisioner', s.Provisioner]);\n s.Volumes = filteredVolumes;\n s.Size = computeSize(filteredVolumes);\n });\n return storages;\n}\n\nfunction computeSize(volumes) {\n const size = _.sumBy(volumes, (v) => filesizeParser(v.PersistentVolumeClaim.Storage, { base: 10 }));\n const format = KubernetesResourceQuotaHelper.formatBytes(size);\n return `${format.Size}${format.SizeUnit}`;\n}\n\nclass KubernetesVolumesController {\n /* @ngInject */\n constructor($async, $state, Notifications, Authentication, LocalStorage, KubernetesStorageService, KubernetesVolumeService, KubernetesApplicationService) {\n this.$async = $async;\n this.$state = $state;\n this.Notifications = Notifications;\n this.Authentication = Authentication;\n this.LocalStorage = LocalStorage;\n this.KubernetesStorageService = KubernetesStorageService;\n this.KubernetesVolumeService = KubernetesVolumeService;\n this.KubernetesApplicationService = KubernetesApplicationService;\n\n this.onInit = this.onInit.bind(this);\n this.getVolumes = this.getVolumes.bind(this);\n this.getVolumesAsync = this.getVolumesAsync.bind(this);\n this.removeAction = this.removeAction.bind(this);\n this.removeActionAsync = this.removeActionAsync.bind(this);\n }\n\n selectTab(index) {\n this.LocalStorage.storeActiveTab('volumes', index);\n }\n\n async removeActionAsync(selectedItems) {\n let actionCount = selectedItems.length;\n for (const volume of selectedItems) {\n try {\n await this.KubernetesVolumeService.delete(volume);\n this.Notifications.success('Volume successfully removed', volume.PersistentVolumeClaim.Name);\n const index = this.volumes.indexOf(volume);\n this.volumes.splice(index, 1);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to remove volume');\n } finally {\n --actionCount;\n if (actionCount === 0) {\n this.$state.reload(this.$state.current);\n }\n }\n }\n }\n\n removeAction(selectedItems) {\n confirmDelete('Do you want to remove the selected volume(s)?').then((confirmed) => {\n if (confirmed) {\n return this.$async(this.removeActionAsync, selectedItems);\n }\n });\n }\n\n async getVolumesAsync() {\n const storageClasses = this.endpoint.Kubernetes.Configuration.StorageClasses;\n try {\n const [volumes, applications, storages] = await Promise.all([\n this.KubernetesVolumeService.get(undefined, storageClasses),\n this.KubernetesApplicationService.get(),\n this.KubernetesStorageService.get(this.endpoint.Id),\n ]);\n\n this.volumes = _.map(volumes, (volume) => {\n volume.Applications = KubernetesVolumeHelper.getUsingApplications(volume, applications);\n return volume;\n });\n this.storages = buildStorages(storages, volumes);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retreive namespaces');\n }\n }\n\n getVolumes() {\n return this.$async(this.getVolumesAsync);\n }\n\n async onInit() {\n this.state = {\n viewReady: false,\n currentName: this.$state.$current.name,\n activeTab: this.LocalStorage.getActiveTab('volumes'),\n isAdmin: this.Authentication.isAdmin(),\n };\n\n await this.getVolumes();\n\n this.state.viewReady = true;\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n $onDestroy() {\n if (this.state.currentName !== this.$state.$current.name) {\n this.LocalStorage.storeActiveTab('volumes', 0);\n }\n }\n}\n\nexport default KubernetesVolumesController;\nangular.module('portainer.kubernetes').controller('KubernetesVolumesController', KubernetesVolumesController);\n","const _paq = (window._paq = window._paq || []);\n/* tracker methods like \"setCustomDimension\" should be called before \"trackPageView\" */\n_paq.push(['enableLinkTracking']);\n\nvar u = 'https://portainer-ce.matomo.cloud/';\n_paq.push(['setTrackerUrl', u + 'matomo.php']);\n_paq.push(['setSiteId', '1']);\nvar d = document,\n g = d.createElement('script'),\n s = d.getElementsByTagName('script')[0];\ng.type = 'text/javascript';\ng.async = true;\ng.src = '//cdn.matomo.cloud/portainer-ce.matomo.cloud/matomo.js';\ns.parentNode.insertBefore(g, s);\n","import axios from '@/portainer/services/axios';\n\n/* @ngInject */\nexport default function LogsController($scope, $async, $state, Notifications) {\n let controller = new AbortController();\n\n $scope.stderrLog = [];\n $scope.stdoutLog = [];\n\n $scope.changeLogCollection = function (logCollectionStatus) {\n if (!logCollectionStatus) {\n controller.abort();\n controller = new AbortController();\n } else {\n loadLogs('stderr', $scope.jobID, $scope.taskName, $scope.namespace, $scope.endpointId, controller);\n loadLogs('stdout', $scope.jobID, $scope.taskName, $scope.namespace, $scope.endpointId, controller);\n }\n };\n\n function stripEscapeCodes(logs) {\n return logs.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');\n }\n\n function formatLogs(logs, splitter = '\\\\n') {\n if (!logs) {\n return [];\n }\n\n const formattedLogs = [];\n const logInLines = logs.trim().split(splitter);\n\n for (const logInLine of logInLines) {\n const line = stripEscapeCodes(logInLine).replace('\\n', '').replace(/[\"\"]+/g, '');\n formattedLogs.push({ line, spans: [{ foregroundColor: null, backgroundColor: null, text: line }] });\n }\n\n return formattedLogs;\n }\n async function loadLogs(logType, jobID, taskName, namespace, endpointId, controller, refresh = true, offset = 50000) {\n axios\n .get(`/nomad/endpoints/${endpointId}/allocation/${$scope.allocationID}/logs`, {\n params: {\n jobID,\n taskName,\n namespace,\n refresh,\n logType,\n offset,\n },\n signal: controller.signal,\n onDownloadProgress: (progressEvent) => {\n $scope[`${logType}Log`] = formatLogs(progressEvent.currentTarget.response);\n $scope.$apply();\n },\n })\n .then((response) => {\n $scope[`${logType}Log`] = formatLogs(response.data, '\\n');\n $scope.$apply();\n })\n .catch((err) => {\n if (err.message !== 'canceled') Notifications.error('Failure', err, 'Unable to retrieve task logs');\n });\n }\n\n async function initView() {\n return $async(async () => {\n $scope.jobID = $state.params.jobID;\n $scope.taskName = $state.params.taskName;\n $scope.allocationID = $state.params.allocationID;\n $scope.namespace = $state.params.namespace;\n $scope.endpointId = $state.params.endpointId;\n\n loadLogs('stderr', $scope.jobID, $scope.taskName, $scope.namespace, $scope.endpointId, controller);\n loadLogs('stdout', $scope.jobID, $scope.taskName, $scope.namespace, $scope.endpointId, controller);\n });\n }\n\n $scope.$on('$destroy', function () {\n if (controller) {\n controller.abort();\n }\n });\n\n initView();\n}\n","const autoNgTemplateLoaderTemplate1 = require('./nomadLogViewer.html');\n\nimport controller from './nomadLogViewerController';\n\nexport const nomadLogViewer = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n stderrLog: '<',\n stdoutLog: '<',\n resourceName: '<',\n logCollectionChange: '<',\n },\n};\n","import { concatLogsToString, NEW_LINE_BREAKER } from '@/docker/helpers/logHelper';\n\n/* @ngInject */\nexport default function NomadLogViewerController(clipboard, Blob, FileSaver) {\n this.NomadLogType = Object.freeze({\n STDERR: 'stderr',\n STDOUT: 'stdout',\n });\n\n this.state = {\n copySupported: clipboard.supported,\n logCollection: true,\n autoScroll: true,\n wrapLines: true,\n search: '',\n stderr: {\n filteredLogs: [],\n selectedLines: [],\n },\n stdout: {\n filteredLogs: [],\n selectedLines: [],\n },\n };\n\n this.model = {\n logType: this.NomadLogType.STDERR,\n };\n\n this.onChangeLogType = function (logType) {\n this.model.logType = this.NomadLogType[logType.toUpperCase()];\n };\n\n this.copy = function () {\n clipboard.copyText(this.state[this.model.logType].filteredLogs.map((log) => log.line).join(NEW_LINE_BREAKER));\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(2000);\n };\n\n this.copySelection = function () {\n clipboard.copyText(this.state[this.model.logType].selectedLines.join(NEW_LINE_BREAKER));\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(2000);\n };\n\n this.clearSelection = function () {\n this.state[this.model.logType].selectedLines = [];\n };\n\n this.selectLine = function (line) {\n var idx = this.state[this.model.logType].selectedLines.indexOf(line);\n if (idx === -1) {\n this.state[this.model.logType].selectedLines.push(line);\n } else {\n this.state[this.model.logType].selectedLines.splice(idx, 1);\n }\n };\n\n this.downloadLogs = function () {\n const logsAsString = concatLogsToString(this.state[this.model.logType].filteredLogs);\n const data = new Blob([logsAsString]);\n FileSaver.saveAs(data, this.resourceName + '_logs.txt');\n };\n}\n","import _ from 'lodash';\nimport { IAttributes, IDirective, IScope } from 'angular';\n\nimport { FeatureState } from '@/react/portainer/feature-flags/enums';\n\nimport { selectShow } from './feature-flags.service';\n\nconst BASENAME = 'limitedFeature';\n\n/* @ngInject */\nexport function limitedFeatureDirective(): IDirective {\n return {\n restrict: 'A',\n link,\n };\n\n function link(scope: IScope, elem: JQLite, attrs: IAttributes) {\n const { limitedFeatureDir: featureId } = attrs;\n\n if (!featureId) {\n return;\n }\n\n const limitedFeatureAttrs = Object.keys(attrs)\n .filter((attr) => attr.startsWith(BASENAME) && attr !== `${BASENAME}Dir`)\n .map((attr) => [_.kebabCase(attr.replace(BASENAME, '')), attrs[attr]]);\n\n const state = selectShow(featureId);\n\n if (state === FeatureState.HIDDEN) {\n elem.hide();\n return;\n }\n\n if (state === FeatureState.VISIBLE) {\n return;\n }\n\n limitedFeatureAttrs.forEach(([attr, value = attr]) => {\n const currentValue = elem.attr(attr) || '';\n elem.attr(attr, `${currentValue} ${value}`.trim());\n });\n }\n}\n","import angular from 'angular';\n\nimport { limitedFeatureDirective } from './limited-feature.directive';\nimport './feature-flags.css';\n\nexport default angular\n .module('portainer.feature-flags', [])\n .directive('limitedFeatureDir', limitedFeatureDirective).name;\n","import angular from 'angular';\n\nimport { UserService } from './userService';\n\nexport const apiServicesModule = angular\n .module('portainer.app.services.api', [])\n .factory('UserService', UserService).name;\n","import { createStore } from 'zustand';\nimport { persist } from 'zustand/middleware';\n\nimport { keyBuilder } from '@/react/hooks/useLocalStorage';\n\nimport { EnvironmentId } from '../portainer/environments/types';\n\nexport const environmentStore = createStore<{\n environmentId?: number;\n setEnvironmentId(id: EnvironmentId): void;\n clear(): void;\n}>()(\n persist(\n (set) => ({\n environmentId: undefined,\n setEnvironmentId: (id: EnvironmentId) => set({ environmentId: id }),\n clear: () => set({ environmentId: undefined }),\n }),\n {\n name: keyBuilder('environmentId'),\n getStorage: () => sessionStorage,\n }\n )\n);\n","import { ping } from '@/docker/services/ping';\nimport { environmentStore } from '@/react/hooks/current-environment-store';\nimport {\n Environment,\n EnvironmentType,\n} from '@/react/portainer/environments/types';\n\ninterface State {\n currentEndpoint: Environment | null;\n pingInterval: NodeJS.Timer | null;\n}\n\nconst DEFAULT_TITLE = 'Portainer';\n\n/* @ngInject */\nexport function EndpointProvider() {\n const state: State = {\n currentEndpoint: null,\n pingInterval: null,\n };\n\n environmentStore.subscribe((state) => {\n if (!state.environmentId) {\n setCurrentEndpoint(null);\n }\n });\n\n return { endpointID, setCurrentEndpoint, currentEndpoint, clean };\n\n function endpointID() {\n return state.currentEndpoint?.Id;\n }\n\n function setCurrentEndpoint(endpoint: Environment | null) {\n state.currentEndpoint = endpoint;\n\n if (state.pingInterval) {\n clearInterval(state.pingInterval);\n state.pingInterval = null;\n }\n\n if (endpoint && endpoint.Type === EnvironmentType.EdgeAgentOnDocker) {\n state.pingInterval = setInterval(() => ping(endpoint.Id), 60 * 1000);\n }\n\n if (endpoint === null) {\n sessionStorage.setItem(\n 'portainer.environmentId',\n JSON.stringify(undefined)\n );\n }\n\n document.title = endpoint\n ? `${DEFAULT_TITLE} | ${endpoint.Name}`\n : `${DEFAULT_TITLE}`;\n }\n\n function currentEndpoint() {\n return state.currentEndpoint;\n }\n\n function clean() {\n setCurrentEndpoint(null);\n environmentStore.getState().clear();\n }\n}\n\nexport type EndpointProviderInterface = ReturnType<typeof EndpointProvider>;\n","import angular from 'angular';\n\nimport { apiServicesModule } from './api';\nimport { Notifications } from './notifications';\nimport { HttpRequestHelperAngular } from './http-request.helper';\nimport { EndpointProvider } from './endpointProvider';\n\nexport default angular\n .module('portainer.app.services', [apiServicesModule])\n .factory('Notifications', Notifications)\n .factory('EndpointProvider', EndpointProvider)\n .factory('HttpRequestHelper', HttpRequestHelperAngular).name;\n","import { createColumnHelper } from '@tanstack/react-table';\nimport { truncate } from 'lodash';\nimport { useState } from 'react';\n\nimport { useEnvironmentList } from '@/react/portainer/environments/queries';\nimport { Environment } from '@/react/portainer/environments/types';\nimport { EnvironmentsQueryParams } from '@/react/portainer/environments/environment.service';\nimport { AutomationTestingProps } from '@/types';\n\nimport { useTableStateWithoutStorage } from '@@/datatables/useTableState';\nimport { Datatable, TableRow } from '@@/datatables';\n\nconst columHelper = createColumnHelper<Environment>();\n\nconst columns = [\n columHelper.accessor('Name', {\n header: 'Name',\n id: 'Name',\n cell: ({ getValue }) => truncate(getValue(), { length: 64 }),\n }),\n];\n\nexport function GroupAssociationTable({\n title,\n query,\n emptyContentLabel,\n onClickRow,\n 'data-cy': dataCy,\n}: {\n title: string;\n query: EnvironmentsQueryParams;\n emptyContentLabel: string;\n onClickRow?: (env: Environment) => void;\n} & AutomationTestingProps) {\n const tableState = useTableStateWithoutStorage('Name');\n const [page, setPage] = useState(0);\n const environmentsQuery = useEnvironmentList({\n pageLimit: tableState.pageSize,\n page: page + 1,\n search: tableState.search,\n sort: tableState.sortBy.id as 'Name',\n order: tableState.sortBy.desc ? 'desc' : 'asc',\n ...query,\n });\n\n const { environments } = environmentsQuery;\n\n return (\n <Datatable<Environment>\n title={title}\n columns={columns}\n settingsManager={tableState}\n dataset={environments}\n isServerSidePagination\n page={page}\n onPageChange={setPage}\n totalCount={environmentsQuery.totalCount}\n renderRow={(row) => (\n <TableRow<Environment>\n cells={row.getVisibleCells()}\n onClick={onClickRow ? () => onClickRow(row.original) : undefined}\n />\n )}\n emptyContentLabel={emptyContentLabel}\n data-cy={dataCy}\n disableSelect\n />\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"tooltip\":\"app-react-components-Tip-SliderTooltip-SliderTooltip-module__tooltip\",\"tooltipContainer\":\"app-react-components-Tip-SliderTooltip-SliderTooltip-module__tooltip-container\",\"tooltipCentered\":\"app-react-components-Tip-SliderTooltip-SliderTooltip-module__tooltip-centered\",\"tooltipMessage\":\"app-react-components-Tip-SliderTooltip-SliderTooltip-module__tooltip-message\"};","import Tippy from '@tippyjs/react';\nimport clsx from 'clsx';\n\nimport 'tippy.js/dist/tippy.css';\n\nimport styles from './SliderTooltip.module.css';\n\nexport interface Props {\n value: string;\n child: React.ReactElement;\n delay: number;\n zIndex?: number;\n}\n\nexport function SliderTooltip({ value, child, delay, zIndex = 50 }: Props) {\n return (\n <Tippy\n appendTo=\"parent\"\n zIndex={zIndex} // make the z index lower than the dialog\n className={clsx(styles.tooltipCentered, styles.tooltip)}\n content={messageHTML(value)}\n placement=\"top\"\n showOnCreate\n hideOnClick={false}\n trigger=\"manual\"\n delay={delay}\n arrow\n allowHTML\n >\n {child}\n </Tippy>\n );\n}\n\nfunction messageHTML(value: string) {\n let message = value;\n if (message === '0') {\n message = 'unlimited';\n }\n\n return <div className={styles.tooltipContainer}>{message}</div>;\n}\n","import { useCallback } from 'react';\nimport RcSlider from 'rc-slider';\n\nimport { SliderTooltip } from '@@/Tip/SliderTooltip';\n\nimport styles from './Slider.module.css';\nimport 'rc-slider/assets/index.css';\n\nexport interface Props {\n min: number;\n max: number;\n step: number;\n value: number;\n onChange: (value: number | number[]) => void;\n // true if you want to always show the tooltip\n dataCy: string;\n visibleTooltip?: boolean;\n}\n\nexport function Slider({\n min,\n max,\n step,\n value,\n onChange,\n dataCy,\n visibleTooltip: visible,\n}: Props) {\n const marks = {\n [min]: visible && value / max < 0.1 ? '' : translateMinValue(min),\n [max]: visible && value / max > 0.9 ? '' : max.toString(),\n };\n\n const sliderTooltip = useCallback(\n (node, handleProps) => (\n <SliderTooltip\n value={translateMinValue(handleProps.value)}\n child={node}\n delay={0}\n />\n ),\n []\n );\n\n return (\n <div className={styles.root}>\n <RcSlider\n handleRender={sliderTooltip}\n min={min}\n max={max}\n marks={marks}\n step={step}\n data-cy={dataCy}\n value={value}\n onChange={onChange}\n />\n </div>\n );\n}\n\nfunction translateMinValue(value: number) {\n if (value === 0) {\n return 'unlimited';\n }\n return value.toString();\n}\n","import { r2a } from '@/react-tools/react2angular';\n\nimport { FileUploadField } from '@@/form-components/FileUpload';\n\nexport const fileUploadField = r2a(FileUploadField, [\n 'onChange',\n 'value',\n 'title',\n 'required',\n 'accept',\n 'inputId',\n 'color',\n 'name',\n]);\n","import { r2a } from '@/react-tools/react2angular';\n\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nexport const switchField = r2a(SwitchField, [\n 'tooltip',\n 'checked',\n 'index',\n 'label',\n 'name',\n 'labelClass',\n 'fieldClass',\n 'dataCy',\n 'disabled',\n 'onChange',\n 'featureId',\n 'switchClass',\n 'setTooltipHtmlMessage',\n]);\n","import { FormikErrors } from 'formik';\n\nimport { FormError } from '@@/form-components/FormError';\nimport { Input } from '@@/form-components/Input';\nimport { InputList } from '@@/form-components/InputList';\nimport { ItemProps } from '@@/form-components/InputList/InputList';\n\nexport interface VariableDefinition {\n name: string;\n label: string;\n defaultValue: string;\n description: string;\n}\n\ninterface Props {\n value: VariableDefinition[];\n onChange: (value: VariableDefinition[]) => void;\n errors?: FormikErrors<VariableDefinition>[];\n isVariablesNamesFromParent?: boolean;\n}\n\nexport function CustomTemplatesVariablesDefinitionField({\n onChange,\n value,\n errors,\n isVariablesNamesFromParent,\n}: Props) {\n return (\n <InputList\n label=\"Variables definition\"\n onChange={onChange}\n value={value}\n renderItem={(item, onChange, index, error) => (\n <Item\n item={item}\n onChange={onChange}\n error={error}\n index={index}\n isNameReadonly={isVariablesNamesFromParent}\n />\n )}\n itemBuilder={() => ({\n label: '',\n name: '',\n defaultValue: '',\n description: '',\n })}\n errors={errors}\n textTip=\"List should map the mustache variables in the template file, if default value is empty, the variable will be required.\"\n isAddButtonHidden={isVariablesNamesFromParent}\n />\n );\n}\n\ninterface DefinitionItemProps extends ItemProps<VariableDefinition> {\n isNameReadonly?: boolean;\n}\n\nfunction Item({ item, onChange, error, isNameReadonly }: DefinitionItemProps) {\n const errorObj = typeof error === 'object' ? error : {};\n\n return (\n <div className=\"flex gap-2\">\n <div>\n <Input\n value={item.name}\n name=\"name\"\n onChange={handleChange}\n placeholder=\"Name (e.g var_name)\"\n readOnly={isNameReadonly}\n />\n {errorObj?.name && <FormError>{errorObj.name}</FormError>}\n </div>\n <div>\n <Input\n value={item.label}\n onChange={handleChange}\n placeholder=\"Label\"\n name=\"label\"\n />\n {errorObj?.label && <FormError>{errorObj.label}</FormError>}\n </div>\n <div>\n <Input\n name=\"description\"\n value={item.description}\n onChange={handleChange}\n placeholder=\"Description\"\n />\n {errorObj?.description && <FormError>{errorObj.description}</FormError>}\n </div>\n <div>\n <Input\n value={item.defaultValue}\n onChange={handleChange}\n placeholder=\"Default Value\"\n name=\"defaultValue\"\n />\n {errorObj?.defaultValue && (\n <FormError>{errorObj.defaultValue}</FormError>\n )}\n </div>\n </div>\n );\n\n function handleChange(e: React.ChangeEvent<HTMLInputElement>) {\n onChange({ ...item, [e.target.name]: e.target.value });\n }\n}\n","import {\n IComponentOptions,\n IComponentController,\n IFormController,\n IScope,\n IOnChangesObject,\n} from 'angular';\n\nimport { VariableDefinition } from '@/react/portainer/custom-templates/components/CustomTemplatesVariablesDefinitionField/CustomTemplatesVariablesDefinitionField';\n\nclass VariablesFieldController implements IComponentController {\n formCtrl!: IFormController;\n\n value!: Record<string, string>;\n\n definitions!: VariableDefinition[];\n\n onChange!: (value: Record<string, string>) => void;\n\n $scope: IScope;\n\n /* @ngInject */\n constructor($scope: IScope) {\n this.handleChange = this.handleChange.bind(this);\n\n this.$scope = $scope;\n }\n\n handleChange(value: Record<string, string>) {\n this.$scope.$evalAsync(() => {\n this.onChange(value);\n });\n }\n\n $onChanges({ value }: IOnChangesObject) {\n if (value.currentValue) {\n this.checkValidity(value.currentValue);\n }\n }\n\n checkValidity(value: Record<string, string>) {\n this.formCtrl.$setValidity(\n 'templateVariables',\n Object.entries(value).every(\n ([name, value]) =>\n !!value ||\n this.definitions.some(\n (def) => def.name === name && !!def.defaultValue\n )\n ),\n this.formCtrl\n );\n }\n}\n\nexport const VariablesFieldAngular: IComponentOptions = {\n template: `<custom-templates-variables-field-react\n value=\"$ctrl.value\"\n on-change=\"$ctrl.handleChange\"\n definitions=\"$ctrl.definitions\"\n ></custom-templates-variables-field-react>`,\n bindings: {\n value: '<',\n definitions: '<',\n onChange: '<',\n },\n require: {\n formCtrl: '^form',\n },\n controller: VariablesFieldController,\n};\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { CustomTemplatesVariablesDefinitionField } from '@/react/portainer/custom-templates/components/CustomTemplatesVariablesDefinitionField';\nimport { CustomTemplatesVariablesField } from '@/react/portainer/custom-templates/components/CustomTemplatesVariablesField';\nimport { withControlledInput } from '@/react-tools/withControlledInput';\n\nimport { VariablesFieldAngular } from './variables-field';\n\nexport const customTemplatesModule = angular\n .module('portainer.app.react.components.custom-templates', [])\n .component(\n 'customTemplatesVariablesFieldReact',\n r2a(withControlledInput(CustomTemplatesVariablesField), [\n 'value',\n 'onChange',\n 'definitions',\n ])\n )\n .component('customTemplatesVariablesField', VariablesFieldAngular)\n .component(\n 'customTemplatesVariablesDefinitionField',\n r2a(withControlledInput(CustomTemplatesVariablesDefinitionField), [\n 'onChange',\n 'value',\n 'errors',\n 'isVariablesNamesFromParent',\n ])\n ).name;\n","import { FormControl } from '@@/form-components/FormControl';\nimport { FormSection } from '@@/form-components/FormSection/FormSection';\nimport { Input } from '@@/form-components/Input';\n\nimport { VariableDefinition } from '../CustomTemplatesVariablesDefinitionField/CustomTemplatesVariablesDefinitionField';\n\nexport type Variables = Record<string, string>;\n\ninterface Props {\n value: Variables;\n definitions?: VariableDefinition[];\n onChange: (value: Variables) => void;\n}\n\nexport function CustomTemplatesVariablesField({\n value,\n definitions,\n onChange,\n}: Props) {\n if (!definitions || !definitions.length) {\n return null;\n }\n\n return (\n <FormSection title=\"Template Variables\">\n {definitions.map((def) => {\n const inputId = `${def.name}-input`;\n const variable = value[def.name] || '';\n return (\n <FormControl\n required={!def.defaultValue}\n label={def.label}\n key={def.name}\n inputId={inputId}\n tooltip={def.description}\n size=\"small\"\n >\n <Input\n name={`variables.${def.name}`}\n value={variable}\n id={inputId}\n onChange={(e) =>\n onChange({\n ...value,\n [def.name]: e.target.value,\n })\n }\n />\n </FormControl>\n );\n })}\n </FormSection>\n );\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { AutoUpdateFieldset } from '@/react/portainer/gitops/AutoUpdateFieldset';\nimport { GitForm } from '@/react/portainer/gitops/GitForm';\nimport { AuthFieldset } from '@/react/portainer/gitops/AuthFieldset';\nimport { InfoPanel } from '@/react/portainer/gitops/InfoPanel';\nimport { RefField } from '@/react/portainer/gitops/RefField';\nimport { TimeWindowDisplay } from '@/react/portainer/gitops/TimeWindowDisplay';\n\nexport const gitFormModule = angular\n .module('portainer.app.components.forms.git', [])\n .component(\n 'reactGitForm',\n r2a(withUIRouter(withReactQuery(withCurrentUser(GitForm))), [\n 'value',\n 'onChange',\n 'environmentType',\n 'isDockerStandalone',\n 'deployMethod',\n 'isAdditionalFilesFieldVisible',\n 'isForcePullVisible',\n 'isAuthExplanationVisible',\n 'errors',\n 'baseWebhookUrl',\n 'webhookId',\n 'webhooksDocs',\n ])\n )\n .component(\n 'gitFormInfoPanel',\n r2a(InfoPanel, [\n 'additionalFiles',\n 'className',\n 'configFilePath',\n 'type',\n 'url',\n ])\n )\n .component(\n 'reactGitFormAutoUpdateFieldset',\n r2a(AutoUpdateFieldset, [\n 'value',\n 'onChange',\n 'environmentType',\n 'isForcePullVisible',\n 'errors',\n 'baseWebhookUrl',\n 'webhookId',\n 'webhooksDocs',\n ])\n )\n .component(\n 'reactGitFormAuthFieldset',\n r2a(withUIRouter(withReactQuery(withCurrentUser(AuthFieldset))), [\n 'value',\n 'isAuthExplanationVisible',\n 'onChange',\n 'errors',\n ])\n )\n .component(\n 'reactGitFormRefField',\n r2a(withUIRouter(withReactQuery(withCurrentUser(RefField))), [\n 'error',\n 'model',\n 'onChange',\n 'stackId',\n 'value',\n 'isUrlValid',\n ])\n )\n .component(\n 'timeWindowDisplay',\n r2a(withReactQuery(withUIRouter(TimeWindowDisplay)), [])\n ).name;\n","import { usePublicSettings } from '../settings/queries';\n\nexport enum FeatureFlag {\n FDO = 'fdo',\n}\n\nexport function useFeatureFlag(\n flag: FeatureFlag,\n {\n onSuccess,\n enabled = true,\n }: { onSuccess?: (isEnabled: boolean) => void; enabled?: boolean } = {}\n) {\n return usePublicSettings<boolean>({\n select: (settings) => settings.Features[flag],\n onSuccess,\n enabled,\n });\n}\n","import { isoDateFromTimestamp } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor('dateCreated', {\n header: 'Created',\n id: 'created',\n cell: ({ getValue }) => {\n const value = getValue();\n return isoDateFromTimestamp(value);\n },\n});\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { Profile } from '@/portainer/hostmanagement/fdo/model';\n\nexport const columnHelper = createColumnHelper<Profile>();\n","import { Profile } from '@/portainer/hostmanagement/fdo/model';\n\nimport { buildNameColumn } from '@@/datatables/NameCell';\n\nimport { created } from './created';\n\nexport const columns = [\n buildNameColumn<Profile>('name', 'id', 'portainer.endpoints.profile.edit'),\n created,\n];\n","import { useQueryClient } from 'react-query';\nimport { useRouter } from '@uirouter/react';\nimport { PlusCircle, Trash2 } from 'lucide-react';\n\nimport { Profile } from '@/portainer/hostmanagement/fdo/model';\nimport * as notifications from '@/portainer/services/notifications';\nimport {\n deleteProfile,\n duplicateProfile,\n} from '@/portainer/hostmanagement/fdo/fdo.service';\n\nimport { confirm, confirmDestructive } from '@@/modals/confirm';\nimport { Link } from '@@/Link';\nimport { Button } from '@@/buttons';\nimport { buildConfirmButton } from '@@/modals/utils';\n\ninterface Props {\n isFDOEnabled: boolean;\n selectedItems: Profile[];\n}\n\nexport function FDOProfilesDatatableActions({\n isFDOEnabled,\n selectedItems,\n}: Props) {\n const router = useRouter();\n const queryClient = useQueryClient();\n\n return (\n <div className=\"actionBar\">\n <Link to=\"portainer.endpoints.profile\" className=\"space-left\">\n <Button disabled={!isFDOEnabled} icon={PlusCircle}>\n Add Profile\n </Button>\n </Link>\n\n <Button\n disabled={!isFDOEnabled || selectedItems.length !== 1}\n onClick={() => onDuplicateProfileClick()}\n icon={PlusCircle}\n >\n Duplicate\n </Button>\n\n <Button\n disabled={!isFDOEnabled || selectedItems.length < 1}\n color=\"danger\"\n onClick={() => onDeleteProfileClick()}\n icon={Trash2}\n >\n Remove\n </Button>\n </div>\n );\n\n async function onDuplicateProfileClick() {\n const confirmed = await confirm({\n title: 'Are you sure ?',\n message: 'This action will duplicate the selected profile. Continue?',\n });\n\n if (!confirmed) {\n return;\n }\n\n try {\n const profile = selectedItems[0];\n const newProfile = await duplicateProfile(profile.id);\n notifications.success('Profile successfully duplicated', profile.name);\n router.stateService.go('portainer.endpoints.profile.edit', {\n id: newProfile.id,\n });\n } catch (err) {\n notifications.error(\n 'Failure',\n err as Error,\n 'Unable to duplicate profile'\n );\n }\n }\n\n async function onDeleteProfileClick() {\n const confirmed = await confirmDestructive({\n title: 'Are you sure?',\n message: 'This action will delete the selected profile(s). Continue?',\n confirmButton: buildConfirmButton('Remove', 'danger'),\n });\n\n if (!confirmed) {\n return;\n }\n\n await Promise.all(\n selectedItems.map(async (profile) => {\n try {\n await deleteProfile(profile.id);\n\n notifications.success('Profile successfully removed', profile.name);\n } catch (err) {\n notifications.error(\n 'Failure',\n err as Error,\n 'Unable to remove profile'\n );\n }\n })\n );\n\n await queryClient.invalidateQueries('fdo_profiles');\n }\n}\n","import { List } from 'lucide-react';\n\nimport { Datatable } from '@@/datatables';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { columns } from './columns';\nimport { FDOProfilesDatatableActions } from './FDOProfilesDatatableActions';\nimport { useFDOProfiles } from './useFDOProfiles';\n\nconst storageKey = 'fdoProfiles';\n\nconst settingsStore = createPersistedStore(storageKey, 'name');\n\nexport interface FDOProfilesDatatableProps {\n isFDOEnabled: boolean;\n}\n\nexport function FDOProfilesDatatable({\n isFDOEnabled,\n}: FDOProfilesDatatableProps) {\n const tableState = useTableState(settingsStore, storageKey);\n\n const { isLoading, profiles } = useFDOProfiles();\n\n return (\n <Datatable\n columns={columns}\n dataset={profiles}\n settingsManager={tableState}\n title=\"Device Profiles\"\n titleIcon={List}\n disableSelect={!isFDOEnabled}\n emptyContentLabel=\"No profiles found\"\n getRowId={(row) => row.id.toString()}\n isLoading={isLoading}\n renderTableActions={(selectedItems) => (\n <FDOProfilesDatatableActions\n isFDOEnabled={isFDOEnabled}\n selectedItems={selectedItems}\n />\n )}\n />\n );\n}\n","import { useEffect, useMemo } from 'react';\nimport { useQuery } from 'react-query';\n\nimport PortainerError from '@/portainer/error';\nimport * as notifications from '@/portainer/services/notifications';\nimport { getProfiles } from '@/portainer/hostmanagement/fdo/fdo.service';\n\nexport function useFDOProfiles() {\n const { isLoading, data, isError, error } = useQuery('fdo_profiles', () =>\n getProfiles()\n );\n\n useEffect(() => {\n if (isError) {\n notifications.error(\n 'Failure',\n error as Error,\n 'Failed retrieving FDO profiles'\n );\n }\n }, [isError, error]);\n\n const profiles = useMemo(() => data || [], [data]);\n\n return {\n isLoading,\n profiles,\n error: isError ? (error as PortainerError) : undefined,\n };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"fdoTable\":\"app-react-portainer-settings-EdgeComputeView-SettingsFDO-SettingsFDO-module__fdo-table\"};","import { useEffect, useState } from 'react';\nimport { Formik, Field, Form } from 'formik';\nimport { FlaskConical, Laptop } from 'lucide-react';\n\nimport { FDOConfiguration } from '@/portainer/hostmanagement/fdo/model';\nimport {\n FeatureFlag,\n useFeatureFlag,\n} from '@/react/portainer/feature-flags/useFeatureFlag';\n\nimport { Switch } from '@@/form-components/SwitchField/Switch';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Input } from '@@/form-components/Input';\n\nimport { FDOProfilesDatatable } from '../FDOProfilesDatatable';\n\nimport styles from './SettingsFDO.module.css';\nimport { validationSchema } from './SettingsFDO.validation';\n\nexport interface Settings {\n fdoConfiguration: FDOConfiguration;\n EnableEdgeComputeFeatures: boolean;\n}\n\ninterface Props {\n settings: Settings;\n onSubmit(values: FDOConfiguration): void;\n}\n\nexport function SettingsFDO({ settings, onSubmit }: Props) {\n const flagEnabledQuery = useFeatureFlag(FeatureFlag.FDO);\n\n if (!flagEnabledQuery.data) {\n return (\n <Widget>\n <Widget.Body>\n <TextTip color=\"blue\" icon={FlaskConical}>\n Since FDO is still an experimental feature that requires additional\n infrastructure, it has been temporarily hidden in the UI.\n </TextTip>\n </Widget.Body>\n </Widget>\n );\n }\n\n return <SettingsFDOForm settings={settings} onSubmit={onSubmit} />;\n}\n\nexport function SettingsFDOForm({ settings, onSubmit }: Props) {\n const fdoConfiguration = settings ? settings.fdoConfiguration : null;\n const initialFDOEnabled = fdoConfiguration ? fdoConfiguration.enabled : false;\n\n const [isFDOEnabled, setIsFDOEnabled] = useState(initialFDOEnabled);\n useEffect(() => {\n setIsFDOEnabled(settings?.fdoConfiguration?.enabled);\n }, [settings]);\n\n const initialValues = {\n enabled: initialFDOEnabled,\n ownerURL: fdoConfiguration ? fdoConfiguration.ownerURL : '',\n ownerUsername: fdoConfiguration ? fdoConfiguration.ownerUsername : '',\n ownerPassword: fdoConfiguration ? fdoConfiguration.ownerPassword : '',\n };\n\n const edgeComputeFeaturesEnabled = settings\n ? settings.EnableEdgeComputeFeatures\n : false;\n\n return (\n <div className=\"row\">\n <Widget>\n <WidgetTitle icon={Laptop} title=\"FDO\" />\n <WidgetBody>\n <Formik\n initialValues={initialValues}\n onSubmit={onSubmit}\n enableReinitialize\n validationSchema={() => validationSchema()}\n validateOnChange\n validateOnMount\n >\n {({\n values,\n errors,\n handleSubmit,\n setFieldValue,\n isSubmitting,\n isValid,\n dirty,\n }) => (\n <Form className=\"form-horizontal\" onSubmit={handleSubmit}>\n <FormControl\n inputId=\"edge_enableFDO\"\n label=\"Enable FDO Management Service\"\n size=\"small\"\n errors={errors.enabled}\n >\n <Switch\n id=\"edge_enableFDO\"\n name=\"edge_enableFDO\"\n className=\"space-right\"\n disabled={!edgeComputeFeaturesEnabled}\n checked={edgeComputeFeaturesEnabled && values.enabled}\n onChange={(e) => onChangedEnabled(e, setFieldValue)}\n />\n </FormControl>\n\n <TextTip color=\"blue\" className=\"mb-2\">\n When enabled, this will allow Portainer to interact with FDO\n Services.\n </TextTip>\n\n {edgeComputeFeaturesEnabled && values.enabled && (\n <>\n <hr />\n\n <FormControl\n inputId=\"owner_url\"\n label=\"Owner Service Server\"\n errors={errors.ownerURL}\n >\n <Field\n as={Input}\n name=\"ownerURL\"\n id=\"owner_url\"\n placeholder=\"http://127.0.0.1:8042\"\n value={values.ownerURL}\n data-cy=\"fdo-serverInput\"\n />\n </FormControl>\n\n <FormControl\n inputId=\"owner_username\"\n label=\"Owner Service Username\"\n errors={errors.ownerUsername}\n >\n <Field\n as={Input}\n name=\"ownerUsername\"\n id=\"owner_username\"\n placeholder=\"username\"\n value={values.ownerUsername}\n data-cy=\"fdo-usernameInput\"\n />\n </FormControl>\n\n <FormControl\n inputId=\"owner_password\"\n label=\"Owner Service Password\"\n errors={errors.ownerPassword}\n >\n <Field\n as={Input}\n type=\"password\"\n name=\"ownerPassword\"\n id=\"owner_password\"\n placeholder=\"password\"\n value={values.ownerPassword}\n data-cy=\"fdo-passwordInput\"\n />\n </FormControl>\n </>\n )}\n\n <div className=\"form-group mt-5\">\n <div className=\"col-sm-12\">\n <LoadingButton\n disabled={!isValid || !dirty}\n data-cy=\"settings-fdoButton\"\n isLoading={isSubmitting}\n loadingText=\"Saving settings...\"\n >\n Save settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n\n {edgeComputeFeaturesEnabled && isFDOEnabled && (\n <div className={styles.fdoTable}>\n <FormSectionTitle>Device Profiles</FormSectionTitle>\n <TextTip color=\"blue\" className=\"mb-2\">\n Add, Edit and Manage the list of device profiles available\n during FDO device setup\n </TextTip>\n <FDOProfilesDatatable isFDOEnabled={initialFDOEnabled} />\n </div>\n )}\n </WidgetBody>\n </Widget>\n </div>\n );\n\n async function onChangedEnabled(\n e: boolean,\n setFieldValue: (\n field: string,\n value: unknown,\n shouldValidate?: boolean\n ) => void\n ) {\n setIsFDOEnabled(e);\n setFieldValue('enabled', e);\n }\n}\n","import { object, string } from 'yup';\n\nexport function validationSchema() {\n return object().shape({\n ownerURL: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n ownerUsername: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n ownerPassword: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n });\n}\n","import { useState } from 'react';\nimport { Formik, Field, Form } from 'formik';\nimport { Laptop } from 'lucide-react';\n\nimport { OpenAMTConfiguration } from '@/react/edge/edge-devices/open-amt/types';\n\nimport { Switch } from '@@/form-components/SwitchField/Switch';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Input } from '@@/form-components/Input';\nimport { FileUploadField } from '@@/form-components/FileUpload';\n\nimport { validationSchema } from './SettingsOpenAMT.validation';\n\nexport interface Settings {\n openAMTConfiguration: OpenAMTConfiguration;\n EnableEdgeComputeFeatures: boolean;\n}\n\ninterface Props {\n settings: Settings;\n onSubmit(values: OpenAMTConfiguration): void;\n}\n\nexport function SettingsOpenAMT({ settings, onSubmit }: Props) {\n const [certFile, setCertFile] = useState<File>();\n async function handleFileUpload(\n file: File,\n setFieldValue: (\n field: string,\n value: unknown,\n shouldValidate?: boolean\n ) => void\n ) {\n if (file) {\n setCertFile(file);\n const fileContent = await readFileContent(file);\n setFieldValue('certFileContent', fileContent);\n setFieldValue('certFileName', file.name);\n }\n }\n\n function readFileContent(file: File) {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader();\n fileReader.onload = (e) => {\n if (e.target == null || e.target.result == null) {\n resolve('');\n return;\n }\n const base64 = e.target.result.toString();\n // remove prefix of \"data:application/x-pkcs12;base64,\" returned by \"readAsDataURL()\"\n const index = base64.indexOf('base64,');\n const cert = base64.substring(index + 7, base64.length);\n resolve(cert);\n };\n fileReader.onerror = () => {\n reject(new Error('error reading provisioning certificate file'));\n };\n fileReader.readAsDataURL(file);\n });\n }\n\n const openAMTConfiguration = settings ? settings.openAMTConfiguration : null;\n const initialValues = {\n enabled: openAMTConfiguration ? openAMTConfiguration.enabled : false,\n mpsServer: openAMTConfiguration ? openAMTConfiguration.mpsServer : '',\n mpsUser: openAMTConfiguration ? openAMTConfiguration.mpsUser : '',\n mpsPassword: openAMTConfiguration ? openAMTConfiguration.mpsPassword : '',\n domainName: openAMTConfiguration ? openAMTConfiguration.domainName : '',\n certFileContent: openAMTConfiguration\n ? openAMTConfiguration.certFileContent\n : '',\n certFileName: openAMTConfiguration ? openAMTConfiguration.certFileName : '',\n certFilePassword: openAMTConfiguration\n ? openAMTConfiguration.certFilePassword\n : '',\n };\n\n if (\n initialValues.certFileContent &&\n initialValues.certFileName &&\n !certFile\n ) {\n setCertFile(new File([], initialValues.certFileName));\n }\n\n const edgeComputeFeaturesEnabled = settings\n ? settings.EnableEdgeComputeFeatures\n : false;\n\n return (\n <div className=\"row\">\n <Widget>\n <WidgetTitle icon={Laptop} title=\"Intel OpenAMT\" />\n <WidgetBody>\n <Formik\n initialValues={initialValues}\n onSubmit={onSubmit}\n enableReinitialize\n validationSchema={() => validationSchema()}\n validateOnChange\n validateOnMount\n >\n {({\n values,\n errors,\n handleSubmit,\n setFieldValue,\n isSubmitting,\n isValid,\n dirty,\n }) => (\n <Form className=\"form-horizontal\" onSubmit={handleSubmit}>\n <FormControl\n inputId=\"edge_enableOpenAMT\"\n label=\"Enable OpenAMT\"\n errors={errors.enabled}\n size=\"small\"\n >\n <Switch\n id=\"edge_enableOpenAMT\"\n name=\"edge_enableOpenAMT\"\n className=\"space-right\"\n disabled={!edgeComputeFeaturesEnabled}\n checked={edgeComputeFeaturesEnabled && values.enabled}\n onChange={(e) => setFieldValue('enabled', e)}\n />\n </FormControl>\n\n <TextTip color=\"blue\" className=\"mb-2\">\n When enabled, this will allow Portainer to interact with an\n OpenAMT MPS API.\n </TextTip>\n\n {edgeComputeFeaturesEnabled && values.enabled && (\n <>\n <hr />\n\n <FormControl\n inputId=\"mps_server\"\n label=\"MPS Server\"\n size=\"medium\"\n errors={errors.mpsServer}\n >\n <Field\n as={Input}\n name=\"mpsServer\"\n id=\"mps_server\"\n placeholder=\"Enter the MPS Server\"\n value={values.mpsServer}\n data-cy=\"openAMT-serverInput\"\n />\n </FormControl>\n\n <FormControl\n inputId=\"mps_username\"\n label=\"MPS User\"\n size=\"medium\"\n errors={errors.mpsUser}\n >\n <Field\n as={Input}\n name=\"mpsUser\"\n id=\"mps_username\"\n placeholder=\"Enter the MPS User\"\n value={values.mpsUser}\n data-cy=\"openAMT-usernameInput\"\n />\n </FormControl>\n\n <FormControl\n inputId=\"mps_password\"\n label=\"MPS Password\"\n size=\"medium\"\n tooltip=\"Needs to be 8-32 characters including one uppercase, one lowercase letters, one base-10 digit and one special character.\"\n errors={errors.mpsPassword}\n >\n <Field\n as={Input}\n type=\"password\"\n name=\"mpsPassword\"\n id=\"mps_password\"\n placeholder=\"Enter the MPS Password\"\n value={values.mpsPassword}\n data-cy=\"openAMT-passwordInput\"\n />\n </FormControl>\n\n <hr />\n\n <FormControl\n inputId=\"domain_name\"\n label=\"Domain Name\"\n size=\"medium\"\n tooltip=\"Enter the FQDN that is associated with the provisioning certificate (i.e amtdomain.com)\"\n errors={errors.domainName}\n >\n <Field\n as={Input}\n name=\"domainName\"\n id=\"domain_name\"\n placeholder=\"Enter the Domain Name\"\n value={values.domainName}\n data-cy=\"openAMT-domainInput\"\n />\n </FormControl>\n\n <FormControl\n inputId=\"certificate_file\"\n label=\"Provisioning Certificate File (.pfx)\"\n size=\"medium\"\n tooltip=\"Supported CAs are Comodo, DigiCert, Entrust and GoDaddy.<br>The certificate must contain the private key.<br>On AMT 15 based devices you need to use SHA2.\"\n errors={errors.certFileContent}\n setTooltipHtmlMessage\n >\n <FileUploadField\n inputId=\"certificate_file\"\n title=\"Upload file\"\n accept=\".pfx\"\n value={certFile}\n onChange={(file) =>\n handleFileUpload(file, setFieldValue)\n }\n />\n </FormControl>\n\n <FormControl\n inputId=\"certificate_password\"\n label=\"Provisioning Certificate Password\"\n size=\"medium\"\n tooltip=\"Needs to be 8-32 characters including one uppercase, one lowercase letters, one base-10 digit and one special character.\"\n errors={errors.certFilePassword}\n >\n <Field\n as={Input}\n type=\"password\"\n name=\"certFilePassword\"\n id=\"certificate_password\"\n placeholder=\"**********\"\n value={values.certFilePassword}\n data-cy=\"openAMT-certPasswordInput\"\n />\n </FormControl>\n </>\n )}\n\n <div className=\"form-group mt-5\">\n <div className=\"col-sm-12\">\n <LoadingButton\n disabled={!isValid || !dirty}\n data-cy=\"settings-fdoButton\"\n isLoading={isSubmitting}\n loadingText=\"Saving settings...\"\n >\n Save settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n </WidgetBody>\n </Widget>\n </div>\n );\n}\n","import { ReactNode } from 'react';\n\nexport interface Props {\n value: string;\n icon?: ReactNode;\n color: string;\n}\n\n// Helper function used as workaround to add opacity to the background color\nfunction setOpacity(hex: string, alpha: number) {\n return `${hex}${Math.floor(alpha * 255)\n .toString(16)\n .padStart(2, '0')}`;\n}\n\nexport function Badge({ icon, value, color }: Props) {\n return (\n <span\n className=\"badge inline-flex items-center\"\n style={{\n backgroundColor: setOpacity(color, 0.1),\n color,\n padding: '5px 10px',\n }}\n >\n {icon}\n {value}\n </span>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"sliderBadge\":\"app-react-portainer-settings-AuthenticationView-InternalAuth-PasswordLengthSlider-PasswordLengthSlider-module__slider-badge\",\"root\":\"app-react-portainer-settings-AuthenticationView-InternalAuth-PasswordLengthSlider-PasswordLengthSlider-module__root\"};","import { useCallback } from 'react';\nimport RcSlider from 'rc-slider';\nimport clsx from 'clsx';\nimport { Lock, XCircle, CheckCircle } from 'lucide-react';\n\nimport { SliderTooltip } from '@@/Tip/SliderTooltip';\n\nimport 'rc-slider/assets/index.css';\n\nimport { Badge } from '../Badge';\n\nimport styles from './PasswordLengthSlider.module.css';\n\nexport interface Props {\n min: number;\n max: number;\n step: number;\n value: number;\n onChange(value: number | number[]): void;\n}\n\ntype Strength = 'weak' | 'good' | 'strong' | 'veryStrong';\n\nconst sliderProperties: Record<\n Strength,\n { strength: string; color: string; text: string }\n> = {\n weak: {\n strength: 'weak',\n color: '#F04438',\n text: 'Weak password',\n },\n good: {\n strength: 'good',\n color: '#F79009',\n text: 'Good password',\n },\n strong: {\n strength: 'strong',\n color: '#12B76A',\n text: 'Strong password',\n },\n veryStrong: {\n strength: 'veryStrong',\n color: '#0BA5EC',\n text: 'Very strong password',\n },\n};\n\nexport function PasswordLengthSlider({\n min,\n max,\n step,\n value,\n onChange,\n}: Props) {\n const sliderProps = getSliderProps(value);\n\n function getSliderProps(value: number) {\n if (value < 10) {\n return sliderProperties.weak;\n }\n\n if (value < 12) {\n return sliderProperties.good;\n }\n\n if (value < 14) {\n return sliderProperties.strong;\n }\n\n return sliderProperties.veryStrong;\n }\n\n function getBadgeIcon(strength: string) {\n switch (strength) {\n case 'weak':\n return <XCircle size=\"13\" className=\"space-right\" strokeWidth=\"3px\" />;\n case 'good':\n case 'strong':\n return (\n <CheckCircle size=\"13\" className=\"space-right\" strokeWidth=\"3px\" />\n );\n default:\n return <Lock size=\"13\" className=\"space-right\" strokeWidth=\"3px\" />;\n }\n }\n\n function handleChange(sliderValue: number | number[]) {\n onChange(sliderValue);\n }\n\n const sliderTooltip = useCallback(\n (node, handleProps) => (\n <SliderTooltip\n value={`${handleProps.value} characters`}\n child={node}\n delay={800}\n />\n ),\n []\n );\n\n return (\n <div className={clsx(styles.root, styles[sliderProps.strength])}>\n <div className=\"col-sm-4\">\n <RcSlider\n handleRender={sliderTooltip}\n min={min}\n max={max}\n step={step}\n defaultValue={12}\n value={value}\n onChange={handleChange}\n />\n </div>\n\n <div className={clsx('col-sm-2', styles.sliderBadge)}>\n <Badge\n icon={getBadgeIcon(sliderProps.strength)}\n value={sliderProps.text}\n color={sliderProps.color}\n />\n </div>\n </div>\n );\n}\n","import { LoadingButton } from '@@/buttons/LoadingButton';\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\n\nexport interface Props {\n onSubmit(): void;\n isLoading: boolean;\n}\n\nexport function SaveAuthSettingsButton({ onSubmit, isLoading }: Props) {\n return (\n <>\n <FormSectionTitle>Actions</FormSectionTitle>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n loadingText=\"Saving...\"\n isLoading={isLoading}\n onClick={() => onSubmit()}\n >\n Save settings\n </LoadingButton>\n </div>\n </div>\n </>\n );\n}\n","import { Settings } from '@/react/portainer/settings/types';\n\nimport { confirmDestructive } from '@@/modals/confirm';\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nimport { PasswordLengthSlider } from './PasswordLengthSlider/PasswordLengthSlider';\nimport { SaveAuthSettingsButton } from './SaveAuthSettingsButton';\n\nexport interface Props {\n onSaveSettings(): void;\n isLoading: boolean;\n value: Settings['InternalAuthSettings'];\n onChange(value: number): void;\n}\n\nexport function InternalAuth({\n onSaveSettings,\n isLoading,\n value,\n onChange,\n}: Props) {\n async function onSubmit() {\n if (value.RequiredPasswordLength < 10) {\n const confirmed = await confirmDestructive({\n title: 'Allow weak passwords?',\n message:\n 'You have set an insecure minimum password length. This could leave your system vulnerable to attack, are you sure?',\n confirmButton: buildConfirmButton('Yes', 'danger'),\n });\n\n if (confirmed) {\n onSaveSettings();\n }\n } else {\n onSaveSettings();\n }\n }\n\n return (\n <>\n <FormSectionTitle>Information</FormSectionTitle>\n <div className=\"form-group col-sm-12 text-muted small\">\n When using internal authentication, Portainer will encrypt user\n passwords and store credentials locally.\n </div>\n\n <FormSectionTitle>Password rules</FormSectionTitle>\n <div className=\"form-group col-sm-12 text-muted small\">\n Define minimum length for user-generated passwords.\n </div>\n\n <div className=\"form-group\">\n <PasswordLengthSlider\n min={1}\n max={18}\n step={1}\n value={value.RequiredPasswordLength}\n onChange={onChange}\n />\n </div>\n\n <SaveAuthSettingsButton onSubmit={onSubmit} isLoading={isLoading} />\n </>\n );\n}\n","export function isValidUrl(\n value: string | undefined,\n additionalCheck: (url: URL) => boolean = () => true\n) {\n if (!value) {\n return false;\n }\n\n try {\n const url = new URL(value);\n return additionalCheck(url);\n } catch {\n return false;\n }\n}\n","import { SchemaOf, bool, boolean, number, object, string } from 'yup';\n\nimport { isValidUrl } from '@@/form-components/validate-url';\n\nimport { Values } from './types';\n\nexport function validation(): SchemaOf<Values> {\n return object({\n edgeAgentCheckinInterval: number().required(),\n enableTelemetry: bool().required(),\n loginBannerEnabled: boolean().default(false),\n loginBanner: string()\n .default('')\n .when('loginBannerEnabled', {\n is: true,\n then: (schema) =>\n schema.required('Login banner is required when enabled'),\n }),\n logoEnabled: boolean().default(false),\n logo: string()\n .default('')\n .when('logoEnabled', {\n is: true,\n then: (schema) =>\n schema\n .required('Logo url is required when enabled')\n .test('valid-url', 'Must be a valid URL', (value) =>\n isValidUrl(value)\n ),\n }),\n snapshotInterval: string().required('Snapshot interval is required'),\n templatesUrl: string()\n .required('Templates URL is required')\n .test('valid-url', 'Must be a valid URL', (value) => isValidUrl(value)),\n });\n}\n","import { useField } from 'formik';\nimport { useState } from 'react';\n\nexport function useToggledValue(\n fieldName: string,\n toggleFieldName = `${fieldName}Enabled`\n) {\n const [, { value }, { setValue }] = useField<string>(fieldName);\n const [, { value: isEnabled }, { setValue: setIsEnabled }] =\n useField<boolean>(toggleFieldName);\n const [oldValue, setOldValue] = useState(value);\n\n async function handleIsEnabledChange(enabled: boolean) {\n setOldValue(enabled ? '' : value);\n // `setValue` is async, formik types are wrong for this version\n await setIsEnabled(enabled);\n await setValue(enabled ? oldValue : '', true);\n }\n\n return [isEnabled, handleIsEnabledChange] as const;\n}\n","import { useIsDemo } from '@/react/portainer/system/useSystemStatus';\n\nexport function DemoAlert() {\n const isDemoQuery = useIsDemo();\n if (!isDemoQuery.data) {\n return null;\n }\n\n return (\n <div className=\"col-sm-12 mt-2\">\n <span className=\"small text-muted\">\n You cannot use this feature in the demo version of Portainer.\n </span>\n </div>\n );\n}\n","import { useField, Field } from 'formik';\n\nimport { useIsDemo } from '@/react/portainer/system/useSystemStatus';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nimport { useToggledValue } from '../useToggledValue';\n\nimport { DemoAlert } from './DemoAlert';\n\nexport function LogoFieldset() {\n const [{ name }, { error }] = useField<string>('logo');\n const isDemoQuery = useIsDemo();\n\n const [isEnabled, setIsEnabled] = useToggledValue('logo');\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Use custom logo\"\n checked={isEnabled}\n name=\"toggle_logo\"\n labelClass=\"col-sm-3 col-lg-2\"\n disabled={isDemoQuery.data}\n onChange={(checked) => setIsEnabled(checked)}\n />\n </div>\n\n <DemoAlert />\n </div>\n\n {isEnabled && (\n <div>\n <div className=\"form-group\">\n <span className=\"col-sm-12 text-muted small\">\n You can specify the URL to your logo here. For an optimal display,\n logo dimensions should be 155px by 55px.\n </span>\n </div>\n <FormControl label=\"URL\" inputId=\"logo_url\" errors={error} required>\n <Field\n as={Input}\n name={name}\n id=\"logo_url\"\n placeholder=\"https://mycompany.com/logo.png\"\n />\n </FormControl>\n </div>\n )}\n </>\n );\n}\n","import clsx from 'clsx';\nimport { TextareaHTMLAttributes } from 'react';\n\nexport function TextArea({\n className,\n ...props\n}: TextareaHTMLAttributes<HTMLTextAreaElement>) {\n return (\n <textarea\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n className={clsx('form-control', className)}\n />\n );\n}\n","import { useField, Field } from 'formik';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { useIsDemo } from '@/react/portainer/system/useSystemStatus';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { TextArea } from '@@/form-components/Input/Textarea';\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nimport { useToggledValue } from '../useToggledValue';\n\nimport { DemoAlert } from './DemoAlert';\n\nexport function ScreenBannerFieldset() {\n const isDemoQuery = useIsDemo();\n const [{ name }, { error }] = useField<string>('loginBanner');\n const [isEnabled, setIsEnabled] = useToggledValue('loginBanner');\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n labelClass=\"col-sm-3 col-lg-2\"\n label=\"Login screen banner\"\n checked={isEnabled}\n name=\"toggle_login_banner\"\n disabled={isDemoQuery.data}\n onChange={(checked) => setIsEnabled(checked)}\n featureId={FeatureId.CUSTOM_LOGIN_BANNER}\n />\n </div>\n\n <DemoAlert />\n\n <div className=\"col-sm-12 text-muted small mt-2\">\n You can set a custom banner that will be shown to all users during\n login.\n </div>\n </div>\n\n {isEnabled && (\n <FormControl\n label=\"Details\"\n inputId=\"custom_login_banner\"\n errors={error}\n required\n >\n <Field\n as={TextArea}\n name={name}\n rows=\"5\"\n id=\"custom_login_banner\"\n placeholder=\"Banner details\"\n />\n </FormControl>\n )}\n </>\n );\n}\n","import { useField, Field } from 'formik';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { Input } from '@@/form-components/Input';\n\nexport function TemplatesUrlSection() {\n const [{ name }, { error }] = useField<string>('templatesUrl');\n return (\n <FormSection title=\"App Templates\">\n <div className=\"form-group\">\n <span className=\"col-sm-12 text-muted small\">\n You can specify the URL to your own template definitions file here.\n See{' '}\n <a\n href=\"https://docs.portainer.io/advanced/app-templates/build\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Portainer documentation\n </a>{' '}\n for more details.\n </span>\n </div>\n\n <FormControl label=\"URL\" inputId=\"templates_url\" required errors={error}>\n <Field\n as={Input}\n id=\"templates_url\"\n placeholder=\"https://myserver.mydomain/templates.json\"\n required\n data-cy=\"settings-templateUrl\"\n name={name}\n />\n </FormControl>\n </FormSection>\n );\n}\n","import { useField } from 'formik';\n\nimport { useIsDemo } from '@/react/portainer/system/useSystemStatus';\n\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nimport { DemoAlert } from './DemoAlert';\n\nexport function EnableTelemetryField() {\n const isDemoQuery = useIsDemo();\n const [{ value }, , { setValue }] = useField<boolean>('enableTelemetry');\n\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n labelClass=\"col-sm-3 col-lg-2\"\n label=\"Allow the collection of anonymous statistics\"\n checked={value}\n name=\"toggle_enableTelemetry\"\n onChange={(checked) => setValue(checked)}\n disabled={isDemoQuery.data}\n />\n </div>\n\n <DemoAlert />\n\n <div className=\"col-sm-12 text-muted small mt-2\">\n You can find more information about this in our{' '}\n <a\n href=\"https://www.portainer.io/documentation/in-app-analytics-and-privacy-policy/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n privacy policy\n </a>\n .\n </div>\n </div>\n );\n}\n","import { Settings as SettingsIcon } from 'lucide-react';\nimport { Field, Form, Formik, useFormikContext } from 'formik';\n\nimport { EdgeCheckinIntervalField } from '@/react/edge/components/EdgeCheckInIntervalField';\nimport {\n useSettings,\n useUpdateSettingsMutation,\n} from '@/react/portainer/settings/queries';\nimport { notifySuccess } from '@/portainer/services/notifications';\n\nimport { Widget } from '@@/Widget';\nimport { LoadingButton } from '@@/buttons';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\n\nimport { type Settings } from '../../types';\n\nimport { validation } from './validation';\nimport { Values } from './types';\nimport { LogoFieldset } from './LogoFieldset';\nimport { ScreenBannerFieldset } from './ScreenBannerFieldset';\nimport { TemplatesUrlSection } from './TemplatesUrlSection';\nimport { EnableTelemetryField } from './EnableTelemetryField';\n\nexport function ApplicationSettingsPanel({\n onSuccess,\n}: {\n onSuccess(settings: Settings): void;\n}) {\n const settingsQuery = useSettings();\n const mutation = useUpdateSettingsMutation();\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const settings = settingsQuery.data;\n const initialValues: Values = {\n edgeAgentCheckinInterval: settings.EdgeAgentCheckinInterval,\n enableTelemetry: settings.EnableTelemetry,\n loginBannerEnabled: !!settings.CustomLoginBanner,\n loginBanner: settings.CustomLoginBanner,\n logoEnabled: !!settings.LogoURL,\n logo: settings.LogoURL,\n snapshotInterval: settings.SnapshotInterval,\n templatesUrl: settings.TemplatesURL,\n };\n\n return (\n <Widget>\n <Widget.Title icon={SettingsIcon} title=\"Application settings\" />\n <Widget.Body>\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n >\n <InnerForm isLoading={mutation.isLoading} />\n </Formik>\n </Widget.Body>\n </Widget>\n );\n\n function handleSubmit(values: Values) {\n mutation.mutate(\n {\n SnapshotInterval: values.snapshotInterval,\n LogoURL: values.logo,\n EnableTelemetry: values.enableTelemetry,\n CustomLoginBanner: values.loginBanner,\n TemplatesURL: values.templatesUrl,\n EdgeAgentCheckinInterval: values.edgeAgentCheckinInterval,\n },\n {\n onSuccess(settings) {\n notifySuccess('Success', 'Application settings updated');\n onSuccess(settings);\n },\n }\n );\n }\n}\n\nfunction InnerForm({ isLoading }: { isLoading: boolean }) {\n const { values, setFieldValue, isValid, errors } = useFormikContext<Values>();\n\n return (\n <Form className=\"form-horizontal\">\n <FormControl\n label=\"Snapshot interval\"\n inputId=\"snapshot_interval\"\n errors={errors.snapshotInterval}\n required\n >\n <Field\n as={Input}\n id=\"snapshot_interval\"\n placeholder=\"e.g. 15m\"\n name=\"snapshotInterval\"\n />\n </FormControl>\n\n <EdgeCheckinIntervalField\n size=\"xsmall\"\n value={values.edgeAgentCheckinInterval}\n label=\"Edge agent default poll frequency\"\n isDefaultHidden\n onChange={(value) => setFieldValue('edgeAgentCheckinInterval', value)}\n />\n\n <LogoFieldset />\n\n <EnableTelemetryField />\n\n <ScreenBannerFieldset />\n\n <TemplatesUrlSection />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n isLoading={isLoading}\n disabled={!isValid}\n data-cy=\"settings-saveSettingsButton\"\n loadingText=\"Saving...\"\n >\n Save application settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n );\n}\n","import { Field, useField } from 'formik';\n\nimport { TextTip } from '@@/Tip/TextTip';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { Input } from '@@/form-components/Input';\n\nexport function HelmSection() {\n const [{ name }, { error }] = useField<string>('helmRepositoryUrl');\n\n return (\n <FormSection title=\"Helm Repository\">\n <div className=\"mb-2\">\n <TextTip color=\"blue\">\n You can specify the URL to your own helm repository here. See the{' '}\n <a\n href=\"https://helm.sh/docs/topics/chart_repository/\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n official documentation\n </a>{' '}\n for more details.\n </TextTip>\n </div>\n\n <FormControl label=\"URL\" errors={error} inputId=\"helm-repo-url\">\n <Field\n as={Input}\n id=\"helm-repo-url\"\n name={name}\n placeholder=\"https://charts.bitnami.com/bitnami\"\n />\n </FormControl>\n </FormSection>\n );\n}\n","import { useField } from 'formik';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { PortainerSelect } from '@@/form-components/PortainerSelect';\n\nconst options = [\n {\n label: '1 day',\n value: '24h',\n },\n {\n label: '7 days',\n value: `${24 * 7}h`,\n },\n {\n label: '30 days',\n value: `${24 * 30}h`,\n },\n {\n label: '1 year',\n value: `${24 * 30 * 12}h`,\n },\n {\n label: 'No expiry',\n value: '0',\n },\n] as const;\n\nexport function KubeConfigSection() {\n const [{ value }, { error }, { setValue }] =\n useField<string>('kubeconfigExpiry');\n\n return (\n <FormSection title=\"Kubeconfig\">\n <FormControl label=\"Kubeconfig expiry\" errors={error}>\n <PortainerSelect\n value={value}\n options={options}\n onChange={(value) => value && setValue(value)}\n />\n </FormControl>\n </FormSection>\n );\n}\n","import { useField } from 'formik';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { Input } from '@@/form-components/Input';\n\nimport { useToggledValue } from '../useToggledValue';\n\nexport function KubeNoteMinimumCharacters() {\n const [{ value }, { error }, { setValue }] = useField<number>(\n 'globalDeploymentOptions.minApplicationNoteLength'\n );\n const [isEnabled, setIsEnabled] = useToggledValue(\n 'globalDeploymentOptions.minApplicationNoteLength',\n 'globalDeploymentOptions.requireNoteOnApplications'\n );\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Require a note on applications\"\n checked={isEnabled}\n name=\"toggle_requireNoteOnApplications\"\n onChange={(value) => setIsEnabled(value)}\n featureId={FeatureId.K8S_REQUIRE_NOTE_ON_APPLICATIONS}\n labelClass=\"col-sm-3 col-lg-2\"\n tooltip={`${\n isBE ? '' : 'BE allows entry of notes in Add/Edit application. '\n }Using this will enforce entry of a note in Add/Edit application (and prevent complete clearing of it in Application details).`}\n />\n </div>\n </div>\n {isEnabled && (\n <FormControl\n label={\n <span className=\"pl-4\">\n Minimum number of characters note must have\n </span>\n }\n errors={error}\n >\n <Input\n name=\"minNoteLength\"\n type=\"number\"\n placeholder=\"50\"\n min=\"1\"\n max=\"9999\"\n value={value}\n onChange={(e) => setValue(e.target.valueAsNumber)}\n className=\"w-1/4\"\n />\n </FormControl>\n )}\n </>\n );\n}\n","import { useFormikContext } from 'formik';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { FormSection } from '@@/form-components/FormSection';\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nimport { KubeNoteMinimumCharacters } from './KubeNoteMinimumCharacters';\nimport { FormValues } from './types';\n\nexport function DeploymentOptionsSection() {\n const {\n values: { globalDeploymentOptions: values },\n setFieldValue,\n } = useFormikContext<FormValues>();\n const limitedFeature = isLimitedToBE(FeatureId.ENFORCE_DEPLOYMENT_OPTIONS);\n return (\n <FormSection title=\"Deployment Options\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Enforce code-based deployment\"\n checked={values.hideAddWithForm}\n name=\"toggle_hideAddWithForm\"\n featureId={FeatureId.ENFORCE_DEPLOYMENT_OPTIONS}\n onChange={(value) => handleToggleAddWithForm(value)}\n labelClass=\"col-sm-3 col-lg-2\"\n tooltip=\"Hides the 'Add with form' buttons and prevents adding/editing of resources via forms\"\n />\n </div>\n </div>\n {values.hideAddWithForm && (\n <div className=\"form-group flex flex-col gap-y-1\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Allow web editor and custom template use\"\n checked={!values.hideWebEditor}\n name=\"toggle_hideWebEditor\"\n onChange={(value) =>\n setFieldValue('globalDeploymentOptions.hideWebEditor', !value)\n }\n labelClass=\"col-sm-2 !pl-4\"\n />\n </div>\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Allow specifying of a manifest via a URL\"\n checked={!values.hideFileUpload}\n name=\"toggle_hideFileUpload\"\n onChange={(value) =>\n setFieldValue('globalDeploymentOptions.hideFileUpload', !value)\n }\n labelClass=\"col-sm-2 !pl-4\"\n />\n </div>\n </div>\n )}\n {!limitedFeature && (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n label=\"Allow per environment override\"\n checked={values.perEnvOverride}\n onChange={(value) =>\n setFieldValue('globalDeploymentOptions.perEnvOverride', value)\n }\n name=\"toggle_perEnvOverride\"\n labelClass=\"col-sm-3 col-lg-2\"\n tooltip=\"Allows overriding of deployment options in the Cluster setup screen of each environment\"\n />\n </div>\n </div>\n )}\n\n <KubeNoteMinimumCharacters />\n </FormSection>\n );\n\n async function handleToggleAddWithForm(checked: boolean) {\n await setFieldValue('globalDeploymentOptions.hideWebEditor', checked);\n await setFieldValue('globalDeploymentOptions.hideFileUpload', checked);\n await setFieldValue('globalDeploymentOptions.hideAddWithForm', checked);\n }\n}\n","import { SchemaOf, object, string, boolean, number } from 'yup';\n\nimport { isValidUrl } from '@@/form-components/validate-url';\n\nimport { FormValues } from './types';\n\nexport function validation(): SchemaOf<FormValues> {\n return object().shape({\n helmRepositoryUrl: string()\n .default('')\n .test('valid-url', 'Invalid URL', (value) => !value || isValidUrl(value)),\n kubeconfigExpiry: string().required(),\n globalDeploymentOptions: object().shape({\n hideAddWithForm: boolean().required(),\n perEnvOverride: boolean().required(),\n hideWebEditor: boolean().required(),\n hideFileUpload: boolean().required(),\n requireNoteOnApplications: boolean().required(),\n minApplicationNoteLength: number()\n .typeError('Must be a number')\n .default(0)\n .when('requireNoteOnApplications', {\n is: true,\n then: (schema) =>\n schema\n .required()\n .min(1, 'Value should be between 1 to 9999')\n .max(9999, 'Value should be between 1 to 9999'),\n }),\n }),\n });\n}\n","import { Form, Formik } from 'formik';\nimport { useQueryClient } from 'react-query';\n\nimport kubeIcon from '@/assets/ico/kube.svg?c';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { useEnvironmentId } from '@/react/hooks/useEnvironmentId';\n\nimport { LoadingButton } from '@@/buttons';\nimport { Widget } from '@@/Widget';\n\nimport { useSettings, useUpdateSettingsMutation } from '../../queries';\n\nimport { HelmSection } from './HelmSection';\nimport { KubeConfigSection } from './KubeConfigSection';\nimport { FormValues } from './types';\nimport { DeploymentOptionsSection } from './DeploymentOptionsSection';\nimport { validation } from './validation';\n\nexport function KubeSettingsPanel() {\n const settingsQuery = useSettings();\n const queryClient = useQueryClient();\n const environmentId = useEnvironmentId(false);\n const mutation = useUpdateSettingsMutation();\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const initialValues: FormValues = {\n helmRepositoryUrl: settingsQuery.data.HelmRepositoryURL || '',\n kubeconfigExpiry: settingsQuery.data.KubeconfigExpiry || '0',\n globalDeploymentOptions: settingsQuery.data.GlobalDeploymentOptions || {\n requireNoteOnApplications: false,\n minApplicationNoteLength: 0,\n hideAddWithForm: false,\n hideFileUpload: false,\n hideWebEditor: false,\n perEnvOverride: false,\n },\n };\n\n return (\n <Widget>\n <Widget.Title icon={kubeIcon} title=\"Kubernetes settings\" />\n <Widget.Body>\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n >\n {() => (\n <Form className=\"form-horizontal\">\n <HelmSection />\n <KubeConfigSection />\n <DeploymentOptionsSection />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n isLoading={mutation.isLoading}\n loadingText=\"Saving\"\n className=\"!ml-0\"\n >\n Save Kubernetes Settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n </Widget.Body>\n </Widget>\n );\n\n function handleSubmit(values: FormValues) {\n mutation.mutate(\n {\n HelmRepositoryURL: values.helmRepositoryUrl,\n KubeconfigExpiry: values.kubeconfigExpiry,\n GlobalDeploymentOptions: {\n ...values.globalDeploymentOptions,\n requireNoteOnApplications:\n values.globalDeploymentOptions.requireNoteOnApplications,\n minApplicationNoteLength: values.globalDeploymentOptions\n .requireNoteOnApplications\n ? values.globalDeploymentOptions.minApplicationNoteLength\n : 0,\n },\n },\n {\n async onSuccess() {\n if (environmentId) {\n await queryClient.invalidateQueries([\n 'environments',\n environmentId,\n 'deploymentOptions',\n ]);\n }\n notifySuccess('Success', 'Kubernetes settings updated');\n },\n }\n );\n }\n}\n","import { PropsWithChildren } from 'react';\n\nimport { LoadingButton } from '@@/buttons';\n\ninterface Props {\n submitLabel: string;\n loadingText: string;\n isLoading: boolean;\n isValid: boolean;\n}\n\nexport function FormActions({\n submitLabel = 'Save',\n loadingText = 'Saving',\n isLoading,\n children,\n isValid,\n}: PropsWithChildren<Props>) {\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n className=\"!ml-0\"\n loadingText={loadingText}\n isLoading={isLoading}\n disabled={!isValid}\n >\n {submitLabel}\n </LoadingButton>\n\n {children}\n </div>\n </div>\n );\n}\n","import clsx from 'clsx';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { BEFeatureIndicator } from './BEFeatureIndicator';\n\nexport function BEOverlay({\n featureId,\n children,\n className,\n}: {\n featureId: FeatureId;\n children: React.ReactNode;\n className?: string;\n}) {\n const isLimited = isLimitedToBE(featureId);\n if (!isLimited) {\n return <>{children}</>;\n }\n\n return (\n <div className=\"be-indicator-container limited-be\">\n <div className=\"limited-be-link vertical-center\">\n <BEFeatureIndicator featureId={featureId} />\n </div>\n <div className={clsx('limited-be-content', className)}>{children}</div>\n </div>\n );\n}\n","import { useMutation } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { mutationOptions, withError } from '@/react-tools/react-query';\n\nexport function useUpdateSSLConfigMutation() {\n return useMutation(\n updateSSLConfig,\n mutationOptions(withError('Unable to update SSL configuration'))\n );\n}\n\ninterface SSLConfig {\n // SSL Certificates\n certFile?: File;\n keyFile?: File;\n httpEnabled?: boolean;\n\n // SSL Client Certificates\n clientCertFile?: File;\n}\n\nasync function updateSSLConfig({\n certFile,\n keyFile,\n clientCertFile,\n ...payload\n}: SSLConfig) {\n try {\n const cert = certFile ? await certFile.text() : undefined;\n const key = keyFile ? await keyFile.text() : undefined;\n const clientCert = clientCertFile ? await clientCertFile.text() : undefined;\n\n await axios.put('/ssl', {\n ...payload,\n cert,\n key,\n clientCert,\n });\n } catch (error) {\n throw parseAxiosError(error, 'Unable to update SSL configuration');\n }\n}\n","import { Form, Formik, useFormikContext } from 'formik';\nimport { Key } from 'lucide-react';\nimport { SchemaOf, object } from 'yup';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\n\nimport { Widget } from '@@/Widget';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { FileUploadField } from '@@/form-components/FileUpload';\nimport { FormControl } from '@@/form-components/FormControl';\nimport {\n file,\n withFileExtension,\n} from '@@/form-components/yup-file-validation';\nimport { FormActions } from '@@/form-components/FormActions';\nimport { BEOverlay } from '@@/BEFeatureIndicator/BEOverlay';\n\nimport { FeatureId } from '../../feature-flags/enums';\n\nimport { useUpdateSSLConfigMutation } from './useUpdateSSLConfigMutation';\n\ninterface FormValues {\n clientCertFile: File | null;\n}\n\nexport function HelmCertPanel() {\n const mutation = useUpdateSSLConfigMutation();\n const initialValues = {\n clientCertFile: null,\n };\n\n return (\n <BEOverlay featureId={FeatureId.CA_FILE} className=\"!p-0\">\n <Widget>\n <Widget.Title\n icon={Key}\n title=\"Certificate Authority file for Kubernetes Helm repositories\"\n />\n <Widget.Body>\n <Formik\n initialValues={initialValues}\n validationSchema={validation}\n onSubmit={handleSubmit}\n validateOnMount\n >\n <InnerForm isLoading={mutation.isLoading} />\n </Formik>\n </Widget.Body>\n </Widget>\n </BEOverlay>\n );\n\n function handleSubmit({ clientCertFile }: FormValues) {\n if (!clientCertFile) {\n return;\n }\n\n mutation.mutate(\n { clientCertFile },\n {\n onSuccess() {\n notifySuccess('Success', 'Helm certificate updated');\n },\n }\n );\n }\n}\n\nfunction InnerForm({ isLoading }: { isLoading: boolean }) {\n const { values, setFieldValue, errors, isValid } =\n useFormikContext<FormValues>();\n\n return (\n <Form className=\"form-horizontal\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <TextTip color=\"blue\">\n Provide an additional CA file containing certificate(s) for HTTPS\n connections to Helm repositories.\n </TextTip>\n </div>\n </div>\n\n <FormControl\n label=\"CA file\"\n tooltip=\"Select a CA file containing your X.509 certificate(s), commonly a crt, cer or pem file.\"\n inputId=\"ca-cert-field\"\n errors={errors?.clientCertFile}\n >\n <FileUploadField\n required\n inputId=\"ca-cert-field\"\n name=\"clientCertFile\"\n onChange={(file) => setFieldValue('clientCertFile', file)}\n value={values.clientCertFile}\n />\n </FormControl>\n\n <FormActions\n isValid={isValid}\n isLoading={isLoading}\n submitLabel=\"Apply changes\"\n loadingText=\"Saving in progress...\"\n />\n </Form>\n );\n}\n\nfunction validation(): SchemaOf<FormValues> {\n return object({\n clientCertFile: withFileExtension(file(), [\n 'pem',\n 'crt',\n 'cer',\n 'cert',\n ]).required(''),\n });\n}\n","import { Formik, Form, Field } from 'formik';\nimport { Plus } from 'lucide-react';\nimport { SchemaOf, object, string } from 'yup';\nimport { useReducer } from 'react';\n\nimport { Button } from '@@/buttons';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\n\nexport function AddLabelForm({\n onSubmit,\n isLoading,\n}: {\n onSubmit: (name: string, value: string) => void;\n isLoading: boolean;\n}) {\n const [formKey, clearForm] = useReducer((state) => state + 1, 0);\n\n const initialValues = {\n name: '',\n value: '',\n };\n\n return (\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n key={formKey}\n >\n {({ errors, isValid, dirty }) => (\n <Form className=\"form-horizontal\">\n <div className=\"flex w-full items-start gap-4\">\n <FormControl label=\"Name\" errors={errors.name} className=\"flex-1\">\n <Field\n as={Input}\n name=\"name\"\n placeholder=\"e.g. com.example.foo\"\n />\n </FormControl>\n\n <FormControl label=\"Value\" errors={errors.value} className=\"flex-1\">\n <Field as={Input} name=\"value\" placeholder=\"e.g. bar\" />\n </FormControl>\n\n <Button\n type=\"submit\"\n icon={Plus}\n disabled={!dirty || !isValid || isLoading}\n >\n Add filter\n </Button>\n </div>\n </Form>\n )}\n </Formik>\n );\n\n function handleSubmit(values: typeof initialValues) {\n clearForm();\n onSubmit(values.name, values.value);\n }\n}\n\nfunction validation(): SchemaOf<{ name: string; value: string }> {\n return object({\n name: string().required('Name is required'),\n value: string().default(''),\n });\n}\n","import { Trash2 } from 'lucide-react';\n\nimport { DetailsTable } from '@@/DetailsTable';\nimport { Button } from '@@/buttons';\n\nimport { Pair } from '../../types';\n\nexport function HiddenContainersTable({\n labels,\n isLoading,\n onDelete,\n}: {\n labels: Pair[];\n isLoading: boolean;\n onDelete: (name: string) => void;\n}) {\n return (\n <DetailsTable\n headers={['Name', 'Value', '']}\n className=\"table-hover\"\n emptyMessage=\"No filter available.\"\n >\n {labels.map((label, index) => (\n <DetailsTable.Row\n key={index}\n label={label.name}\n columns={[\n <Button\n color=\"danger\"\n size=\"xsmall\"\n icon={Trash2}\n onClick={() => onDelete(label.name)}\n disabled={isLoading}\n >\n Remove\n </Button>,\n ]}\n >\n {label.value}\n </DetailsTable.Row>\n ))}\n </DetailsTable>\n );\n}\n","import { Box } from 'lucide-react';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\n\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Widget } from '@@/Widget';\n\nimport { useSettings, useUpdateSettingsMutation } from '../../queries';\nimport { Pair } from '../../types';\n\nimport { AddLabelForm } from './AddLabelForm';\nimport { HiddenContainersTable } from './HiddenContainersTable';\n\nexport function HiddenContainersPanel() {\n const settingsQuery = useSettings((settings) => settings.BlackListedLabels);\n const mutation = useUpdateSettingsMutation();\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const labels = settingsQuery.data;\n return (\n <Widget>\n <Widget.Title icon={Box} title=\"Hidden containers\" />\n <Widget.Body>\n <div className=\"mb-3\">\n <TextTip color=\"blue\">\n You can hide containers with specific labels from Portainer UI. You\n need to specify the label name and value.\n </TextTip>\n </div>\n\n <AddLabelForm\n isLoading={mutation.isLoading}\n onSubmit={(name, value) => handleSubmit([...labels, { name, value }])}\n />\n\n <HiddenContainersTable\n labels={labels}\n isLoading={mutation.isLoading}\n onDelete={(name) =>\n handleSubmit(labels.filter((label) => label.name !== name))\n }\n />\n </Widget.Body>\n </Widget>\n );\n\n function handleSubmit(labels: Pair[]) {\n mutation.mutate(\n {\n BlackListedLabels: labels,\n },\n {\n onSuccess: () => {\n notifySuccess('Success', 'Hidden container settings updated');\n },\n }\n );\n }\n}\n","import { ComponentType } from 'react';\n\n/**\n * Hides the wrapped component if portainer is running as a docker extension.\n */\nexport function withHideOnExtension<T>(\n WrappedComponent: ComponentType<T>\n): ComponentType<T> {\n // Try to create a nice displayName for React Dev Tools.\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n function WrapperComponent(props: T & JSX.IntrinsicAttributes) {\n if (window.ddExtension) {\n return null;\n }\n\n return <WrappedComponent {...props} />;\n }\n\n WrapperComponent.displayName = `withHideOnExtension(${displayName})`;\n\n return WrapperComponent;\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\ninterface SSLSettings {\n certPath: string;\n keyPath: string;\n caCertPath: string;\n selfSigned: boolean;\n httpEnabled: boolean;\n}\n\nexport function useSSLSettings() {\n return useQuery<SSLSettings>(['sslSettings'], async () => getSSLSettings());\n}\n\nasync function getSSLSettings() {\n try {\n const response = await axios.get<SSLSettings>('/ssl');\n return response.data;\n } catch (error) {\n throw parseAxiosError(error, 'Unable to retrieve SSL settings');\n }\n}\n","import { Form, Formik } from 'formik';\nimport { Key } from 'lucide-react';\nimport { useState } from 'react';\nimport { SchemaOf, bool, object } from 'yup';\n\nimport { withHideOnExtension } from '@/react/hooks/withHideOnExtension';\n\nimport { Widget } from '@@/Widget';\nimport { LoadingButton } from '@@/buttons';\nimport {\n file,\n withFileExtension,\n} from '@@/form-components/yup-file-validation';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { FileUploadField } from '@@/form-components/FileUpload';\nimport { SwitchField } from '@@/form-components/SwitchField';\n\nimport { useUpdateSSLConfigMutation } from '../useUpdateSSLConfigMutation';\nimport { useSSLSettings } from '../../queries/useSSLSettings';\n\ninterface FormValues {\n certFile: File | null;\n keyFile: File | null;\n forceHTTPS: boolean;\n}\n\nexport const SSLSettingsPanelWrapper = withHideOnExtension(SSLSettingsPanel);\n\nfunction SSLSettingsPanel() {\n const settingsQuery = useSSLSettings();\n const [reloadingPage, setReloadingPage] = useState(false);\n const mutation = useUpdateSSLConfigMutation();\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const initialValues: FormValues = {\n certFile: null,\n keyFile: null,\n forceHTTPS: !settingsQuery.data.httpEnabled,\n };\n\n return (\n <Widget>\n <Widget.Title icon={Key} title=\"SSL certificate\" />\n <Widget.Body>\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n >\n {({ values, setFieldValue, isValid, errors }) => (\n <Form className=\"form-horizontal\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <TextTip color=\"orange\">\n Forcing HTTPs only will cause Portainer to stop listening on\n the HTTP port. Any edge agent environment that is using HTTP\n will no longer be available.\n </TextTip>\n </div>\n </div>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n checked={values.forceHTTPS}\n label=\"Force HTTPS only\"\n labelClass=\"col-sm-3 col-lg-2\"\n name=\"forceHTTPS\"\n onChange={(value) => setFieldValue('forceHTTPS', value)}\n />\n </div>\n </div>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <TextTip color=\"blue\">\n Provide a new SSL Certificate to replace the existing one\n that is used for HTTPS connections.\n </TextTip>\n </div>\n </div>\n\n <FormControl\n label=\"SSL/TLS certificate\"\n tooltip=\"Select an X.509 certificate file, commonly a crt, cer or pem file.\"\n inputId=\"ca-cert-field\"\n errors={errors.certFile}\n >\n <FileUploadField\n required={typeof errors.certFile !== 'undefined'}\n inputId=\"ca-cert-field\"\n name=\"certFile\"\n onChange={(file) => setFieldValue('certFile', file)}\n value={values.certFile}\n />\n </FormControl>\n\n <FormControl\n label=\"SSL/TLS private key\"\n tooltip=\"Select a private key file, commonly a key, or pem file.\"\n inputId=\"ca-cert-field\"\n errors={errors.keyFile}\n >\n <FileUploadField\n required={typeof errors.keyFile !== 'undefined'}\n inputId=\"ca-cert-field\"\n name=\"keyFile\"\n onChange={(file) => setFieldValue('keyFile', file)}\n value={values.keyFile}\n />\n </FormControl>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n isLoading={mutation.isLoading || reloadingPage}\n disabled={!isValid}\n loadingText={reloadingPage ? 'Reloading' : 'Saving'}\n className=\"!ml-0\"\n >\n Save SSL Settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n </Widget.Body>\n </Widget>\n );\n\n function handleSubmit({ certFile, forceHTTPS, keyFile }: FormValues) {\n if (!certFile || !keyFile) {\n return;\n }\n\n mutation.mutate(\n { certFile, httpEnabled: !forceHTTPS, keyFile },\n {\n async onSuccess() {\n await new Promise((resolve) => {\n setTimeout(resolve, 5000);\n });\n window.location.reload();\n setReloadingPage(true);\n },\n }\n );\n }\n}\n\nfunction validation(): SchemaOf<FormValues> {\n return object({\n certFile: withFileExtension(file(), ['pem', 'crt', 'cer', 'cert']).required(\n ''\n ),\n keyFile: withFileExtension(file(), ['pem', 'key']).required(''),\n forceHTTPS: bool().required(),\n });\n}\n","import angular from 'angular';\n\nimport { SettingsFDO } from '@/react/portainer/settings/EdgeComputeView/SettingsFDO';\nimport { SettingsOpenAMT } from '@/react/portainer/settings/EdgeComputeView/SettingsOpenAMT';\nimport { InternalAuth } from '@/react/portainer/settings/AuthenticationView/InternalAuth';\nimport { r2a } from '@/react-tools/react2angular';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { ApplicationSettingsPanel } from '@/react/portainer/settings/SettingsView/ApplicationSettingsPanel';\nimport { KubeSettingsPanel } from '@/react/portainer/settings/SettingsView/KubeSettingsPanel';\nimport { HelmCertPanel } from '@/react/portainer/settings/SettingsView/HelmCertPanel';\nimport { HiddenContainersPanel } from '@/react/portainer/settings/SettingsView/HiddenContainersPanel/HiddenContainersPanel';\nimport { SSLSettingsPanelWrapper } from '@/react/portainer/settings/SettingsView/SSLSettingsPanel/SSLSettingsPanel';\n\nexport const settingsModule = angular\n .module('portainer.app.react.components.settings', [])\n .component(\n 'settingsFdo',\n r2a(withUIRouter(withReactQuery(SettingsFDO)), ['onSubmit', 'settings'])\n )\n .component('settingsOpenAmt', r2a(SettingsOpenAMT, ['onSubmit', 'settings']))\n .component(\n 'internalAuth',\n r2a(InternalAuth, ['onSaveSettings', 'isLoading', 'value', 'onChange'])\n )\n .component(\n 'applicationSettingsPanel',\n r2a(withReactQuery(ApplicationSettingsPanel), ['onSuccess'])\n )\n .component(\n 'sslSettingsPanel',\n r2a(withReactQuery(SSLSettingsPanelWrapper), [])\n )\n .component('helmCertPanel', r2a(withReactQuery(HelmCertPanel), []))\n .component(\n 'hiddenContainersPanel',\n r2a(withUIRouter(withReactQuery(HiddenContainersPanel)), [])\n )\n .component(\n 'kubeSettingsPanel',\n r2a(withUIRouter(withReactQuery(KubeSettingsPanel)), [])\n ).name;\n","import { object, string } from 'yup';\n\nexport function validationSchema() {\n return object().shape({\n mpsServer: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n mpsUser: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n mpsPassword: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n domainName: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n certFileContent: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n certFileName: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n certFilePassword: string().when('enabled', {\n is: true,\n then: string().required('Field is required'),\n }),\n });\n}\n","import { User as UserIcon, Users as TeamIcon } from 'lucide-react';\nimport { OptionProps, components, MultiValueGenericProps } from 'react-select';\n\nimport { Select } from '@@/form-components/ReactSelect';\n\ntype Option = { Type: 'user' | 'team'; Id: number; Name: string };\n\ninterface Props {\n value: Option[];\n onChange(value: readonly Option[]): void;\n options: Option[];\n}\n\nexport function PorAccessManagementUsersSelector({\n options,\n value,\n onChange,\n}: Props) {\n return (\n <div className=\"form-group\">\n <label\n className=\"col-sm-3 col-lg-2 control-label text-left\"\n htmlFor=\"users-selector\"\n >\n Select user(s) and/or team(s)\n </label>\n <div className=\"col-sm-9 col-lg-4\">\n {options.length === 0 ? (\n <span className=\"small text-muted\">No users or teams available.</span>\n ) : (\n <Select\n isMulti\n getOptionLabel={(option) => option.Name}\n getOptionValue={(option) => `${option.Id}-${option.Type}`}\n options={options}\n value={value}\n closeMenuOnSelect={false}\n onChange={onChange}\n data-cy=\"component-selectUser\"\n inputId=\"users-selector\"\n placeholder=\"Select one or more users and/or teams\"\n components={{ MultiValueLabel, Option: OptionComponent }}\n />\n )}\n </div>\n </div>\n );\n}\n\nfunction isOption(option: unknown): option is Option {\n return !!option && typeof option === 'object' && 'Type' in option;\n}\n\nfunction OptionComponent({ data, ...props }: OptionProps<Option, true>) {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <components.Option data={data} {...props}>\n {isOption(data) && <Label option={data} />}\n </components.Option>\n );\n}\n\nfunction MultiValueLabel({\n data,\n ...props\n}: MultiValueGenericProps<Option, true>) {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <components.MultiValueLabel data={data} {...props}>\n {isOption(data) && <Label option={data} />}\n </components.MultiValueLabel>\n );\n}\n\nfunction Label({ option }: { option: Option }) {\n const Icon = option.Type === 'user' ? UserIcon : TeamIcon;\n\n return (\n <div className=\"flex items-center gap-1\">\n <Icon />\n <span>{option.Name}</span>\n </div>\n );\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { PorAccessControlFormTeamSelector } from '@/react/portainer/access-control/PorAccessControlForm/TeamsSelector';\nimport { PorAccessControlFormUserSelector } from '@/react/portainer/access-control/PorAccessControlForm/UsersSelector';\nimport { PorAccessManagementUsersSelector } from '@/react/portainer/access-control/AccessManagement/PorAccessManagementUsersSelector';\nimport { AccessTypeSelector } from '@/react/portainer/access-control/EditDetails/AccessTypeSelector';\nimport { AccessControlPanel } from '@/react/portainer/access-control';\n\nexport const accessControlModule = angular\n .module('portainer.app.react.components.access-control', [])\n .component(\n 'accessControlPanel',\n r2a(withUIRouter(withReactQuery(withCurrentUser(AccessControlPanel))), [\n 'disableOwnershipChange',\n 'onUpdateSuccess',\n 'resourceControl',\n 'resourceId',\n 'resourceType',\n 'environmentId',\n ])\n )\n .component(\n 'accessTypeSelector',\n r2a(AccessTypeSelector, [\n 'isAdmin',\n 'isPublicVisible',\n 'name',\n 'onChange',\n 'value',\n 'teams',\n ])\n )\n .component(\n 'porAccessControlFormTeamSelector',\n r2a(PorAccessControlFormTeamSelector, [\n 'inputId',\n 'onChange',\n 'options',\n 'value',\n ])\n )\n .component(\n 'porAccessControlFormUserSelector',\n r2a(PorAccessControlFormUserSelector, [\n 'inputId',\n 'onChange',\n 'options',\n 'value',\n ])\n )\n .component(\n 'porAccessManagementUsersSelector',\n r2a(PorAccessManagementUsersSelector, ['onChange', 'options', 'value'])\n ).name;\n","import { Team } from '@/react/portainer/users/teams/types';\n\nimport { Select } from '@@/form-components/ReactSelect';\n\ninterface Props {\n value: Team[];\n onChange(value: readonly Team[]): void;\n options: Team[];\n inputId?: string;\n}\n\n// to be removed with the angularjs app/portainer/components/accessControlForm\nexport function PorAccessControlFormTeamSelector({\n value,\n onChange,\n options,\n inputId,\n}: Props) {\n return (\n <Select\n isMulti\n getOptionLabel={(option) => option.Name}\n getOptionValue={(option) => String(option.Id)}\n options={options}\n value={value}\n closeMenuOnSelect={false}\n onChange={onChange}\n data-cy=\"portainer-selectTeamAccess\"\n inputId={inputId}\n placeholder=\"Select one or more teams\"\n />\n );\n}\n","import { User } from '@/portainer/users/types';\n\nimport { Select } from '@@/form-components/ReactSelect';\n\ninterface Props {\n value: User[];\n onChange(value: readonly User[]): void;\n options: User[];\n inputId?: string;\n}\n\n// to be removed with the angularjs app/portainer/components/accessControlForm\nexport function PorAccessControlFormUserSelector({\n value,\n onChange,\n options,\n inputId,\n}: Props) {\n return (\n <Select\n isMulti\n getOptionLabel={(option) => option.Username}\n getOptionValue={(option) => String(option.Id)}\n options={options}\n value={value}\n closeMenuOnSelect={false}\n onChange={onChange}\n data-cy=\"portainer-selectUserAccess\"\n inputId={inputId}\n placeholder=\"Select one or more users\"\n />\n );\n}\n","import { CopyButton } from '@@/buttons';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Code } from '@@/Code';\n\nexport function EdgeKeyDisplay({ edgeKey }: { edgeKey: string }) {\n return (\n <FormSection title=\"Join token\">\n <TextTip color=\"blue\">\n For those pre-staging the edge agent, use the following join token to\n associate the Edge agent with this environment.\n </TextTip>\n\n <p className=\"small text-muted mt-2\">\n You can read more about pre-staging in the user-guide available{' '}\n <a href=\"https://downloads.portainer.io/edge_agent_guide.pdf\">here.</a>\n </p>\n\n <Code>{edgeKey}</Code>\n\n <CopyButton copyText={edgeKey} className=\"mt-2\">\n Copy token\n </CopyButton>\n </FormSection>\n );\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { EdgeKeyDisplay } from '@/react/portainer/environments/ItemView/EdgeKeyDisplay';\nimport { KVMControl } from '@/react/portainer/environments/KvmView/KVMControl';\n\nexport const environmentsModule = angular\n .module('portainer.app.react.components.environments', [])\n .component('edgeKeyDisplay', r2a(EdgeKeyDisplay, ['edgeKey']))\n .component(\n 'kvmControl',\n r2a(KVMControl, ['deviceId', 'server', 'token'])\n ).name;\n","import { KVM } from '@open-amt-cloud-toolkit/ui-toolkit-react/reactjs/src/kvm.bundle';\n\nimport './KVMControl.css';\n\nexport interface KVMControlProps {\n deviceId: string;\n server: string;\n token: string;\n}\n\nexport function KVMControl({ deviceId, server, token }: KVMControlProps) {\n if (!deviceId || !server || !token) return <div>Loading...</div>;\n\n return (\n <KVM\n deviceId={deviceId}\n mpsServer={`https://${server}/mps/ws/relay`}\n authToken={token}\n mouseDebounceTime=\"200\"\n canvasHeight=\"100%\"\n canvasWidth=\"100%\"\n />\n );\n}\n","import { Plus } from 'lucide-react';\n\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\n\nimport { useSettings } from '../../settings/queries';\nimport {\n FeatureFlag,\n useFeatureFlag,\n} from '../../feature-flags/useFeatureFlag';\n\nexport function ImportFdoDeviceButton() {\n const flagEnabledQuery = useFeatureFlag(FeatureFlag.FDO);\n\n const isFDOEnabledQuery = useSettings(\n (settings) => settings.fdoConfiguration.enabled,\n flagEnabledQuery.data\n );\n\n if (!isFDOEnabledQuery.data || !flagEnabledQuery.data) {\n return null;\n }\n\n return (\n <Button\n type=\"button\"\n color=\"secondary\"\n icon={Plus}\n as={Link}\n props={{ to: 'portainer.endpoints.importDevice' }}\n className=\"ml-[5px]\"\n >\n Import FDO device\n </Button>\n );\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { ImportFdoDeviceButton } from '@/react/portainer/environments/ListView/ImportFdoDeviceButton';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\n\nexport const envListModule = angular\n .module('portainer.app.react.components.environments.list-view', [])\n .component(\n 'importFdoDeviceButton',\n r2a(withUIRouter(withReactQuery(ImportFdoDeviceButton)), [])\n ).name;\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport {\n DefaultRegistryAction,\n DefaultRegistryDomain,\n DefaultRegistryName,\n} from '@/react/portainer/registries/ListView/DefaultRegistry';\n\nexport const registriesModule = angular\n .module('portainer.app.react.components.registries', [])\n .component(\n 'defaultRegistryName',\n r2a(withReactQuery(DefaultRegistryName), [])\n )\n .component(\n 'defaultRegistryAction',\n r2a(withReactQuery(DefaultRegistryAction), [])\n )\n .component(\n 'defaultRegistryDomain',\n r2a(withReactQuery(DefaultRegistryDomain), [])\n ).name;\n","import clsx from 'clsx';\n\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\n\nexport function DefaultRegistryName() {\n const settingsQuery = usePublicSettings({\n select: (settings) => settings.DefaultRegistry?.Hide,\n });\n\n return (\n <span\n className={clsx({\n 'cm-strikethrough': settingsQuery.isSuccess && settingsQuery.data,\n })}\n >\n Docker Hub (anonymous)\n </span>\n );\n}\n","import { Eye, EyeOff } from 'lucide-react';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport {\n usePublicSettings,\n useUpdateDefaultRegistrySettingsMutation,\n} from '@/react/portainer/settings/queries';\n\nimport { Tooltip } from '@@/Tip/Tooltip';\nimport { Button } from '@@/buttons';\nimport { BEFeatureIndicator } from '@@/BEFeatureIndicator';\n\nexport function DefaultRegistryAction() {\n const settingsQuery = usePublicSettings({\n select: (settings) => settings.DefaultRegistry?.Hide,\n });\n const defaultRegistryMutation = useUpdateDefaultRegistrySettingsMutation();\n\n if (!settingsQuery.isSuccess) {\n return null;\n }\n const hideDefaultRegistry = settingsQuery.data;\n\n const isLimited = isLimitedToBE(FeatureId.HIDE_DOCKER_HUB_ANONYMOUS);\n\n return (\n <>\n {!hideDefaultRegistry ? (\n <div className=\"vertical-center\">\n <Button\n color=\"danger\"\n icon={EyeOff}\n onClick={() => handleShowOrHide(true)}\n disabled={isLimited}\n >\n Hide for all users\n </Button>\n <BEFeatureIndicator featureId={FeatureId.HIDE_DOCKER_HUB_ANONYMOUS} />\n {isLimited ? null : (\n <Tooltip\n message=\"This hides the option in any registry dropdown prompts but does not prevent a user from deploying anonymously from Docker Hub directly via YAML.\n Note: Docker Hub (anonymous) will continue to show as the ONLY option if there are NO other registries available to the user.\"\n />\n )}\n </div>\n ) : (\n <div className=\"vertical-center\">\n <Button icon={Eye} onClick={() => handleShowOrHide(false)}>\n Show for all users\n </Button>\n <Tooltip\n message=\"This reveals the option in any registry dropdown prompts.\n (but note that the Docker Hub (anonymous) option only shows if there is no credentialled Docker Hub option available to the user).\"\n />\n </div>\n )}\n </>\n );\n\n function handleShowOrHide(hideDefaultRegistry: boolean) {\n defaultRegistryMutation.mutate(\n {\n Hide: hideDefaultRegistry,\n },\n {\n onSuccess() {\n notifySuccess(\n 'Success',\n 'Default registry Settings updated successfully'\n );\n },\n }\n );\n }\n}\n","import clsx from 'clsx';\n\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\n\nexport function DefaultRegistryDomain() {\n const settingsQuery = usePublicSettings({\n select: (settings) => settings.DefaultRegistry?.Hide,\n });\n\n return (\n <span\n className={clsx({\n 'cm-strikethrough': settingsQuery.isSuccess && settingsQuery.data,\n })}\n >\n docker.io\n </span>\n );\n}\n","import angular from 'angular';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { AnnotationsBeTeaser } from '@/react/kubernetes/annotations/AnnotationsBeTeaser';\nimport { withFormValidation } from '@/react-tools/withFormValidation';\nimport { GroupAssociationTable } from '@/react/portainer/environments/environment-groups/components/GroupAssociationTable';\nimport { AssociatedEnvironmentsSelector } from '@/react/portainer/environments/environment-groups/components/AssociatedEnvironmentsSelector';\n\nimport {\n EnvironmentVariablesFieldset,\n EnvironmentVariablesPanel,\n envVarValidation,\n} from '@@/form-components/EnvironmentVariablesFieldset';\nimport { Icon } from '@@/Icon';\nimport { ReactQueryDevtoolsWrapper } from '@@/ReactQueryDevtoolsWrapper';\nimport { PageHeader } from '@@/PageHeader';\nimport { TagSelector } from '@@/TagSelector';\nimport { Loading } from '@@/Widget/Loading';\nimport { PasswordCheckHint } from '@@/PasswordCheckHint';\nimport { ViewLoading } from '@@/ViewLoading';\nimport { Tooltip } from '@@/Tip/Tooltip';\nimport { Badge } from '@@/Badge';\nimport { TableColumnHeaderAngular } from '@@/datatables/TableHeaderCell';\nimport { DashboardItem } from '@@/DashboardItem';\nimport { SearchBar } from '@@/datatables/SearchBar';\nimport { FallbackImage } from '@@/FallbackImage';\nimport { BadgeIcon } from '@@/BadgeIcon';\nimport { TeamsSelector } from '@@/TeamsSelector';\nimport { PortainerSelect } from '@@/form-components/PortainerSelect';\nimport { Slider } from '@@/form-components/Slider';\nimport { TagButton } from '@@/TagButton';\nimport { BETeaserButton } from '@@/BETeaserButton';\nimport { CodeEditor } from '@@/CodeEditor';\n\nimport { fileUploadField } from './file-upload-field';\nimport { switchField } from './switch-field';\nimport { customTemplatesModule } from './custom-templates';\nimport { gitFormModule } from './git-form';\nimport { settingsModule } from './settings';\nimport { accessControlModule } from './access-control';\nimport { environmentsModule } from './environments';\nimport { envListModule } from './environments-list-view-components';\nimport { registriesModule } from './registries';\n\nexport const ngModule = angular\n .module('portainer.app.react.components', [\n accessControlModule,\n customTemplatesModule,\n envListModule,\n environmentsModule,\n gitFormModule,\n registriesModule,\n settingsModule,\n ])\n .component(\n 'tagSelector',\n r2a(withUIRouter(withReactQuery(TagSelector)), [\n 'allowCreate',\n 'onChange',\n 'value',\n ])\n )\n .component(\n 'beTeaserButton',\n r2a(BETeaserButton, [\n 'featureId',\n 'heading',\n 'message',\n 'buttonText',\n 'className',\n 'buttonClassName',\n ])\n )\n .component(\n 'tagButton',\n r2a(TagButton, ['value', 'label', 'title', 'onRemove'])\n )\n\n .component(\n 'portainerTooltip',\n r2a(Tooltip, ['message', 'position', 'className', 'setHtmlMessage', 'size'])\n )\n .component('badge', r2a(Badge, ['type', 'className']))\n .component('fileUploadField', fileUploadField)\n .component('porSwitchField', switchField)\n .component(\n 'passwordCheckHint',\n r2a(withReactQuery(PasswordCheckHint), [\n 'forceChangePassword',\n 'passwordValid',\n ])\n )\n .component('rdLoading', r2a(Loading, []))\n .component(\n 'tableColumnHeader',\n r2a(TableColumnHeaderAngular, [\n 'colTitle',\n 'canSort',\n 'isSorted',\n 'isSortedDesc',\n ])\n )\n .component('viewLoading', r2a(ViewLoading, ['message']))\n .component(\n 'pageHeader',\n r2a(withUIRouter(withReactQuery(withCurrentUser(PageHeader))), [\n 'title',\n 'breadcrumbs',\n 'loading',\n 'onReload',\n 'reload',\n 'id',\n ])\n )\n .component(\n 'fallbackImage',\n r2a(FallbackImage, ['src', 'fallbackIcon', 'alt', 'size', 'className'])\n )\n .component('prIcon', r2a(Icon, ['className', 'icon', 'mode', 'size', 'spin']))\n .component('reactQueryDevTools', r2a(ReactQueryDevtoolsWrapper, []))\n .component(\n 'dashboardItem',\n r2a(DashboardItem, [\n 'icon',\n 'type',\n 'value',\n 'to',\n 'params',\n 'children',\n 'pluralType',\n 'isLoading',\n 'isRefetching',\n 'dataCy',\n ])\n )\n .component(\n 'datatableSearchbar',\n r2a(SearchBar, [\n 'data-cy',\n 'onChange',\n 'value',\n 'placeholder',\n 'children',\n 'className',\n ])\n )\n .component('badgeIcon', r2a(BadgeIcon, ['icon', 'size']))\n .component(\n 'teamsSelector',\n r2a(TeamsSelector, [\n 'onChange',\n 'value',\n 'dataCy',\n 'inputId',\n 'name',\n 'placeholder',\n 'teams',\n 'disabled',\n ])\n )\n .component(\n 'porSelect',\n r2a(PortainerSelect, [\n 'name',\n 'inputId',\n 'placeholder',\n 'disabled',\n 'data-cy',\n 'bindToBody',\n 'value',\n 'onChange',\n 'options',\n 'isMulti',\n 'isClearable',\n 'components',\n ])\n )\n .component(\n 'porSlider',\n r2a(Slider, [\n 'min',\n 'max',\n 'step',\n 'value',\n 'onChange',\n 'visibleTooltip',\n 'dataCy',\n ])\n )\n\n .component(\n 'reactCodeEditor',\n r2a(CodeEditor, [\n 'id',\n 'placeholder',\n 'yaml',\n 'dockerFile',\n 'shell',\n 'readonly',\n 'onChange',\n 'value',\n 'height',\n ])\n )\n .component(\n 'groupAssociationTable',\n r2a(withReactQuery(GroupAssociationTable), [\n 'emptyContentLabel',\n 'onClickRow',\n 'query',\n 'title',\n 'data-cy',\n ])\n )\n .component('annotationsBeTeaser', r2a(AnnotationsBeTeaser, []))\n .component(\n 'associatedEndpointsSelector',\n r2a(withReactQuery(AssociatedEnvironmentsSelector), ['onChange', 'value'])\n );\n\nexport const componentsModule = ngModule.name;\n\nwithFormValidation(\n ngModule,\n EnvironmentVariablesFieldset,\n 'environmentVariablesFieldset',\n [],\n envVarValidation\n);\n\nwithFormValidation(\n ngModule,\n EnvironmentVariablesPanel,\n 'environmentVariablesPanel',\n ['explanation', 'showHelpMessage'],\n envVarValidation\n);\n","import { AlertTriangle, Check } from 'lucide-react';\n\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\n\nimport { Icon } from '@@/Icon';\n\ninterface Props {\n passwordValid: boolean;\n forceChangePassword?: boolean;\n}\n\nexport function PasswordCheckHint({\n passwordValid,\n forceChangePassword,\n}: Props) {\n const settingsQuery = usePublicSettings();\n const minPasswordLength = settingsQuery.data?.RequiredPasswordLength;\n\n return (\n <div>\n <p className=\"text-warning vertical-center\">\n <Icon icon={AlertTriangle} className=\"icon-warning\" />\n {forceChangePassword &&\n 'An administrator has changed your password requirements, '}\n The password must be at least {minPasswordLength} characters long.\n {passwordValid && (\n <Icon icon={Check} className=\"!ml-1\" mode=\"success\" />\n )}\n </p>\n </div>\n );\n}\n","import clsx from 'clsx';\nimport { Settings } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\n\nimport styles from './ViewLoading.module.css';\n\ninterface Props {\n message?: string;\n}\n\nexport function ViewLoading({ message }: Props) {\n return (\n <div className={clsx('row', styles.root)}>\n <div className=\"sk-fold\">\n <div className=\"sk-fold-cube\" />\n <div className=\"sk-fold-cube\" />\n <div className=\"sk-fold-cube\" />\n <div className=\"sk-fold-cube\" />\n </div>\n {message && (\n <span className={styles.message}>\n {message}\n <Icon icon={Settings} className=\"!ml-1 animate-spin-slow\" />\n </span>\n )}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-components-ViewLoading-ViewLoading-module__root\",\"message\":\"app-react-components-ViewLoading-ViewLoading-module__message\"};","import { useEffect, useState } from 'react';\n\nimport { BadgeIcon, BadgeSize } from './BadgeIcon/BadgeIcon';\n\ninterface Props {\n // props for the image to load\n src: string; // a link to an external image\n fallbackIcon: string;\n alt?: string;\n size?: BadgeSize;\n className?: string;\n}\n\nexport function FallbackImage({\n src,\n fallbackIcon,\n alt,\n size,\n className,\n}: Props) {\n const [error, setError] = useState(false);\n\n useEffect(() => {\n setError(false);\n }, [src]);\n\n if (!error && src) {\n return (\n <img\n className={className}\n src={src}\n alt={alt}\n onError={() => setError(true)}\n />\n );\n }\n\n // fallback icon if there is an error loading the image\n return <BadgeIcon icon={fallbackIcon} size={size} />;\n}\n","import { ReactQueryDevtools } from 'react-query/devtools';\n\nexport function ReactQueryDevtoolsWrapper() {\n const showReactQueryDevtools =\n process.env.SHOW_REACT_QUERY_DEV_TOOLS === 'true';\n\n return <>{showReactQueryDevtools && <ReactQueryDevtools />}</>;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-components-form-components-Slider-Slider-module__root\"};","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { BETeaserButton } from '@@/BETeaserButton';\nimport { Tooltip } from '@@/Tip/Tooltip';\n\nexport function AnnotationsBeTeaser() {\n return (\n <div className=\"col-sm-12 text-muted mb-2 block px-0\">\n <div className=\"control-label !mb-2 text-left font-medium\">\n Annotations\n <Tooltip\n message={\n <div className=\"vertical-center\">\n <span>\n Allows specifying of{' '}\n <a\n href=\"https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/\"\n target=\"_black\"\n >\n annotations\n </a>{' '}\n for the object. See further Kubernetes documentation on{' '}\n <a\n href=\"https://kubernetes.io/docs/reference/labels-annotations-taints/\"\n target=\"_black\"\n >\n well-known annotations\n </a>\n .\n </span>\n </div>\n }\n />\n </div>\n <div className=\"block\">\n <BETeaserButton\n className=\"!p-0\"\n heading=\"Add annotation\"\n buttonText=\"Add annotation\"\n message=\"Allows specifying of annotations on this resource.\"\n featureId={FeatureId.K8S_ANNOTATIONS}\n buttonClassName=\"!ml-0\"\n />\n </div>\n </div>\n );\n}\n","import { EnvironmentId } from '../../types';\n\nimport { GroupAssociationTable } from './GroupAssociationTable';\n\nexport function AssociatedEnvironmentsSelector({\n onChange,\n value,\n}: {\n onChange: (\n value: EnvironmentId[],\n meta: { type: 'add' | 'remove'; value: EnvironmentId }\n ) => void;\n value: EnvironmentId[];\n}) {\n return (\n <>\n <div className=\"col-sm-12 small text-muted\">\n You can select which environment should be part of this group by moving\n them to the associated environments table. Simply click on any\n environment entry to move it from one table to the other.\n </div>\n\n <div className=\"col-sm-12 mt-4\">\n <div className=\"flex\">\n <div className=\"w-1/2\">\n <GroupAssociationTable\n title=\"Available environments\"\n emptyContentLabel=\"No environment available\"\n query={{\n groupIds: [1],\n excludeIds: value,\n }}\n onClickRow={(env) => {\n if (!value.includes(env.Id)) {\n onChange([...value, env.Id], { type: 'add', value: env.Id });\n }\n }}\n data-cy=\"edgeGroupCreate-availableEndpoints\"\n />\n </div>\n <div className=\"w-1/2\">\n <GroupAssociationTable\n title=\"Associated environments\"\n emptyContentLabel=\"No associated environment'\"\n query={{\n endpointIds: value,\n }}\n onClickRow={(env) => {\n if (value.includes(env.Id)) {\n onChange(\n value.filter((id) => id !== env.Id),\n { type: 'remove', value: env.Id }\n );\n }\n }}\n />\n </div>\n </div>\n </div>\n </>\n );\n}\n","import { useLocalStorage } from './useLocalStorage';\n\nexport function usePaginationLimitState(\n key: string\n): [number, (value: number) => void] {\n const paginationKey = paginationKeyBuilder(key);\n const [pageLimit, setPageLimit] = useLocalStorage(paginationKey, 10);\n\n return [pageLimit, setPageLimit];\n\n function paginationKeyBuilder(key: string) {\n return `datatable_pagination_${key}`;\n }\n}\n","export interface Filter<T = number> {\n value: T;\n label: string;\n}\n\nexport enum ConnectionType {\n API,\n Agent,\n EdgeAgentStandard,\n EdgeAgentAsync,\n}\n","import clsx from 'clsx';\nimport { AriaAttributes, PropsWithChildren } from 'react';\n\nimport { Icon, IconProps } from '@@/Icon';\n\nexport function EnvironmentStatusBadgeItem({\n className,\n children,\n color = 'default',\n icon,\n ...aria\n}: PropsWithChildren<\n {\n className?: string;\n color?: 'success' | 'danger' | 'default';\n icon?: IconProps['icon'];\n } & AriaAttributes\n>) {\n return (\n <span\n className={clsx(\n 'flex items-center gap-1',\n 'rounded border-2 border-solid',\n 'w-fit py-px px-1',\n 'text-xs font-semibold text-gray-7',\n {\n 'border-green-3 bg-green-2': color === 'success',\n 'border-error-3 bg-error-2': color === 'danger',\n },\n className\n )}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...aria}\n >\n {icon && (\n <Icon\n icon={icon}\n className={clsx({\n '!text-green-7': color === 'success',\n '!text-error-7': color === 'danger',\n })}\n />\n )}\n\n {children}\n </span>\n );\n}\n","import { Activity } from 'lucide-react';\n\nimport { isoDateFromTimestamp } from '@/portainer/filters/filters';\nimport { Environment } from '@/react/portainer/environments/types';\n\nimport { EnvironmentStatusBadgeItem } from './EnvironmentStatusBadgeItem';\n\ninterface Props {\n showLastCheckInDate?: boolean;\n environment: Environment;\n}\n\nexport function EdgeIndicator({\n environment,\n showLastCheckInDate = false,\n}: Props) {\n const heartbeat = environment.Heartbeat;\n\n const associated = !!environment.EdgeID;\n if (!associated) {\n return (\n <span role=\"status\" aria-label=\"edge-status\">\n <EnvironmentStatusBadgeItem aria-label=\"unassociated\">\n <span className=\"whitespace-nowrap\">Not associated</span>\n </EnvironmentStatusBadgeItem>\n </span>\n );\n }\n\n return (\n <span\n role=\"status\"\n aria-label=\"edge-status\"\n className=\"flex items-center gap-1\"\n >\n <EnvironmentStatusBadgeItem\n color={heartbeat ? 'success' : 'danger'}\n icon={heartbeat ? 'svg-heartbeatup' : 'svg-heartbeatdown'}\n aria-label=\"edge-heartbeat\"\n >\n heartbeat\n </EnvironmentStatusBadgeItem>\n\n {showLastCheckInDate && !!environment.LastCheckInDate && (\n <span\n className=\"small text-muted vertical-center\"\n aria-label=\"edge-last-checkin\"\n title=\"Last edge check-in\"\n >\n <Activity className=\"icon icon-sm space-right\" aria-hidden=\"true\" />\n {isoDateFromTimestamp(environment.LastCheckInDate)}\n </span>\n )}\n </span>\n );\n}\n","import { CheckCircle, XCircle } from 'lucide-react';\n\nimport { EnvironmentStatus } from '@/react/portainer/environments/types';\n\nimport { EnvironmentStatusBadgeItem } from './EnvironmentStatusBadgeItem';\n\ninterface Props {\n status: EnvironmentStatus;\n}\n\nexport function EnvironmentStatusBadge({ status }: Props) {\n return status === EnvironmentStatus.Up ? (\n <EnvironmentStatusBadgeItem color=\"success\" icon={CheckCircle}>\n Up\n </EnvironmentStatusBadgeItem>\n ) : (\n <EnvironmentStatusBadgeItem color=\"danger\" icon={XCircle}>\n Down\n </EnvironmentStatusBadgeItem>\n );\n}\n","import { environmentTypeIcon } from '@/portainer/filters/filters';\nimport dockerEdge from '@/assets/images/edge_endpoint.png';\nimport kube from '@/assets/images/kubernetes_endpoint.png';\nimport kubeEdge from '@/assets/images/kubernetes_edge_endpoint.png';\nimport { EnvironmentType } from '@/react/portainer/environments/types';\nimport azure from '@/assets/ico/vendor/azure.svg';\nimport docker from '@/assets/ico/vendor/docker.svg';\n\nimport { Icon } from '@@/Icon';\n\ninterface Props {\n type: EnvironmentType;\n}\n\nexport function EnvironmentIcon({ type }: Props) {\n switch (type) {\n case EnvironmentType.AgentOnDocker:\n case EnvironmentType.Docker:\n return (\n <img src={docker} width=\"60\" alt=\"docker endpoint\" aria-hidden=\"true\" />\n );\n case EnvironmentType.Azure:\n return (\n <img src={azure} width=\"60\" alt=\"azure endpoint\" aria-hidden=\"true\" />\n );\n case EnvironmentType.EdgeAgentOnDocker:\n return (\n <img src={dockerEdge} alt=\"docker edge endpoint\" aria-hidden=\"true\" />\n );\n case EnvironmentType.KubernetesLocal:\n case EnvironmentType.AgentOnKubernetes:\n return <img src={kube} alt=\"kubernetes endpoint\" aria-hidden=\"true\" />;\n case EnvironmentType.EdgeAgentOnKubernetes:\n return (\n <img src={kubeEdge} alt=\"kubernetes edge endpoint\" aria-hidden=\"true\" />\n );\n default:\n return (\n <Icon\n icon={environmentTypeIcon(type)}\n className=\"blue-icon !h-16 !w-16\"\n />\n );\n }\n}\n","import {\n Box,\n Cpu,\n Database,\n HardDrive,\n Heart,\n Layers,\n List,\n Power,\n Shuffle,\n} from 'lucide-react';\n\nimport Memory from '@/assets/ico/memory.svg?c';\nimport { addPlural } from '@/portainer/helpers/strings';\nimport { DockerSnapshot } from '@/react/docker/snapshots/types';\nimport { humanize } from '@/portainer/filters/filters';\n\nimport { StatsItem } from '@@/StatsItem';\n\ninterface Props {\n snapshot?: DockerSnapshot;\n}\n\nexport function EnvironmentStatsDocker({ snapshot }: Props) {\n if (!snapshot) {\n return <>No snapshot available</>;\n }\n\n return (\n <>\n <StatsItem\n value={addPlural(snapshot.StackCount, 'stack')}\n icon={Layers}\n />\n\n {!!snapshot.Swarm && (\n <StatsItem\n value={addPlural(snapshot.ServiceCount, 'service')}\n icon={Shuffle}\n />\n )}\n\n <ContainerStats\n running={snapshot.RunningContainerCount}\n stopped={snapshot.StoppedContainerCount}\n healthy={snapshot.HealthyContainerCount}\n unhealthy={snapshot.UnhealthyContainerCount}\n />\n <StatsItem\n value={addPlural(snapshot.VolumeCount, 'volume')}\n icon={Database}\n />\n <StatsItem value={addPlural(snapshot.ImageCount, 'image')} icon={List} />\n\n <StatsItem icon={Cpu} value={`${snapshot.TotalCPU} CPU`} />\n\n <StatsItem\n icon={Memory}\n value={`${humanize(snapshot.TotalMemory)} RAM`}\n />\n\n {snapshot.Swarm && (\n <StatsItem\n value={addPlural(snapshot.NodeCount, 'node')}\n icon={HardDrive}\n />\n )}\n </>\n );\n}\n\ninterface ContainerStatsProps {\n running: number;\n stopped: number;\n healthy: number;\n unhealthy: number;\n}\n\nfunction ContainerStats({\n running,\n stopped,\n healthy,\n unhealthy,\n}: ContainerStatsProps) {\n const containersCount = running + stopped;\n\n return (\n <StatsItem value={addPlural(containersCount, 'container')} icon={Box}>\n {containersCount > 0 && (\n <>\n <StatsItem value={running} icon={Power} iconClass=\"icon-success\" />\n <StatsItem value={stopped} icon={Power} iconClass=\"icon-danger\" />\n <StatsItem value={healthy} icon={Heart} iconClass=\"icon-success\" />\n <StatsItem value={unhealthy} icon={Heart} iconClass=\"icon-warning\" />\n </>\n )}\n </StatsItem>\n );\n}\n","import { Cpu, HardDrive } from 'lucide-react';\n\nimport { KubernetesSnapshot } from '@/react/portainer/environments/types';\nimport { humanize } from '@/portainer/filters/filters';\nimport { addPlural } from '@/portainer/helpers/strings';\nimport Memory from '@/assets/ico/memory.svg?c';\n\nimport { StatsItem } from '@@/StatsItem';\n\ninterface Props {\n snapshot?: KubernetesSnapshot;\n}\n\nexport function EnvironmentStatsKubernetes({ snapshot }: Props) {\n if (!snapshot) {\n return <>No snapshot available</>;\n }\n\n return (\n <>\n <StatsItem icon={Cpu} value={`${snapshot.TotalCPU} CPU`} />\n\n <StatsItem\n icon={Memory}\n value={`${humanize(snapshot.TotalMemory)} RAM`}\n />\n\n <StatsItem\n value={addPlural(snapshot.NodeCount, 'node')}\n icon={HardDrive}\n />\n </>\n );\n}\n","import { Box, Dice4, HardDrive, List, Power } from 'lucide-react';\n\nimport { NomadSnapshot } from '@/react/portainer/environments/types';\nimport { addPlural } from '@/portainer/helpers/strings';\n\nimport { StatsItem } from '@@/StatsItem';\n\ninterface Props {\n snapshot?: NomadSnapshot;\n}\n\nexport function EnvironmentStatsNomad({ snapshot }: Props) {\n if (!snapshot) {\n return <>No snapshot available</>;\n }\n\n return (\n <>\n <StatsItem value={addPlural(snapshot.JobCount, 'job')} icon={List} />\n <StatsItem value={addPlural(snapshot.GroupCount, 'group')} icon={Dice4} />\n <StatsItem value={addPlural(snapshot.TaskCount, 'task')} icon={Box}>\n {snapshot.TaskCount > 0 && (\n <>\n <StatsItem\n value={snapshot.RunningTaskCount}\n icon={Power}\n iconClass=\"icon-success\"\n />\n <StatsItem\n value={snapshot.TaskCount - snapshot.RunningTaskCount}\n icon={Power}\n iconClass=\"icon-danger\"\n />\n </>\n )}\n </StatsItem>\n\n <StatsItem\n value={addPlural(snapshot.NodeCount, 'node')}\n icon={HardDrive}\n />\n </>\n );\n}\n","import {\n Environment,\n PlatformType,\n} from '@/react/portainer/environments/types';\nimport { getPlatformType } from '@/react/portainer/environments/utils';\n\nimport { EnvironmentStatsDocker } from './EnvironmentStatsDocker';\nimport { EnvironmentStatsKubernetes } from './EnvironmentStatsKubernetes';\nimport { EnvironmentStatsNomad } from './EnvironmentStatsNomad';\n\ninterface Props {\n environment: Environment;\n}\n\nexport function EnvironmentStats({ environment }: Props) {\n const platform = getPlatformType(environment.Type);\n\n const component = getComponent(platform, environment);\n\n return (\n <span className=\"blocklist-item-desc flex flex-wrap items-center gap-x-10 gap-y-2\">\n {component}\n </span>\n );\n}\n\nfunction getComponent(platform: PlatformType, environment: Environment) {\n switch (platform) {\n case PlatformType.Kubernetes:\n return (\n <EnvironmentStatsKubernetes\n snapshot={environment.Kubernetes.Snapshots?.[0]}\n />\n );\n case PlatformType.Docker:\n return <EnvironmentStatsDocker snapshot={environment.Snapshots?.[0]} />;\n case PlatformType.Nomad:\n return (\n <EnvironmentStatsNomad snapshot={environment.Nomad.Snapshots?.[0]} />\n );\n default:\n return null;\n }\n}\n","import { DockerSnapshot } from '@/react/docker/snapshots/types';\nimport {\n Environment,\n PlatformType,\n KubernetesSnapshot,\n} from '@/react/portainer/environments/types';\nimport { getPlatformType } from '@/react/portainer/environments/utils';\n\nexport function EngineVersion({ environment }: { environment: Environment }) {\n const platform = getPlatformType(environment.Type);\n\n switch (platform) {\n case PlatformType.Docker:\n return <DockerEngineVersion snapshot={environment.Snapshots[0]} />;\n case PlatformType.Kubernetes:\n return (\n <KubernetesEngineVersion\n snapshot={environment.Kubernetes.Snapshots?.[0]}\n />\n );\n default:\n return null;\n }\n}\n\nfunction DockerEngineVersion({ snapshot }: { snapshot?: DockerSnapshot }) {\n if (!snapshot) {\n return null;\n }\n\n return (\n <span className=\"small text-muted vertical-center\">\n {snapshot.Swarm ? 'Swarm' : 'Standalone'} {snapshot.DockerVersion}\n </span>\n );\n}\n\nfunction KubernetesEngineVersion({\n snapshot,\n}: {\n snapshot?: KubernetesSnapshot;\n}) {\n if (!snapshot) {\n return null;\n }\n\n return (\n <span className=\"small text-muted vertical-center\">\n Kubernetes {snapshot.KubernetesVersion}\n </span>\n );\n}\n","import { Zap } from 'lucide-react';\n\nimport {\n Environment,\n EnvironmentType,\n} from '@/react/portainer/environments/types';\nimport {\n isEdgeEnvironment,\n isLocalEnvironment,\n isAgentEnvironment,\n} from '@/react/portainer/environments/utils';\n\nexport function EnvironmentTypeTag({\n environment,\n}: {\n environment: Environment;\n}) {\n const typeLabel = getTypeLabel(environment);\n\n if (!typeLabel) {\n return null;\n }\n\n return (\n <span className=\"vertical-center gap-1\">\n <Zap className=\"icon icon-xs vertical-center\" aria-hidden=\"true\" />\n\n <span>{typeLabel}</span>\n </span>\n );\n}\n\nfunction getTypeLabel(environment: Environment) {\n if (isEdgeEnvironment(environment.Type)) {\n return environment.Edge.AsyncMode\n ? 'Edge Agent Async'\n : 'Edge Agent Standard';\n }\n\n if (isLocalEnvironment(environment)) {\n return 'Local';\n }\n\n if (environment.Type === EnvironmentType.Azure) {\n return 'ACI';\n }\n\n if (isAgentEnvironment(environment.Type)) {\n return 'Agent';\n }\n\n return '';\n}\n","import clsx from 'clsx';\nimport { ComponentProps } from 'react';\n\nimport { Button } from './buttons';\nimport { Link } from './Link';\n\nexport function LinkButton({\n to,\n params,\n disabled,\n className,\n children,\n title = '',\n ...props\n}: ComponentProps<typeof Button> & ComponentProps<typeof Link>) {\n return (\n <Button\n title={title}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n className={clsx(className, 'no-link !m-0')}\n disabled={disabled}\n as={disabled ? 'span' : Link}\n props={{\n to,\n params,\n }}\n >\n {children}\n </Button>\n );\n}\n","import { History, Wifi, WifiOff, X } from 'lucide-react';\nimport clsx from 'clsx';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport {\n getDashboardRoute,\n isEdgeAsync as checkEdgeAsync,\n} from '@/react/portainer/environments/utils';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { Icon } from '@@/Icon';\nimport { LinkButton } from '@@/LinkButton';\nimport { Button } from '@@/buttons';\n\ntype BrowseStatus = 'snapshot' | 'connected' | 'disconnected';\n\nexport function EnvironmentBrowseButtons({\n environment,\n onClickBrowse,\n onClickDisconnect,\n isActive,\n}: {\n environment: Environment;\n onClickBrowse(): void;\n onClickDisconnect(): void;\n isActive: boolean;\n}) {\n const isEdgeAsync = checkEdgeAsync(environment);\n const browseStatus = getStatus(isActive, isEdgeAsync);\n\n const dashboardRoute = getDashboardRoute(environment);\n return (\n <div className=\"flex h-24 w-full flex-col justify-center gap-2 [&>*]:h-1/3\">\n {isBE &&\n (browseStatus !== 'snapshot' ? (\n <LinkButton\n icon={History}\n disabled={!isEdgeAsync}\n to=\"edge.browse.dashboard\"\n params={{\n environmentId: environment.Id,\n }}\n size=\"medium\"\n color=\"light\"\n className=\"!m-0 w-full !py-0\"\n title={\n !isEdgeAsync\n ? 'Browse snapshot is only available for async environments'\n : ''\n }\n >\n Browse snapshot\n </LinkButton>\n ) : (\n <Button\n icon={X}\n onClick={onClickDisconnect}\n className=\"!m-0 w-full !py-0 opacity-60\"\n size=\"medium\"\n color=\"light\"\n >\n Close snapshot\n </Button>\n ))}\n\n {browseStatus !== 'connected' ? (\n <LinkButton\n title={\n isEdgeAsync\n ? 'Live connection is not available for async environments'\n : ''\n }\n icon={Wifi}\n disabled={isEdgeAsync}\n to={dashboardRoute.to}\n params={dashboardRoute.params}\n size=\"medium\"\n onClick={onClickBrowse}\n color=\"primary\"\n className=\"!m-0 w-full !py-0\"\n >\n Live connect\n </LinkButton>\n ) : (\n <Button\n icon={WifiOff}\n onClick={onClickDisconnect}\n className=\"!m-0 w-full !py-0 opacity-60\"\n size=\"medium\"\n color=\"primary\"\n >\n Disconnect\n </Button>\n )}\n\n <BrowseStatusTag status={browseStatus} />\n </div>\n );\n}\n\nfunction getStatus(isActive: boolean, isEdgeAsync: boolean) {\n if (!isActive) {\n return 'disconnected';\n }\n\n if (isEdgeAsync) {\n return 'snapshot';\n }\n\n return 'connected';\n}\n\nfunction BrowseStatusTag({ status }: { status: BrowseStatus }) {\n switch (status) {\n case 'snapshot':\n return <Snapshot />;\n case 'connected':\n return <Connected />;\n case 'disconnected':\n return <Disconnected />;\n default:\n return null;\n }\n}\n\nfunction Disconnected() {\n return (\n <div className=\"flex items-center justify-center gap-2\">\n <Icon icon={WifiOff} />\n Disconnected\n </div>\n );\n}\n\nfunction Connected() {\n return (\n <div\n className={clsx(\n 'flex items-center justify-center gap-2 rounded-lg',\n 'text-green-8 th-dark:text-green-4',\n 'bg-green-3 th-dark:bg-green-3/30'\n )}\n >\n <div className=\"h-2 w-2 rounded-full bg-green-8 th-dark:bg-green-4\" />\n Connected\n </div>\n );\n}\n\nfunction Snapshot() {\n return (\n <div\n className={clsx(\n 'flex items-center justify-center gap-2 rounded-lg',\n 'text-warning-7 th-dark:text-warning-4',\n 'bg-warning-3 th-highcontrast:bg-warning-3/30 th-dark:bg-warning-3/10'\n )}\n >\n <div className=\"h-2 w-2 rounded-full bg-warning-7\" />\n Browsing Snapshot\n </div>\n );\n}\n","import { Edit2, Settings } from 'lucide-react';\nimport { ReactNode } from 'react';\nimport clsx from 'clsx';\n\nimport { useUser } from '@/react/hooks/useUser';\nimport {\n Environment,\n PlatformType,\n} from '@/react/portainer/environments/types';\nimport {\n isEdgeAsync as checkEdgeAsync,\n getPlatformType,\n} from '@/react/portainer/environments/utils';\n\nimport { LinkButton } from '@@/LinkButton';\n\nexport function EditButtons({ environment }: { environment: Environment }) {\n const { isAdmin } = useUser();\n\n const isEdgeAsync = checkEdgeAsync(environment);\n\n const configRoute = getConfigRoute(environment);\n\n const buttonsClasses = clsx(\n 'w-full h-full !ml-0 !rounded-none',\n 'hover:bg-gray-3',\n 'th-dark:hover:bg-gray-9',\n 'th-highcontrast:hover:bg-white th-highcontrast:hover:text-black'\n );\n\n return (\n <ButtonsGrid className=\"ml-3 w-11\">\n <LinkButton\n disabled={!isAdmin}\n to=\"portainer.endpoints.endpoint\"\n params={{ id: environment.Id, redirectTo: 'portainer.home' }}\n color=\"none\"\n icon={Edit2}\n size=\"medium\"\n className={buttonsClasses}\n title=\"Edit\"\n />\n\n <LinkButton\n disabled={!configRoute || isEdgeAsync || !isAdmin}\n to={configRoute}\n params={{ endpointId: environment.Id }}\n color=\"none\"\n icon={Settings}\n size=\"medium\"\n className={buttonsClasses}\n title=\"Configuration\"\n />\n </ButtonsGrid>\n );\n}\n\nfunction getConfigRoute(environment: Environment) {\n const platform = getPlatformType(environment.Type);\n\n switch (platform) {\n case PlatformType.Docker:\n return getDockerConfigRoute(environment);\n case PlatformType.Kubernetes:\n return 'kubernetes.cluster.setup';\n default:\n return '';\n }\n}\n\nfunction getDockerConfigRoute(environment: Environment) {\n const snapshot = environment.Snapshots?.[0];\n if (!snapshot) {\n return '';\n }\n\n return snapshot.Swarm ? 'docker.swarm' : 'docker.host';\n}\n\nfunction ButtonsGrid({\n children,\n className,\n}: {\n children: ReactNode[];\n className?: string;\n}) {\n return (\n <div\n className={clsx(\n 'grid',\n // trace borders but make them transparent so\n // * hovering the env item won't make env box borders clip with the grid borders\n // * hovering the buttons won't make the button's icon flicker\n 'rounded-r-lg border border-solid',\n 'border-y-transparent border-r-transparent',\n 'border-l-gray-5 th-highcontrast:border-l-white th-dark:border-l-gray-9',\n 'overflow-hidden',\n className\n )}\n >\n {children.map((child, index) => (\n <div\n key={index}\n className={clsx({\n 'border-0 border-b border-solid border-b-gray-5 th-highcontrast:border-b-white th-dark:border-b-gray-9':\n index < children.length - 1,\n })}\n >\n {child}\n </div>\n ))}\n </div>\n );\n}\n","import { AlertTriangle } from 'lucide-react';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport {\n isAgentEnvironment,\n isEdgeEnvironment,\n} from '@/react/portainer/environments/utils';\nimport { isVersionSmaller } from '@/react/common/semver-utils';\nimport { useSystemStatus } from '@/react/portainer/system/useSystemStatus';\n\nimport { Tooltip } from '@@/Tip/Tooltip';\nimport { Icon } from '@@/Icon';\n\nexport function AgentDetails({ environment }: { environment: Environment }) {\n if (!isAgentEnvironment(environment.Type)) {\n return null;\n }\n\n if (isEdgeEnvironment(environment.Type)) {\n return <EdgeAgentDetails environment={environment} />;\n }\n\n return <span>{environment.Agent.Version}</span>;\n}\n\nfunction EdgeAgentDetails({ environment }: { environment: Environment }) {\n const { data: systemStatus } = useSystemStatus();\n const associated = !!environment.EdgeID;\n\n if (!systemStatus || !associated) {\n return null;\n }\n\n const agentVersion = environment.Agent.Version;\n\n const { Version } = systemStatus;\n const isSmaller =\n !agentVersion || // agents before 2.15 don't send the version so it will be empty\n isVersionSmaller(agentVersion, Version);\n\n if (!isSmaller) {\n return <span>{agentVersion}</span>;\n }\n\n return (\n <span className=\"flex items-center gap-1\">\n <Icon icon={AlertTriangle} className=\"icon-warning\" />\n <span className=\"icon-warning\">{agentVersion || '< 2.15'}</span>\n <Tooltip message=\"Features and bug fixes in your current Portainer Server release may not be available to this Edge Agent until it is upgraded.\" />\n </span>\n );\n}\n","import _ from 'lodash';\nimport { Tag, Activity } from 'lucide-react';\n\nimport {\n isoDateFromTimestamp,\n stripProtocol,\n} from '@/portainer/filters/filters';\nimport {\n type Environment,\n PlatformType,\n} from '@/react/portainer/environments/types';\nimport {\n getDashboardRoute,\n getPlatformType,\n isEdgeEnvironment,\n} from '@/react/portainer/environments/utils';\nimport type { TagId } from '@/portainer/tags/types';\nimport { useTags } from '@/portainer/tags/queries';\n\nimport { EdgeIndicator } from '@@/EdgeIndicator';\nimport { EnvironmentStatusBadge } from '@@/EnvironmentStatusBadge';\nimport { Link } from '@@/Link';\n\nimport { EnvironmentIcon } from './EnvironmentIcon';\nimport { EnvironmentStats } from './EnvironmentStats';\nimport { EngineVersion } from './EngineVersion';\nimport { EnvironmentTypeTag } from './EnvironmentTypeTag';\nimport { EnvironmentBrowseButtons } from './EnvironmentBrowseButtons';\nimport { EditButtons } from './EditButtons';\nimport { AgentDetails } from './AgentDetails';\n\ninterface Props {\n environment: Environment;\n groupName?: string;\n onClickBrowse(): void;\n onClickDisconnect(): void;\n isActive: boolean;\n}\n\nexport function EnvironmentItem({\n environment,\n onClickBrowse,\n onClickDisconnect,\n groupName,\n isActive,\n}: Props) {\n const isEdge = isEdgeEnvironment(environment.Type);\n\n const snapshotTime = getSnapshotTime(environment);\n\n const tags = useEnvironmentTagNames(environment.TagIds);\n const dashboardRoute = getDashboardRoute(environment);\n\n return (\n <div className=\"relative\">\n <Link\n to={dashboardRoute.to}\n params={dashboardRoute.params}\n className=\"no-link\"\n >\n <button\n className=\"blocklist-item !m-0 flex min-h-[110px] w-full items-stretch overflow-hidden bg-transparent !pr-56\"\n onClick={onClickBrowse}\n type=\"button\"\n >\n <div className=\"ml-2 flex justify-center self-center\">\n <EnvironmentIcon type={environment.Type} />\n </div>\n <div className=\"ml-3 mr-auto flex flex-col items-start justify-center gap-3\">\n <div className=\"flex flex-wrap items-center gap-x-4 gap-y-2\">\n <span className=\"font-bold\">{environment.Name}</span>\n {isEdge ? (\n <EdgeIndicator environment={environment} showLastCheckInDate />\n ) : (\n <>\n <EnvironmentStatusBadge status={environment.Status} />\n {snapshotTime && (\n <span\n className=\"small text-muted vertical-center gap-1\"\n title=\"Last snapshot time\"\n >\n <Activity className=\"icon icon-sm\" aria-hidden=\"true\" />\n {snapshotTime}\n </span>\n )}\n </>\n )}\n <EngineVersion environment={environment} />\n {!isEdge && (\n <span className=\"text-muted small vertical-center\">\n {stripProtocol(environment.URL)}\n </span>\n )}\n </div>\n <div className=\"small text-muted flex flex-wrap items-center gap-x-4 gap-y-2\">\n {groupName && (\n <span className=\"font-semibold\">\n <span>Group: </span>\n <span>{groupName}</span>\n </span>\n )}\n <span className=\"vertical-center gap-1\">\n <Tag className=\"icon icon-sm\" aria-hidden=\"true\" />\n {tags}\n </span>\n <EnvironmentTypeTag environment={environment} />\n <AgentDetails environment={environment} />\n </div>\n <EnvironmentStats environment={environment} />\n </div>\n </button>\n </Link>\n {/* \n Buttons are extracted out of the main button because it causes errors with react and accessibility issues\n see https://stackoverflow.com/questions/66409964/warning-validatedomnesting-a-cannot-appear-as-a-descendant-of-a\n */}\n <div className=\"absolute inset-y-0 right-0 flex w-56 justify-end\">\n <div className=\"flex flex-1 items-center py-3\">\n <EnvironmentBrowseButtons\n environment={environment}\n onClickBrowse={onClickBrowse}\n onClickDisconnect={onClickDisconnect}\n isActive={isActive}\n />\n </div>\n <EditButtons environment={environment} />\n </div>\n </div>\n );\n}\n\nfunction useEnvironmentTagNames(tagIds?: TagId[]) {\n const tagsQuery = useTags({\n select: (tags) => {\n if (!tagIds) {\n return [];\n }\n return _.compact(\n tagIds\n .map((id) => tags.find((tag) => tag.ID === id))\n .map((tag) => tag?.Name)\n );\n },\n });\n\n const { data: tags, isLoading } = tagsQuery;\n\n if (tags && tags.length > 0) {\n return tags.join(', ');\n }\n\n if (isLoading) {\n return 'Loading tags...';\n }\n\n return 'No tags';\n}\n\nfunction getSnapshotTime(environment: Environment) {\n const platform = getPlatformType(environment.Type);\n\n switch (platform) {\n case PlatformType.Docker:\n return environment.Snapshots.length > 0\n ? isoDateFromTimestamp(environment.Snapshots[0].Time)\n : null;\n case PlatformType.Kubernetes:\n return environment.Kubernetes.Snapshots &&\n environment.Kubernetes.Snapshots.length > 0\n ? isoDateFromTimestamp(environment.Kubernetes.Snapshots[0].Time)\n : null;\n default:\n return null;\n }\n}\n","import { saveAs } from 'file-saver';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nconst baseUrl = 'kubernetes';\n\nexport async function downloadKubeconfigFile(environmentIds: EnvironmentId[]) {\n try {\n const { headers, data } = await axios.get<Blob>(`${baseUrl}/config`, {\n params: { ids: JSON.stringify(environmentIds) },\n responseType: 'blob',\n headers: {\n Accept: 'text/yaml',\n },\n });\n const contentDispositionHeader = headers['content-disposition'];\n const filename = contentDispositionHeader.replace('attachment;', '').trim();\n saveAs(data, filename);\n } catch (e) {\n throw parseAxiosError(e as Error, '');\n }\n}\n","import { useState } from 'react';\n\nexport function useListSelection<T>(\n initialValue: Array<T> = [],\n compareFn: (a: T, b: T) => boolean = (a, b) => a === b\n) {\n const [selectedItems, setSelectedItems] = useState<Array<T>>(initialValue);\n\n function handleChangeSelect(currentItem: T, selected: boolean) {\n if (selected) {\n setSelectedItems((items) => [...items, currentItem]);\n } else {\n setSelectedItems((items) =>\n items.filter((item) => !compareFn(item, currentItem))\n );\n }\n }\n\n return [selectedItems, handleChangeSelect] as const;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"checkbox\":\"app-react-portainer-HomeView-EnvironmentList-KubeconfigButton-KubeconfigPrompt-module__checkbox\",\"checkboxList\":\"app-react-portainer-HomeView-EnvironmentList-KubeconfigButton-KubeconfigPrompt-module__checkbox-list\"};","import clsx from 'clsx';\nimport { useState } from 'react';\n\nimport { downloadKubeconfigFile } from '@/react/portainer/HomeView/EnvironmentList/KubeconfigButton/kubeconfig.service';\nimport * as notifications from '@/portainer/services/notifications';\nimport {\n Environment,\n EnvironmentType,\n} from '@/react/portainer/environments/types';\nimport { usePaginationLimitState } from '@/react/hooks/usePaginationLimitState';\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\nimport {\n Query,\n useEnvironmentList,\n} from '@/react/portainer/environments/queries/useEnvironmentList';\nimport { useListSelection } from '@/react/hooks/useListSelection';\n\nimport { Modal } from '@@/modals';\nimport { PaginationControls } from '@@/PaginationControls';\nimport { Checkbox } from '@@/form-components/Checkbox';\nimport { Button } from '@@/buttons';\n\nimport styles from './KubeconfigPrompt.module.css';\n\nexport interface KubeconfigPromptProps {\n envQueryParams: Query;\n onClose: () => void;\n selectedItems: Array<Environment['Id']>;\n}\nconst storageKey = 'home_endpoints';\n\nexport function KubeconfigPrompt({\n envQueryParams,\n onClose,\n selectedItems,\n}: KubeconfigPromptProps) {\n const [page, setPage] = useState(1);\n const [pageLimit, setPageLimit] = usePaginationLimitState(storageKey);\n\n const expiryQuery = usePublicSettings({\n select: (settings) => expiryMessage(settings.KubeconfigExpiry),\n });\n\n const [selection, toggleSelection] =\n useListSelection<Environment['Id']>(selectedItems);\n\n const { environments, totalCount, isLoading } = useEnvironmentList({\n ...envQueryParams,\n page,\n pageLimit,\n types: [\n EnvironmentType.KubernetesLocal,\n EnvironmentType.AgentOnKubernetes,\n EnvironmentType.EdgeAgentOnKubernetes,\n ],\n });\n const isAllPageSelected =\n !isLoading &&\n environments\n .filter((env) => env.Status <= 2)\n .every((env) => selection.includes(env.Id));\n\n return (\n <Modal aria-label=\"Kubeconfig View\" onDismiss={onClose}>\n <Modal.Header title=\"Download kubeconfig file\" />\n\n <Modal.Body>\n <div>\n <span>\n Select the kubernetes environments to add to the kubeconfig file.\n You may select across multiple pages.\n </span>\n <span className=\"space-left\">{expiryQuery.data}</span>\n </div>\n\n <div className=\"mt-2 flex h-8 items-center\">\n <Checkbox\n id=\"settings-container-truncate-name\"\n label=\"Select all (in this page)\"\n checked={isAllPageSelected}\n onChange={handleSelectAll}\n />\n </div>\n <div className=\"datatable\">\n <div className={styles.checkboxList}>\n {environments\n .filter((env) => env.Status <= 2)\n .map((env) => (\n <div\n key={env.Id}\n className={clsx(\n styles.checkbox,\n 'flex h-8 items-center pt-1'\n )}\n >\n <Checkbox\n id={`${env.Id}`}\n label={`${env.Name} (${env.URL})`}\n checked={selection.includes(env.Id)}\n onChange={() =>\n toggleSelection(env.Id, !selection.includes(env.Id))\n }\n />\n </div>\n ))}\n </div>\n <div className=\"flex w-full justify-end pt-3\">\n <PaginationControls\n showAll={totalCount <= 100}\n page={page}\n onPageChange={setPage}\n pageLimit={pageLimit}\n onPageLimitChange={setPageLimit}\n pageCount={Math.ceil(totalCount / pageLimit)}\n />\n </div>\n </div>\n </Modal.Body>\n\n <Modal.Footer>\n <Button onClick={onClose} color=\"default\">\n Cancel\n </Button>\n <Button onClick={handleDownload} disabled={selection.length === 0}>\n Download File\n </Button>\n </Modal.Footer>\n </Modal>\n );\n\n function handleSelectAll() {\n environments.forEach((env) => toggleSelection(env.Id, !isAllPageSelected));\n }\n\n function handleDownload() {\n confirmKubeconfigSelection();\n }\n\n async function confirmKubeconfigSelection() {\n if (selection.length === 0) {\n notifications.warning('No environment was selected', '');\n return;\n }\n try {\n await downloadKubeconfigFile(selection);\n onClose();\n } catch (e) {\n notifications.error('Failed downloading kubeconfig file', e as Error);\n }\n }\n}\n\nexport function expiryMessage(expiry: string) {\n const prefix = 'The kubeconfig file will';\n switch (expiry) {\n case '24h':\n return `${prefix} expire in 1 day.`;\n case '168h':\n return `${prefix} expire in 7 days.`;\n case '720h':\n return `${prefix} expire in 30 days.`;\n case '8640h':\n return `${prefix} expire in 1 year.`;\n case '0':\n default:\n return `${prefix} not expire.`;\n }\n}\n","import { useState } from 'react';\nimport { Download } from 'lucide-react';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { isKubernetesEnvironment } from '@/react/portainer/environments/utils';\nimport { trackEvent } from '@/angulartics.matomo/analytics-services';\nimport { Query } from '@/react/portainer/environments/queries/useEnvironmentList';\n\nimport { Button } from '@@/buttons';\n\nimport { KubeconfigPrompt } from './KubeconfigPrompt';\n\nimport '@reach/dialog/styles.css';\n\nexport interface Props {\n environments: Environment[];\n envQueryParams: Query;\n}\nexport function KubeconfigButton({ environments, envQueryParams }: Props) {\n const [isOpen, setIsOpen] = useState(false);\n\n const kubeEnvs = environments.filter((env) =>\n isKubernetesEnvironment(env.Type)\n );\n\n if (!isKubeconfigButtonVisible()) {\n return null;\n }\n\n return (\n <>\n <Button\n onClick={handleClick}\n size=\"medium\"\n className=\"!m-0\"\n icon={Download}\n disabled={kubeEnvs.length === 0}\n color=\"light\"\n >\n Kubeconfig\n </Button>\n {prompt()}\n </>\n );\n\n function handleClick() {\n if (!environments) {\n return;\n }\n\n trackEvent('kubernetes-kubectl-kubeconfig-multi', {\n category: 'kubernetes',\n });\n\n setIsOpen(true);\n }\n\n function handleClose() {\n setIsOpen(false);\n }\n\n function isKubeconfigButtonVisible() {\n return window.location.protocol === 'https:';\n }\n\n function prompt() {\n return (\n isOpen && (\n <KubeconfigPrompt\n envQueryParams={envQueryParams}\n onClose={handleClose}\n selectedItems={kubeEnvs.map((env) => env.Id)}\n />\n )\n );\n }\n}\n","import { InformationPanel } from '@@/InformationPanel';\nimport { Link } from '@@/Link';\nimport { TextTip } from '@@/Tip/TextTip';\n\nexport function NoEnvironmentsInfoPanel({ isAdmin }: { isAdmin: boolean }) {\n return (\n <InformationPanel title=\"Information\">\n <TextTip>\n {isAdmin ? (\n <span>\n No environment available for management. Please head over the{' '}\n <Link to=\"portainer.wizard.endpoints\">environment wizard</Link> to\n add an environment.\n </span>\n ) : (\n <span>\n You do not have access to any environment. Please contact your\n administrator.\n </span>\n )}\n </TextTip>\n </InformationPanel>\n );\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { EdgeUpdateSchedule } from '../types';\n\nexport const queryKeys = {\n base: () => ['edge', 'update_schedules'] as const,\n list: (includeEdgeStacks?: boolean) =>\n [...queryKeys.base(), { includeEdgeStacks }] as const,\n item: (id: EdgeUpdateSchedule['id']) => [...queryKeys.base(), id] as const,\n activeSchedules: (environmentIds: EnvironmentId[]) =>\n [...queryKeys.base(), 'active', { environmentIds }] as const,\n supportedAgentVersions: () =>\n [...queryKeys.base(), 'agent_versions'] as const,\n previousVersions: () => [...queryKeys.base(), 'previous_versions'] as const,\n};\n","import { EdgeUpdateSchedule } from '../types';\n\nexport const BASE_URL = '/edge_update_schedules';\n\nexport function buildUrl(id?: EdgeUpdateSchedule['id'], action?: string) {\n let url = BASE_URL;\n\n if (id) {\n url += `/${id}`;\n }\n\n if (action) {\n url += `/${action}`;\n }\n\n return url;\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\nimport { semverCompare } from '@/react/common/semver-utils';\n\nimport { queryKeys } from './query-keys';\nimport { buildUrl } from './urls';\n\nexport function useSupportedAgentVersions(\n minVersion?: string,\n { onSuccess }: { onSuccess?(data: string[]): void } = {}\n) {\n return useQuery(\n [...queryKeys.supportedAgentVersions(), { minVersion }],\n getSupportedAgentVersions,\n {\n select(versions) {\n if (!minVersion) {\n return versions;\n }\n\n return versions.filter(\n (version) => semverCompare(version, minVersion) > 0\n );\n },\n onSuccess,\n ...withError('failed fetching available agent versions'),\n }\n );\n}\n\nasync function getSupportedAgentVersions() {\n try {\n const { data } = await axios.get<string[]>(\n buildUrl(undefined, 'agent_versions')\n );\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Failed to get list of edge update schedules'\n );\n }\n}\n","import _ from 'lodash';\nimport clsx from 'clsx';\n\nimport { useSupportedAgentVersions } from '@/react/portainer/environments/update-schedules/queries/useSupportedAgentVersions';\n\nimport { Link } from '@@/Link';\n\nexport function UpdateBadge() {\n const version = useAgentLatestVersion();\n\n return (\n <span\n className={clsx(\n 'inline-flex h-fit items-center gap-2 rounded-3xl border border-solid border-transparent p-1 font-normal',\n 'bg-blue-3 text-blue-8',\n 'th-dark:bg-blue-8 th-dark:text-white',\n 'th-highcontrast:border-white th-highcontrast:bg-transparent th-highcontrast:text-white'\n )}\n >\n <span className=\"hidden text-sm 2xl:!inline\">\n Update Available: Edge Agent {version}\n </span>\n <Link\n to=\"portainer.endpoints.updateSchedules.create\"\n className={clsx(\n 'badge border border-solid border-transparent font-normal',\n 'bg-blue-8 text-blue-3',\n 'th-dark:bg-blue-3 th-dark:text-blue-8 th-dark:hover:bg-blue-5 th-dark:hover:text-blue-8',\n 'th-highcontrast:border-white th-highcontrast:bg-transparent th-highcontrast:text-white th-highcontrast:hover:bg-gray-warm-7 th-highcontrast:hover:text-white'\n )}\n >\n Schedule Update\n </Link>\n </span>\n );\n}\n\nfunction useAgentLatestVersion() {\n const supportedAgentVersionsQuery = useSupportedAgentVersions();\n\n return _.last(supportedAgentVersionsQuery.data) || '';\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"sortByContainer\":\"app-react-portainer-HomeView-EnvironmentList-SortbySelector-module__sort-by-container\",\"sortButton\":\"app-react-portainer-HomeView-EnvironmentList-SortbySelector-module__sort-button\",\"sortByElement\":\"app-react-portainer-HomeView-EnvironmentList-SortbySelector-module__sort-by-element\"};","import clsx from 'clsx';\n\nimport { Option, PortainerSelect } from '@@/form-components/PortainerSelect';\nimport { TableHeaderSortIcons } from '@@/datatables/TableHeaderSortIcons';\n\nimport { SortType } from '../../environments/queries/useEnvironmentList';\n\nimport styles from './SortbySelector.module.css';\n\ninterface Props {\n filterOptions: Option<SortType>[];\n onChange: (value: SortType) => void;\n onDescending: () => void;\n placeHolder: string;\n sortByDescending: boolean;\n sortByButton: boolean;\n value?: SortType;\n}\n\nexport function SortbySelector({\n filterOptions,\n onChange,\n onDescending,\n placeHolder,\n sortByDescending,\n sortByButton,\n value,\n}: Props) {\n const sorted = sortByButton && !!value;\n return (\n <div className=\"flex items-center justify-end gap-1\">\n <PortainerSelect\n placeholder={placeHolder}\n options={filterOptions}\n onChange={(option: SortType) => onChange(option || '')}\n isClearable\n value={value}\n />\n\n <button\n className={clsx(styles.sortButton, '!m-0 h-[34px]')}\n type=\"button\"\n disabled={!sorted}\n onClick={(e) => {\n e.preventDefault();\n onDescending();\n }}\n >\n <TableHeaderSortIcons sorted={sorted} descending={sortByDescending} />\n </button>\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"actionBar\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__actionBar\",\"description\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__description\",\"refreshEnvironmentsButton\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__refresh-environments-button\",\"filterContainer\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__filter-container\",\"filterLeft\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__filter-left\",\"filterRight\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__filter-right\",\"filterButton\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__filter-button\",\"clearButton\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__clear-button\",\"actionButton\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__action-button\",\"kubeconfigButton\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__kubeconfig-button\",\"refreshButton\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__refresh-button\",\"filterSearchbar\":\"app-react-portainer-HomeView-EnvironmentList-EnvironmentList-module__filterSearchbar\"};","import _ from 'lodash';\n\nimport { useTags } from '@/portainer/tags/queries';\n\nimport { useAgentVersionsList } from '../../environments/queries/useAgentVersionsList';\nimport { EnvironmentStatus, PlatformType } from '../../environments/types';\nimport { isBE } from '../../feature-flags/feature-flags.service';\nimport { useGroups } from '../../environments/environment-groups/queries';\nimport {\n SortOptions,\n SortType,\n} from '../../environments/queries/useEnvironmentList';\n\nimport { HomepageFilter } from './HomepageFilter';\nimport { SortbySelector } from './SortbySelector';\nimport { ConnectionType } from './types';\nimport styles from './EnvironmentList.module.css';\n\nconst status = [\n { value: EnvironmentStatus.Up, label: 'Up' },\n { value: EnvironmentStatus.Down, label: 'Down' },\n];\n\nconst sortByOptions = SortOptions.map((v) => ({\n value: v,\n label: v,\n}));\n\nexport function EnvironmentListFilters({\n agentVersions,\n clearFilter,\n connectionTypes,\n groupOnChange,\n groupState,\n platformTypes,\n setAgentVersions,\n setConnectionTypes,\n setPlatformTypes,\n sortByButton,\n sortByDescending,\n sortByState,\n sortOnDescending,\n sortOnChange,\n statusOnChange,\n statusState,\n tagOnChange,\n tagState,\n}: {\n platformTypes: PlatformType[];\n setPlatformTypes: (value: PlatformType[]) => void;\n\n connectionTypes: ConnectionType[];\n setConnectionTypes: (value: ConnectionType[]) => void;\n\n statusState: number[];\n statusOnChange: (value: number[]) => void;\n\n tagOnChange: (value: number[]) => void;\n tagState: number[];\n\n groupOnChange: (value: number[]) => void;\n groupState: number[];\n\n setAgentVersions: (value: string[]) => void;\n agentVersions: string[];\n\n sortByState?: SortType;\n sortOnChange: (value: SortType) => void;\n\n sortOnDescending: () => void;\n sortByDescending: boolean;\n\n sortByButton: boolean;\n\n clearFilter: () => void;\n}) {\n const agentVersionsQuery = useAgentVersionsList();\n const connectionTypeOptions = getConnectionTypeOptions(platformTypes);\n const platformTypeOptions = getPlatformTypeOptions(connectionTypes);\n\n const groupsQuery = useGroups();\n const groupOptions = [...(groupsQuery.data || [])];\n const uniqueGroup = [\n ...new Map(groupOptions.map((item) => [item.Id, item])).values(),\n ].map(({ Id: value, Name: label }) => ({\n value,\n label,\n }));\n\n const tagsQuery = useTags();\n const tagOptions = [...(tagsQuery.data || [])];\n const uniqueTag = [\n ...new Map(tagOptions.map((item) => [item.ID, item])).values(),\n ].map(({ ID: value, Name: label }) => ({\n value,\n label,\n }));\n\n return (\n <div className=\"flex gap-2\">\n <div className={styles.filterLeft}>\n <HomepageFilter\n filterOptions={platformTypeOptions}\n onChange={setPlatformTypes}\n placeHolder=\"Platform\"\n value={platformTypes}\n />\n </div>\n <div className={styles.filterLeft}>\n <HomepageFilter\n filterOptions={connectionTypeOptions}\n onChange={setConnectionTypes}\n placeHolder=\"Connection Type\"\n value={connectionTypes}\n />\n </div>\n <div className={styles.filterLeft}>\n <HomepageFilter\n filterOptions={status}\n onChange={statusOnChange}\n placeHolder=\"Status\"\n value={statusState}\n />\n </div>\n <div className={styles.filterLeft}>\n <HomepageFilter\n filterOptions={uniqueTag}\n onChange={tagOnChange}\n placeHolder=\"Tags\"\n value={tagState}\n />\n </div>\n <div className={styles.filterLeft}>\n <HomepageFilter\n filterOptions={uniqueGroup}\n onChange={groupOnChange}\n placeHolder=\"Groups\"\n value={groupState}\n />\n </div>\n <div className={styles.filterLeft}>\n <HomepageFilter\n filterOptions={\n agentVersionsQuery.data?.map((v) => ({\n label: v,\n value: v,\n })) || []\n }\n onChange={setAgentVersions}\n placeHolder=\"Agent Version\"\n value={agentVersions}\n />\n </div>\n <button\n type=\"button\"\n className={styles.clearButton}\n onClick={clearFilter}\n >\n Clear all\n </button>\n\n <div className={styles.filterRight}>\n <SortbySelector\n filterOptions={sortByOptions}\n onChange={sortOnChange}\n onDescending={sortOnDescending}\n placeHolder=\"Sort By\"\n sortByDescending={sortByDescending}\n sortByButton={sortByButton}\n value={sortByState}\n />\n </div>\n </div>\n );\n}\n\nfunction getConnectionTypeOptions(platformTypes: PlatformType[]) {\n const platformTypeConnectionType = {\n [PlatformType.Docker]: [\n ConnectionType.API,\n ConnectionType.Agent,\n ConnectionType.EdgeAgentStandard,\n ConnectionType.EdgeAgentAsync,\n ],\n [PlatformType.Azure]: [ConnectionType.API],\n [PlatformType.Kubernetes]: [\n ConnectionType.Agent,\n ConnectionType.EdgeAgentStandard,\n ConnectionType.EdgeAgentAsync,\n ],\n [PlatformType.Nomad]: [\n ConnectionType.EdgeAgentStandard,\n ConnectionType.EdgeAgentAsync,\n ],\n };\n\n const connectionTypesDefaultOptions = [\n { value: ConnectionType.API, label: 'API' },\n { value: ConnectionType.Agent, label: 'Agent' },\n { value: ConnectionType.EdgeAgentStandard, label: 'Edge Agent Standard' },\n { value: ConnectionType.EdgeAgentAsync, label: 'Edge Agent Async' },\n ];\n\n if (platformTypes.length === 0) {\n return connectionTypesDefaultOptions;\n }\n\n return _.compact(\n _.intersection(\n ...platformTypes.map((p) => platformTypeConnectionType[p])\n ).map((c) => connectionTypesDefaultOptions.find((o) => o.value === c))\n );\n}\n\nfunction getPlatformTypeOptions(connectionTypes: ConnectionType[]) {\n const platformDefaultOptions = [\n { value: PlatformType.Docker, label: 'Docker' },\n { value: PlatformType.Azure, label: 'Azure' },\n { value: PlatformType.Kubernetes, label: 'Kubernetes' },\n ];\n\n if (isBE) {\n platformDefaultOptions.push({\n value: PlatformType.Nomad,\n label: 'Nomad',\n });\n }\n\n if (connectionTypes.length === 0) {\n return platformDefaultOptions;\n }\n\n const connectionTypePlatformType = {\n [ConnectionType.API]: [PlatformType.Docker, PlatformType.Azure],\n [ConnectionType.Agent]: [PlatformType.Docker, PlatformType.Kubernetes],\n [ConnectionType.EdgeAgentStandard]: [\n PlatformType.Kubernetes,\n PlatformType.Nomad,\n PlatformType.Docker,\n ],\n [ConnectionType.EdgeAgentAsync]: [\n PlatformType.Nomad,\n PlatformType.Docker,\n PlatformType.Kubernetes,\n ],\n };\n\n return _.compact(\n _.intersection(\n ...connectionTypes.map((p) => connectionTypePlatformType[p])\n ).map((c) => platformDefaultOptions.find((o) => o.value === c))\n );\n}\n","import { useQuery } from 'react-query';\n\nimport { getAgentVersions } from '../environment.service';\n\nimport { queryKeys } from './query-keys';\n\nexport function useAgentVersionsList() {\n return useQuery([...queryKeys.base(), 'agentVersions'], () =>\n getAgentVersions()\n );\n}\n","import { useMutation } from 'react-query';\n\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport { mutationOptions, withError } from '@/react-tools/react-query';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nexport function useActivateDevicesMutation() {\n return useMutation(\n (environmentIds: EnvironmentId[]) =>\n promiseSequence(environmentIds.map((id) => () => activateDevice(id))),\n mutationOptions(withError('Unable to associate with OpenAMT'))\n );\n}\n\nasync function activateDevice(environmentId: EnvironmentId) {\n try {\n await axios.post(`/open_amt/${environmentId}/activate`);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to activate device');\n }\n}\n","import { useState } from 'react';\nimport clsx from 'clsx';\n\nimport { useActivateDevicesMutation } from '@/react/edge/edge-devices/open-amt/useActivateDevicesMutation';\nimport { usePaginationLimitState } from '@/react/hooks/usePaginationLimitState';\nimport { Query } from '@/react/portainer/environments/queries/useEnvironmentList';\nimport { EdgeTypes, Environment } from '@/react/portainer/environments/types';\nimport { useEnvironmentList } from '@/react/portainer/environments/queries';\nimport { useListSelection } from '@/react/hooks/useListSelection';\n\nimport { Checkbox } from '@@/form-components/Checkbox';\nimport { Modal } from '@@/modals/Modal';\nimport { PaginationControls } from '@@/PaginationControls';\nimport { Button, LoadingButton } from '@@/buttons';\n\ninterface Props {\n envQueryParams: Query;\n onClose: () => void;\n selectedItems: Array<Environment['Id']>;\n}\n\nconst storageKey = 'home_endpoints';\n\nexport function AssociateAMTDialog({\n selectedItems,\n onClose,\n envQueryParams,\n}: Props) {\n const activateDeviceMutation = useActivateDevicesMutation();\n const [page, setPage] = useState(1);\n const [pageLimit, setPageLimit] = usePaginationLimitState(storageKey);\n\n const [selection, toggleSelection] =\n useListSelection<Environment['Id']>(selectedItems);\n\n const { environments, totalCount, isLoading } = useEnvironmentList({\n ...envQueryParams,\n page,\n pageLimit,\n types: EdgeTypes,\n });\n const isAllPageSelected =\n !isLoading && environments.every((env) => selection.includes(env.Id));\n\n return (\n <Modal onDismiss={onClose} aria-label=\"Associate with OpenAMT\">\n <Modal.Header title=\"Associate with OpenAMT\" />\n <Modal.Body>\n <span>\n Select the environments to add to associate to OpenAMT. You may select\n across multiple pages.\n </span>\n <div className=\"flex h-8 items-center\">\n <Checkbox\n id=\"settings-container-truncate-name\"\n label=\"Select all (in this page)\"\n checked={isAllPageSelected}\n onChange={handleSelectAll}\n />\n </div>\n <div className=\"datatable\">\n <div className=\"bootbox-checkbox-list\">\n {environments.map((env) => (\n <div\n key={env.Id}\n className={clsx('flex h-8 items-center pt-1 pl-2')}\n >\n <Checkbox\n id={`${env.Id}`}\n label={`${env.Name} (${env.URL})`}\n checked={selection.includes(env.Id)}\n onChange={() =>\n toggleSelection(env.Id, !selection.includes(env.Id))\n }\n />\n </div>\n ))}\n </div>\n <div className=\"flex w-full justify-end pt-3\">\n <PaginationControls\n showAll={totalCount <= 100}\n page={page}\n onPageChange={setPage}\n pageLimit={pageLimit}\n onPageLimitChange={setPageLimit}\n pageCount={Math.ceil(totalCount / pageLimit)}\n />\n </div>\n </div>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} color=\"default\">\n Cancel\n </Button>\n <LoadingButton\n onClick={handleSubmit}\n disabled={selection.length === 0}\n loadingText=\"Associating...\"\n isLoading={activateDeviceMutation.isLoading}\n >\n Associate Devices\n </LoadingButton>\n </Modal.Footer>\n </Modal>\n );\n\n function handleSelectAll() {\n environments.forEach((env) => toggleSelection(env.Id, !isAllPageSelected));\n }\n\n function handleSubmit() {\n activateDeviceMutation.mutate(selection, {\n onSuccess() {\n onClose();\n },\n });\n }\n}\n","import { Link } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\nimport { Query } from '@/react/portainer/environments/queries/useEnvironmentList';\nimport { isEdgeEnvironment } from '@/react/portainer/environments/utils';\n\nimport { Button } from '@@/buttons';\n\nimport { AssociateAMTDialog } from './AssociateAMTDialog';\n\nexport function AMTButton({\n environments,\n envQueryParams,\n}: {\n environments: Environment[];\n envQueryParams: Query;\n}) {\n const [isOpenDialog, setOpenDialog] = useState(false);\n const isOpenAmtEnabledQuery = usePublicSettings({\n select: (settings) =>\n settings.EnableEdgeComputeFeatures && settings.IsAMTEnabled,\n });\n\n const isOpenAMTEnabled = !!isOpenAmtEnabledQuery.data;\n\n if (!isOpenAMTEnabled) {\n return null;\n }\n\n const edgeEnvironments = environments.filter((env) =>\n isEdgeEnvironment(env.Type)\n );\n\n return (\n <>\n <Button onClick={openDialog} icon={Link} color=\"light\">\n Associate with OpenAMT\n </Button>\n {isOpenDialog && (\n <AssociateAMTDialog\n selectedItems={edgeEnvironments.map((env) => env.Id)}\n onClose={() => setOpenDialog(false)}\n envQueryParams={envQueryParams}\n />\n )}\n </>\n );\n\n function openDialog() {\n setOpenDialog(true);\n }\n}\n","import { ReactNode, useEffect, useState } from 'react';\nimport { HardDrive, RefreshCcw } from 'lucide-react';\nimport _ from 'lodash';\nimport { useStore } from 'zustand';\n\nimport { usePaginationLimitState } from '@/react/hooks/usePaginationLimitState';\nimport {\n Environment,\n EnvironmentType,\n EnvironmentStatus,\n PlatformType,\n EdgeTypes,\n} from '@/react/portainer/environments/types';\nimport { EnvironmentGroupId } from '@/react/portainer/environments/environment-groups/types';\nimport {\n refetchIfAnyOffline,\n SortType,\n useEnvironmentList,\n} from '@/react/portainer/environments/queries/useEnvironmentList';\nimport { useGroups } from '@/react/portainer/environments/environment-groups/queries';\nimport { EnvironmentsQueryParams } from '@/react/portainer/environments/environment.service';\nimport { useUser } from '@/react/hooks/useUser';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { environmentStore } from '@/react/hooks/current-environment-store';\n\nimport { TableFooter } from '@@/datatables/TableFooter';\nimport { TableContainer, TableTitle } from '@@/datatables';\nimport { Button } from '@@/buttons';\nimport { PaginationControls } from '@@/PaginationControls';\nimport { SearchBar, useSearchBarState } from '@@/datatables/SearchBar';\n\nimport { useHomePageFilter } from './HomepageFilter';\nimport { ConnectionType } from './types';\nimport { EnvironmentItem } from './EnvironmentItem';\nimport { KubeconfigButton } from './KubeconfigButton';\nimport { NoEnvironmentsInfoPanel } from './NoEnvironmentsInfoPanel';\nimport { UpdateBadge } from './UpdateBadge';\nimport { EnvironmentListFilters } from './EnvironmentListFilters';\nimport { AMTButton } from './AMTButton/AMTButton';\n\ninterface Props {\n onClickBrowse(environment: Environment): void;\n onRefresh(): void;\n}\n\nconst storageKey = 'home_endpoints';\n\nexport function EnvironmentList({ onClickBrowse, onRefresh }: Props) {\n const { isAdmin } = useUser();\n const currentEnvStore = useStore(environmentStore);\n\n const [platformTypes, setPlatformTypes] = useHomePageFilter<PlatformType[]>(\n 'platformType',\n []\n );\n const [searchBarValue, setSearchBarValue] = useSearchBarState(storageKey);\n const [pageLimit, setPageLimit] = usePaginationLimitState(storageKey);\n const [page, setPage] = useState(1);\n\n const [connectionTypes, setConnectionTypes] = useHomePageFilter<\n ConnectionType[]\n >('connectionTypes', []);\n\n const [statusFilter, setStatusFilter] = useHomePageFilter<\n EnvironmentStatus[]\n >('status', []);\n const [tagFilter, setTagFilter] = useHomePageFilter<number[]>('tag', []);\n const [groupFilter, setGroupFilter] = useHomePageFilter<EnvironmentGroupId[]>(\n 'group',\n []\n );\n const [sortByFilter, setSortByFilter] = useHomePageFilter<\n SortType | undefined\n >('sortBy', undefined);\n const [sortByDescending, setSortByDescending] = useHomePageFilter(\n 'sortOrder',\n false\n );\n const [sortByButton, setSortByButton] = useHomePageFilter(\n 'sortByButton',\n false\n );\n\n const [statusState, setStatusState] = useHomePageFilter<number[]>(\n 'status_state',\n []\n );\n const [tagState, setTagState] = useHomePageFilter<number[]>('tag_state', []);\n const [groupState, setGroupState] = useHomePageFilter<number[]>(\n 'group_state',\n []\n );\n\n const [agentVersions, setAgentVersions] = useHomePageFilter<string[]>(\n 'agentVersions',\n []\n );\n\n const groupsQuery = useGroups();\n\n const environmentsQueryParams: EnvironmentsQueryParams = {\n types: getTypes(platformTypes, connectionTypes),\n search: searchBarValue,\n status: statusFilter,\n tagIds: tagFilter?.length ? tagFilter : undefined,\n groupIds: groupFilter,\n provisioned: true,\n tagsPartialMatch: true,\n agentVersions,\n updateInformation: isBE,\n edgeAsync: getEdgeAsyncValue(connectionTypes),\n };\n\n const queryWithSort = {\n ...environmentsQueryParams,\n sort: sortByFilter,\n order: sortByDescending ? 'desc' : ('asc' as 'desc' | 'asc'),\n };\n\n const {\n isLoading,\n environments,\n totalCount,\n totalAvailable,\n updateAvailable,\n } = useEnvironmentList(\n {\n page,\n pageLimit,\n ...queryWithSort,\n },\n { refetchInterval: refetchIfAnyOffline }\n );\n\n useEffect(() => {\n setPage(1);\n }, [searchBarValue]);\n\n return (\n <>\n {totalAvailable === 0 && <NoEnvironmentsInfoPanel isAdmin={isAdmin} />}\n\n <TableContainer>\n <div className=\"px-4\">\n <TableTitle\n className=\"!px-0\"\n icon={HardDrive}\n label=\"Environments\"\n description={\n <div className=\"w-full text-sm text-gray-7\">\n Click on an environment to manage\n </div>\n }\n >\n <div className=\"flex items-center gap-4\">\n <SearchBar\n className=\"!m-0 !min-w-[350px] !bg-transparent\"\n value={searchBarValue}\n onChange={setSearchBarValue}\n placeholder=\"Search by name, group, tag, status, URL...\"\n data-cy=\"home-endpointsSearchInput\"\n />\n {isAdmin && (\n <Button\n onClick={onRefresh}\n data-cy=\"home-refreshEndpointsButton\"\n size=\"medium\"\n color=\"light\"\n icon={RefreshCcw}\n className=\"!m-0\"\n >\n Refresh\n </Button>\n )}\n <KubeconfigButton\n environments={environments}\n envQueryParams={queryWithSort}\n />\n\n <AMTButton\n environments={environments}\n envQueryParams={queryWithSort}\n />\n\n {updateAvailable && <UpdateBadge />}\n </div>\n </TableTitle>\n <div className=\"-mt-3\">\n <EnvironmentListFilters\n setPlatformTypes={setPlatformTypes}\n platformTypes={platformTypes}\n setConnectionTypes={setConnectionTypes}\n connectionTypes={connectionTypes}\n statusOnChange={statusOnChange}\n statusState={statusState}\n tagOnChange={tagOnChange}\n tagState={tagState}\n groupOnChange={groupOnChange}\n groupState={groupState}\n setAgentVersions={setAgentVersions}\n agentVersions={agentVersions}\n clearFilter={clearFilter}\n sortOnChange={sortOnchange}\n sortOnDescending={sortOnDescending}\n sortByDescending={sortByDescending}\n sortByButton={sortByButton}\n sortByState={sortByFilter}\n />\n </div>\n <div\n className=\"blocklist mt-5 !space-y-2 !p-0\"\n data-cy=\"home-endpointList\"\n >\n {renderItems(\n isLoading,\n totalCount,\n environments.map((env) => (\n <EnvironmentItem\n key={env.Id}\n environment={env}\n groupName={\n groupsQuery.data?.find((g) => g.Id === env.GroupId)?.Name\n }\n onClickBrowse={() => onClickBrowse(env)}\n onClickDisconnect={() =>\n env.Id === currentEnvStore.environmentId\n ? currentEnvStore.clear()\n : null\n }\n isActive={env.Id === currentEnvStore.environmentId}\n />\n ))\n )}\n </div>\n <TableFooter className=\"!border-t-0\">\n <PaginationControls\n className=\"!mr-0\"\n showAll={totalCount <= 100}\n pageLimit={pageLimit}\n page={page}\n onPageChange={setPage}\n pageCount={Math.ceil(totalCount / pageLimit)}\n onPageLimitChange={setPageLimit}\n />\n </TableFooter>\n </div>\n </TableContainer>\n </>\n );\n\n function getTypes(\n platformTypes: PlatformType[],\n connectionTypes: ConnectionType[]\n ) {\n if (platformTypes.length === 0 && connectionTypes.length === 0) {\n return [];\n }\n\n const typesByPlatform = {\n [PlatformType.Docker]: [\n EnvironmentType.Docker,\n EnvironmentType.AgentOnDocker,\n EnvironmentType.EdgeAgentOnDocker,\n ],\n [PlatformType.Azure]: [EnvironmentType.Azure],\n [PlatformType.Kubernetes]: [\n EnvironmentType.KubernetesLocal,\n EnvironmentType.AgentOnKubernetes,\n EnvironmentType.EdgeAgentOnKubernetes,\n ],\n [PlatformType.Nomad]: [EnvironmentType.EdgeAgentOnNomad],\n };\n\n const typesByConnection = {\n [ConnectionType.API]: [\n EnvironmentType.Azure,\n EnvironmentType.KubernetesLocal,\n EnvironmentType.Docker,\n ],\n [ConnectionType.Agent]: [\n EnvironmentType.AgentOnDocker,\n EnvironmentType.AgentOnKubernetes,\n ],\n [ConnectionType.EdgeAgentStandard]: EdgeTypes,\n [ConnectionType.EdgeAgentAsync]: EdgeTypes,\n };\n\n const selectedTypesByPlatform = platformTypes.flatMap(\n (platformType) => typesByPlatform[platformType]\n );\n const selectedTypesByConnection = connectionTypes.flatMap(\n (connectionType) => typesByConnection[connectionType]\n );\n\n if (selectedTypesByPlatform.length === 0) {\n return selectedTypesByConnection;\n }\n\n if (selectedTypesByConnection.length === 0) {\n return selectedTypesByPlatform;\n }\n\n return _.intersection(selectedTypesByConnection, selectedTypesByPlatform);\n }\n\n function statusOnChange(value: number[]) {\n setStatusState(value);\n if (value.length === 0) {\n setStatusFilter([]);\n } else {\n const filteredStatus = [...new Set(value)];\n setStatusFilter(filteredStatus);\n }\n }\n\n function groupOnChange(value: number[]) {\n setGroupState(value);\n if (value.length === 0) {\n setGroupFilter([]);\n } else {\n const filteredGroups = [...new Set(value)];\n setGroupFilter(filteredGroups);\n }\n }\n\n function tagOnChange(value: number[]) {\n setTagState(value);\n if (value.length === 0) {\n setTagFilter([]);\n } else {\n const filteredTags = [...new Set(value)];\n setTagFilter(filteredTags);\n }\n }\n\n function clearFilter() {\n setPlatformTypes([]);\n setStatusState([]);\n setStatusFilter([]);\n setTagState([]);\n setTagFilter([]);\n setGroupState([]);\n setGroupFilter([]);\n setAgentVersions([]);\n setConnectionTypes([]);\n }\n\n function sortOnchange(value?: 'Name' | 'Group' | 'Status') {\n setSortByFilter(value);\n setSortByButton(!!value);\n }\n\n function sortOnDescending() {\n setSortByDescending(!sortByDescending);\n }\n}\n\nfunction renderItems(\n isLoading: boolean,\n totalCount: number,\n\n items: ReactNode\n) {\n if (isLoading) {\n return (\n <div className=\"text-muted text-center\" data-cy=\"home-loadingEndpoints\">\n Loading...\n </div>\n );\n }\n\n if (!totalCount) {\n return (\n <div className=\"text-muted text-center\" data-cy=\"home-noEndpoints\">\n No environments available.\n </div>\n );\n }\n\n return items;\n}\n\nfunction getEdgeAsyncValue(connectionTypes: ConnectionType[]) {\n const hasEdgeAsync = connectionTypes.some(\n (connectionType) => connectionType === ConnectionType.EdgeAgentAsync\n );\n\n const hasEdgeStandard = connectionTypes.some(\n (connectionType) => connectionType === ConnectionType.EdgeAgentStandard\n );\n\n // If both are selected, we don't want to filter on either, and same for if both are not selected\n if (hasEdgeAsync === hasEdgeStandard) {\n return undefined;\n }\n\n return hasEdgeAsync;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-portainer-HomeView-EdgeLoadingSpinner-module__root\"};","import clsx from 'clsx';\nimport { Settings } from 'lucide-react';\n\nimport { Icon } from '@@/Icon';\n\nimport styles from './EdgeLoadingSpinner.module.css';\n\nexport function EdgeLoadingSpinner() {\n return (\n <div className={clsx('row', styles.root)}>\n Connecting to the Edge environment...\n <Icon icon={Settings} className=\"!ml-1 animate-spin-slow\" />\n </div>\n );\n}\n","import create from 'zustand';\nimport { persist } from 'zustand/middleware';\n\nimport { keyBuilder } from '@/react/hooks/useLocalStorage';\n\ninterface UIState {\n dismissedInfoPanels: Record<string, boolean>;\n dismissInfoPanel(id: string): void;\n\n dismissedInfoHash: string;\n dismissMotd(hash: string): void;\n\n dismissedUpdateVersion: string;\n dismissUpdateVersion(version: string): void;\n}\n\nexport const useUIState = create<UIState>()(\n persist(\n (set) => ({\n dismissedInfoPanels: {},\n dismissInfoPanel(id: string) {\n set((state) => ({\n dismissedInfoPanels: { ...state.dismissedInfoPanels, [id]: true },\n }));\n },\n dismissedInfoHash: '',\n dismissMotd(hash: string) {\n set({ dismissedInfoHash: hash });\n },\n dismissedUpdateVersion: '',\n dismissUpdateVersion(version: string) {\n set({ dismissedUpdateVersion: version });\n },\n }),\n { name: keyBuilder('NEW_UI_STATE') }\n )\n);\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { Motd } from './types';\n\nexport async function getMotd() {\n try {\n const { data } = await axios.get<Motd>('/motd');\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Unable to retrieve information message'\n );\n }\n}\n","import { useQuery } from 'react-query';\nimport _ from 'lodash';\n\nimport { useUIState } from '@/react/hooks/useUIState';\n\nimport { InformationPanel } from '@@/InformationPanel';\n\nimport { getMotd } from './home.service';\n\nexport function MotdPanel() {\n const motd = useMotd();\n\n const uiStateStore = useUIState();\n\n if (\n !motd ||\n motd.Message === '' ||\n motd.Hash === uiStateStore.dismissedInfoHash\n ) {\n return null;\n }\n\n return (\n <>\n {!!motd.Style && <style>{motd.Style}</style>}\n <InformationPanel\n onDismiss={() => onDismiss(motd.Hash)}\n title={motd.Title}\n wrapperStyle={camelCaseKeys(motd.ContentLayout)}\n bodyClassName=\"motd-body\"\n >\n <span className=\"text-muted\">\n {/* eslint-disable-next-line react/no-danger */}\n <p dangerouslySetInnerHTML={{ __html: motd.Message }} />\n </span>\n </InformationPanel>\n </>\n );\n\n function onDismiss(hash: string) {\n uiStateStore.dismissMotd(hash);\n }\n}\n\nfunction useMotd() {\n const { data } = useQuery('motd', () => getMotd());\n return data;\n}\n\nfunction camelCaseKeys(obj: Record<string, string> = {}) {\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const camelCased = _.camelCase(key);\n return [camelCased, value];\n })\n );\n}\n","import { useCurrentStateAndParams, useRouter } from '@uirouter/react';\nimport { useEffect, useState } from 'react';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { snapshotEndpoints } from '@/react/portainer/environments/environment.service';\nimport { isEdgeEnvironment } from '@/react/portainer/environments/utils';\nimport * as notifications from '@/portainer/services/notifications';\n\nimport { confirm } from '@@/modals/confirm';\nimport { PageHeader } from '@@/PageHeader';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nimport { EnvironmentList } from './EnvironmentList';\nimport { EdgeLoadingSpinner } from './EdgeLoadingSpinner';\nimport { MotdPanel } from './MotdPanel';\nimport { LicenseNodePanel } from './LicenseNodePanel';\nimport { BackupFailedPanel } from './BackupFailedPanel';\n\nexport function HomeView() {\n const { params } = useCurrentStateAndParams();\n const [connectingToEdgeEndpoint, setConnectingToEdgeEndpoint] = useState(\n !!params.redirect\n );\n\n const router = useRouter();\n\n useEffect(() => {\n async function redirect() {\n const options = {\n title: `Failed connecting to ${params.environmentName}`,\n message: `There was an issue connecting to edge agent via tunnel. Click 'Retry' below to retry now, or wait 10 seconds to automatically retry.`,\n confirmButton: buildConfirmButton('Retry', 'primary', 10),\n modalType: ModalType.Destructive,\n };\n\n if (await confirm(options)) {\n setConnectingToEdgeEndpoint(true);\n router.stateService.go(params.route, {\n endpointId: params.environmentId,\n });\n } else {\n router.stateService.go('portainer.home', {}, { inherit: false });\n }\n }\n\n if (params.redirect) {\n redirect();\n }\n }, [params, setConnectingToEdgeEndpoint, router]);\n\n return (\n <>\n <PageHeader\n reload\n title=\"Home\"\n breadcrumbs={[{ label: 'Environments' }]}\n />\n\n {process.env.PORTAINER_EDITION !== 'CE' && <LicenseNodePanel />}\n\n <MotdPanel />\n\n {process.env.PORTAINER_EDITION !== 'CE' && <BackupFailedPanel />}\n\n {connectingToEdgeEndpoint ? (\n <EdgeLoadingSpinner />\n ) : (\n <EnvironmentList\n onClickBrowse={handleBrowseClick}\n onRefresh={confirmTriggerSnapshot}\n />\n )}\n </>\n );\n\n async function confirmTriggerSnapshot() {\n const result = await confirmEndpointSnapshot();\n if (!result) {\n return;\n }\n try {\n await snapshotEndpoints();\n notifications.success('Success', 'Environments updated');\n router.stateService.reload();\n } catch (err) {\n notifications.error(\n 'Failure',\n err as Error,\n 'An error occurred during environment snapshot'\n );\n }\n }\n\n function handleBrowseClick(environment: Environment) {\n if (isEdgeEnvironment(environment.Type)) {\n setConnectingToEdgeEndpoint(true);\n }\n }\n}\n\nasync function confirmEndpointSnapshot() {\n return confirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n message:\n 'Triggering a manual refresh will poll each environment to retrieve its information, this may take a few moments.',\n });\n}\n","import { PropsWithChildren, useEffect, useState } from 'react';\nimport { useRouter } from '@uirouter/react';\nimport { Trans, useTranslation } from 'react-i18next';\n\nimport { Widget, WidgetBody } from '@@/Widget';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Button } from '@@/buttons';\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Code } from '@@/Code';\nimport { CopyButton } from '@@/buttons/CopyButton';\nimport { Input } from '@@/form-components/Input';\n\ninterface AccessTokenResponse {\n rawAPIKey: string;\n}\n\nexport interface Props {\n // onSubmit dispatches a successful matomo analytics event\n onSubmit: (description: string) => Promise<AccessTokenResponse>;\n\n // onError is called when an error occurs; this is a callback to Notifications.error\n onError: (heading: string, err: unknown, message: string) => void;\n}\n\nexport function CreateAccessToken({\n onSubmit,\n onError,\n}: PropsWithChildren<Props>) {\n const translationNS = 'account.accessTokens.create';\n const { t } = useTranslation(translationNS);\n\n const router = useRouter();\n const [description, setDescription] = useState('');\n const [errorText, setErrorText] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [accessToken, setAccessToken] = useState('');\n\n useEffect(() => {\n if (description.length === 0) {\n setErrorText(t('this field is required'));\n } else setErrorText('');\n }, [description, t]);\n\n async function generateAccessToken() {\n if (isLoading) {\n return;\n }\n\n setIsLoading(true);\n try {\n const response = await onSubmit(description);\n setAccessToken(response.rawAPIKey);\n } catch (err) {\n onError('Failure', err, 'Failed to generate access token');\n } finally {\n setIsLoading(false);\n }\n }\n\n return (\n <Widget>\n <WidgetBody>\n <div className=\"form-horizontal\">\n <FormControl\n inputId=\"input\"\n label={t('Description')}\n errors={errorText}\n >\n <Input\n id=\"input\"\n onChange={(e) => setDescription(e.target.value)}\n value={description}\n />\n </FormControl>\n <div className=\"row mt-5\">\n <Button\n disabled={!!errorText || !!accessToken}\n onClick={() => generateAccessToken()}\n >\n {t('Add access token')}\n </Button>\n </div>\n </div>\n {accessToken && (\n <div className=\"mt-5\">\n <FormSectionTitle>\n <Trans ns={translationNS}>New access token</Trans>\n </FormSectionTitle>\n <TextTip>\n <Trans ns={translationNS}>\n Please copy the new access token. You won't be able to view\n the token again.\n </Trans>\n </TextTip>\n <Code>{accessToken}</Code>\n <div className=\"mt-2\">\n <CopyButton copyText={accessToken}>\n <Trans ns={translationNS}>Copy access token</Trans>\n </CopyButton>\n </div>\n <hr />\n <Button\n type=\"button\"\n onClick={() => router.stateService.go('portainer.account')}\n >\n <Trans ns={translationNS}>Done</Trans>\n </Button>\n </div>\n )}\n </WidgetBody>\n </Widget>\n );\n}\n","import { Field, useField } from 'formik';\nimport { string } from 'yup';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { isValidUrl } from '@@/form-components/validate-url';\n\ninterface Props {\n fieldName: string;\n readonly?: boolean;\n required?: boolean;\n tooltip?: string;\n}\n\nexport function PortainerUrlField({\n fieldName,\n readonly,\n required,\n tooltip = 'URL of the Portainer instance that the agent will use to initiate the communications.',\n}: Props) {\n const [, metaProps] = useField(fieldName);\n const id = `${fieldName}-input`;\n\n return (\n <FormControl\n label=\"Portainer API server URL\"\n tooltip={tooltip}\n required\n errors={metaProps.error}\n inputId={id}\n >\n <Field\n id={id}\n name={fieldName}\n as={Input}\n placeholder=\"https://portainer.mydomain.tld\"\n required={required}\n data-cy=\"endpointCreate-portainerServerUrlInput\"\n readOnly={readonly}\n />\n </FormControl>\n );\n}\n\nexport function validation() {\n return string()\n .required('API server URL is required')\n .test(\n 'valid API server URL',\n 'The API server URL must be a valid URL (localhost cannot be used)',\n (value) =>\n isValidUrl(\n value,\n (url) => !!url.hostname && url.hostname !== 'localhost'\n )\n );\n}\n\n/**\n * Returns a URL that can be used as a default value for the Portainer server API URL\n * based on the current window location.\n * Used for Edge Compute.\n *\n */\nexport function buildDefaultValue() {\n return `${window.location.protocol}//${window.location.host}`;\n}\n","import { Field, useField } from 'formik';\nimport { string } from 'yup';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\n\ninterface Props {\n fieldName: string;\n readonly?: boolean;\n required?: boolean;\n}\n\nexport function PortainerTunnelAddrField({\n fieldName,\n readonly,\n required,\n}: Props) {\n const [, metaProps] = useField(fieldName);\n const id = `${fieldName}-input`;\n\n return (\n <FormControl\n label=\"Portainer tunnel server address\"\n tooltip=\"Address of this Portainer instance that will be used by Edge agents to establish a reverse tunnel.\"\n required\n errors={metaProps.error}\n inputId={id}\n >\n <Field\n id={id}\n name={fieldName}\n as={Input}\n placeholder=\"portainer.mydomain.tld\"\n required={required}\n readOnly={readonly}\n />\n </FormControl>\n );\n}\n\nexport function validation() {\n return string()\n .required('Tunnel server address is required')\n .test(\n 'valid tunnel server URL',\n 'The tunnel server address must be a valid address (localhost cannot be used)',\n (value) => {\n if (!value) {\n return false;\n }\n\n return !value.startsWith('localhost');\n }\n );\n}\n\n/**\n * Returns an address that can be used as a default value for the Portainer tunnel server address\n * based on the current window location.\n * Used for Edge Compute.\n *\n */\nexport function buildDefaultValue() {\n return `${window.location.hostname}:8000`;\n}\n","import { Formik, Form } from 'formik';\nimport { Laptop } from 'lucide-react';\n\nimport { Settings } from '@/react/portainer/settings/types';\nimport { PortainerUrlField } from '@/react/portainer/common/PortainerUrlField';\nimport { PortainerTunnelAddrField } from '@/react/portainer/common/PortainerTunnelAddrField';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { Switch } from '@@/form-components/SwitchField/Switch';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { validationSchema } from './EdgeComputeSettings.validation';\nimport { FormValues } from './types';\n\ninterface Props {\n settings?: Settings;\n onSubmit(values: FormValues): void;\n}\n\nexport function EdgeComputeSettings({ settings, onSubmit }: Props) {\n if (!settings) {\n return null;\n }\n\n const initialValues: FormValues = {\n EnableEdgeComputeFeatures: settings.EnableEdgeComputeFeatures,\n EdgePortainerUrl: settings.EdgePortainerUrl,\n Edge: {\n TunnelServerAddress: settings.Edge?.TunnelServerAddress,\n },\n EnforceEdgeID: settings.EnforceEdgeID,\n };\n\n return (\n <div className=\"row\">\n <Widget>\n <WidgetTitle icon={Laptop} title=\"Edge Compute settings\" />\n\n <WidgetBody>\n <Formik\n initialValues={initialValues}\n enableReinitialize\n validationSchema={() => validationSchema()}\n onSubmit={onSubmit}\n validateOnMount\n >\n {({\n values,\n errors,\n handleSubmit,\n setFieldValue,\n isSubmitting,\n isValid,\n dirty,\n }) => (\n <Form\n className=\"form-horizontal\"\n onSubmit={handleSubmit}\n noValidate\n >\n <FormControl\n inputId=\"edge_enable\"\n label=\"Enable Edge Compute features\"\n size=\"small\"\n errors={errors.EnableEdgeComputeFeatures}\n >\n <Switch\n id=\"edge_enable\"\n name=\"edge_enable\"\n className=\"space-right\"\n checked={values.EnableEdgeComputeFeatures}\n onChange={(e) =>\n setFieldValue('EnableEdgeComputeFeatures', e)\n }\n />\n </FormControl>\n\n <TextTip color=\"blue\" className=\"mb-2\">\n Enable this setting to use Portainer Edge Compute\n capabilities.\n </TextTip>\n\n {isBE && values.EnableEdgeComputeFeatures && (\n <>\n <PortainerUrlField\n fieldName=\"EdgePortainerUrl\"\n tooltip=\"URL of this Portainer instance that will be used by Edge agents to initiate the communications.\"\n />\n\n <PortainerTunnelAddrField fieldName=\"Edge.TunnelServerAddress\" />\n </>\n )}\n\n <FormControl\n inputId=\"edge_enforce_id\"\n label=\"Enforce use of Portainer generated Edge ID\"\n size=\"small\"\n tooltip=\"This setting only applies to manually created environments.\"\n errors={errors.EnforceEdgeID}\n >\n <Switch\n id=\"edge_enforce_id\"\n name=\"edge_enforce_id\"\n className=\"space-right\"\n checked={values.EnforceEdgeID}\n onChange={(e) =>\n setFieldValue('EnforceEdgeID', e.valueOf())\n }\n />\n </FormControl>\n\n <div className=\"form-group mt-5\">\n <div className=\"col-sm-12\">\n <LoadingButton\n disabled={!isValid || !dirty}\n data-cy=\"settings-edgeComputeButton\"\n isLoading={isSubmitting}\n loadingText=\"Saving settings...\"\n >\n Save settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n </WidgetBody>\n </Widget>\n </div>\n );\n}\n","import { boolean, object, SchemaOf, string } from 'yup';\n\nimport { validation as tunnelValidation } from '@/react/portainer/common/PortainerTunnelAddrField';\nimport { validation as urlValidation } from '@/react/portainer/common/PortainerUrlField';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { FormValues } from './types';\n\nexport function validationSchema(): SchemaOf<FormValues> {\n return object()\n .shape({\n EnableEdgeComputeFeatures: boolean().required('This field is required.'),\n EnforceEdgeID: boolean().required('This field is required.'),\n })\n .concat(\n isBE\n ? object({\n EdgePortainerUrl: urlValidation(),\n Edge: object({\n TunnelServerAddress: tunnelValidation(),\n }),\n })\n : object({\n EdgePortainerUrl: string().default(''),\n Edge: object({\n TunnelServerAddress: string().default(''),\n }),\n })\n );\n}\n","import { Form, Formik } from 'formik';\nimport { useReducer } from 'react';\nimport { Laptop } from 'lucide-react';\n\nimport { EdgeCheckinIntervalField } from '@/react/edge/components/EdgeCheckInIntervalField';\nimport { EdgeAsyncIntervalsForm } from '@/react/edge/components/EdgeAsyncIntervalsForm';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { useSettings, useUpdateSettingsMutation } from '../../queries';\n\nimport { FormValues } from './types';\n\nconst asyncIntervalFieldSettings = {\n ping: {\n label: 'Edge agent default ping frequency',\n tooltip:\n 'Interval used by default by each Edge agent to ping the Portainer instance. Affects Edge environment management and Edge compute features.',\n },\n snapshot: {\n label: 'Edge agent default snapshot frequency',\n tooltip:\n 'Interval used by default by each Edge agent to snapshot the agent state.',\n },\n command: {\n label: 'Edge agent default command frequency',\n tooltip: 'Interval used by default by each Edge agent to execute commands.',\n },\n};\n\nexport function DeploymentSyncOptions() {\n const settingsQuery = useSettings();\n const settingsMutation = useUpdateSettingsMutation();\n const [formKey, resetForm] = useReducer((state) => state + 1, 0);\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const initialValues: FormValues = {\n Edge: {\n CommandInterval: settingsQuery.data.Edge.CommandInterval,\n PingInterval: settingsQuery.data.Edge.PingInterval,\n SnapshotInterval: settingsQuery.data.Edge.SnapshotInterval,\n },\n EdgeAgentCheckinInterval: settingsQuery.data.EdgeAgentCheckinInterval,\n };\n\n return (\n <div className=\"row\">\n <Widget>\n <WidgetTitle icon={Laptop} title=\"Deployment sync options\" />\n <WidgetBody>\n <Formik<FormValues>\n initialValues={initialValues}\n onSubmit={handleSubmit}\n key={formKey}\n >\n {({ setFieldValue, values, isValid, dirty }) => (\n <Form className=\"form-horizontal\">\n <TextTip color=\"blue\">\n Default values set here will be available to choose as an\n option for edge environment creation\n </TextTip>\n\n <FormSection title=\"Check-in Intervals\">\n <EdgeCheckinIntervalField\n value={values.EdgeAgentCheckinInterval}\n onChange={(value) =>\n setFieldValue('EdgeAgentCheckinInterval', value)\n }\n isDefaultHidden\n label=\"Edge agent default poll frequency\"\n tooltip=\"Interval used by default by each Edge agent to check in with the Portainer instance. Affects Edge environment management and Edge compute features.\"\n />\n </FormSection>\n\n {isBE && (\n <FormSection title=\"Async Check-in Intervals\">\n <EdgeAsyncIntervalsForm\n values={values.Edge}\n onChange={(value) => setFieldValue('Edge', value)}\n isDefaultHidden\n fieldSettings={asyncIntervalFieldSettings}\n />\n </FormSection>\n )}\n\n <div className=\"form-group mt-5\">\n <div className=\"col-sm-12\">\n <LoadingButton\n disabled={!isValid || !dirty}\n className=\"!ml-0\"\n data-cy=\"settings-deploySyncOptionsButton\"\n isLoading={settingsMutation.isLoading}\n loadingText=\"Saving settings...\"\n >\n Save settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n </WidgetBody>\n </Widget>\n </div>\n );\n\n function handleSubmit(values: FormValues) {\n settingsMutation.mutate(\n {\n Edge: values.Edge,\n EdgeAgentCheckinInterval: values.EdgeAgentCheckinInterval,\n },\n {\n onSuccess() {\n notifySuccess('Success', 'Settings updated successfully');\n resetForm();\n },\n }\n );\n }\n}\n","import { useField } from 'formik';\n\nimport { confirm } from '@@/modals/confirm';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Switch } from '@@/form-components/SwitchField/Switch';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { ModalType } from '@@/modals';\n\nexport function EnabledWaitingRoomSwitch() {\n const [inputProps, meta, helpers] = useField<boolean>('EnableWaitingRoom');\n\n return (\n <FormControl\n inputId=\"edge_waiting_room\"\n label=\"Enable Edge Environment Waiting Room\"\n size=\"medium\"\n errors={meta.error}\n >\n <Switch\n id=\"edge_waiting_room\"\n name=\"EnableWaitingRoom\"\n className=\"space-right\"\n checked={inputProps.value}\n onChange={handleChange}\n />\n </FormControl>\n );\n\n async function handleChange(enable: boolean) {\n if (enable) {\n helpers.setValue(true);\n return;\n }\n\n const confirmed = await confirm({\n modalType: ModalType.Warn,\n title: 'Disable Edge Environment Waiting Room',\n message:\n 'By disabling the waiting room feature, all devices requesting association will be automatically associated and could pose a security risk. Are you sure?',\n confirmButton: buildConfirmButton('Confirm', 'danger'),\n });\n\n if (!confirmed) {\n return;\n }\n\n helpers.setValue(false);\n }\n}\n","import { Form, Formik } from 'formik';\nimport * as yup from 'yup';\nimport { useCallback } from 'react';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { useUpdateSettingsMutation } from '@/react/portainer/settings/queries';\nimport { Settings } from '@/react/portainer/settings/types';\n\nimport { LoadingButton } from '@@/buttons/LoadingButton';\n\nimport { EnabledWaitingRoomSwitch } from './EnableWaitingRoomSwitch';\n\ninterface FormValues {\n EnableWaitingRoom: boolean;\n}\nconst validation = yup.object({\n EnableWaitingRoom: yup.boolean(),\n});\n\ninterface Props {\n settings: Settings;\n}\n\nexport function AutoEnvCreationSettingsForm({ settings }: Props) {\n const initialValues: FormValues = {\n EnableWaitingRoom: !settings.TrustOnFirstConnect,\n };\n\n const mutation = useUpdateSettingsMutation();\n\n const { mutate: updateSettings } = mutation;\n\n const handleSubmit = useCallback(\n (variables: Partial<FormValues>) => {\n updateSettings(\n { TrustOnFirstConnect: !variables.EnableWaitingRoom },\n {\n onSuccess() {\n notifySuccess(\n 'Success',\n 'Successfully updated Automatic Environment Creation settings'\n );\n },\n }\n );\n },\n [updateSettings]\n );\n\n return (\n <Formik<FormValues>\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n enableReinitialize\n >\n {({ isValid, dirty }) => (\n <Form className=\"form-horizontal\">\n <EnabledWaitingRoomSwitch />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n loadingText=\"generating...\"\n isLoading={mutation.isLoading}\n disabled={!isValid || !dirty}\n className=\"!ml-0\"\n >\n Save settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n}\n","import { Laptop } from 'lucide-react';\n\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\n\nimport { useSettings } from '../../queries';\n\nimport { AutoEnvCreationSettingsForm } from './AutoEnvCreationSettingsForm';\n\nexport function AutomaticEdgeEnvCreation() {\n const settingsQuery = useSettings();\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const settings = settingsQuery.data;\n\n return (\n <Widget>\n <WidgetTitle icon={Laptop} title=\"Automatic Edge Environment Creation\" />\n <WidgetBody>\n <AutoEnvCreationSettingsForm settings={settings} />\n </WidgetBody>\n </Widget>\n );\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\n\ninterface GenerateUrlResponse {\n edgeKey: string;\n}\n\nexport async function generateKey() {\n try {\n const { data } = await axios.post<GenerateUrlResponse>(\n `/endpoints/edge/generate-key`\n );\n return data.edgeKey;\n } catch (err) {\n throw parseAxiosError(err as Error, 'Unable to generate key');\n }\n}\n","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgEdgeAgentStandard = function SvgEdgeAgentStandard(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#edge-agent-standard_svg__a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n d: \"M6.606 6.647a5.597 5.597 0 0 1 10.794 0 4.397 4.397 0 0 1-.996 8.678h-.418v3.753c0 .146.119.265.265.265h1.657a2.123 2.123 0 1 1 .06 1.06h-1.717a1.325 1.325 0 0 1-1.325-1.325v-3.753h-2.391v4.498a2.123 2.123 0 1 1-1.06-.002v-4.496H9.027v3.753c0 .731-.593 1.324-1.325 1.324h-1.67a2.123 2.123 0 1 1 .06-1.06h1.61a.265.265 0 0 0 .265-.264v-3.753h-.365a4.395 4.395 0 0 1-.996-8.678Zm5.397-2.524a4.007 4.007 0 0 0-3.953 3.35.795.795 0 0 1-.71.663 2.806 2.806 0 0 0 .262 5.599h8.802a2.806 2.806 0 0 0 .262-5.6.795.795 0 0 1-.71-.662 4.007 4.007 0 0 0-3.953-3.35ZM9.439 9.266a3.845 3.845 0 0 1 5.126 0 .331.331 0 0 0 .442-.494 4.507 4.507 0 0 0-6.01 0 .331.331 0 1 0 .442.494Zm.846 1.154a2.453 2.453 0 0 1 3.434 0 .331.331 0 0 0 .464-.473 3.115 3.115 0 0 0-4.362 0 .331.331 0 0 0 .464.473Zm.974.974a1.06 1.06 0 0 1 1.486 0 .331.331 0 0 0 .463-.473 1.723 1.723 0 0 0-2.412 0 .331.331 0 1 0 .463.473Zm.743.407a.331.331 0 0 0 0 .662h.003a.331.331 0 0 0 0-.662h-.003Zm-6.93 7.954a1.063 1.063 0 1 1-2.125 0 1.063 1.063 0 0 1 2.126 0Zm6.93 3.185a1.063 1.063 0 1 0 0-2.125 1.063 1.063 0 0 0 0 2.125Zm9.05-3.185a1.063 1.063 0 1 1-2.125 0 1.063 1.063 0 0 1 2.126 0Z\",\n clipRule: \"evenodd\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"edge-agent-standard_svg__a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h24v24H0z\"\n })))));\n};\nexport default SvgEdgeAgentStandard;","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgEdgeAgentAsync = function SvgEdgeAgentAsync(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 24 24\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#edge-agent-async_svg__a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n fillRule: \"evenodd\",\n d: \"M17.888 1.145c0-.124.1-.225.225-.225h2.99l-.5-.5a.225.225 0 1 1 .319-.318l.883.884a.225.225 0 0 1 0 .318l-.883.883a.225.225 0 1 1-.319-.318l.5-.5h-2.99a.225.225 0 0 1-.225-.224Zm3.984 2.615c0 .124-.1.225-.225.225h-2.99l.5.5a.225.225 0 1 1-.319.317l-.883-.883a.225.225 0 0 1 0-.318l.883-.883a.225.225 0 0 1 .318.318l-.499.499h2.99c.124 0 .225.1.225.225Zm-9.87-1.227a5.597 5.597 0 0 0-5.396 4.114 4.397 4.397 0 0 0 .996 8.678h.365v3.753a.265.265 0 0 1-.265.265h-1.61a2.123 2.123 0 1 0-.06 1.06h1.67c.732 0 1.325-.594 1.325-1.325v-3.753h2.448v4.496a2.123 2.123 0 1 0 1.06.002v-4.498h2.391v3.753c0 .731.593 1.324 1.325 1.324h1.717a2.123 2.123 0 1 0-.06-1.06H16.25a.265.265 0 0 1-.265-.264v-3.753h.418a4.395 4.395 0 0 0 .996-8.678 5.597 5.597 0 0 0-5.397-4.114ZM8.05 7.473a4.007 4.007 0 0 1 7.905 0c.059.357.351.63.711.663a2.806 2.806 0 0 1-.262 5.599H7.602a2.806 2.806 0 0 1-.263-5.6.795.795 0 0 0 .711-.662Zm3.952.814c-.946 0-1.859.349-2.563.98a.331.331 0 0 1-.442-.495 4.507 4.507 0 0 1 6.01 0 .331.331 0 1 1-.442.494 3.845 3.845 0 0 0-2.563-.979Zm0 1.431c-.642 0-1.259.252-1.717.702a.331.331 0 0 1-.464-.473 3.115 3.115 0 0 1 4.362 0 .331.331 0 0 1-.464.473 2.453 2.453 0 0 0-1.717-.702Zm0 1.373a1.06 1.06 0 0 0-.743.303.331.331 0 0 1-.463-.473 1.723 1.723 0 0 1 2.412 0 .331.331 0 1 1-.463.473 1.06 1.06 0 0 0-.743-.303Zm-.331 1.041c0-.183.148-.331.331-.331h.003a.331.331 0 0 1 0 .662h-.003a.331.331 0 0 1-.331-.331Zm-7.66 8.686a1.063 1.063 0 1 0 0-2.126 1.063 1.063 0 0 0 0 2.126Zm9.053 1.06a1.063 1.063 0 1 1-2.125 0 1.063 1.063 0 0 1 2.125 0Zm6.926-1.06a1.063 1.063 0 1 0 0-2.126 1.063 1.063 0 0 0 0 2.126Z\",\n clipRule: \"evenodd\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"edge-agent-async_svg__a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h24v24H0z\"\n })))));\n};\nexport default SvgEdgeAgentAsync;","import { useMutation } from 'react-query';\nimport { useEffect, useState } from 'react';\nimport { Laptop } from 'lucide-react';\n\nimport { generateKey } from '@/react/portainer/environments/environment.service/edge';\nimport { EdgeScriptForm } from '@/react/edge/components/EdgeScriptForm';\nimport { commandsTabs } from '@/react/edge/components/EdgeScriptForm/scripts';\nimport { useSettings } from '@/react/portainer/settings/queries';\nimport EdgeAgentStandardIcon from '@/react/edge/components/edge-agent-standard.svg?c';\nimport EdgeAgentAsyncIcon from '@/react/edge/components/edge-agent-async.svg?c';\n\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { BoxSelector } from '@@/BoxSelector';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { CopyButton } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\n\nconst commands = {\n linux: [\n commandsTabs.k8sLinux,\n commandsTabs.swarmLinux,\n commandsTabs.standaloneLinux,\n commandsTabs.nomadLinux,\n ],\n win: [commandsTabs.swarmWindows, commandsTabs.standaloneWindow],\n};\n\nconst asyncModeOptions = [\n {\n icon: EdgeAgentStandardIcon,\n id: 'standard',\n label: 'Edge Agent Standard',\n value: false,\n iconType: 'badge',\n },\n {\n icon: EdgeAgentAsyncIcon,\n id: 'async',\n label: 'Edge Agent Async',\n value: true,\n iconType: 'badge',\n },\n] as const;\n\nexport function AutomaticEdgeEnvCreation() {\n const edgeKeyMutation = useGenerateKeyMutation();\n const { mutate: generateKey, reset: resetKey } = edgeKeyMutation;\n const settingsQuery = useSettings();\n const [asyncMode, setAsyncMode] = useState(false);\n\n const url = settingsQuery.data?.EdgePortainerUrl;\n\n const settings = settingsQuery.data;\n const edgeKey = edgeKeyMutation.data;\n const edgeComputeConfigurationOK = validateConfiguration();\n\n useEffect(() => {\n if (edgeComputeConfigurationOK) {\n generateKey();\n } else {\n resetKey();\n }\n }, [generateKey, edgeComputeConfigurationOK, resetKey]);\n\n if (!settingsQuery.data) {\n return null;\n }\n\n return (\n <Widget>\n <WidgetTitle icon={Laptop} title=\"Automatic Edge Environment Creation\" />\n <WidgetBody className=\"form-horizontal\">\n {!edgeComputeConfigurationOK ? (\n <TextTip color=\"orange\">\n In order to use this feature, please turn on Edge Compute features{' '}\n <Link to=\"portainer.settings.edgeCompute\">here</Link> and have\n Portainer API server URL and tunnel server address properly\n configured.\n </TextTip>\n ) : (\n <>\n <BoxSelector\n slim\n radioName=\"async-mode-selector\"\n value={asyncMode}\n onChange={handleChangeAsyncMode}\n options={asyncModeOptions}\n />\n\n <EdgeKeyInfo\n asyncMode={asyncMode}\n edgeKey={edgeKey}\n isLoading={edgeKeyMutation.isLoading}\n url={url}\n tunnelUrl={settings?.Edge.TunnelServerAddress}\n />\n </>\n )}\n </WidgetBody>\n </Widget>\n );\n\n function handleChangeAsyncMode(asyncMode: boolean) {\n setAsyncMode(asyncMode);\n }\n\n function validateConfiguration() {\n return !!(\n settings &&\n settings.EnableEdgeComputeFeatures &&\n settings.EdgePortainerUrl &&\n settings.Edge.TunnelServerAddress\n );\n }\n}\n\n// using mutation because we want this action to run only when required\nfunction useGenerateKeyMutation() {\n return useMutation(generateKey);\n}\n\nfunction EdgeKeyInfo({\n isLoading,\n edgeKey,\n url,\n tunnelUrl,\n asyncMode,\n}: {\n isLoading: boolean;\n edgeKey?: string;\n url?: string;\n tunnelUrl?: string;\n asyncMode: boolean;\n}) {\n if (isLoading || !edgeKey) {\n return <div>Generating key for {url} ... </div>;\n }\n\n return (\n <>\n <hr />\n\n <FormSection title=\"Edge key\">\n <div className=\"break-words\">\n <code>{edgeKey}</code>\n </div>\n\n <CopyButton copyText={edgeKey}>Copy token</CopyButton>\n </FormSection>\n\n <hr />\n\n <EdgeScriptForm\n edgeInfo={{ key: edgeKey }}\n commands={commands}\n isNomadTokenVisible\n asyncMode={asyncMode}\n showMetaFields\n >\n <FormControl label=\"Portainer API server URL\">\n <Input value={url} readOnly />\n </FormControl>\n\n {!asyncMode && (\n <FormControl label=\"Portainer tunnel server address\">\n <Input value={tunnelUrl} readOnly />\n </FormControl>\n )}\n\n <TextTip color=\"blue\">\n Portainer Server URL{' '}\n {!asyncMode ? 'and tunnel server address are' : 'is'} set{' '}\n <Link to=\"portainer.settings.edgeCompute\">here</Link>\n </TextTip>\n </EdgeScriptForm>\n </>\n );\n}\n","import { withLimitToBE } from '@/react/hooks/useLimitToBE';\n\nimport { PageHeader } from '@@/PageHeader';\n\nimport { AutomaticEdgeEnvCreation } from './AutomaticEdgeEnvCreation';\n\nexport const EdgeAutoCreateScriptViewWrapper = withLimitToBE(\n EdgeAutoCreateScriptView\n);\n\nfunction EdgeAutoCreateScriptView() {\n return (\n <>\n <PageHeader\n title=\"Automatic Edge Environment Creation\"\n breadcrumbs={[\n { label: 'Environments', link: 'portainer.endpoints' },\n 'Automatic Edge Environment Creation',\n ]}\n />\n\n <div className=\"mx-3\">\n <AutomaticEdgeEnvCreation />\n </div>\n </>\n );\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { EnvironmentListItem } from '../types';\n\nexport const columnHelper = createColumnHelper<EnvironmentListItem>();\n","import { CellContext } from '@tanstack/react-table';\nimport { Users } from 'lucide-react';\n\nimport { EnvironmentStatus } from '@/react/portainer/environments/types';\n\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\n\nimport { EnvironmentListItem } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const actions = columnHelper.display({\n header: 'Actions',\n cell: Cell,\n});\n\nfunction Cell({\n row: { original: environment },\n}: CellContext<EnvironmentListItem, unknown>) {\n if (\n environment.Status === EnvironmentStatus.Provisioning ||\n environment.Status === EnvironmentStatus.Error\n ) {\n return <>-</>;\n }\n\n return (\n <Button\n as={Link}\n props={{\n to: 'portainer.endpoints.endpoint.access',\n params: { id: environment.Id },\n }}\n color=\"link\"\n icon={Users}\n >\n Manage access\n </Button>\n );\n}\n","import { EnvironmentStatus } from '@/react/portainer/environments/types';\n\nimport { Link } from '@@/Link';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor('Name', {\n header: 'Name',\n cell: ({ getValue, row: { original: environment } }) => {\n const name = getValue();\n if (environment.Status === EnvironmentStatus.Provisioning) {\n return name;\n }\n\n return (\n <Link to=\"portainer.endpoints.endpoint\" params={{ id: environment.Id }}>\n {name}\n </Link>\n );\n },\n});\n","import { CellContext } from '@tanstack/react-table';\n\nimport { environmentTypeIcon } from '@/portainer/filters/filters';\nimport {\n Environment,\n EnvironmentType,\n} from '@/react/portainer/environments/types';\nimport { getPlatformTypeName } from '@/react/portainer/environments/utils';\n\nimport { Icon } from '@@/Icon';\n\nimport { columnHelper } from './helper';\n\nexport const type = columnHelper.accessor('Type', {\n header: 'Type',\n cell: Cell,\n});\n\nfunction Cell({ getValue }: CellContext<Environment, EnvironmentType>) {\n const type = getValue();\n\n return (\n <span className=\"flex items-center gap-1\">\n <Icon icon={environmentTypeIcon(type)} />\n {getPlatformTypeName(type)}\n </span>\n );\n}\n","import { useQueryClient, useMutation } from 'react-query';\n\nimport { withError, withInvalidate } from '@/react-tools/react-query';\nimport {\n EnvironmentId,\n EnvironmentStatusMessage,\n Environment,\n} from '@/react/portainer/environments/types';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { TagId } from '@/portainer/tags/types';\n\nimport { EnvironmentGroupId } from '../environment-groups/types';\nimport { buildUrl } from '../environment.service/utils';\n\nimport { queryKeys } from './query-keys';\n\nexport function useUpdateEnvironmentMutation() {\n const queryClient = useQueryClient();\n return useMutation(updateEnvironment, {\n ...withInvalidate(queryClient, [queryKeys.base()]),\n ...withError('Unable to update environment'),\n });\n}\n\nexport interface UpdatePayload {\n TLSCACert?: File;\n TLSCert?: File;\n TLSKey?: File;\n\n Name: string;\n PublicURL: string;\n GroupID: EnvironmentGroupId;\n TagIds: TagId[];\n\n EdgeCheckinInterval: number;\n\n TLS: boolean;\n TLSSkipVerify: boolean;\n TLSSkipClientVerify: boolean;\n AzureApplicationID: string;\n AzureTenantID: string;\n AzureAuthenticationKey: string;\n\n IsSetStatusMessage: boolean;\n StatusMessage: Partial<EnvironmentStatusMessage>;\n}\n\nasync function updateEnvironment({\n id,\n payload,\n}: {\n id: EnvironmentId;\n payload: Partial<UpdatePayload>;\n}) {\n try {\n await uploadTLSFilesForEndpoint(\n id,\n payload.TLSCACert,\n payload.TLSCert,\n payload.TLSKey\n );\n\n const { data: endpoint } = await axios.put<Environment>(\n buildUrl(id),\n payload\n );\n\n return endpoint;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to update environment');\n }\n}\n\nasync function uploadTLSFilesForEndpoint(\n id: EnvironmentId,\n tlscaCert?: File,\n tlsCert?: File,\n tlsKey?: File\n) {\n await Promise.all([\n uploadCert('ca', tlscaCert),\n uploadCert('cert', tlsCert),\n uploadCert('key', tlsKey),\n ]);\n\n function uploadCert(type: 'ca' | 'cert' | 'key', cert?: File) {\n if (!cert) {\n return null;\n }\n try {\n return axios.post<void>(`upload/tls/${type}`, cert, {\n params: { folder: id },\n });\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n }\n}\n","import { actions } from './actions';\nimport { columnHelper } from './helper';\nimport { name } from './name';\nimport { type } from './type';\nimport { url } from './url';\n\nexport const columns = [\n name,\n type,\n url,\n columnHelper.accessor('GroupName', {\n header: 'Group Name',\n }),\n actions,\n];\n","import { CellContext } from '@tanstack/react-table';\nimport { AlertCircle, HelpCircle, Loader2 } from 'lucide-react';\n\nimport {\n EnvironmentStatus,\n EnvironmentStatusMessage,\n EnvironmentType,\n} from '@/react/portainer/environments/types';\nimport { notifySuccess } from '@/portainer/services/notifications';\n\nimport { TooltipWithChildren } from '@@/Tip/TooltipWithChildren';\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\nimport { Tooltip } from '@@/Tip/Tooltip';\n\nimport { EnvironmentListItem } from '../types';\nimport { useUpdateEnvironmentMutation } from '../../queries/useUpdateEnvironmentMutation';\n\nimport { columnHelper } from './helper';\n\nexport const url = columnHelper.accessor('URL', {\n header: 'URL',\n cell: Cell,\n});\n\nfunction Cell({\n row: { original: environment },\n}: CellContext<EnvironmentListItem, string>) {\n const mutation = useUpdateEnvironmentMutation();\n\n if (\n environment.Type !== EnvironmentType.EdgeAgentOnDocker &&\n environment.Status !== EnvironmentStatus.Provisioning\n ) {\n return (\n <>\n {environment.URL}\n {environment.StatusMessage?.summary &&\n environment.StatusMessage?.detail && (\n <div className=\"ml-2 inline-block\">\n <span className=\"text-danger vertical-center inline-flex\">\n <AlertCircle className=\"lucide\" aria-hidden=\"true\" />\n <span>{environment.StatusMessage.summary}</span>\n </span>\n <TooltipWithChildren\n message={\n <div>\n {environment.StatusMessage.detail}\n {environment.URL && (\n <div className=\"mt-2 text-right\">\n <Button\n color=\"link\"\n className=\"small !ml-0 p-0\"\n onClick={handleDismissButton}\n >\n <span className=\"text-muted-light\">\n Dismiss error (still visible in logs)\n </span>\n </Button>\n </div>\n )}\n </div>\n }\n position=\"bottom\"\n >\n <span className=\"vertical-center inline-flex text-base\">\n <HelpCircle className=\"lucide ml-1\" aria-hidden=\"true\" />\n </span>\n </TooltipWithChildren>\n </div>\n )}\n </>\n );\n }\n\n if (environment.Type === EnvironmentType.EdgeAgentOnDocker) {\n return <>-</>;\n }\n\n if (environment.Status === EnvironmentStatus.Provisioning) {\n return (\n <div className=\"inline-flex items-center text-base\">\n <Icon icon={Loader2} className=\"!mr-1 animate-spin-slow\" />\n {environment.StatusMessage?.summary}\n {environment.StatusMessage?.detail && (\n <Tooltip message={environment.StatusMessage?.detail} />\n )}\n </div>\n );\n }\n\n return <>-</>;\n\n function handleDismissButton() {\n mutation.mutate(\n {\n id: environment.Id,\n payload: {\n IsSetStatusMessage: true,\n StatusMessage: {} as EnvironmentStatusMessage,\n },\n },\n {\n onSuccess: () => {\n notifySuccess('Success', 'Error dismissed successfully');\n },\n }\n );\n }\n}\n","import { HardDrive, Plus, Trash2 } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { useEnvironmentList } from '@/react/portainer/environments/queries';\nimport { useGroups } from '@/react/portainer/environments/environment-groups/queries';\n\nimport { Datatable } from '@@/datatables';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { isBE } from '../../feature-flags/feature-flags.service';\nimport { isSortType } from '../queries/useEnvironmentList';\nimport { EnvironmentStatus } from '../types';\n\nimport { columns } from './columns';\nimport { EnvironmentListItem } from './types';\nimport { ImportFdoDeviceButton } from './ImportFdoDeviceButton';\n\nconst tableKey = 'environments';\nconst settingsStore = createPersistedStore(tableKey, 'Name');\n\nexport function EnvironmentsDatatable({\n onRemove,\n}: {\n onRemove: (environments: Array<EnvironmentListItem>) => void;\n}) {\n const tableState = useTableState(settingsStore, tableKey);\n\n const [page, setPage] = useState(0);\n\n const groupsQuery = useGroups();\n const { environments, isLoading, totalCount } = useEnvironmentList(\n {\n search: tableState.search,\n excludeSnapshots: true,\n page: page + 1,\n pageLimit: tableState.pageSize,\n sort: isSortType(tableState.sortBy.id) ? tableState.sortBy.id : undefined,\n order: tableState.sortBy.desc ? 'desc' : 'asc',\n },\n { enabled: groupsQuery.isSuccess, refetchInterval: 30 * 1000 }\n );\n\n const environmentsWithGroups = environments.map<EnvironmentListItem>(\n (env) => {\n const groupId = env.GroupId;\n const group = groupsQuery.data?.find((g) => g.Id === groupId);\n return {\n ...env,\n GroupName: group?.Name,\n };\n }\n );\n\n return (\n <Datatable\n title=\"Environments\"\n titleIcon={HardDrive}\n dataset={environmentsWithGroups}\n columns={columns}\n settingsManager={tableState}\n isServerSidePagination\n page={page}\n onPageChange={setPage}\n totalCount={totalCount}\n isLoading={isLoading}\n isRowSelectable={(row) =>\n row.original.Status !== EnvironmentStatus.Provisioning\n }\n renderTableActions={(selectedRows) => (\n <div className=\"flex items-center gap-2\">\n <Button\n color=\"dangerlight\"\n disabled={selectedRows.length === 0}\n onClick={() => onRemove(selectedRows)}\n icon={Trash2}\n className=\"!m-0\"\n >\n Remove\n </Button>\n\n <ImportFdoDeviceButton />\n\n {isBE && (\n <Button\n as={Link}\n color=\"secondary\"\n icon={Plus}\n props={{ to: 'portainer.endpoints.edgeAutoCreateScript' }}\n >\n Auto onboarding\n </Button>\n )}\n <Link to=\"portainer.wizard.endpoints\">\n <Button\n onClick={() =>\n localStorage.setItem('wizardReferrer', 'environments')\n }\n icon={Plus}\n className=\"!m-0\"\n >\n Add environment\n </Button>\n </Link>\n </div>\n )}\n />\n );\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\n\nimport { buildUrl } from '../environment.service/utils';\nimport { EnvironmentId } from '../types';\n\nexport function useDeleteEnvironmentsMutation() {\n const queryClient = useQueryClient();\n return useMutation(\n (environments: EnvironmentId[]) =>\n promiseSequence(\n environments.map(\n (environmentId) => () => deleteEnvironment(environmentId)\n )\n ),\n mutationOptions(\n withError('Unable to delete environment(s)'),\n withInvalidate(queryClient, [['environments']])\n )\n );\n}\n\nasync function deleteEnvironment(id: EnvironmentId) {\n try {\n await axios.delete(buildUrl(id));\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to delete environment');\n }\n}\n","import { useStore } from 'zustand';\nimport _ from 'lodash';\n\nimport { environmentStore } from '@/react/hooks/current-environment-store';\nimport { notifySuccess } from '@/portainer/services/notifications';\n\nimport { PageHeader } from '@@/PageHeader';\nimport { confirmDelete } from '@@/modals/confirm';\n\nimport { Environment } from '../types';\n\nimport { EnvironmentsDatatable } from './EnvironmentsDatatable';\nimport { useDeleteEnvironmentsMutation } from './useDeleteEnvironmentsMutation';\n\nexport function ListView() {\n const constCurrentEnvironmentStore = useStore(environmentStore);\n const deletionMutation = useDeleteEnvironmentsMutation();\n\n return (\n <>\n <PageHeader\n title=\"Environments\"\n breadcrumbs=\"Environment management\"\n reload\n />\n\n <EnvironmentsDatatable onRemove={handleRemove} />\n </>\n );\n\n async function handleRemove(environments: Array<Environment>) {\n const confirmed = await confirmDelete(\n 'This action will remove all configurations associated to your environment(s). Continue?'\n );\n\n if (!confirmed) {\n return;\n }\n\n const id = constCurrentEnvironmentStore.environmentId;\n // If the current endpoint was deleted, then clean endpoint store\n if (environments.some((e) => e.Id === id)) {\n constCurrentEnvironmentStore.clear();\n }\n\n deletionMutation.mutate(\n environments.map((e) => e.Id),\n {\n onSuccess() {\n notifySuccess(\n 'Environments successfully removed',\n _.map(environments, 'Name').join(', ')\n );\n },\n }\n );\n }\n}\n","import { DownloadCloud, UploadCloud } from 'lucide-react';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { BadgeIcon } from '@@/BadgeIcon';\n\nexport enum BackupFormType {\n S3 = 's3',\n File = 'file',\n}\n\nexport const options = [\n {\n id: 'backup_file',\n icon: <BadgeIcon icon={DownloadCloud} />,\n label: 'Download backup file',\n value: BackupFormType.File,\n },\n {\n id: 'backup_s3',\n icon: <BadgeIcon icon={UploadCloud} />,\n label: 'Store in S3',\n description: 'Define a cron schedule',\n value: BackupFormType.S3,\n feature: FeatureId.S3_BACKUP_SETTING,\n },\n];\n","export function buildUrl(subResource?: string, action?: string) {\n let url = 'backup';\n if (subResource) {\n url += `/${subResource}`;\n }\n\n if (action) {\n url += `/${action}`;\n }\n\n return url;\n}\n","export const queryKeys = {\n base: () => ['settings'] as const,\n backupS3Settings: () => [...queryKeys.base(), 'backupS3Settings'] as const,\n};\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { BackupS3Model } from '../types';\n\nimport { buildUrl } from './backupSettings.service';\nimport { queryKeys } from './queryKeys';\n\nexport function useBackupS3Settings<T = BackupS3Model>({\n select,\n enabled,\n onSuccess,\n}: {\n select?: (settings: BackupS3Model) => T;\n enabled?: boolean;\n onSuccess?: (data: T) => void;\n} = {}) {\n return useQuery(queryKeys.backupS3Settings(), getBackupS3Settings, {\n select,\n enabled,\n ...withError('Unable to retrieve s3 backup settings'),\n onSuccess,\n });\n}\n\nasync function getBackupS3Settings() {\n try {\n const { data } = await axios.get<BackupS3Model>(buildUrl('s3', 'settings'));\n\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to retrieve s3 backup settings');\n }\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withGlobalError } from '@/react-tools/react-query';\n\nimport { BackupS3Model } from '../types';\n\nimport { buildUrl } from './backupSettings.service';\nimport { queryKeys } from './queryKeys';\n\nexport function useUpdateBackupS3SettingsMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(updateBackupS3Settings, {\n onSuccess: () =>\n queryClient.invalidateQueries(queryKeys.backupS3Settings()),\n ...withGlobalError('Unable to save s3 backup settings'),\n });\n}\n\nasync function updateBackupS3Settings(payload: BackupS3Model) {\n try {\n const response = await axios.post(buildUrl('s3', 'settings'), payload);\n\n return response.data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to save s3 backup settings');\n }\n}\n","import { useMutation } from 'react-query';\nimport { saveAs } from 'file-saver';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withGlobalError } from '@/react-tools/react-query';\n\nimport { buildUrl } from './backupSettings.service';\n\nexport interface DownloadBackupPayload {\n password: string;\n}\n\nexport function useDownloadBackupMutation() {\n return useMutation(downloadBackup, {\n ...withGlobalError('Unable to download backup'),\n });\n}\n\nasync function downloadBackup(payload: DownloadBackupPayload) {\n try {\n const response = await axios.post(buildUrl(), payload, {\n responseType: 'arraybuffer',\n });\n\n const file = response.data;\n const filename = response.headers['content-disposition'].replace(\n 'attachment; filename=',\n ''\n );\n const blob = new Blob([file], { type: 'application/zip' });\n return saveAs(blob, filename);\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to download backup');\n }\n}\n","import { useMutation } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withGlobalError } from '@/react-tools/react-query';\n\nimport { BackupS3Model } from '../types';\n\nimport { buildUrl } from './backupSettings.service';\n\nexport function useExportS3BackupMutation() {\n return useMutation(exportS3Backup, {\n ...withGlobalError('Unable to export backup to S3'),\n });\n}\n\nasync function exportS3Backup(payload: BackupS3Model) {\n try {\n const response = await axios.post(buildUrl('s3', 'execute'), payload, {});\n\n return response.data;\n } catch (e) {\n throw parseAxiosError(e as Error, 'Unable to export s3 backup');\n }\n}\n","import { SchemaOf, object, string, boolean } from 'yup';\n\nimport { BackupFileSettings } from './types';\n\nexport function validationSchema(): SchemaOf<BackupFileSettings> {\n return object({\n passwordProtect: boolean().default(false),\n password: string()\n .default('')\n .when('passwordProtect', {\n is: true,\n then: (schema) => schema.required('This field is required.'),\n }),\n });\n}\n","import { useField, Field } from 'formik';\n\nimport { FormSection } from '@@/form-components/FormSection';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { SwitchField } from '@@/form-components/SwitchField';\n\ninterface Props {\n switchDataCy: string;\n inputDataCy: string;\n disabled?: boolean;\n}\n\nexport function SecurityFieldset({\n switchDataCy,\n inputDataCy,\n disabled,\n}: Props) {\n const [{ value: passwordProtect }, , { setValue: setPasswordProtect }] =\n useField<boolean>('passwordProtect');\n\n const [{ name }, { error }] = useField<string>('password');\n\n return (\n <FormSection title=\"Security settings\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n name=\"password-switch\"\n labelClass=\"col-sm-3 col-lg-2\"\n label=\"Password Protect\"\n checked={passwordProtect}\n data-cy={switchDataCy}\n onChange={(checked) => setPasswordProtect(checked)}\n disabled={disabled}\n />\n </div>\n </div>\n\n {passwordProtect && (\n <FormControl\n inputId=\"password\"\n label=\"Password\"\n size=\"small\"\n errors={error}\n required\n >\n <Field\n id=\"password\"\n name={name}\n type=\"password\"\n as={Input}\n data-cy={inputDataCy}\n required\n />\n </FormControl>\n )}\n </FormSection>\n );\n}\n","import { Download } from 'lucide-react';\nimport { Formik, Form } from 'formik';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\n\nimport { LoadingButton } from '@@/buttons/LoadingButton';\n\nimport { DownloadBackupPayload } from './queries/useDownloadBackupMutation';\nimport { useDownloadBackupMutation } from './queries';\nimport { validationSchema } from './BackupFileForm.validation';\nimport { SecurityFieldset } from './SecurityFieldset';\nimport { BackupFileSettings } from './types';\n\nexport function BackupFileForm() {\n const downloadMutate = useDownloadBackupMutation();\n\n const settings: BackupFileSettings = {\n password: '',\n passwordProtect: false,\n };\n\n return (\n <Formik<BackupFileSettings>\n initialValues={settings}\n validationSchema={validationSchema}\n onSubmit={onSubmit}\n validateOnMount\n >\n {({ isSubmitting, isValid }) => (\n <Form className=\"form-horizontal\">\n <SecurityFieldset\n switchDataCy=\"settings-passwordProtectLocal\"\n inputDataCy=\"settings-backupLocalPassword\"\n />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n loadingText=\"Downloading settings...\"\n isLoading={isSubmitting}\n disabled={!isValid}\n className=\"!ml-0\"\n icon={Download}\n >\n Download backup\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n\n async function onSubmit(values: BackupFileSettings) {\n const payload: DownloadBackupPayload = {\n password: '',\n };\n if (values.passwordProtect) {\n payload.password = values.password;\n }\n\n downloadMutate.mutate(payload, {\n onSuccess() {\n notifySuccess('Success', 'Downloaded backup successfully');\n },\n });\n }\n}\n","import { SchemaOf, object, string, boolean } from 'yup';\n\nimport { BackupS3Settings } from './types';\n\nexport function validationSchema(): SchemaOf<BackupS3Settings> {\n return object({\n passwordProtect: boolean().default(false),\n password: string()\n .default('')\n .when('passwordProtect', {\n is: true,\n then: (schema) => schema.required('This field is required.'),\n }),\n scheduleAutomaticBackup: boolean().default(false),\n cronRule: string()\n .default('')\n .when('scheduleAutomaticBackup', {\n is: true,\n then: (schema) =>\n schema.required('This field is required.').when('cronRule', {\n is: (val: string) => val !== '',\n then: (schema) =>\n schema.matches(\n /^(\\*(\\/[1-9][0-9]*)?|([0-5]?[0-9]|6[0-9]|7[0-9])(-[0-5]?[0-9])?)(\\s+(\\*(\\/[1-9][0-9]*)?|([0-5]?[0-9]|6[0-9]|7[0-9])(-[0-5]?[0-9])?)){4}$/,\n 'Please enter a valid cron rule.'\n ),\n }),\n }),\n accessKeyID: string()\n .default('')\n .when('scheduleAutomaticBackup', {\n is: true,\n then: (schema) => schema.required('This field is required.'),\n }),\n secretAccessKey: string()\n .default('')\n .when('scheduleAutomaticBackup', {\n is: true,\n then: (schema) => schema.required('This field is required.'),\n }),\n region: string().default('').optional(),\n bucketName: string()\n .default('')\n .when('scheduleAutomaticBackup', {\n is: true,\n then: (schema) => schema.required('This field is required.'),\n }),\n s3CompatibleHost: string()\n .default('')\n .when({\n is: (val: string) => val !== '',\n then: (schema) =>\n schema.matches(\n /^https?:\\/\\//,\n 'S3 host must begin with http:// or https://.'\n ),\n }),\n });\n}\n","import { Formik, Form, Field } from 'formik';\nimport { Upload } from 'lucide-react';\nimport clsx from 'clsx';\n\nimport {\n isLimitedToBE,\n isBE,\n} from '@/react/portainer/feature-flags/feature-flags.service';\nimport { success as notifySuccess } from '@/portainer/services/notifications';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { Input } from '@@/form-components/Input';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { BEOverlay } from '@@/BEFeatureIndicator/BEOverlay';\n\nimport {\n useBackupS3Settings,\n useExportS3BackupMutation,\n useUpdateBackupS3SettingsMutation,\n} from './queries';\nimport { BackupS3Model, BackupS3Settings } from './types';\nimport { validationSchema } from './BackupS3Form.validation';\nimport { SecurityFieldset } from './SecurityFieldset';\n\nexport function BackupS3Form() {\n const limitedToBE = isLimitedToBE(FeatureId.S3_BACKUP_SETTING);\n\n const exportS3Mutate = useExportS3BackupMutation();\n\n const updateS3Mutate = useUpdateBackupS3SettingsMutation();\n\n const settingsQuery = useBackupS3Settings({ enabled: isBE });\n if (settingsQuery.isLoading) {\n return null;\n }\n\n const settings = settingsQuery.data;\n\n const backupS3Settings = {\n password: settings?.password || '',\n cronRule: settings?.cronRule || '',\n accessKeyID: settings?.accessKeyID || '',\n secretAccessKey: settings?.secretAccessKey || '',\n region: settings?.region || '',\n bucketName: settings?.bucketName || '',\n s3CompatibleHost: settings?.s3CompatibleHost || '',\n scheduleAutomaticBackup: !!settings?.cronRule,\n passwordProtect: !!settings?.password,\n };\n\n return (\n <Formik<BackupS3Settings>\n initialValues={backupS3Settings}\n validationSchema={validationSchema}\n onSubmit={onSubmit}\n validateOnMount\n >\n {({ values, errors, isSubmitting, setFieldValue, isValid }) => (\n <BEOverlay featureId={FeatureId.S3_BACKUP_SETTING}>\n <Form className=\"form-horizontal\">\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n name=\"schedule-automatic-backup\"\n labelClass=\"col-sm-3 col-lg-2\"\n label=\"Schedule automatic backups\"\n checked={values.scheduleAutomaticBackup}\n onChange={(e) => setFieldValue('scheduleAutomaticBackup', e)}\n />\n </div>\n </div>\n\n {values.scheduleAutomaticBackup && (\n <FormControl\n inputId=\"cron_rule\"\n label=\"Cron rule\"\n size=\"small\"\n errors={errors.cronRule}\n required\n >\n <Field\n id=\"cron_rule\"\n name=\"cronRule\"\n type=\"text\"\n as={Input}\n placeholder=\"0 2 * * *\"\n data-cy=\"settings-backupCronRuleInput\"\n className={clsx({ 'limited-be': limitedToBE })}\n disabled={limitedToBE}\n />\n </FormControl>\n )}\n\n <FormControl\n label=\"Access key ID\"\n inputId=\"access_key_id\"\n errors={errors.accessKeyID}\n >\n <Field\n id=\"access_key_id\"\n name=\"accessKeyID\"\n type=\"text\"\n as={Input}\n data-cy=\"settings-accessKeyIdInput\"\n className={clsx({ 'limited-be': limitedToBE })}\n disabled={limitedToBE}\n />\n </FormControl>\n\n <FormControl\n label=\"Secret access key\"\n inputId=\"secret_access_key\"\n errors={errors.secretAccessKey}\n >\n <Field\n id=\"secret_access_key\"\n name=\"secretAccessKey\"\n type=\"password\"\n as={Input}\n data-cy=\"settings-secretAccessKeyInput\"\n className={clsx({ 'limited-be': limitedToBE })}\n disabled={limitedToBE}\n />\n </FormControl>\n\n <FormControl label=\"Region\" inputId=\"region\" errors={errors.region}>\n <Field\n id=\"region\"\n name=\"region\"\n type=\"text\"\n as={Input}\n placeholder=\"default region is us-east-1 if left empty\"\n data-cy=\"settings-backupRegionInput\"\n className={clsx({ 'limited-be': limitedToBE })}\n disabled={limitedToBE}\n />\n </FormControl>\n\n <FormControl\n label=\"Bucket name\"\n inputId=\"bucket_name\"\n errors={errors.bucketName}\n >\n <Field\n id=\"bucket_name\"\n name=\"bucketName\"\n type=\"text\"\n as={Input}\n data-cy=\"settings-backupBucketNameInput\"\n className={clsx({ 'limited-be': limitedToBE })}\n disabled={limitedToBE}\n />\n </FormControl>\n\n <FormControl\n label=\"S3 compatible host\"\n inputId=\"s3_compatible_host\"\n tooltip=\"Hostname of a S3 service\"\n errors={errors.s3CompatibleHost}\n >\n <Field\n id=\"s3_compatible_host\"\n name=\"s3CompatibleHost\"\n type=\"text\"\n as={Input}\n placeholder=\"leave empty for AWS S3\"\n data-cy=\"settings-backupS3CompatibleHostInput\"\n className={clsx({ 'limited-be': limitedToBE })}\n disabled={limitedToBE}\n />\n </FormControl>\n\n <SecurityFieldset\n switchDataCy=\"settings-passwordProtectToggleS3\"\n inputDataCy=\"settings-backups3pw\"\n disabled={limitedToBE}\n />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n type=\"button\"\n loadingText=\"Exporting...\"\n isLoading={isSubmitting}\n className={clsx('!ml-0', { 'limited-be': limitedToBE })}\n disabled={!isValid || limitedToBE}\n data-cy=\"settings-exportBackupS3Button\"\n icon={Upload}\n onClick={() => {\n handleExport(values);\n }}\n >\n Export backup\n </LoadingButton>\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n loadingText=\"Saving settings...\"\n isLoading={isSubmitting}\n className={clsx('!ml-0', { 'limited-be': limitedToBE })}\n disabled={!isValid || limitedToBE}\n data-cy=\"settings-saveBackupSettingsButton\"\n >\n Save backup settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n </BEOverlay>\n )}\n </Formik>\n );\n\n function handleExport(values: BackupS3Settings) {\n const payload: BackupS3Model = {\n password: values.passwordProtect ? values.password : '',\n cronRule: values.scheduleAutomaticBackup ? values.cronRule : '',\n accessKeyID: values.accessKeyID,\n secretAccessKey: values.secretAccessKey,\n region: values.region,\n bucketName: values.bucketName,\n s3CompatibleHost: values.s3CompatibleHost,\n };\n exportS3Mutate.mutate(payload, {\n onSuccess() {\n notifySuccess('Success', 'Exported backup to S3 successfully');\n },\n });\n }\n\n async function onSubmit(values: BackupS3Settings) {\n const payload: BackupS3Model = {\n password: values.passwordProtect ? values.password : '',\n cronRule: values.scheduleAutomaticBackup ? values.cronRule : '',\n accessKeyID: values.accessKeyID,\n secretAccessKey: values.secretAccessKey,\n region: values.region,\n bucketName: values.bucketName,\n s3CompatibleHost: values.s3CompatibleHost,\n };\n\n updateS3Mutate.mutate(payload, {\n onSuccess() {\n notifySuccess('Success', 'S3 backup settings saved successfully');\n },\n });\n }\n}\n","import { Download } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { BoxSelector } from '@@/BoxSelector';\n\nimport { BackupFormType, options } from './backup-options';\nimport { BackupFileForm } from './BackupFileForm';\nimport { BackupS3Form } from './BackupS3Form';\n\nexport function BackupSettingsPanel() {\n const [backupType, setBackupType] = useState(options[0].value);\n\n return (\n <Widget>\n <WidgetTitle icon={Download} title=\"Backup up Portainer\" />\n <WidgetBody>\n <div className=\"form-horizontal\">\n <FormSection title=\"Backup configuration\">\n <div className=\"form-group col-sm-12 text-muted small\">\n This will back up your Portainer server configuration and does not\n include containers.\n </div>\n <BoxSelector\n slim\n options={options}\n value={backupType}\n onChange={(v) => setBackupType(v)}\n radioName=\"backup-type\"\n />\n\n {backupType === BackupFormType.S3 ? (\n <BackupS3Form />\n ) : (\n <BackupFileForm />\n )}\n </FormSection>\n </div>\n </WidgetBody>\n </Widget>\n );\n}\n","import { useField } from 'formik';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Switch } from '@@/form-components/SwitchField/Switch';\n\nconst fieldKey = 'OpenAIIntegration';\n\nexport function EnableOpenAIIntegrationSwitch() {\n const [inputProps, meta, helpers] = useField<boolean>(fieldKey);\n\n return (\n <FormControl\n inputId=\"experimental_openAI\"\n label=\"Enable OpenAI integration\"\n size=\"medium\"\n errors={meta.error}\n >\n <Switch\n id=\"experimental_openAI\"\n name={fieldKey}\n className=\"space-right\"\n checked={inputProps.value}\n onChange={handleChange}\n />\n </FormControl>\n );\n\n function handleChange(enable: boolean) {\n helpers.setValue(enable);\n }\n}\n","import { Form, Formik } from 'formik';\nimport * as yup from 'yup';\nimport { useCallback } from 'react';\nimport { FlaskConical } from 'lucide-react';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { ExperimentalFeatures } from '@/react/portainer/settings/types';\nimport { useUpdateExperimentalSettingsMutation } from '@/react/portainer/settings/queries';\n\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { EnableOpenAIIntegrationSwitch } from './EnableOpenAIIntegrationSwitch';\n\ninterface FormValues {\n OpenAIIntegration: boolean;\n}\nconst validation = yup.object({\n OpenAIIntegration: yup.boolean(),\n});\n\ninterface Props {\n settings: ExperimentalFeatures;\n}\n\nexport function ExperimentalFeaturesSettingsForm({ settings }: Props) {\n const initialValues: FormValues = settings;\n\n const mutation = useUpdateExperimentalSettingsMutation();\n\n const { mutate: updateSettings } = mutation;\n\n const handleSubmit = useCallback(\n (variables: FormValues) => {\n updateSettings(\n {\n OpenAIIntegration: variables.OpenAIIntegration,\n },\n {\n onSuccess() {\n notifySuccess(\n 'Success',\n 'Successfully updated experimental features settings'\n );\n },\n }\n );\n },\n [updateSettings]\n );\n\n return (\n <Formik<FormValues>\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n enableReinitialize\n >\n {({ isValid, dirty }) => (\n <Form className=\"form-horizontal\">\n <TextTip color=\"blue\" icon={FlaskConical}>\n Experimental features may be discontinued without notice.\n </TextTip>\n\n <br />\n <br />\n\n <div className=\"form-group col-sm-12 text-muted small\">\n In Portainer releases, we may introduce features that we're\n experimenting with. These will be items in the early phases of\n development with limited testing.\n <br />\n Our goal is to gain early user feedback, so we can refine, enhance\n and ultimately make our features the best they can be. Disabling an\n experimental feature will prevent access to it.\n </div>\n\n <EnableOpenAIIntegrationSwitch />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n loadingText=\"Saving settings...\"\n isLoading={mutation.isLoading}\n disabled={!isValid || !dirty}\n className=\"!ml-0\"\n data-cy=\"settings-experimentalButton\"\n >\n Save experimental settings\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n}\n","import { FlaskConical } from 'lucide-react';\n\nimport { useExperimentalSettings } from '@/react/portainer/settings/queries';\n\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\n\nimport { ExperimentalFeaturesSettingsForm } from './ExperimentalFeaturesForm';\n\nexport function ExperimentalFeatures() {\n const settingsQuery = useExperimentalSettings();\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const settings = settingsQuery.data;\n\n return (\n <Widget>\n <WidgetTitle icon={FlaskConical} title=\"Experimental features\" />\n <WidgetBody>\n <ExperimentalFeaturesSettingsForm\n settings={settings.experimentalFeatures}\n />\n </WidgetBody>\n </Widget>\n );\n}\n","import angular from 'angular';\n\nimport { StateManager } from '@/portainer/services/types';\n\nimport { PageHeader } from '@@/PageHeader';\n\nimport { Settings } from '../types';\nimport { isBE } from '../../feature-flags/feature-flags.service';\n\nimport { ApplicationSettingsPanel } from './ApplicationSettingsPanel';\nimport { BackupSettingsPanel } from './BackupSettingsView';\nimport { HelmCertPanel } from './HelmCertPanel';\nimport { HiddenContainersPanel } from './HiddenContainersPanel/HiddenContainersPanel';\nimport { KubeSettingsPanel } from './KubeSettingsPanel';\nimport { SSLSettingsPanelWrapper } from './SSLSettingsPanel/SSLSettingsPanel';\nimport { ExperimentalFeatures } from './ExperimentalFeatures';\n\nexport function SettingsView() {\n return (\n <>\n <PageHeader title=\"Settings\" breadcrumbs=\"Settings\" />\n\n <div className=\"mx-4 space-y-4\">\n <ApplicationSettingsPanel onSuccess={handleSuccess} />\n\n <KubeSettingsPanel />\n\n <HelmCertPanel />\n\n <SSLSettingsPanelWrapper />\n\n {isBE && <ExperimentalFeatures />}\n\n <HiddenContainersPanel />\n\n <BackupSettingsPanel />\n </div>\n </>\n );\n}\n\nfunction handleSuccess(settings: Settings) {\n // to sync \"outside state\" - for angularjs\n // this is a hack, but it works\n // state manager should be replaced with a non angular solution, maybe using zustand\n const $injector = angular.element(document).injector();\n $injector.invoke(\n /* @ngInject */ (StateManager: StateManager) => {\n StateManager?.updateLogo(settings.LogoURL);\n StateManager?.updateSnapshotInterval(settings.SnapshotInterval);\n StateManager?.updateEnableTelemetry(settings.EnableTelemetry);\n }\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-portainer-environments-wizard-components-Option-Option-module__root\",\"feature\":\"app-react-portainer-environments-wizard-components-Option-Option-module__feature\",\"teaser\":\"app-react-portainer-environments-wizard-components-Option-Option-module__teaser\",\"active\":\"app-react-portainer-environments-wizard-components-Option-Option-module__active\",\"iconComponent\":\"app-react-portainer-environments-wizard-components-Option-Option-module__icon-component\"};","import clsx from 'clsx';\nimport { ComponentType } from 'react';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { BEFeatureIndicator } from '@@/BEFeatureIndicator';\n\nimport styles from './Option.module.css';\n\nexport interface SelectorItemType {\n icon: string | ComponentType<{ selected?: boolean; className?: string }>;\n title: string;\n description: string;\n}\n\ninterface Props extends SelectorItemType {\n active?: boolean;\n onClick?(): void;\n featureId?: FeatureId;\n}\n\nexport function Option({\n icon,\n active,\n description,\n title,\n onClick = () => {},\n featureId,\n}: Props) {\n const IconComponent = icon;\n const isLimited = isLimitedToBE(featureId);\n return (\n <button\n className={clsx(\n styles.root,\n isLimited ? styles.teaser : styles.feature,\n 'border-0',\n {\n [styles.active]: active,\n }\n )}\n type=\"button\"\n disabled={isLimited}\n onClick={onClick}\n >\n <div className=\"mt-2 flex items-end justify-center text-center\">\n <IconComponent selected={active} className={styles.iconComponent} />\n </div>\n\n <div className=\"mt-3 flex flex-col text-center\">\n <h3>{title}</h3>\n <h5>{description}</h5>\n {isLimited && (\n <BEFeatureIndicator\n showIcon={false}\n featureId={featureId}\n className=\"!whitespace-normal\"\n />\n )}\n </div>\n </button>\n );\n}\n","import axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { type EnvironmentGroupId } from '@/react/portainer/environments/environment-groups/types';\nimport { type TagId } from '@/portainer/tags/types';\nimport { EdgeAsyncIntervalsValues } from '@/react/edge/components/EdgeAsyncIntervalsForm';\n\nimport { type Environment, EnvironmentCreationTypes } from '../types';\n\nimport { arrayToJson, buildUrl, json2formData } from './utils';\n\nexport interface EnvironmentMetadata {\n groupId?: EnvironmentGroupId;\n tagIds?: TagId[];\n}\n\ninterface CreateLocalDockerEnvironment {\n name: string;\n socketPath?: string;\n publicUrl?: string;\n meta?: EnvironmentMetadata;\n}\n\nexport async function createLocalDockerEnvironment({\n name,\n socketPath = '',\n publicUrl = '',\n meta = { tagIds: [] },\n}: CreateLocalDockerEnvironment) {\n const url = prefixPath(socketPath);\n\n return createEnvironment(\n name,\n EnvironmentCreationTypes.LocalDockerEnvironment,\n {\n url,\n publicUrl,\n meta,\n }\n );\n\n function prefixPath(path: string) {\n if (path === '') {\n return path;\n }\n\n // Windows named pipe\n if (path.startsWith('//./pipe/')) {\n return `npipe://${path}`;\n }\n\n return `unix://${path}`;\n }\n}\n\ninterface CreateLocalKubernetesEnvironment {\n name: string;\n meta?: EnvironmentMetadata;\n}\n\nexport async function createLocalKubernetesEnvironment({\n name,\n meta = { tagIds: [] },\n}: CreateLocalKubernetesEnvironment) {\n return createEnvironment(\n name,\n EnvironmentCreationTypes.LocalKubernetesEnvironment,\n { meta, tls: { skipClientVerify: true, skipVerify: true } }\n );\n}\n\ninterface AzureSettings {\n applicationId: string;\n tenantId: string;\n authenticationKey: string;\n}\n\ninterface CreateAzureEnvironment {\n name: string;\n azure: AzureSettings;\n meta?: EnvironmentMetadata;\n}\n\nexport async function createAzureEnvironment({\n name,\n azure,\n meta = { tagIds: [] },\n}: CreateAzureEnvironment) {\n return createEnvironment(name, EnvironmentCreationTypes.AzureEnvironment, {\n meta,\n azure,\n });\n}\n\ninterface TLSSettings {\n skipVerify?: boolean;\n skipClientVerify?: boolean;\n caCertFile?: File;\n certFile?: File;\n keyFile?: File;\n}\n\ninterface EdgeSettings extends EdgeAsyncIntervalsValues {\n asyncMode: boolean;\n}\n\nexport interface EnvironmentOptions {\n url?: string;\n publicUrl?: string;\n meta?: EnvironmentMetadata;\n azure?: AzureSettings;\n tls?: TLSSettings;\n pollFrequency?: number;\n edge?: EdgeSettings;\n tunnelServerAddr?: string;\n}\n\ninterface CreateRemoteEnvironment {\n name: string;\n creationType: Exclude<\n EnvironmentCreationTypes,\n EnvironmentCreationTypes.EdgeAgentEnvironment\n >;\n url: string;\n options?: Omit<EnvironmentOptions, 'url'>;\n}\n\nexport async function createRemoteEnvironment({\n creationType,\n name,\n url,\n options = {},\n}: CreateRemoteEnvironment) {\n return createEnvironment(name, creationType, {\n ...options,\n url: `tcp://${url}`,\n });\n}\n\nexport interface CreateAgentEnvironmentValues {\n name: string;\n environmentUrl: string;\n meta: EnvironmentMetadata;\n}\n\nexport function createAgentEnvironment({\n name,\n environmentUrl,\n meta = { tagIds: [] },\n}: CreateAgentEnvironmentValues) {\n return createRemoteEnvironment({\n name,\n url: environmentUrl,\n creationType: EnvironmentCreationTypes.AgentEnvironment,\n options: {\n meta,\n tls: {\n skipVerify: true,\n skipClientVerify: true,\n },\n },\n });\n}\n\ninterface CreateEdgeAgentEnvironment {\n name: string;\n portainerUrl: string;\n tunnelServerAddr?: string;\n meta?: EnvironmentMetadata;\n pollFrequency: number;\n edge: EdgeSettings;\n}\n\nexport function createEdgeAgentEnvironment({\n name,\n portainerUrl,\n meta = { tagIds: [] },\n pollFrequency,\n edge,\n}: CreateEdgeAgentEnvironment) {\n return createEnvironment(\n name,\n EnvironmentCreationTypes.EdgeAgentEnvironment,\n {\n url: portainerUrl,\n tls: {\n skipVerify: true,\n skipClientVerify: true,\n },\n pollFrequency,\n edge,\n meta,\n }\n );\n}\n\nasync function createEnvironment(\n name: string,\n creationType: EnvironmentCreationTypes,\n options?: EnvironmentOptions\n) {\n let payload: Record<string, unknown> = {\n Name: name,\n EndpointCreationType: creationType,\n };\n\n if (options) {\n const { groupId, tagIds = [] } = options.meta || {};\n\n payload = {\n ...payload,\n URL: options.url,\n PublicURL: options.publicUrl,\n GroupID: groupId,\n TagIds: arrayToJson(tagIds),\n EdgeCheckinInterval: options.pollFrequency,\n };\n\n const { tls, azure } = options;\n\n if (tls) {\n payload = {\n ...payload,\n TLS: true,\n TLSSkipVerify: tls.skipVerify,\n TLSSkipClientVerify: tls.skipClientVerify,\n TLSCACertFile: tls.caCertFile,\n TLSCertFile: tls.certFile,\n TLSKeyFile: tls.keyFile,\n };\n }\n\n if (azure) {\n payload = {\n ...payload,\n AzureApplicationID: azure.applicationId,\n AzureTenantID: azure.tenantId,\n AzureAuthenticationKey: azure.authenticationKey,\n };\n }\n\n if (options.edge?.asyncMode) {\n payload = {\n ...payload,\n EdgeAsyncMode: true,\n EdgePingInterval: options.edge?.PingInterval,\n EdgeSnapshotInterval: options.edge?.SnapshotInterval,\n EdgeCommandInterval: options.edge?.CommandInterval,\n };\n }\n }\n\n const formPayload = json2formData(payload);\n try {\n const { data } = await axios.post<Environment>(buildUrl(), formPayload);\n\n return data;\n } catch (e) {\n throw parseAxiosError(e as Error);\n }\n}\n","import { useEffect, useState } from 'react';\nimport { useMutation } from 'react-query';\n\nimport { useEnvironmentList } from '@/react/portainer/environments/queries/useEnvironmentList';\nimport {\n Environment,\n EnvironmentType,\n} from '@/react/portainer/environments/types';\nimport {\n createLocalDockerEnvironment,\n createLocalKubernetesEnvironment,\n} from '@/react/portainer/environments/environment.service/create';\n\nexport function useConnectLocalEnvironment(): {\n status: 'error' | 'loading' | 'success';\n type?: EnvironmentType;\n} {\n const [localEnvironment, setLocalEnvironment] = useState<Environment>();\n\n const { isLoading, environment } = useFetchLocalEnvironment();\n\n const createLocalEnvironmentMutation = useMutation(createLocalEnvironment);\n\n const { mutate } = createLocalEnvironmentMutation;\n\n useEffect(() => {\n if (isLoading || localEnvironment) {\n return;\n }\n\n if (environment) {\n setLocalEnvironment(environment);\n return;\n }\n\n mutate(undefined, {\n onSuccess(environment) {\n setLocalEnvironment(environment);\n },\n });\n }, [environment, isLoading, localEnvironment, mutate]);\n\n return {\n status: getStatus(isLoading, createLocalEnvironmentMutation.status),\n type: localEnvironment?.Type,\n };\n}\n\nfunction getStatus(\n isLoading: boolean,\n mutationStatus: 'loading' | 'error' | 'success' | 'idle'\n): 'loading' | 'error' | 'success' {\n if (isLoading || mutationStatus === 'loading') {\n return 'loading';\n }\n\n if (mutationStatus === 'error') {\n return 'error';\n }\n\n return 'success';\n}\n\nasync function createLocalEnvironment() {\n try {\n return await createLocalKubernetesEnvironment({ name: 'local' });\n } catch (err) {\n return await createLocalDockerEnvironment({ name: 'local' });\n }\n}\n\nfunction useFetchLocalEnvironment() {\n const { environments, isLoading } = useEnvironmentList(\n {\n page: 0,\n pageLimit: 1,\n types: [EnvironmentType.Docker, EnvironmentType.KubernetesLocal],\n },\n {\n refetchInterval: false,\n staleTime: Infinity,\n }\n );\n\n return {\n isLoading,\n environment: environments.length > 0 ? environments[0] : undefined,\n };\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wizardButton\":\"app-react-portainer-environments-wizard-HomeView-HomeView-module__wizard-button\",\"link\":\"app-react-portainer-environments-wizard-HomeView-HomeView-module__link\"};","import { Wand2, Plug2 } from 'lucide-react';\n\nimport { EnvironmentType } from '@/react/portainer/environments/types';\nimport { useAnalytics } from '@/angulartics.matomo/analytics-services';\nimport DockerIcon from '@/assets/ico/vendor/docker-icon.svg?c';\nimport Kube from '@/assets/ico/kube.svg?c';\n\nimport { PageHeader } from '@@/PageHeader';\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { Link } from '@@/Link';\n\nimport { Option } from '../components/Option';\n\nimport { useConnectLocalEnvironment } from './useFetchOrCreateLocalEnvironment';\nimport styles from './HomeView.module.css';\n\nexport function HomeView() {\n const localEnvironmentAdded = useConnectLocalEnvironment();\n const { trackEvent } = useAnalytics();\n return (\n <>\n <PageHeader\n title=\"Quick Setup\"\n breadcrumbs={[{ label: 'Environment Wizard' }]}\n />\n\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Widget>\n <WidgetTitle title=\"Environment Wizard\" icon={Wand2} />\n <WidgetBody>\n <div className=\"row\">\n <div className=\"col-sm-12 form-section-title\">\n Welcome to Portainer\n </div>\n <div className=\"text-muted small\">\n {localEnvironmentAdded.status === 'success' && (\n <p>\n We have connected your local environment of{' '}\n {getTypeLabel(localEnvironmentAdded.type)} to Portainer.\n </p>\n )}\n\n {localEnvironmentAdded.status === 'error' && (\n <p>\n We could not connect your local environment to Portainer.\n <br />\n Please ensure your environment is correctly exposed. For\n help with installation visit\n <a href=\"https://documentation.portainer.io/quickstart/\">\n https://documentation.portainer.io/quickstart\n </a>\n </p>\n )}\n\n <p>\n Get started below with your local portainer or connect more\n container environments.\n </p>\n </div>\n\n <div className=\"flex flex-wrap gap-4\">\n {localEnvironmentAdded.status === 'success' && (\n <Link to=\"portainer.home\" className={styles.link}>\n <Option\n icon={\n localEnvironmentAdded.type === EnvironmentType.Docker\n ? DockerIcon\n : Kube\n }\n title=\"Get Started\"\n description=\"Proceed using the local environment which Portainer is running in\"\n onClick={() => trackLocalEnvironmentAnalytics()}\n />\n </Link>\n )}\n <Link to=\"portainer.wizard.endpoints\" className={styles.link}>\n <Option\n title=\"Add Environments\"\n icon={Plug2}\n description=\"Connect to other environments\"\n />\n </Link>\n </div>\n </div>\n </WidgetBody>\n </Widget>\n </div>\n </div>\n </>\n );\n\n function trackLocalEnvironmentAnalytics() {\n trackEvent('endpoint-wizard-endpoint-select', {\n category: 'portainer',\n metadata: { environment: 'Get-started-local-environment' },\n });\n }\n}\n\nfunction getTypeLabel(type?: EnvironmentType) {\n switch (type) {\n case EnvironmentType.Docker:\n return 'Docker';\n case EnvironmentType.KubernetesLocal:\n return 'Kubernetes';\n default:\n return '';\n }\n}\n","import { BoxSelector } from '@@/BoxSelector';\n\nimport { EnvironmentOption, EnvironmentOptionValue } from './environment-types';\n\ninterface Props {\n value: EnvironmentOptionValue[];\n onChange(value: EnvironmentOptionValue[]): void;\n options: EnvironmentOption[];\n hiddenSpacingCount?: number;\n}\n\nexport function EnvironmentSelector({\n value,\n onChange,\n options,\n hiddenSpacingCount,\n}: Props) {\n return (\n <BoxSelector\n options={options}\n isMulti\n value={value}\n onChange={onChange}\n radioName=\"type-selector\"\n hiddenSpacingCount={hiddenSpacingCount}\n />\n );\n}\n","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgKaasIcon = function SvgKaasIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 37 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#326DE6\",\n fillRule: \"evenodd\",\n d: \"M9.626 28.14a7.623 7.623 0 0 1-3.111-14.502c.684-5.81 5.626-10.316 11.62-10.316 5.886 0 10.757 4.347 11.578 10.006a7.623 7.623 0 0 1-2.714 14.812v.001H9.626v-.002Z\",\n clipRule: \"evenodd\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M26.042 18.12c-.024 0-.049 0-.049-.026 0-.025-.048-.025-.097-.025-.098-.025-.196-.025-.294-.025-.048 0-.097 0-.146-.025h-.024a4.816 4.816 0 0 1-.831-.15.299.299 0 0 1-.171-.176l-.195-.05c.097-.727.048-1.48-.098-2.207a6.889 6.889 0 0 0-.855-2.056l.146-.15v-.025c0-.076.025-.176.074-.226.22-.2.44-.351.684-.502l.146-.075c.098-.05.171-.1.269-.15.024-.025.049-.025.073-.05.025-.025 0-.025 0-.05a.499.499 0 0 0 .098-.703.463.463 0 0 0-.342-.175.575.575 0 0 0-.342.125l-.024.025c-.025.025-.05.05-.074.05-.073.076-.146.15-.195.226-.025.05-.073.075-.098.1-.17.201-.39.402-.61.552-.05.025-.098.05-.147.05-.024 0-.073 0-.098-.025h-.024l-.196.125c-.195-.2-.415-.4-.61-.601a6.17 6.17 0 0 0-3.176-1.304l-.024-.2v.024c-.074-.05-.098-.125-.122-.2 0-.276 0-.552.048-.853v-.025c0-.05.025-.1.025-.15.024-.1.024-.2.049-.301v-.15c.024-.251-.171-.502-.416-.527-.146-.025-.293.05-.415.175a.502.502 0 0 0-.146.351v.126c0 .1.024.2.049.3.024.05.024.1.024.151v.025c.049.276.049.552.049.853-.025.075-.05.15-.122.2v.05l-.025.201c-.268.025-.537.075-.83.125-1.148.251-2.199.878-3.005 1.756l-.146-.1h-.025c-.024 0-.049.024-.098.024-.048 0-.097-.025-.146-.05a4.553 4.553 0 0 1-.61-.576c-.025-.05-.074-.076-.098-.1-.074-.076-.123-.151-.196-.227-.024-.025-.049-.025-.073-.05l-.025-.025a.575.575 0 0 0-.342-.125c-.146 0-.268.05-.342.175a.55.55 0 0 0 .098.703c.025 0 .025.025.025.025s.048.05.073.05c.073.05.17.1.268.15l.147.075c.244.15.489.301.684.502.049.05.098.15.073.226v-.025l.147.15c-.024.05-.049.075-.073.125a6.082 6.082 0 0 0-.855 4.112l-.196.05c0 .026-.024.026-.024.026-.025.075-.098.125-.171.175a4.427 4.427 0 0 1-.83.15c-.05 0-.098 0-.147.026-.098 0-.196.025-.293.025-.025 0-.05.025-.098.025-.024 0-.024 0-.049.025-.269.05-.44.3-.39.577a.455.455 0 0 0 .488.35c.049 0 .073 0 .122-.024.024 0 .024 0 .024-.025s.074 0 .098 0c.098-.025.196-.076.269-.1.049-.026.097-.05.146-.05h.025c.268-.101.513-.176.806-.227h.024c.073 0 .147.026.196.076.024 0 .024.025.024.025l.22-.025a6.055 6.055 0 0 0 2.003 2.933c.22.176.415.326.66.452l-.123.175c0 .025.025.025.025.025a.303.303 0 0 1 .024.251c-.098.25-.244.502-.39.727v.025c-.025.05-.05.076-.098.126-.05.05-.098.15-.171.25-.025.026-.025.05-.05.076 0 0 0 .025-.024.025a.523.523 0 0 0 .196.677c.049.025.122.05.17.05.196 0 .367-.125.465-.3 0 0 0-.026.024-.026 0-.025.025-.05.05-.075.024-.1.073-.176.097-.276l.049-.15c.073-.276.195-.527.317-.778a.382.382 0 0 1 .196-.15c.024 0 .024 0 .024-.025l.098-.2a5.62 5.62 0 0 0 2.125.4c.44 0 .88-.05 1.32-.175.268-.05.537-.15.78-.226l.098.176c.025 0 .025 0 .025.025a.38.38 0 0 1 .195.15c.123.25.245.502.318.777v.025l.049.15c.024.101.049.201.098.277.024.025.024.05.048.075 0 0 0 .025.025.025.098.176.268.3.464.3.073 0 .122-.024.195-.05a.417.417 0 0 0 .22-.275.66.66 0 0 0-.024-.376c0-.025-.025-.025-.025-.025 0-.025-.024-.05-.049-.075a.9.9 0 0 0-.17-.251.439.439 0 0 0-.098-.126v-.05a2.986 2.986 0 0 1-.391-.727.304.304 0 0 1 .024-.25c0-.026.025-.026.025-.026l-.073-.2a6.173 6.173 0 0 0 2.638-3.41l.195.025c.024 0 .024-.025.024-.025a.273.273 0 0 1 .196-.076h.024c.269.05.538.126.782.226h.024a.34.34 0 0 0 .147.05c.098.05.17.1.269.126.024 0 .048.025.097.025.025 0 .025 0 .05.025.048.025.073.025.121.025.22 0 .416-.15.489-.351a.586.586 0 0 0-.44-.527Zm-7.06-.778-.659.326-.66-.326-.17-.727.464-.602h.733l.464.602-.171.727Zm3.982-1.63c.123.527.147 1.053.098 1.58l-2.32-.677c-.22-.05-.343-.276-.294-.502a.406.406 0 0 1 .098-.175l1.832-1.705c.269.451.464.952.586 1.479Zm-1.319-2.407-2.003 1.454c-.17.1-.415.075-.537-.1a.23.23 0 0 1-.073-.176l-.147-2.532a4.55 4.55 0 0 1 2.76 1.354Zm-4.421-1.279.488-.1-.122 2.507a.412.412 0 0 1-.415.401c-.073 0-.122-.025-.195-.05l-2.028-1.48a4.816 4.816 0 0 1 2.272-1.278Zm-2.98 2.207 1.808 1.655a.41.41 0 0 1 .048.576c-.049.076-.097.1-.195.126l-2.37.702a5.39 5.39 0 0 1 .709-3.06Zm-.415 4.237 2.418-.426c.195 0 .39.125.415.326a.304.304 0 0 1-.024.25l-.929 2.307a4.914 4.914 0 0 1-1.88-2.457Zm5.545 3.11a4.823 4.823 0 0 1-1.05.125c-.514 0-1.051-.1-1.54-.25l1.197-2.232c.122-.151.318-.201.489-.1.073.05.122.1.195.175l1.173 2.181c-.147.025-.293.05-.464.1Zm2.98-2.182a4.728 4.728 0 0 1-1.466 1.504l-.953-2.357a.411.411 0 0 1 .22-.476c.073-.025.147-.05.22-.05l2.443.426a3.805 3.805 0 0 1-.464.953Z\"\n })));\n};\nexport default SvgKaasIcon;","var _path, _path2, _path3, _path4;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgInstallKubernetes = function SvgInstallKubernetes(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 32\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#326DE6\",\n d: \"M26.186 14.647c.195.89.231 1.78.147 2.67l-4.22-1.205c-.399-.09-.621-.49-.532-.892a.722.722 0 0 1 .177-.312l1.616-1.47a7.45 7.45 0 0 1-1.734-1.709l-1.525 1.083c-.31.178-.755.134-.977-.179a.405.405 0 0 1-.133-.312l-.267-4.504a8.71 8.71 0 0 1 1.529.316 7.392 7.392 0 0 1 .148-2.392 11.5 11.5 0 0 0-1.766-.332l-.044-.357v.045c-.134-.09-.178-.223-.222-.357 0-.49 0-.981.088-1.516v-.045c0-.089.045-.178.045-.267.044-.179.044-.357.09-.536V2.11c.044-.446-.312-.892-.756-.937-.266-.044-.533.09-.755.312a.882.882 0 0 0-.266.625v.223c0 .178.044.357.089.535.044.09.044.178.044.268v.044c.09.49.09.981.09 1.517-.045.133-.09.267-.223.356v.09l-.044.356c-.489.045-.978.134-1.51.223-2.088.446-3.998 1.56-5.464 3.122l-.267-.179H9.5c-.045 0-.09.045-.178.045a.63.63 0 0 1-.267-.09 8.2 8.2 0 0 1-1.11-1.025c-.044-.09-.133-.134-.178-.179-.133-.133-.222-.267-.355-.401-.044-.045-.089-.045-.133-.09l-.044-.044a1.058 1.058 0 0 0-.622-.223c-.267 0-.488.09-.622.312a.962.962 0 0 0 .178 1.25c.044 0 .044.044.044.044s.089.089.133.089c.133.09.31.178.488.268l.267.133c.444.268.888.536 1.244.892.08.082.16.236.14.365l.26.26c-.046.089-.09.133-.134.223-1.377 2.184-1.955 4.771-1.554 7.312l-.356.09c0 .044-.044.044-.044.044-.044.134-.178.223-.31.313a8.217 8.217 0 0 1-1.511.267c-.089 0-.178 0-.267.045-.177 0-.355.044-.533.044-.044 0-.088.045-.177.045-.03 0-.06.015-.09.045a.87.87 0 0 0-.71 1.025.825.825 0 0 0 .889.625c.088 0 .133 0 .221-.045.03 0 .044-.015.044-.045 0-.044.133 0 .178 0 .178-.044.356-.133.489-.178a.63.63 0 0 1 .266-.09h.044a7.884 7.884 0 0 1 1.466-.4H6.7c.133 0 .266.044.355.133.044 0 .044.045.044.045l.4-.045c.666 2.051 1.91 3.88 3.642 5.217.4.312.755.58 1.2.803l-.223.312c0 .045.045.045.045.045a.53.53 0 0 1 .044.445c-.177.446-.444.892-.71 1.294v.045c-.045.089-.09.133-.178.223-.089.089-.178.267-.31.445-.045.045-.045.09-.09.134 0 0 0 .045-.044.045a.92.92 0 0 0 .355 1.204.82.82 0 0 0 .31.09c.356 0 .667-.224.844-.536 0 0 0-.045.044-.045 0-.044.045-.089.09-.133.043-.179.132-.313.177-.49l.089-.269c.133-.49.355-.936.577-1.382a.69.69 0 0 1 .355-.268c.03 0 .045-.015.045-.044l.178-.357a10.42 10.42 0 0 0 3.864.713c.8 0 1.6-.089 2.4-.312.488-.089.977-.267 1.421-.401l.178.312c.03 0 .044.015.044.045a.693.693 0 0 1 .356.267c.222.446.444.892.577 1.383v.044l.089.268c.044.178.089.357.178.49.044.045.044.09.088.134 0 0 0 .045.045.045.177.312.488.535.843.535.133 0 .222-.044.356-.089.177-.09.355-.268.4-.49a1.143 1.143 0 0 0-.045-.67c0-.044-.045-.044-.045-.044 0-.045-.044-.09-.088-.134a1.608 1.608 0 0 0-.311-.446.79.79 0 0 0-.178-.223v-.09a5.285 5.285 0 0 1-.71-1.293.528.528 0 0 1 .044-.445c0-.045.044-.045.044-.045l-.133-.357c2.266-1.382 3.998-3.523 4.797-6.064l.356.045c.045 0 .045-.045.045-.045a.503.503 0 0 1 .355-.134h.044c.49.09.977.223 1.422.402h.044a.63.63 0 0 0 .267.089c.178.09.31.178.488.223.045 0 .09.044.178.044.03 0 .06.015.089.045.089.045.133.045.222.045.4 0 .755-.268.888-.625a1.05 1.05 0 0 0-.8-.936c-.044 0-.088 0-.088-.045 0-.044-.09-.044-.178-.044-.178-.045-.355-.045-.533-.045-.089 0-.178 0-.267-.045h-.044a8.958 8.958 0 0 1-1.51-.267.537.537 0 0 1-.311-.313l-.356-.089c.144-1.049.113-2.127-.046-3.188a7.442 7.442 0 0 1-2.232-.105Zm-9.137.395h1.333l.844 1.07-.31 1.294-1.2.58-1.2-.58-.31-1.293.843-1.07Zm-1.332-7.09.888-.178-.222 4.46c0 .4-.356.713-.755.713-.133 0-.222-.045-.356-.09l-3.687-2.63c1.155-1.115 2.576-1.918 4.131-2.275Zm-5.42 3.925 3.287 2.942c.31.268.356.714.089 1.026-.089.134-.178.178-.355.223l-4.309 1.249a9.418 9.418 0 0 1 1.288-5.44Zm4.353 7.803-1.688 4.102c-1.554-1.025-2.798-2.586-3.42-4.37l4.397-.758c.355 0 .71.223.755.58a.53.53 0 0 1-.045.446h.001Zm4.975 5.261a8.956 8.956 0 0 1-1.91.223c-.932 0-1.91-.178-2.798-.446l2.176-3.968c.222-.268.578-.357.889-.179.133.09.222.179.355.313l2.133 3.879c-.267.044-.534.09-.845.178Zm5.42-3.88a8.498 8.498 0 0 1-2.665 2.676l-1.733-4.191a.726.726 0 0 1 .4-.848c.133-.044.266-.09.4-.09l4.441.76c-.222.623-.488 1.203-.844 1.694Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#344054\",\n d: \"M27.655 13.757c3.528 0 6.388-2.85 6.388-6.366 0-3.516-2.86-6.367-6.388-6.367s-6.388 2.85-6.388 6.367c0 3.516 2.86 6.366 6.388 6.366Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M29.5 9.79h-3.63a.778.778 0 0 1-.78-.775V7.98a.259.259 0 0 1 .52 0v1.035c0 .142.116.258.26.258h3.63c.144 0 .26-.116.26-.258V7.98a.259.259 0 0 1 .52 0v1.035a.778.778 0 0 1-.78.775Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M29.165 6.505a.26.26 0 0 0-.367 0l-.854.85V4.879a.259.259 0 0 0-.519 0v2.478l-.854-.851a.26.26 0 0 0-.367 0 .258.258 0 0 0 0 .366L27.5 8.163a.276.276 0 0 0 .04.033l.018.009.027.014.026.008.023.007a.268.268 0 0 0 .101 0l.024-.007.025-.008c.01-.004.018-.01.027-.014l.018-.01a.276.276 0 0 0 .04-.032l1.296-1.292a.259.259 0 0 0 0-.366Z\"\n })));\n};\nexport default SvgInstallKubernetes;","import { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport Docker from '@/assets/ico/vendor/docker.svg?c';\nimport Kubernetes from '@/assets/ico/vendor/kubernetes.svg?c';\nimport Azure from '@/assets/ico/vendor/azure.svg?c';\nimport Nomad from '@/assets/ico/vendor/nomad.svg?c';\nimport KaaS from '@/assets/ico/vendor/kaas-icon.svg?c';\nimport InstallK8s from '@/assets/ico/vendor/install-kubernetes.svg?c';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport type EnvironmentOptionValue =\n | 'dockerStandalone'\n | 'dockerSwarm'\n | 'kubernetes'\n | 'aci'\n | 'nomad'\n | 'kaas'\n | 'k8sInstall';\n\nexport interface EnvironmentOption\n extends BoxSelectorOption<EnvironmentOptionValue> {\n id: EnvironmentOptionValue;\n value: EnvironmentOptionValue;\n}\n\nexport const existingEnvironmentTypes: EnvironmentOption[] = [\n {\n id: 'dockerStandalone',\n value: 'dockerStandalone',\n label: 'Docker Standalone',\n icon: Docker,\n iconType: 'logo',\n description: 'Connect to Docker Standalone via URL/IP, API or Socket',\n },\n {\n id: 'dockerSwarm',\n value: 'dockerSwarm',\n label: 'Docker Swarm',\n icon: Docker,\n iconType: 'logo',\n description: 'Connect to Docker Swarm via URL/IP, API or Socket',\n },\n {\n id: 'kubernetes',\n value: 'kubernetes',\n label: 'Kubernetes',\n icon: Kubernetes,\n iconType: 'logo',\n description: 'Connect to a Kubernetes environment via URL/IP',\n },\n {\n id: 'aci',\n value: 'aci',\n label: 'ACI',\n description: 'Connect to ACI environment via API',\n iconType: 'logo',\n icon: Azure,\n },\n {\n id: 'nomad',\n value: 'nomad',\n label: 'Nomad',\n description: 'Connect to HashiCorp Nomad environment via API',\n icon: Nomad,\n iconType: 'logo',\n feature: FeatureId.NOMAD,\n disabledWhenLimited: true,\n },\n];\n\nexport const newEnvironmentTypes: EnvironmentOption[] = [\n {\n id: 'kaas',\n value: 'kaas',\n label: 'Provision KaaS Cluster',\n description:\n \"Provision a Kubernetes cluster via a cloud provider's Kubernetes as a Service\",\n icon: KaaS,\n iconType: 'logo',\n feature: FeatureId.KAAS_PROVISIONING,\n disabledWhenLimited: true,\n },\n {\n id: 'k8sInstall',\n value: 'k8sInstall',\n label: 'Create Kubernetes cluster',\n description: 'Create a Kubernetes cluster on existing infrastructure',\n icon: InstallK8s,\n iconType: 'logo',\n feature: FeatureId.K8SINSTALL,\n disabledWhenLimited: true,\n },\n];\n\nexport const environmentTypes = [\n ...existingEnvironmentTypes,\n ...newEnvironmentTypes,\n];\n\nexport const formTitles: Record<EnvironmentOptionValue, string> = {\n dockerStandalone: 'Connect to your Docker Standalone environment',\n dockerSwarm: 'Connect to your Docker Swarm environment',\n kubernetes: 'Connect to your Kubernetes environment',\n aci: 'Connect to your ACI environment',\n nomad: 'Connect to your Nomad environment',\n kaas: 'Provision a KaaS environment',\n k8sInstall: 'Create a Kubernetes cluster',\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"stepperWrapper\":\"app-react-components-Stepper-Stepper-module__stepper-wrapper\",\"stepWrapper\":\"app-react-components-Stepper-Stepper-module__step-wrapper\",\"step\":\"app-react-components-Stepper-Stepper-module__step\",\"stepName\":\"app-react-components-Stepper-Stepper-module__step-name\",\"active\":\"app-react-components-Stepper-Stepper-module__active\",\"stepCounter\":\"app-react-components-Stepper-Stepper-module__step-counter\",\"completed\":\"app-react-components-Stepper-Stepper-module__completed\"};","import clsx from 'clsx';\n\nimport styles from './Stepper.module.css';\n\nexport interface Step {\n label: string;\n}\n\ninterface Props {\n currentStep: number;\n steps: Step[];\n}\n\nexport function Stepper({ currentStep, steps }: Props) {\n return (\n <div className={styles.stepperWrapper}>\n {steps.map((step, index) => (\n <div\n key={step.label}\n className={clsx(styles.stepWrapper, {\n [styles.active]: index + 1 === currentStep,\n [styles.completed]: index + 1 < currentStep,\n })}\n >\n <div className={styles.step}>\n <div className={styles.stepCounter}>{index + 1}</div>\n <div className={styles.stepName}>{step.label}</div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import { useQueryClient, useMutation, MutationFunction } from 'react-query';\n\nimport {\n createRemoteEnvironment,\n createLocalDockerEnvironment,\n createAzureEnvironment,\n createAgentEnvironment,\n createEdgeAgentEnvironment,\n createLocalKubernetesEnvironment,\n} from '../environment.service/create';\n\nexport function useCreateAzureEnvironmentMutation() {\n return useGenericCreationMutation(createAzureEnvironment);\n}\n\nexport function useCreateLocalDockerEnvironmentMutation() {\n return useGenericCreationMutation(createLocalDockerEnvironment);\n}\n\nexport function useCreateLocalKubernetesEnvironmentMutation() {\n return useGenericCreationMutation(createLocalKubernetesEnvironment);\n}\n\nexport function useCreateRemoteEnvironmentMutation(\n creationType: Parameters<typeof createRemoteEnvironment>[0]['creationType']\n) {\n return useGenericCreationMutation(\n (\n params: Omit<\n Parameters<typeof createRemoteEnvironment>[0],\n 'creationType'\n >\n ) => createRemoteEnvironment({ creationType, ...params })\n );\n}\n\nexport function useCreateAgentEnvironmentMutation() {\n return useGenericCreationMutation(createAgentEnvironment);\n}\n\nexport function useCreateEdgeAgentEnvironmentMutation() {\n return useGenericCreationMutation(createEdgeAgentEnvironment);\n}\n\nfunction useGenericCreationMutation<TData = unknown, TVariables = void>(\n mutation: MutationFunction<TData, TVariables>\n) {\n const queryClient = useQueryClient();\n\n return useMutation(mutation, {\n onSuccess() {\n return queryClient.invalidateQueries(['environments']);\n },\n meta: {\n error: {\n title: 'Failure',\n message: 'Unable to create environment',\n },\n },\n });\n}\n","import { useField } from 'formik';\n\nimport { useUser } from '@/react/hooks/useUser';\n\nimport { TagSelector } from '@@/TagSelector';\nimport { FormSection } from '@@/form-components/FormSection';\n\nimport { GroupField } from './GroupsField';\n\nexport function MetadataFieldset() {\n const [tagProps, , tagHelpers] = useField('meta.tagIds');\n\n const { isAdmin } = useUser();\n\n return (\n <FormSection title=\"Metadata\">\n <GroupField />\n\n <TagSelector\n value={tagProps.value}\n allowCreate={isAdmin}\n onChange={(value) => tagHelpers.setValue(value)}\n />\n </FormSection>\n );\n}\n","import { PropsWithChildren } from 'react';\n\nimport { FormSection } from '@@/form-components/FormSection';\n\nimport { MetadataFieldset } from './MetadataFieldset';\n\nexport function MoreSettingsSection({ children }: PropsWithChildren<unknown>) {\n return (\n <FormSection title=\"More settings\" isFoldable>\n <div className=\"ml-8\">\n {children}\n\n <MetadataFieldset />\n </div>\n </FormSection>\n );\n}\n","import { useField } from 'formik';\nimport { string } from 'yup';\n\nimport { getEnvironments } from '@/react/portainer/environments/environment.service';\nimport { useDebounce } from '@/react/hooks/useDebounce';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { useCachedValidation } from '@@/form-components/useCachedTest';\n\ninterface Props {\n readonly?: boolean;\n tooltip?: string;\n placeholder?: string;\n}\n\nexport function NameField({\n readonly,\n tooltip,\n placeholder = 'e.g. docker-prod01 / kubernetes-cluster01',\n}: Props) {\n const [{ value }, meta, { setValue }] = useField('name');\n\n const id = 'name-input';\n\n const [debouncedValue, setDebouncedValue] = useDebounce(value, setValue);\n\n return (\n <FormControl\n label=\"Name\"\n required\n errors={meta.error}\n inputId={id}\n tooltip={tooltip}\n >\n <Input\n id={id}\n name=\"name\"\n onChange={(e) => setDebouncedValue(e.target.value)}\n value={debouncedValue}\n data-cy=\"endpointCreate-nameInput\"\n placeholder={placeholder}\n readOnly={readonly}\n />\n </FormControl>\n );\n}\n\nexport async function isNameUnique(name = '') {\n if (!name) {\n return true;\n }\n\n try {\n const result = await getEnvironments({\n limit: 1,\n query: { name, excludeSnapshots: true },\n });\n return (\n result.totalCount === 0 || result.value.every((e) => e.Name !== name)\n );\n } catch (e) {\n // if backend fails to respond, assume name is unique, name validation happens also in the backend\n return true;\n }\n}\n\nexport function useNameValidation() {\n const uniquenessTest = useCachedValidation(isNameUnique);\n\n return string()\n .required('Name is required')\n .test('unique-name', 'Name should be unique', uniquenessTest);\n}\n","import { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { PortainerTunnelAddrField } from '@/react/portainer/common/PortainerTunnelAddrField';\nimport { PortainerUrlField } from '@/react/portainer/common/PortainerUrlField';\n\nimport { NameField } from '../../NameField';\n\ninterface EdgeAgentFormProps {\n readonly?: boolean;\n asyncMode?: boolean;\n}\n\nexport function EdgeAgentFieldset({ readonly, asyncMode }: EdgeAgentFormProps) {\n return (\n <>\n <NameField readonly={readonly} />\n <PortainerUrlField\n fieldName=\"portainerUrl\"\n readonly={readonly}\n required\n />\n {isBE && !asyncMode && (\n <PortainerTunnelAddrField\n fieldName=\"tunnelServerAddr\"\n readonly={readonly}\n required\n />\n )}\n </>\n );\n}\n","import { object, number, array, SchemaOf } from 'yup';\n\nimport { EnvironmentMetadata } from '@/react/portainer/environments/environment.service/create';\n\nexport function metadataValidation(): SchemaOf<EnvironmentMetadata> {\n return object({\n groupId: number(),\n tagIds: array().of(number()).default([]),\n });\n}\n","import { Formik, Form } from 'formik';\nimport { Plug2 } from 'lucide-react';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { useCreateEdgeAgentEnvironmentMutation } from '@/react/portainer/environments/queries/useCreateEnvironmentMutation';\nimport { Settings } from '@/react/portainer/settings/types';\nimport { EdgeCheckinIntervalField } from '@/react/edge/components/EdgeCheckInIntervalField';\nimport {\n EdgeAsyncIntervalsForm,\n EDGE_ASYNC_INTERVAL_USE_DEFAULT,\n} from '@/react/edge/components/EdgeAsyncIntervalsForm';\nimport { useSettings } from '@/react/portainer/settings/queries';\nimport { buildDefaultValue as buildTunnelDefaultValue } from '@/react/portainer/common/PortainerTunnelAddrField';\nimport { buildDefaultValue as buildApiUrlDefaultValue } from '@/react/portainer/common/PortainerUrlField';\n\nimport { FormSection } from '@@/form-components/FormSection';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\n\nimport { MoreSettingsSection } from '../../MoreSettingsSection';\n\nimport { EdgeAgentFieldset } from './EdgeAgentFieldset';\nimport { useValidationSchema } from './EdgeAgentForm.validation';\nimport { FormValues } from './types';\n\ninterface Props {\n onCreate(environment: Environment): void;\n readonly: boolean;\n asyncMode: boolean;\n}\n\nexport function EdgeAgentForm({ onCreate, readonly, asyncMode }: Props) {\n const settingsQuery = useSettings();\n\n const createMutation = useCreateEdgeAgentEnvironmentMutation();\n const validation = useValidationSchema();\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const settings = settingsQuery.data;\n\n const initialValues = buildInitialValues(settings);\n\n return (\n <Formik<FormValues>\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validateOnMount\n validationSchema={validation}\n >\n {({ isValid, setFieldValue, values }) => (\n <Form>\n <EdgeAgentFieldset readonly={readonly} asyncMode={asyncMode} />\n\n <MoreSettingsSection>\n <FormSection title=\"Check-in Intervals\">\n {asyncMode ? (\n <EdgeAsyncIntervalsForm\n values={values.edge}\n readonly={readonly}\n onChange={(values) => setFieldValue('edge', values)}\n />\n ) : (\n <EdgeCheckinIntervalField\n readonly={readonly}\n onChange={(value) => setFieldValue('pollFrequency', value)}\n value={values.pollFrequency}\n />\n )}\n </FormSection>\n </MoreSettingsSection>\n\n {!readonly && (\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <LoadingButton\n className=\"vertical-center\"\n isLoading={createMutation.isLoading}\n loadingText=\"Creating environment...\"\n disabled={!isValid}\n icon={Plug2}\n >\n Create\n </LoadingButton>\n </div>\n </div>\n )}\n </Form>\n )}\n </Formik>\n );\n\n function handleSubmit(values: typeof initialValues) {\n createMutation.mutate(\n {\n ...values,\n edge: {\n ...values.edge,\n asyncMode,\n },\n },\n {\n onSuccess(environment) {\n onCreate(environment);\n },\n }\n );\n }\n}\n\nexport function buildInitialValues(settings: Settings): FormValues {\n return {\n name: '',\n portainerUrl: settings.EdgePortainerUrl || buildApiUrlDefaultValue(),\n tunnelServerAddr:\n settings.Edge.TunnelServerAddress || buildTunnelDefaultValue(),\n pollFrequency: 0,\n meta: {\n groupId: 1,\n tagIds: [],\n },\n edge: {\n CommandInterval: EDGE_ASYNC_INTERVAL_USE_DEFAULT,\n PingInterval: EDGE_ASYNC_INTERVAL_USE_DEFAULT,\n SnapshotInterval: EDGE_ASYNC_INTERVAL_USE_DEFAULT,\n },\n };\n}\n","import { number, object, SchemaOf, string } from 'yup';\n\nimport {\n edgeAsyncIntervalsValidation,\n EdgeAsyncIntervalsValues,\n} from '@/react/edge/components/EdgeAsyncIntervalsForm';\nimport { validation as urlValidation } from '@/react/portainer/common/PortainerTunnelAddrField';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { metadataValidation } from '../../MetadataFieldset/validation';\nimport { useNameValidation } from '../../NameField';\n\nimport { FormValues } from './types';\n\nexport function useValidationSchema(): SchemaOf<FormValues> {\n const nameValidation = useNameValidation();\n\n return object().shape({\n name: nameValidation,\n portainerUrl: urlValidation(),\n tunnelServerAddr: string(),\n pollFrequency: number().required(),\n meta: metadataValidation(),\n edge: isBE\n ? edgeAsyncIntervalsValidation()\n : (null as unknown as SchemaOf<EdgeAsyncIntervalsValues>),\n });\n}\n","import { v4 as uuid } from 'uuid';\nimport { useReducer, useState } from 'react';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { EdgeScriptForm } from '@/react/edge/components/EdgeScriptForm';\nimport { CommandTab } from '@/react/edge/components/EdgeScriptForm/scripts';\nimport { OS, EdgeInfo } from '@/react/edge/components/EdgeScriptForm/types';\nimport { EdgeKeyDisplay } from '@/react/portainer/environments/ItemView/EdgeKeyDisplay';\n\nimport { Button } from '@@/buttons';\n\nimport { EdgeAgentForm } from './EdgeAgentForm';\n\ninterface Props {\n onCreate: (environment: Environment) => void;\n commands: CommandTab[] | Partial<Record<OS, CommandTab[]>>;\n isNomadTokenVisible?: boolean;\n asyncMode?: boolean;\n}\n\nexport function EdgeAgentTab({\n onCreate,\n commands,\n isNomadTokenVisible,\n asyncMode = false,\n}: Props) {\n const [edgeInfo, setEdgeInfo] = useState<EdgeInfo>();\n const [formKey, clearForm] = useReducer((state) => state + 1, 0);\n\n return (\n <>\n <EdgeAgentForm\n onCreate={handleCreate}\n readonly={!!edgeInfo}\n key={formKey}\n asyncMode={asyncMode}\n />\n\n {edgeInfo && (\n <>\n <div className=\"clear-both\" />\n\n <hr />\n\n <EdgeKeyDisplay edgeKey={edgeInfo.key} />\n\n <hr />\n\n <EdgeScriptForm\n edgeInfo={edgeInfo}\n commands={commands}\n isNomadTokenVisible={isNomadTokenVisible}\n asyncMode={asyncMode}\n />\n\n <hr />\n\n <div className=\"row\">\n <div className=\"flex justify-end\">\n <Button color=\"primary\" type=\"reset\" onClick={handleReset}>\n Add another environment\n </Button>\n </div>\n </div>\n </>\n )}\n </>\n );\n\n function handleCreate(environment: Environment) {\n setEdgeInfo({ key: environment.EdgeKey, id: environment.EdgeID || uuid() });\n onCreate(environment);\n }\n\n function handleReset() {\n setEdgeInfo(undefined);\n clearForm();\n }\n}\n","import { Field, useField } from 'formik';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\n\nexport function EnvironmentUrlField() {\n const [, meta] = useField('environmentUrl');\n\n return (\n <FormControl\n label=\"Environment address\"\n errors={meta.error}\n required\n inputId=\"environment-url-field\"\n tooltip=\"<HOST>:<PORT> or <IP>:<PORT>\"\n >\n <Field\n id=\"environment-url-field\"\n name=\"environmentUrl\"\n as={Input}\n placeholder=\"e.g. 10.0.0.10:9001 or tasks.portainer_agent:9001\"\n data-cy=\"endpointCreate-endpointUrlAgentInput\"\n />\n </FormControl>\n );\n}\n","import { object, SchemaOf, string } from 'yup';\n\nimport { CreateAgentEnvironmentValues } from '@/react/portainer/environments/environment.service/create';\n\nimport { metadataValidation } from '../MetadataFieldset/validation';\nimport { useNameValidation } from '../NameField';\n\nexport function useValidation(): SchemaOf<CreateAgentEnvironmentValues> {\n return object({\n name: useNameValidation(),\n environmentUrl: environmentValidation(),\n meta: metadataValidation(),\n });\n}\n\nfunction environmentValidation() {\n return string()\n .required('This field is required')\n .test(\n 'address',\n 'Environment address must be of the form <IP>:<PORT> or <HOST>:<PORT>.',\n (environmentUrl) => validateAddress(environmentUrl)\n );\n}\n\nexport function validateAddress(address: string | undefined) {\n if (typeof address === 'undefined') {\n return false;\n }\n\n if (address.indexOf('://') > -1) {\n return false;\n }\n\n const [host, port] = address.split(':');\n\n if (\n host.length === 0 ||\n Number.isNaN(parseInt(port, 10)) ||\n port.match(/^[0-9]+$/) == null ||\n parseInt(port, 10) < 1 ||\n parseInt(port, 10) > 65535\n ) {\n return false;\n }\n\n return true;\n}\n","import { Form, Formik } from 'formik';\nimport { useReducer } from 'react';\nimport { Plug2 } from 'lucide-react';\n\nimport { useCreateAgentEnvironmentMutation } from '@/react/portainer/environments/queries/useCreateEnvironmentMutation';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { Environment } from '@/react/portainer/environments/types';\nimport { CreateAgentEnvironmentValues } from '@/react/portainer/environments/environment.service/create';\n\nimport { LoadingButton } from '@@/buttons/LoadingButton';\n\nimport { NameField } from '../NameField';\nimport { MoreSettingsSection } from '../MoreSettingsSection';\n\nimport { EnvironmentUrlField } from './EnvironmentUrlField';\nimport { useValidation } from './AgentForm.validation';\n\ninterface Props {\n onCreate(environment: Environment): void;\n}\n\nconst initialValues: CreateAgentEnvironmentValues = {\n environmentUrl: '',\n name: '',\n meta: {\n groupId: 1,\n tagIds: [],\n },\n};\n\nexport function AgentForm({ onCreate }: Props) {\n const [formKey, clearForm] = useReducer((state) => state + 1, 0);\n\n const mutation = useCreateAgentEnvironmentMutation();\n const validation = useValidation();\n\n return (\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n key={formKey}\n >\n {({ isValid, dirty }) => (\n <Form>\n <NameField />\n <EnvironmentUrlField />\n\n <MoreSettingsSection />\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n className=\"wizard-connect-button vertical-center\"\n loadingText=\"Connecting environment...\"\n isLoading={mutation.isLoading}\n disabled={!dirty || !isValid}\n icon={Plug2}\n >\n Connect\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n\n function handleSubmit(values: CreateAgentEnvironmentValues) {\n mutation.mutate(values, {\n onSuccess(environment) {\n notifySuccess('Environment created', environment.Name);\n clearForm();\n onCreate(environment);\n },\n });\n }\n}\n","import { useState } from 'react';\n\nimport { useAgentDetails } from '@/react/portainer/environments/queries/useAgentDetails';\n\nimport { CopyButton } from '@@/buttons/CopyButton';\nimport { Code } from '@@/Code';\nimport { NavTabs } from '@@/NavTabs';\n\nconst deploymentsStandalone = [\n {\n id: 'linux',\n label: 'Linux & Windows WSL',\n command: linuxStandaloneCommand,\n },\n {\n id: 'win',\n label: 'Windows WCS',\n command: winStandaloneCommand,\n },\n];\n\nconst deploymentsSwarm = [\n {\n id: 'linux',\n label: 'Linux & Windows WSL',\n command: linuxSwarmCommand,\n },\n {\n id: 'win',\n label: 'Windows WCS',\n command: winSwarmCommand,\n },\n];\n\ninterface Props {\n isDockerStandalone?: boolean;\n}\n\nexport function DeploymentScripts({ isDockerStandalone }: Props) {\n const deployments = isDockerStandalone\n ? deploymentsStandalone\n : deploymentsSwarm;\n const [deployType, setDeployType] = useState(deployments[0].id);\n\n const agentDetailsQuery = useAgentDetails();\n\n if (!agentDetailsQuery) {\n return null;\n }\n\n const { agentVersion, agentSecret } = agentDetailsQuery;\n\n const options = deployments.map((c) => {\n const code = c.command(agentVersion, agentSecret);\n\n return {\n id: c.id,\n label: c.label,\n children: <DeployCode code={code} />,\n };\n });\n\n return (\n <NavTabs\n options={options}\n onSelect={(id: string) => setDeployType(id)}\n selectedId={deployType}\n />\n );\n}\n\ninterface DeployCodeProps {\n code: string;\n}\n\nfunction DeployCode({ code }: DeployCodeProps) {\n return (\n <>\n <div className=\"code-script\">\n <Code>{code}</Code>\n </div>\n <div className=\"mt-2\">\n <CopyButton copyText={code}>Copy command</CopyButton>\n </div>\n </>\n );\n}\n\nfunction linuxStandaloneCommand(agentVersion: string, agentSecret: string) {\n const secret =\n agentSecret === '' ? '' : `\\\\\\n -e AGENT_SECRET=${agentSecret} `;\n\n return `docker run -d \\\\\n -p 9001:9001 ${secret}\\\\\n --name portainer_agent \\\\\n --restart=always \\\\\n -v /var/run/docker.sock:/var/run/docker.sock \\\\\n -v /var/lib/docker/volumes:/var/lib/docker/volumes \\\\\n portainer/agent:${agentVersion}\n`;\n}\n\nfunction linuxSwarmCommand(agentVersion: string, agentSecret: string) {\n const secret =\n agentSecret === '' ? '' : `\\\\\\n -e AGENT_SECRET=${agentSecret} `;\n\n return `docker network create \\\\\n--driver overlay \\\\\n portainer_agent_network\n\ndocker service create \\\\\n --name portainer_agent \\\\\n --network portainer_agent_network \\\\\n -p 9001:9001/tcp ${secret}\\\\\n --mode global \\\\\n --constraint 'node.platform.os == linux' \\\\\n --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \\\\\n --mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \\\\\n portainer/agent:${agentVersion}\n`;\n}\n\nfunction winStandaloneCommand(agentVersion: string, agentSecret: string) {\n const secret =\n agentSecret === '' ? '' : `\\\\\\n -e AGENT_SECRET=${agentSecret} `;\n\n return `docker run -d \\\\\n -p 9001:9001 ${secret}\\\\\n --name portainer_agent \\\\\n --restart=always \\\\\n -v C:\\\\:C:\\\\host \\\\\n -v C:\\\\ProgramData\\\\docker\\\\volumes:C:\\\\ProgramData\\\\docker\\\\volumes \\\\\n -v \\\\\\\\.\\\\pipe\\\\docker_engine:\\\\\\\\.\\\\pipe\\\\docker_engine \\\\\n portainer/agent:${agentVersion}\n`;\n}\n\nfunction winSwarmCommand(agentVersion: string, agentSecret: string) {\n const secret =\n agentSecret === '' ? '' : `\\\\\\n -e AGENT_SECRET=${agentSecret} `;\n\n return `docker network create \\\\\n--driver overlay \\\\\n portainer_agent_network && \\\\\ndocker service create \\\\\n --name portainer_agent \\\\\n --network portainer_agent_network \\\\\n -p 9001:9001/tcp ${secret}\\\\\n --mode global \\\\\n --constraint 'node.platform.os == windows' \\\\\n --mount type=npipe,src=\\\\\\\\.\\\\pipe\\\\docker_engine,dst=\\\\\\\\.\\\\pipe\\\\docker_engine \\\\\n --mount type=bind,src=C:\\\\ProgramData\\\\docker\\\\volumes,dst=C:\\\\ProgramData\\\\docker\\\\volumes \\\\\n portainer/agent:${agentVersion}\n`;\n}\n","import { Environment } from '@/react/portainer/environments/types';\n\nimport { AgentForm } from '../../shared/AgentForm/AgentForm';\n\nimport { DeploymentScripts } from './DeploymentScripts';\n\ninterface Props {\n onCreate(environment: Environment): void;\n isDockerStandalone?: boolean;\n}\n\nexport function AgentTab({ onCreate, isDockerStandalone }: Props) {\n return (\n <>\n <DeploymentScripts isDockerStandalone={isDockerStandalone} />\n\n <div className=\"mt-5\">\n <AgentForm onCreate={onCreate} />\n </div>\n </>\n );\n}\n","import { Field, Form, Formik } from 'formik';\nimport { useReducer } from 'react';\nimport { Plug2 } from 'lucide-react';\n\nimport { useCreateRemoteEnvironmentMutation } from '@/react/portainer/environments/queries/useCreateEnvironmentMutation';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport {\n Environment,\n EnvironmentCreationTypes,\n} from '@/react/portainer/environments/types';\nimport { TLSFieldset } from '@/react/components/TLSFieldset/TLSFieldset';\n\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { InsightsBox } from '@@/InsightsBox';\n\nimport { NameField } from '../../shared/NameField';\nimport { MoreSettingsSection } from '../../shared/MoreSettingsSection';\n\nimport { useValidation } from './APIForm.validation';\nimport { FormValues } from './types';\n\ninterface Props {\n onCreate(environment: Environment): void;\n isDockerStandalone?: boolean;\n}\n\nexport function APIForm({ onCreate, isDockerStandalone }: Props) {\n const [formKey, clearForm] = useReducer((state) => state + 1, 0);\n const initialValues: FormValues = {\n url: '',\n name: '',\n tlsConfig: {\n tls: false,\n skipVerify: false,\n },\n meta: {\n groupId: 1,\n tagIds: [],\n },\n };\n\n const mutation = useCreateRemoteEnvironmentMutation(\n EnvironmentCreationTypes.LocalDockerEnvironment\n );\n\n const validation = useValidation();\n\n return (\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n key={formKey}\n >\n {({ values, errors, setFieldValue, isValid, dirty }) => (\n <Form>\n <NameField />\n\n <FormControl\n inputId=\"url-field\"\n label=\"Docker API URL\"\n required\n tooltip=\"URL or IP address of a Docker host. The Docker API must be exposed over a TCP port. Please refer to the Docker documentation to configure it.\"\n >\n <Field\n as={Input}\n id=\"url-field\"\n name=\"url\"\n placeholder=\"e.g. 10.0.0.10:2375 or mydocker.mydomain.com:2375\"\n />\n </FormControl>\n\n <TLSFieldset\n values={values.tlsConfig}\n onChange={(value) =>\n Object.entries(value).forEach(([key, value]) =>\n setFieldValue(`tlsConfig.${key}`, value)\n )\n }\n errors={errors.tlsConfig}\n />\n\n <MoreSettingsSection>\n {isDockerStandalone && (\n <InsightsBox\n content={\n <>\n <p>\n From 2.18 on, the set-up of available GPUs for a Docker\n Standalone environment has been shifted from Add\n environment and Environment details to Host -> Setup,\n so as to align with other settings.\n </p>\n <p>\n A toggle has been introduced for enabling/disabling\n management of GPU settings in the Portainer UI - to\n alleviate the performance impact of showing those\n settings.\n </p>\n <p>\n The UI has been updated to clarify that GPU settings\n support is only for Docker Standalone (and not Docker\n Swarm, which was never supported in the UI).\n </p>\n </>\n }\n header=\"GPU settings update\"\n insightCloseId=\"gpu-settings-update-closed\"\n />\n )}\n </MoreSettingsSection>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n className=\"wizard-connect-button vertical-center\"\n loadingText=\"Connecting environment...\"\n isLoading={mutation.isLoading}\n disabled={!dirty || !isValid}\n icon={Plug2}\n >\n Connect\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n\n function handleSubmit(values: FormValues) {\n const tls = getTlsValues();\n\n mutation.mutate(\n {\n name: values.name,\n url: values.url,\n options: {\n tls,\n meta: values.meta,\n },\n },\n {\n onSuccess(environment) {\n notifySuccess('Environment created', environment.Name);\n clearForm();\n onCreate(environment);\n },\n }\n );\n function getTlsValues() {\n if (!values.tlsConfig.tls) {\n return undefined;\n }\n\n return {\n skipVerify: values.tlsConfig.skipVerify,\n ...getCertFiles(),\n };\n\n function getCertFiles() {\n if (values.tlsConfig.skipVerify) {\n return {};\n }\n\n return {\n caCertFile: values.tlsConfig.caCertFile,\n certFile: values.tlsConfig.certFile,\n keyFile: values.tlsConfig.keyFile,\n };\n }\n }\n }\n}\n","import { object, SchemaOf, string } from 'yup';\n\nimport { tlsConfigValidation } from '@/react/components/TLSFieldset/TLSFieldset';\n\nimport { metadataValidation } from '../../shared/MetadataFieldset/validation';\nimport { useNameValidation } from '../../shared/NameField';\n\nimport { FormValues } from './types';\n\nexport function useValidation(): SchemaOf<FormValues> {\n return object({\n name: useNameValidation(),\n url: string().required('This field is required.'),\n tlsConfig: tlsConfigValidation(),\n meta: metadataValidation(),\n });\n}\n","import { Environment } from '@/react/portainer/environments/types';\n\nimport { APIForm } from './APIForm';\n\ninterface Props {\n onCreate(environment: Environment): void;\n isDockerStandalone?: boolean;\n}\n\nexport function APITab({ onCreate, isDockerStandalone }: Props) {\n return (\n <div className=\"mt-5\">\n <APIForm onCreate={onCreate} isDockerStandalone={isDockerStandalone} />\n </div>\n );\n}\n","import { useState } from 'react';\n\nimport { CopyButton } from '@@/buttons/CopyButton';\nimport { Code } from '@@/Code';\nimport { NavTabs } from '@@/NavTabs';\n\nconst deployments = [\n {\n id: 'linux',\n label: 'Linux',\n command: `-v \"/var/run/docker.sock:/var/run/docker.sock\"`,\n },\n {\n id: 'win',\n label: 'Windows',\n command: '-v \\\\.\\\\pipe\\\\docker_engine:\\\\.\\\\pipe\\\\docker_engine',\n },\n];\n\nexport function DeploymentScripts() {\n const [deployType, setDeployType] = useState(deployments[0].id);\n\n const options = deployments.map((c) => ({\n id: c.id,\n label: c.label,\n children: <DeployCode code={c.command} />,\n }));\n\n return (\n <NavTabs\n options={options}\n onSelect={(id: string) => setDeployType(id)}\n selectedId={deployType}\n />\n );\n}\n\ninterface DeployCodeProps {\n code: string;\n}\n\nfunction DeployCode({ code }: DeployCodeProps) {\n return (\n <>\n <span className=\"text-muted small\">\n When using the socket, ensure that you have started the Portainer\n container with the following Docker flag:\n </span>\n\n <Code>{code}</Code>\n <div className=\"mt-2\">\n <CopyButton copyText={code}>Copy command</CopyButton>\n </div>\n </>\n );\n}\n","import { Field, Form, Formik, useFormikContext } from 'formik';\nimport { useReducer } from 'react';\nimport { Plug2 } from 'lucide-react';\n\nimport { useCreateLocalDockerEnvironmentMutation } from '@/react/portainer/environments/queries/useCreateEnvironmentMutation';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { Environment } from '@/react/portainer/environments/types';\n\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { SwitchField } from '@@/form-components/SwitchField';\nimport { InsightsBox } from '@@/InsightsBox';\n\nimport { NameField } from '../../shared/NameField';\nimport { MoreSettingsSection } from '../../shared/MoreSettingsSection';\n\nimport { useValidation } from './SocketForm.validation';\nimport { FormValues } from './types';\n\ninterface Props {\n onCreate(environment: Environment): void;\n isDockerStandalone?: boolean;\n}\n\nexport function SocketForm({ onCreate, isDockerStandalone }: Props) {\n const [formKey, clearForm] = useReducer((state) => state + 1, 0);\n const initialValues: FormValues = {\n name: '',\n socketPath: '',\n overridePath: false,\n meta: { groupId: 1, tagIds: [] },\n };\n\n const mutation = useCreateLocalDockerEnvironmentMutation();\n const validation = useValidation();\n\n return (\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n key={formKey}\n >\n {({ isValid, dirty }) => (\n <Form>\n <NameField />\n\n <OverrideSocketFieldset />\n\n <MoreSettingsSection>\n {isDockerStandalone && (\n <InsightsBox\n content={\n <>\n <p>\n From 2.18 on, the set-up of available GPUs for a Docker\n Standalone environment has been shifted from Add\n environment and Environment details to Host -> Setup,\n so as to align with other settings.\n </p>\n <p>\n A toggle has been introduced for enabling/disabling\n management of GPU settings in the Portainer UI - to\n alleviate the performance impact of showing those\n settings.\n </p>\n <p>\n The UI has been updated to clarify that GPU settings\n support is only for Docker Standalone (and not Docker\n Swarm, which was never supported in the UI).\n </p>\n </>\n }\n header=\"GPU settings update\"\n insightCloseId=\"gpu-settings-update-closed\"\n />\n )}\n </MoreSettingsSection>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n className=\"wizard-connect-button vertical-center\"\n loadingText=\"Connecting environment...\"\n isLoading={mutation.isLoading}\n disabled={!dirty || !isValid}\n icon={Plug2}\n >\n Connect\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n\n function handleSubmit(values: FormValues) {\n mutation.mutate(\n {\n name: values.name,\n socketPath: values.overridePath ? values.socketPath : '',\n meta: values.meta,\n },\n {\n onSuccess(environment) {\n notifySuccess('Environment created', environment.Name);\n clearForm();\n onCreate(environment);\n },\n }\n );\n }\n}\n\nfunction OverrideSocketFieldset() {\n const { values, setFieldValue, errors } = useFormikContext<FormValues>();\n\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <SwitchField\n checked={values.overridePath}\n onChange={(checked) => setFieldValue('overridePath', checked)}\n label=\"Override default socket path\"\n labelClass=\"col-sm-3 col-lg-2\"\n />\n </div>\n </div>\n {values.overridePath && (\n <FormControl\n label=\"Socket Path\"\n tooltip=\"Path to the Docker socket. Remember to bind-mount the socket, see the important notice above for more information.\"\n errors={errors.socketPath}\n >\n <Field\n name=\"socketPath\"\n as={Input}\n placeholder=\"e.g. /var/run/docker.sock (on Linux) or //./pipe/docker_engine (on Windows)\"\n />\n </FormControl>\n )}\n </>\n );\n}\n","import { boolean, object, SchemaOf, string } from 'yup';\n\nimport { metadataValidation } from '../../shared/MetadataFieldset/validation';\nimport { useNameValidation } from '../../shared/NameField';\n\nimport { FormValues } from './types';\n\nexport function useValidation(): SchemaOf<FormValues> {\n return object({\n name: useNameValidation(),\n meta: metadataValidation(),\n overridePath: boolean().default(false),\n socketPath: string()\n .default('')\n .when('overridePath', (overridePath, schema) =>\n overridePath\n ? schema.required(\n 'Socket Path is required when override path is enabled'\n )\n : schema\n ),\n });\n}\n","import { Environment } from '@/react/portainer/environments/types';\n\nimport { DeploymentScripts } from '../APITab/DeploymentScripts';\n\nimport { SocketForm } from './SocketForm';\n\ninterface Props {\n onCreate(environment: Environment): void;\n isDockerStandalone?: boolean;\n}\n\nexport function SocketTab({ onCreate, isDockerStandalone }: Props) {\n return (\n <>\n <DeploymentScripts />\n\n <div className=\"mt-5\">\n <SocketForm\n onCreate={onCreate}\n isDockerStandalone={isDockerStandalone}\n />\n </div>\n </>\n );\n}\n","import { useState } from 'react';\nimport { Zap, Network, Plug2 } from 'lucide-react';\nimport _ from 'lodash';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { commandsTabs } from '@/react/edge/components/EdgeScriptForm/scripts';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport EdgeAgentStandardIcon from '@/react/edge/components/edge-agent-standard.svg?c';\nimport EdgeAgentAsyncIcon from '@/react/edge/components/edge-agent-async.svg?c';\n\nimport { BoxSelector, type BoxSelectorOption } from '@@/BoxSelector';\nimport { BadgeIcon } from '@@/BadgeIcon';\n\nimport { AnalyticsStateKey } from '../types';\nimport { EdgeAgentTab } from '../shared/EdgeAgentTab';\n\nimport { AgentTab } from './AgentTab';\nimport { APITab } from './APITab';\nimport { SocketTab } from './SocketTab';\n\ninterface Props {\n onCreate(environment: Environment, analytics: AnalyticsStateKey): void;\n isDockerStandalone?: boolean;\n}\n\nconst options: BoxSelectorOption<\n 'agent' | 'api' | 'socket' | 'edgeAgentStandard' | 'edgeAgentAsync'\n>[] = _.compact([\n {\n id: 'agent',\n icon: <BadgeIcon icon={Zap} size=\"3xl\" />,\n label: 'Agent',\n description: '',\n value: 'agent',\n },\n {\n id: 'api',\n icon: <BadgeIcon icon={Network} size=\"3xl\" />,\n label: 'API',\n description: '',\n value: 'api',\n },\n {\n id: 'socket',\n icon: <BadgeIcon icon={Plug2} size=\"3xl\" />,\n label: 'Socket',\n description: '',\n value: 'socket',\n },\n {\n id: 'edgeAgentStandard',\n icon: <BadgeIcon icon={EdgeAgentStandardIcon} size=\"3xl\" />,\n label: 'Edge Agent Standard',\n description: '',\n value: 'edgeAgentStandard',\n },\n isBE && {\n id: 'edgeAgentAsync',\n icon: <BadgeIcon icon={EdgeAgentAsyncIcon} size=\"3xl\" />,\n label: 'Edge Agent Async',\n description: '',\n value: 'edgeAgentAsync',\n },\n]);\n\nexport function WizardDocker({ onCreate, isDockerStandalone }: Props) {\n const [creationType, setCreationType] = useState(options[0].value);\n\n const tab = getTab(creationType);\n\n return (\n <div className=\"form-horizontal\">\n <BoxSelector\n onChange={(v) => setCreationType(v)}\n options={options}\n value={creationType}\n radioName=\"creation-type\"\n />\n\n {tab}\n </div>\n );\n\n function getTab(\n creationType:\n | 'agent'\n | 'api'\n | 'socket'\n | 'edgeAgentStandard'\n | 'edgeAgentAsync'\n ) {\n switch (creationType) {\n case 'agent':\n return (\n <AgentTab\n onCreate={(environment) => onCreate(environment, 'dockerAgent')}\n isDockerStandalone={isDockerStandalone}\n />\n );\n case 'api':\n return (\n <APITab\n onCreate={(environment) => onCreate(environment, 'dockerApi')}\n isDockerStandalone={isDockerStandalone}\n />\n );\n case 'socket':\n return (\n <SocketTab\n onCreate={(environment) => onCreate(environment, 'localEndpoint')}\n isDockerStandalone={isDockerStandalone}\n />\n );\n case 'edgeAgentStandard':\n return (\n <EdgeAgentTab\n onCreate={(environment) =>\n onCreate(environment, 'dockerEdgeAgentStandard')\n }\n commands={{\n linux: isDockerStandalone\n ? [commandsTabs.standaloneLinux]\n : [commandsTabs.swarmLinux],\n win: isDockerStandalone\n ? [commandsTabs.standaloneWindow]\n : [commandsTabs.swarmWindows],\n }}\n />\n );\n case 'edgeAgentAsync':\n return (\n <EdgeAgentTab\n asyncMode\n onCreate={(environment) =>\n onCreate(environment, 'dockerEdgeAgentAsync')\n }\n commands={{\n linux: isDockerStandalone\n ? [commandsTabs.standaloneLinux]\n : [commandsTabs.swarmLinux],\n win: isDockerStandalone\n ? [commandsTabs.standaloneWindow]\n : [commandsTabs.swarmWindows],\n }}\n />\n );\n default:\n return null;\n }\n }\n}\n","import { Field, Form, Formik } from 'formik';\nimport { useReducer, useState } from 'react';\nimport { object, SchemaOf, string } from 'yup';\nimport { Network, Plug2 } from 'lucide-react';\n\nimport { useCreateAzureEnvironmentMutation } from '@/react/portainer/environments/queries/useCreateEnvironmentMutation';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { Environment } from '@/react/portainer/environments/types';\nimport { EnvironmentMetadata } from '@/react/portainer/environments/environment.service/create';\n\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { Input } from '@@/form-components/Input';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { BoxSelector, BoxSelectorOption } from '@@/BoxSelector';\nimport { BadgeIcon } from '@@/BadgeIcon';\n\nimport { NameField, useNameValidation } from '../shared/NameField';\nimport { AnalyticsStateKey } from '../types';\nimport { metadataValidation } from '../shared/MetadataFieldset/validation';\nimport { MoreSettingsSection } from '../shared/MoreSettingsSection';\n\ninterface FormValues {\n name: string;\n applicationId: string;\n tenantId: string;\n authenticationKey: string;\n meta: EnvironmentMetadata;\n}\n\nconst initialValues: FormValues = {\n name: '',\n applicationId: '',\n tenantId: '',\n authenticationKey: '',\n meta: {\n groupId: 1,\n tagIds: [],\n },\n};\n\nconst options: Array<BoxSelectorOption<'api'>> = [\n {\n description: '',\n icon: <BadgeIcon icon={Network} size=\"3xl\" />,\n id: 'api',\n label: 'API',\n value: 'api',\n },\n];\n\ninterface Props {\n onCreate(environment: Environment, analytics: AnalyticsStateKey): void;\n}\n\nexport function WizardAzure({ onCreate }: Props) {\n const [formKey, clearForm] = useReducer((state) => state + 1, 0);\n\n const [creationType, setCreationType] = useState(options[0].id);\n const mutation = useCreateAzureEnvironmentMutation();\n const validation = useValidation();\n\n return (\n <div className=\"form-horizontal\">\n <BoxSelector\n options={options}\n radioName=\"creation-type\"\n onChange={(value) => setCreationType(value)}\n value={creationType}\n />\n\n <Formik<FormValues>\n initialValues={initialValues}\n onSubmit={handleSubmit}\n key={formKey}\n validateOnMount\n validationSchema={validation}\n >\n {({ errors, dirty, isValid }) => (\n <Form>\n <NameField />\n\n <FormControl\n label=\"Application ID\"\n errors={errors.applicationId}\n inputId=\"applicationId-input\"\n required\n >\n <Field\n name=\"applicationId\"\n id=\"applicationId-input\"\n as={Input}\n placeholder=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n />\n </FormControl>\n\n <FormControl\n label=\"Tenant ID\"\n errors={errors.tenantId}\n inputId=\"tenantId-input\"\n required\n >\n <Field\n name=\"tenantId\"\n id=\"tenantId-input\"\n as={Input}\n placeholder=\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n />\n </FormControl>\n\n <FormControl\n label=\"Authentication Key\"\n errors={errors.authenticationKey}\n inputId=\"authenticationKey-input\"\n required\n >\n <Field\n name=\"authenticationKey\"\n id=\"authenticationKey-input\"\n as={Input}\n placeholder=\"cOrXoK/1D35w8YQ8nH1/8ZGwzz45JIYD5jxHKXEQknk=\"\n />\n </FormControl>\n\n <MoreSettingsSection />\n\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <LoadingButton\n className=\"vertical-center\"\n loadingText=\"Connecting environment...\"\n isLoading={mutation.isLoading}\n disabled={!dirty || !isValid}\n icon={Plug2}\n >\n Connect\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n </div>\n );\n\n function handleSubmit({\n applicationId,\n authenticationKey,\n meta,\n name,\n tenantId,\n }: typeof initialValues) {\n mutation.mutate(\n {\n name,\n azure: {\n applicationId,\n authenticationKey,\n tenantId,\n },\n meta,\n },\n {\n onSuccess(environment) {\n notifySuccess('Environment created', environment.Name);\n clearForm();\n onCreate(environment, 'aciApi');\n },\n }\n );\n }\n}\n\nfunction useValidation(): SchemaOf<FormValues> {\n return object({\n name: useNameValidation(),\n applicationId: string().required('Application ID is required'),\n tenantId: string().required('Tenant ID is required'),\n authenticationKey: string().required('Authentication Key is required'),\n meta: metadataValidation(),\n });\n}\n","import { useState } from 'react';\nimport { Info } from 'lucide-react';\n\nimport { getAgentShortVersion } from '@/portainer/views/endpoints/helpers';\nimport { useAgentDetails } from '@/react/portainer/environments/queries/useAgentDetails';\n\nimport { CopyButton } from '@@/buttons/CopyButton';\nimport { Code } from '@@/Code';\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\nimport { NavTabs } from '@@/NavTabs';\nimport { Icon } from '@@/Icon';\n\nconst deployments = [\n {\n id: 'k8sLoadBalancer',\n label: 'Kubernetes via load balancer',\n command: kubeLoadBalancerCommand,\n showAgentSecretMessage: true,\n },\n {\n id: 'k8sNodePort',\n label: 'Kubernetes via node port',\n command: kubeNodePortCommand,\n showAgentSecretMessage: true,\n },\n];\n\nexport function DeploymentScripts() {\n const [deployType, setDeployType] = useState(deployments[0].id);\n\n const agentDetailsQuery = useAgentDetails();\n\n if (!agentDetailsQuery) {\n return null;\n }\n\n const { agentVersion, agentSecret } = agentDetailsQuery;\n\n const options = deployments.map((c) => {\n const code = c.command(agentVersion);\n\n return {\n id: c.id,\n label: c.label,\n children: (\n <DeployCode\n agentSecret={agentSecret}\n showAgentSecretMessage={c.showAgentSecretMessage}\n code={code}\n />\n ),\n };\n });\n\n return (\n <>\n <FormSectionTitle>Information</FormSectionTitle>\n\n <div className=\"form-group\">\n <span className=\"col-sm-12 text-muted small\">\n Ensure that you have deployed the Portainer agent in your cluster\n first. Refer to the platform related command below to deploy it.\n </span>\n </div>\n\n <NavTabs\n options={options}\n onSelect={(id: string) => setDeployType(id)}\n selectedId={deployType}\n />\n </>\n );\n}\n\nfunction kubeNodePortCommand(agentVersion: string) {\n const agentShortVersion = getAgentShortVersion(agentVersion);\n\n return `kubectl apply -f https://downloads.portainer.io/ce${agentShortVersion}/portainer-agent-k8s-nodeport.yaml`;\n}\n\nfunction kubeLoadBalancerCommand(agentVersion: string) {\n const agentShortVersion = getAgentShortVersion(agentVersion);\n\n return `kubectl apply -f https://downloads.portainer.io/ce${agentShortVersion}/portainer-agent-k8s-lb.yaml`;\n}\n\ninterface LoadBalancerProps {\n agentSecret?: string;\n showAgentSecretMessage?: boolean;\n code: string;\n}\n\nfunction DeployCode({\n agentSecret,\n showAgentSecretMessage,\n code,\n}: LoadBalancerProps) {\n return (\n <>\n {showAgentSecretMessage && agentSecret && (\n <p className=\"text-muted small my-6\">\n <Icon icon={Info} mode=\"primary\" className=\"mr-1\" />\n Note that the environment variable AGENT_SECRET will need to be set to\n <code>{agentSecret}</code>. Please update the manifest that will be\n downloaded from the following script.\n </p>\n )}\n <Code>{code}</Code>\n <div className=\"mt-2\">\n <CopyButton copyText={code}>Copy command</CopyButton>\n </div>\n </>\n );\n}\n","import { Environment } from '@/react/portainer/environments/types';\n\nimport { AgentForm } from '../shared/AgentForm';\n\nimport { DeploymentScripts } from './DeploymentScripts';\n\ninterface Props {\n onCreate(environment: Environment): void;\n}\n\nexport function AgentPanel({ onCreate }: Props) {\n return (\n <>\n <DeploymentScripts />\n\n <div className=\"mt-5\">\n <AgentForm onCreate={onCreate} />\n </div>\n </>\n );\n}\n","import { Field, Form, Formik } from 'formik';\nimport { Plug2 } from 'lucide-react';\n\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { FormSectionTitle } from '@@/form-components/FormSectionTitle';\nimport { Input } from '@@/form-components/Input';\nimport { Button } from '@@/buttons';\nimport { TextTip } from '@@/Tip/TextTip';\n\nconst initialValues = {\n kubeConfig: '',\n name: '',\n meta: {\n groupId: 1,\n tagIds: [],\n },\n};\n\nexport function KubeConfigTeaserForm() {\n return (\n <Formik initialValues={initialValues} onSubmit={() => {}} validateOnMount>\n {() => (\n <Form>\n <FormSectionTitle>Environment details</FormSectionTitle>\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <TextTip color=\"blue\">\n <span className=\"text-muted\">\n <a\n href=\"https://docs.portainer.io/admin/environments/add/kubernetes/import\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Import the kubeconfig file\n </a>{' '}\n of an existing Kubernetes cluster located on-premise or on a\n cloud platform. This will create a corresponding environment\n in Portainer and install the agent on the cluster. Please\n ensure:\n </span>\n </TextTip>\n </div>\n <div className=\"col-sm-12 text-muted text-xs\">\n <ul className=\"p-2 pl-4\">\n <li>You have a load balancer enabled in your cluster</li>\n <li>You specify current-context in your kubeconfig</li>\n <li>\n The kubeconfig is self-contained - including any required\n credentials.\n </li>\n </ul>\n <p>\n Note: Officially supported cloud providers are Civo, Linode,\n DigitalOcean and Microsoft Azure (others are not guaranteed to\n work at present)\n </p>\n </div>\n </div>\n\n <FormControl label=\"Name\" required>\n <Field\n name=\"name\"\n as={Input}\n data-cy=\"endpointCreate-nameInput\"\n placeholder=\"e.g. docker-prod01 / kubernetes-cluster01\"\n readOnly\n />\n </FormControl>\n\n <FormControl\n label=\"Kubeconfig file\"\n required\n inputId=\"kubeconfig_file\"\n >\n <Button disabled>Select a file</Button>\n </FormControl>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n className=\"wizard-connect-button !ml-0\"\n loadingText=\"Connecting environment...\"\n isLoading={false}\n disabled\n icon={Plug2}\n >\n Connect\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n );\n}\n","import { useState } from 'react';\nimport { Zap, UploadCloud } from 'lucide-react';\nimport _ from 'lodash';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { commandsTabs } from '@/react/edge/components/EdgeScriptForm/scripts';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport EdgeAgentStandardIcon from '@/react/edge/components/edge-agent-standard.svg?c';\nimport EdgeAgentAsyncIcon from '@/react/edge/components/edge-agent-async.svg?c';\n\nimport { BoxSelectorOption } from '@@/BoxSelector/types';\nimport { BoxSelector } from '@@/BoxSelector';\nimport { BEOverlay } from '@@/BEFeatureIndicator/BEOverlay';\n\nimport { AnalyticsStateKey } from '../types';\nimport { EdgeAgentTab } from '../shared/EdgeAgentTab';\n\nimport { AgentPanel } from './AgentPanel';\nimport { KubeConfigTeaserForm } from './KubeConfigTeaserForm';\n\ninterface Props {\n onCreate(environment: Environment, analytics: AnalyticsStateKey): void;\n}\n\ntype CreationType =\n | 'agent'\n | 'edgeAgentStandard'\n | 'edgeAgentAsync'\n | 'kubeconfig';\n\nconst options: BoxSelectorOption<CreationType>[] = _.compact([\n {\n id: 'agent_endpoint',\n icon: Zap,\n iconType: 'badge',\n label: 'Agent',\n value: 'agent',\n description: '',\n },\n {\n id: 'edgeAgentStandard',\n icon: EdgeAgentStandardIcon,\n iconType: 'badge',\n label: 'Edge Agent Standard',\n description: '',\n value: 'edgeAgentStandard',\n },\n isBE && {\n id: 'edgeAgentAsync',\n icon: EdgeAgentAsyncIcon,\n iconType: 'badge',\n label: 'Edge Agent Async',\n description: '',\n value: 'edgeAgentAsync',\n },\n {\n id: 'kubeconfig_endpoint',\n icon: UploadCloud,\n iconType: 'badge',\n label: 'Import',\n value: 'kubeconfig',\n description: 'Import an existing Kubernetes config',\n feature: FeatureId.K8S_CREATE_FROM_KUBECONFIG,\n },\n]);\n\nexport function WizardKubernetes({ onCreate }: Props) {\n const [creationType, setCreationType] = useState(options[0].value);\n\n const tab = getTab(creationType);\n\n return (\n <div className=\"form-horizontal\">\n <BoxSelector\n onChange={(v) => setCreationType(v)}\n options={options}\n value={creationType}\n radioName=\"creation-type\"\n />\n\n {tab}\n </div>\n );\n\n function getTab(type: CreationType) {\n switch (type) {\n case 'agent':\n return (\n <AgentPanel\n onCreate={(environment) => onCreate(environment, 'kubernetesAgent')}\n />\n );\n case 'edgeAgentStandard':\n return (\n <EdgeAgentTab\n onCreate={(environment) =>\n onCreate(environment, 'kubernetesEdgeAgentStandard')\n }\n commands={[{ ...commandsTabs.k8sLinux, label: 'Linux' }]}\n />\n );\n case 'edgeAgentAsync':\n return (\n <EdgeAgentTab\n asyncMode\n onCreate={(environment) =>\n onCreate(environment, 'kubernetesEdgeAgentAsync')\n }\n commands={[{ ...commandsTabs.k8sLinux, label: 'Linux' }]}\n />\n );\n case 'kubeconfig':\n return (\n <div className=\"mb-3\">\n <BEOverlay featureId={FeatureId.K8S_CREATE_FROM_KUBECONFIG}>\n <KubeConfigTeaserForm />\n </BEOverlay>\n </div>\n );\n default:\n throw new Error('Creation type not supported');\n }\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"wizardStepAction\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-EnvironmentsCreationView-module__wizard-step-action\",\"wizardWrapper\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-EnvironmentsCreationView-module__wizard-wrapper\"};","// extracted by mini-css-extract-plugin\nexport default {\"wizardListWrapper\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-wrapper\",\"wizardListEdgeStatus\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-edge-status\",\"wizardListImage\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-image\",\"wizardListTitle\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-title\",\"wizardListSubtitle\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-subtitle\",\"wizardListType\":\"app-react-portainer-environments-wizard-EnvironmentsCreationView-WizardEndpointsList-WizardEndpointsList-module__wizard-list-type\"};","import { Plug2 } from 'lucide-react';\n\nimport {\n environmentTypeIcon,\n endpointTypeName,\n stripProtocol,\n} from '@/portainer/filters/filters';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport {\n isEdgeEnvironment,\n isUnassociatedEdgeEnvironment,\n} from '@/react/portainer/environments/utils';\nimport {\n ENVIRONMENTS_POLLING_INTERVAL,\n useEnvironmentList,\n} from '@/react/portainer/environments/queries/useEnvironmentList';\n\nimport { EdgeIndicator } from '@@/EdgeIndicator';\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { Icon } from '@@/Icon';\n\nimport styles from './WizardEndpointsList.module.css';\n\ninterface Props {\n environmentIds: EnvironmentId[];\n}\n\nexport function WizardEndpointsList({ environmentIds }: Props) {\n const { environments } = useEnvironmentList(\n { endpointIds: environmentIds },\n {\n refetchInterval: (environments) => {\n if (!environments) {\n return false;\n }\n\n if (!environments.value.some(isUnassociatedEdgeEnvironment)) {\n return false;\n }\n\n return ENVIRONMENTS_POLLING_INTERVAL;\n },\n\n enabled: environmentIds.length > 0,\n }\n );\n\n return (\n <Widget>\n <WidgetTitle icon={Plug2} title=\"New Environments\" />\n <WidgetBody>\n {environments.map((environment) => (\n <div className={styles.wizardListWrapper} key={environment.Id}>\n <div className={styles.wizardListImage}>\n <Icon\n icon={environmentTypeIcon(environment.Type)}\n className=\"mr-1\"\n />\n </div>\n <div className={styles.wizardListTitle}>{environment.Name}</div>\n <div className={styles.wizardListSubtitle}>\n URL: {stripProtocol(environment.URL)}\n </div>\n <div className={styles.wizardListType}>\n Type: {endpointTypeName(environment.Type)}\n </div>\n {isEdgeEnvironment(environment.Type) && (\n <div className={styles.wizardListEdgeStatus}>\n <EdgeIndicator environment={environment} />\n </div>\n )}\n </div>\n ))}\n </WidgetBody>\n </Widget>\n );\n}\n","import angular from 'angular';\nimport { StateRegistry } from '@uirouter/angularjs';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport {\n EnvironmentCreationView,\n EnvironmentTypeSelectView,\n HomeView,\n} from '@/react/portainer/environments/wizard';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\n\nexport const wizardModule = angular\n .module('portainer.app.react.views.wizard', [])\n .component(\n 'wizardEnvironmentCreationView',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(EnvironmentCreationView))),\n []\n )\n )\n .component(\n 'wizardEnvironmentTypeSelectView',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(EnvironmentTypeSelectView))),\n []\n )\n )\n .component(\n 'wizardMainView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(HomeView))), [])\n )\n .config(config).name;\n\nfunction config($stateRegistryProvider: StateRegistry) {\n $stateRegistryProvider.register({\n name: 'portainer.wizard',\n url: '/wizard',\n views: {\n 'content@': {\n component: 'wizardMainView',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'portainer.wizard.endpoints',\n url: '/endpoints',\n views: {\n 'content@': {\n component: 'wizardEnvironmentTypeSelectView',\n },\n },\n params: {\n localEndpointId: 0,\n },\n });\n\n $stateRegistryProvider.register({\n name: 'portainer.wizard.endpoints.create',\n url: '/create?envType',\n views: {\n 'content@': {\n component: 'wizardEnvironmentCreationView',\n },\n },\n params: {\n envType: '',\n },\n });\n}\n","import { useCurrentStateAndParams, useRouter } from '@uirouter/react';\nimport { useState } from 'react';\nimport _ from 'lodash';\nimport clsx from 'clsx';\nimport { ArrowLeft, ArrowRight, Wand2 } from 'lucide-react';\n\nimport { notifyError } from '@/portainer/services/notifications';\nimport {\n Environment,\n EnvironmentId,\n} from '@/react/portainer/environments/types';\nimport { useAnalytics } from '@/angulartics.matomo/analytics-services';\n\nimport { Stepper } from '@@/Stepper';\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { PageHeader } from '@@/PageHeader';\nimport { Button } from '@@/buttons';\nimport { FormSection } from '@@/form-components/FormSection';\nimport { Icon } from '@@/Icon';\n\nimport {\n EnvironmentOptionValue,\n environmentTypes,\n formTitles,\n} from '../EnvironmentTypeSelectView/environment-types';\n\nimport { WizardDocker } from './WizardDocker';\nimport { WizardAzure } from './WizardAzure';\nimport { WizardKubernetes } from './WizardKubernetes';\nimport { AnalyticsState, AnalyticsStateKey } from './types';\nimport styles from './EnvironmentsCreationView.module.css';\nimport { WizardEndpointsList } from './WizardEndpointsList';\n\nexport function EnvironmentCreationView() {\n const {\n params: { localEndpointId: localEndpointIdParam },\n } = useCurrentStateAndParams();\n\n const [environmentIds, setEnvironmentIds] = useState<EnvironmentId[]>(() => {\n const localEndpointId = parseInt(localEndpointIdParam, 10);\n\n if (!localEndpointId || Number.isNaN(localEndpointId)) {\n return [];\n }\n\n return [localEndpointId];\n });\n\n const envTypes = useParamEnvironmentTypes();\n const { trackEvent } = useAnalytics();\n const router = useRouter();\n const steps = _.compact(\n envTypes.map((id) => environmentTypes.find((eType) => eType.id === id))\n );\n const { analytics, setAnalytics } = useAnalyticsState();\n\n const {\n currentStep,\n onNextClick,\n onPreviousClick,\n currentStepIndex,\n Component,\n isFirstStep,\n isLastStep,\n } = useStepper(steps, handleFinish);\n\n const isDockerStandalone = currentStep.id === 'dockerStandalone';\n\n return (\n <>\n <PageHeader\n title=\"Quick Setup\"\n breadcrumbs={[{ label: 'Environment Wizard' }]}\n />\n\n <div className={styles.wizardWrapper}>\n <Widget>\n <WidgetTitle icon={Wand2} title=\"Environment Wizard\" />\n <WidgetBody>\n <Stepper steps={steps} currentStep={currentStepIndex + 1} />\n\n <div className=\"mt-12\">\n <FormSection title={formTitles[currentStep.id]}>\n <Component\n onCreate={handleCreateEnvironment}\n isDockerStandalone={isDockerStandalone}\n />\n\n <div\n className={clsx(\n styles.wizardStepAction,\n 'flex justify-between'\n )}\n >\n <Button disabled={isFirstStep} onClick={onPreviousClick}>\n <Icon icon={ArrowLeft} /> Previous\n </Button>\n <Button onClick={onNextClick}>\n {isLastStep ? 'Close' : 'Next'}\n <Icon icon={ArrowRight} />\n </Button>\n </div>\n </FormSection>\n </div>\n </WidgetBody>\n </Widget>\n <div>\n <WizardEndpointsList environmentIds={environmentIds} />\n </div>\n </div>\n </>\n );\n\n function handleCreateEnvironment(\n environment: Environment,\n analytics: AnalyticsStateKey\n ) {\n setEnvironmentIds((prev) => [...prev, environment.Id]);\n setAnalytics(analytics);\n }\n\n function handleFinish() {\n trackEvent('endpoint-wizard-environment-add-finish', {\n category: 'portainer',\n metadata: Object.fromEntries(\n Object.entries(analytics).map(([key, value]) => [\n _.kebabCase(key),\n value,\n ])\n ),\n });\n if (localStorage.getItem('wizardReferrer') === 'environments') {\n localStorage.removeItem('wizardReferrer');\n router.stateService.go('portainer.endpoints');\n return;\n }\n router.stateService.go('portainer.home');\n }\n}\n\nfunction useParamEnvironmentTypes(): EnvironmentOptionValue[] {\n const {\n params: { envType },\n } = useCurrentStateAndParams();\n const router = useRouter();\n\n if (!envType) {\n notifyError('No environment type provided');\n router.stateService.go('portainer.wizard.endpoints');\n return [];\n }\n\n return Array.isArray(envType) ? envType : [envType];\n}\n\nfunction useStepper(\n steps: (typeof environmentTypes)[number][],\n onFinish: () => void\n) {\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n const isFirstStep = currentStepIndex === 0;\n const isLastStep = currentStepIndex === steps.length - 1;\n const currentStep = steps[currentStepIndex];\n\n return {\n currentStep,\n onNextClick,\n onPreviousClick,\n isFirstStep,\n isLastStep,\n currentStepIndex,\n Component: getComponent(currentStep.id),\n };\n\n function onNextClick() {\n if (!isLastStep) {\n setCurrentStepIndex(currentStepIndex + 1);\n return;\n }\n\n onFinish();\n }\n\n function onPreviousClick() {\n setCurrentStepIndex(currentStepIndex - 1);\n }\n\n function getComponent(id: EnvironmentOptionValue) {\n switch (id) {\n case 'dockerStandalone':\n case 'dockerSwarm':\n return WizardDocker;\n case 'aci':\n return WizardAzure;\n case 'kubernetes':\n return WizardKubernetes;\n default:\n throw new Error(`Unknown environment type ${id}`);\n }\n }\n}\n\nfunction useAnalyticsState() {\n const [analytics, setAnalyticsState] = useState<AnalyticsState>({\n dockerAgent: 0,\n dockerApi: 0,\n kubernetesAgent: 0,\n kubernetesEdgeAgentAsync: 0,\n kubernetesEdgeAgentStandard: 0,\n kaasAgent: 0,\n aciApi: 0,\n localEndpoint: 0,\n nomadEdgeAgentStandard: 0,\n dockerEdgeAgentAsync: 0,\n dockerEdgeAgentStandard: 0,\n });\n\n return { analytics, setAnalytics };\n\n function setAnalytics(key: AnalyticsStateKey) {\n setAnalyticsState((prevState) => ({\n ...prevState,\n [key]: prevState[key] + 1,\n }));\n }\n}\n","import { useState } from 'react';\nimport { useRouter } from '@uirouter/react';\nimport _ from 'lodash';\nimport { Wand2 } from 'lucide-react';\n\nimport { useAnalytics } from '@/angulartics.matomo/analytics-services';\n\nimport { Button } from '@@/buttons';\nimport { PageHeader } from '@@/PageHeader';\nimport { Widget, WidgetBody, WidgetTitle } from '@@/Widget';\nimport { FormSection } from '@@/form-components/FormSection';\n\nimport { EnvironmentSelector } from './EnvironmentSelector';\nimport {\n EnvironmentOptionValue,\n existingEnvironmentTypes,\n newEnvironmentTypes,\n} from './environment-types';\n\nexport function EnvironmentTypeSelectView() {\n const [types, setTypes] = useState<EnvironmentOptionValue[]>([]);\n const { trackEvent } = useAnalytics();\n const router = useRouter();\n\n return (\n <>\n <PageHeader\n title=\"Quick Setup\"\n breadcrumbs={[{ label: 'Environment Wizard' }]}\n />\n\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Widget>\n <WidgetTitle icon={Wand2} title=\"Environment Wizard\" />\n <WidgetBody>\n <div className=\"form-horizontal\">\n <FormSection title=\"Select your environment(s)\">\n <p className=\"text-muted small\">\n You can onboard different types of environments, select all\n that apply.\n </p>\n <p className=\"control-label !mb-2\">\n Connect to existing environments\n </p>\n <EnvironmentSelector\n value={types}\n onChange={setTypes}\n options={existingEnvironmentTypes}\n />\n <p className=\"control-label !mb-2\">Set up new environments</p>\n <EnvironmentSelector\n value={types}\n onChange={setTypes}\n options={newEnvironmentTypes}\n hiddenSpacingCount={\n existingEnvironmentTypes.length -\n newEnvironmentTypes.length\n }\n />\n </FormSection>\n </div>\n <Button\n disabled={types.length === 0}\n onClick={() => startWizard()}\n >\n Start Wizard\n </Button>\n </WidgetBody>\n </Widget>\n </div>\n </div>\n </>\n );\n\n function startWizard() {\n if (types.length === 0) {\n return;\n }\n\n const environmentTypes = [\n ...existingEnvironmentTypes,\n ...newEnvironmentTypes,\n ];\n\n const steps = _.compact(\n types.map((id) => environmentTypes.find((eType) => eType.id === id))\n );\n\n trackEvent('endpoint-wizard-endpoint-select', {\n category: 'portainer',\n metadata: {\n environment: steps.map((step) => step.label).join('/'),\n },\n });\n\n router.stateService.go('portainer.wizard.endpoints.create', {\n envType: types,\n });\n }\n}\n","import { useRouter } from '@uirouter/react';\nimport { useMutation, useQueryClient } from 'react-query';\nimport { Trash2, Users } from 'lucide-react';\n\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\n\nimport { confirmDelete } from '@@/modals/confirm';\nimport { Button } from '@@/buttons';\nimport { Widget } from '@@/Widget';\n\nimport { Team, TeamId, TeamMembership, TeamRole } from '../types';\nimport { deleteTeam } from '../teams.service';\n\ninterface Props {\n team: Team;\n memberships: TeamMembership[];\n isAdmin: boolean;\n}\n\nexport function Details({ team, memberships, isAdmin }: Props) {\n const deleteMutation = useDeleteTeam();\n const router = useRouter();\n const teamSyncQuery = usePublicSettings<boolean>({\n select: (settings) => settings.TeamSync,\n });\n\n const leaderCount = memberships.filter(\n (m) => m.Role === TeamRole.Leader\n ).length;\n\n return (\n <div className=\"row\">\n <div className=\"col-lg-12 col-md-12 col-xs-12\">\n <Widget>\n <Widget.Title title=\"Team details\" icon={Users} />\n\n <Widget.Body className=\"no-padding\">\n <table className=\"table\">\n <tbody>\n <tr>\n <td>Name</td>\n <td>\n {!teamSyncQuery.data && team.Name}\n {isAdmin && (\n <Button\n color=\"danger\"\n size=\"xsmall\"\n onClick={handleDeleteClick}\n icon={Trash2}\n >\n Delete this team\n </Button>\n )}\n </td>\n </tr>\n <tr>\n <td>Leaders</td>\n <td>{!teamSyncQuery.data && leaderCount}</td>\n </tr>\n <tr>\n <td>Total users in team</td>\n <td>{memberships.length}</td>\n </tr>\n </tbody>\n </table>\n </Widget.Body>\n </Widget>\n </div>\n </div>\n );\n\n async function handleDeleteClick() {\n const confirmed = await confirmDelete(\n `Do you want to delete this team? Users in this team will not be deleted.`\n );\n if (!confirmed) {\n return;\n }\n\n deleteMutation.mutate(team.Id, {\n onSuccess() {\n router.stateService.go('portainer.teams');\n },\n });\n }\n}\n\nfunction useDeleteTeam() {\n const queryClient = useQueryClient();\n return useMutation(\n (id: TeamId) => deleteTeam(id),\n\n mutationOptions(\n withError('Unable to delete team'),\n withInvalidate(queryClient, [['teams']])\n )\n );\n}\n","import { TeamId } from '@/react/portainer/users/teams/types';\n\nimport { createRowContext } from '@@/datatables/RowContext';\n\ninterface RowContext {\n disabled?: boolean;\n teamId: TeamId;\n}\n\nconst { RowProvider, useRowContext } = createRowContext<RowContext>();\n\nexport { RowProvider, useRowContext };\n","import { PlusCircle } from 'lucide-react';\nimport { CellContext, ColumnDef } from '@tanstack/react-table';\n\nimport { User } from '@/portainer/users/types';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { useAddMemberMutation } from '@/react/portainer/users/teams/queries';\n\nimport { Button } from '@@/buttons';\n\nimport { useRowContext } from './RowContext';\n\nexport const name: ColumnDef<User, string> = {\n header: 'Name',\n accessorFn: (row) => row.Username,\n id: 'name',\n cell: NameCell,\n};\n\nexport function NameCell({\n getValue,\n row: { original: user },\n}: CellContext<User, string>) {\n const name = getValue();\n const { disabled, teamId } = useRowContext();\n\n const addMemberMutation = useAddMemberMutation(teamId);\n\n return (\n <>\n {name}\n\n <Button\n color=\"link\"\n className=\"space-left nopadding\"\n disabled={disabled}\n icon={PlusCircle}\n onClick={() => handleAddMember()}\n >\n Add\n </Button>\n </>\n );\n\n function handleAddMember() {\n addMemberMutation.mutate([user.Id], {\n onSuccess() {\n notifySuccess('User added to team', name);\n },\n });\n }\n}\n","import { useMemo, useState } from 'react';\nimport { UserPlus, Users } from 'lucide-react';\n\nimport { User, UserId } from '@/portainer/users/types';\nimport { useUser } from '@/react/hooks/useUser';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { useAddMemberMutation } from '@/react/portainer/users/teams/queries';\nimport { TeamId } from '@/react/portainer/users/teams/types';\n\nimport { Button } from '@@/buttons';\nimport { Datatable } from '@@/datatables';\n\nimport { name } from './name-column';\nimport { RowProvider } from './RowContext';\n\nconst columns = [name];\n\ninterface Props {\n users: User[];\n disabled?: boolean;\n teamId: TeamId;\n}\n\nexport function UsersList({ users, disabled, teamId }: Props) {\n const [search, setSearch] = useState('');\n const [pageSize, setPageSize] = useState(10);\n const addMemberMutation = useAddMemberMutation(teamId);\n const [sortBy, setSortBy] = useState({ id: 'name', desc: false });\n\n const { isAdmin } = useUser();\n\n const rowContext = useMemo(() => ({ disabled, teamId }), [disabled, teamId]);\n\n return (\n <RowProvider context={rowContext}>\n <Datatable<User>\n dataset={users}\n columns={columns}\n titleIcon={Users}\n title=\"Users\"\n renderTableActions={() =>\n isAdmin && (\n <Button\n onClick={() => handleAddAllMembers(users.map((u) => u.Id))}\n disabled={disabled || users.length === 0}\n icon={UserPlus}\n >\n Add all users\n </Button>\n )\n }\n disableSelect\n settingsManager={{\n pageSize,\n setPageSize,\n sortBy,\n setSortBy: handleSetSort,\n search,\n setSearch,\n }}\n />\n </RowProvider>\n );\n\n function handleSetSort(colId: string, desc: boolean) {\n setSortBy({ id: colId, desc });\n }\n\n function handleAddAllMembers(userIds: UserId[]) {\n addMemberMutation.mutate(userIds, {\n onSuccess() {\n notifySuccess('Success', 'All users successfully added');\n },\n });\n }\n}\n","import { TeamRole, TeamId } from '@/react/portainer/users/teams/types';\nimport { UserId } from '@/portainer/users/types';\n\nimport { createRowContext } from '@@/datatables/RowContext';\n\nexport interface RowContext {\n getRole(userId: UserId): TeamRole;\n disabled?: boolean;\n teamId: TeamId;\n}\n\nconst { RowProvider, useRowContext } = createRowContext<RowContext>();\n\nexport { RowProvider, useRowContext };\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { User } from '@/portainer/users/types';\n\nexport const columnHelper = createColumnHelper<User>();\n","import { MinusCircle } from 'lucide-react';\nimport { CellContext } from '@tanstack/react-table';\n\nimport { User, UserId } from '@/portainer/users/types';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport {\n useRemoveMemberMutation,\n useTeamMemberships,\n} from '@/react/portainer/users/teams/queries';\n\nimport { Button } from '@@/buttons';\n\nimport { useRowContext } from '../RowContext';\n\nimport { columnHelper } from './helper';\n\nexport const name = columnHelper.accessor('Username', {\n header: 'Name',\n id: 'name',\n cell: NameCell,\n});\n\nexport function NameCell({\n getValue,\n row: { original: user },\n}: CellContext<User, string>) {\n const name = getValue();\n const { disabled, teamId } = useRowContext();\n\n const membershipsQuery = useTeamMemberships(teamId);\n\n const removeMemberMutation = useRemoveMemberMutation(\n teamId,\n membershipsQuery.data\n );\n\n return (\n <>\n {name}\n\n <Button\n color=\"link\"\n className=\"space-left !p-0\"\n onClick={() => handleRemoveMember(user.Id)}\n disabled={disabled}\n icon={MinusCircle}\n >\n Remove\n </Button>\n </>\n );\n\n function handleRemoveMember(userId: UserId) {\n removeMemberMutation.mutate([userId], {\n onSuccess() {\n notifySuccess('User removed from team', name);\n },\n });\n }\n}\n","import { User as UserIcon, UserPlus, UserX } from 'lucide-react';\nimport { CellContext } from '@tanstack/react-table';\n\nimport { User } from '@/portainer/users/types';\nimport { useUser as useCurrentUser } from '@/react/hooks/useUser';\nimport { TeamRole } from '@/react/portainer/users/teams/types';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport {\n useTeamMemberships,\n useUpdateRoleMutation,\n} from '@/react/portainer/users/teams/queries';\n\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\n\nimport { useRowContext } from '../RowContext';\n\nimport { columnHelper } from './helper';\n\nexport const teamRole = columnHelper.accessor('Id', {\n header: 'Team Role',\n id: 'role',\n cell: RoleCell,\n});\n\nexport function RoleCell({\n row: { original: user },\n getValue,\n}: CellContext<User, User['Id']>) {\n const id = getValue();\n\n const { getRole, disabled, teamId } = useRowContext();\n const membershipsQuery = useTeamMemberships(teamId);\n const updateRoleMutation = useUpdateRoleMutation(\n teamId,\n membershipsQuery.data\n );\n\n const role = getRole(id);\n\n const { isAdmin } = useCurrentUser();\n\n const Cell = role === TeamRole.Leader ? LeaderCell : MemberCell;\n\n return (\n <Cell isAdmin={isAdmin} onClick={handleUpdateRole} disabled={disabled} />\n );\n\n function handleUpdateRole(role: TeamRole, onSuccessMessage: string) {\n updateRoleMutation.mutate(\n { userId: user.Id, role },\n {\n onSuccess() {\n notifySuccess(onSuccessMessage, user.Username);\n },\n }\n );\n }\n}\n\ninterface LeaderCellProps {\n isAdmin: boolean;\n onClick: (role: TeamRole, onSuccessMessage: string) => void;\n disabled?: boolean;\n}\n\nfunction LeaderCell({ isAdmin, onClick, disabled }: LeaderCellProps) {\n return (\n <div className=\"flex items-center\">\n <Icon className=\"space-right\" icon={UserPlus} mode=\"secondary-alt\" />\n\n {isAdmin && (\n <Button\n color=\"link\"\n className=\"nopadding\"\n onClick={() => onClick(TeamRole.Member, 'User is now team member')}\n disabled={disabled}\n icon={UserX}\n >\n Member\n </Button>\n )}\n </div>\n );\n}\n\ninterface MemberCellProps {\n onClick: (role: TeamRole, onSuccessMessage: string) => void;\n disabled?: boolean;\n}\n\nfunction MemberCell({ onClick, disabled }: MemberCellProps) {\n return (\n <div className=\"flex items-center\">\n <Icon className=\"space-right\" icon={UserIcon} mode=\"secondary-alt\" />\n <Button\n color=\"link\"\n className=\"nopadding\"\n onClick={() => onClick(TeamRole.Leader, 'User is now team leader')}\n disabled={disabled}\n icon={UserPlus}\n >\n Leader\n </Button>\n </div>\n );\n}\n","import { name } from './name-column';\nimport { teamRole } from './team-role-column';\n\nexport const columns = [name, teamRole];\n","import { useMemo, useState } from 'react';\nimport { Users, UserX } from 'lucide-react';\n\nimport { User, UserId } from '@/portainer/users/types';\nimport { TeamId, TeamRole } from '@/react/portainer/users/teams/types';\nimport { useUser } from '@/react/hooks/useUser';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport {\n useRemoveMemberMutation,\n useTeamMemberships,\n} from '@/react/portainer/users/teams/queries';\n\nimport { Button } from '@@/buttons';\nimport { Datatable } from '@@/datatables';\n\nimport { RowContext, RowProvider } from './RowContext';\nimport { columns } from './columns';\n\ninterface Props {\n users: User[];\n roles: Record<UserId, TeamRole>;\n disabled?: boolean;\n teamId: TeamId;\n}\n\nexport function TeamMembersList({ users, roles, disabled, teamId }: Props) {\n const membershipsQuery = useTeamMemberships(teamId);\n\n const removeMemberMutation = useRemoveMemberMutation(\n teamId,\n membershipsQuery.data\n );\n\n const [search, setSearch] = useState('');\n const [pageSize, setPageSize] = useState(10);\n const [sortBy, setSortBy] = useState({ id: 'name', desc: false });\n\n const { isAdmin } = useUser();\n\n const rowContext = useMemo<RowContext>(\n () => ({\n getRole(userId: UserId) {\n return roles[userId];\n },\n disabled,\n teamId,\n }),\n [roles, disabled, teamId]\n );\n\n return (\n <RowProvider context={rowContext}>\n <Datatable<User>\n dataset={users}\n columns={columns}\n titleIcon={Users}\n title=\"Team members\"\n renderTableActions={() =>\n isAdmin && (\n <Button\n onClick={() => handleRemoveMembers(users.map((user) => user.Id))}\n disabled={disabled || users.length === 0}\n icon={UserX}\n >\n Remove all users\n </Button>\n )\n }\n disableSelect\n settingsManager={{\n pageSize,\n setPageSize,\n sortBy,\n setSortBy: handleSetSort,\n search,\n setSearch,\n }}\n />\n </RowProvider>\n );\n\n function handleSetSort(colId: string, desc: boolean) {\n setSortBy({ id: colId, desc });\n }\n\n function handleRemoveMembers(userIds: UserId[]) {\n removeMemberMutation.mutate(userIds, {\n onSuccess() {\n notifySuccess('Success', 'All users successfully removed');\n },\n });\n }\n}\n","import _ from 'lodash';\n\nimport { User } from '@/portainer/users/types';\n\nimport { TeamId, TeamMembership } from '../../types';\n\nimport { UsersList } from './UsersList';\nimport { TeamMembersList } from './TeamMembersList';\n\ninterface Props {\n users: User[];\n memberships: TeamMembership[];\n disabled?: boolean;\n teamId: TeamId;\n}\n\nexport function TeamAssociationSelector({\n users,\n memberships,\n disabled,\n teamId,\n}: Props) {\n const teamUsers = _.compact(\n memberships.map((m) => users.find((user) => user.Id === m.UserID))\n );\n const usersNotInTeam = users.filter(\n (user) => !memberships.some((m) => m.UserID === user.Id)\n );\n const userRoles = Object.fromEntries(\n memberships.map((m) => [m.UserID, m.Role])\n );\n\n return (\n <div className=\"flex\">\n <div className=\"w-1/2\">\n <UsersList users={usersNotInTeam} disabled={disabled} teamId={teamId} />\n </div>\n <div className=\"w-1/2\">\n <TeamMembersList\n teamId={teamId}\n disabled={disabled}\n users={teamUsers}\n roles={userRoles}\n />\n </div>\n </div>\n );\n}\n","import { Formik, Field, Form } from 'formik';\nimport { useMutation, useQueryClient } from 'react-query';\nimport { useReducer } from 'react';\nimport { Plus } from 'lucide-react';\n\nimport { User } from '@/portainer/users/types';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Widget } from '@@/Widget';\nimport { Input } from '@@/form-components/Input';\nimport { UsersSelector } from '@@/UsersSelector';\nimport { LoadingButton } from '@@/buttons/LoadingButton';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { createTeam } from '../../teams.service';\nimport { Team } from '../../types';\n\nimport { FormValues } from './types';\nimport { validationSchema } from './CreateTeamForm.validation';\n\ninterface Props {\n users: User[];\n teams: Team[];\n}\n\nexport function CreateTeamForm({ users, teams }: Props) {\n const addTeamMutation = useAddTeamMutation();\n const [formKey, incFormKey] = useReducer((state: number) => state + 1, 0);\n const teamSyncQuery = usePublicSettings<boolean>({\n select: (settings) => settings.TeamSync,\n });\n\n const initialValues = {\n name: '',\n leaders: [],\n };\n\n return (\n <div className=\"row\">\n <div className=\"col-lg-12 col-md-12 col-xs-12\">\n <Widget>\n <Widget.Title\n icon={Plus}\n title=\"Add a new team\"\n className=\"vertical-center\"\n />\n <Widget.Body>\n <Formik\n initialValues={initialValues}\n validationSchema={() => validationSchema(teams)}\n onSubmit={handleAddTeamClick}\n validateOnMount\n key={formKey}\n >\n {({\n values,\n errors,\n handleSubmit,\n setFieldValue,\n isSubmitting,\n isValid,\n }) => (\n <Form\n className=\"form-horizontal\"\n onSubmit={handleSubmit}\n noValidate\n >\n <FormControl\n inputId=\"team_name\"\n label=\"Name\"\n errors={errors.name}\n required\n >\n <Field\n as={Input}\n name=\"name\"\n id=\"team_name\"\n required\n placeholder=\"e.g. development\"\n data-cy=\"team-teamNameInput\"\n />\n </FormControl>\n\n {users.length > 0 && (\n <FormControl\n inputId=\"users-input\"\n label=\"Select team leader(s)\"\n tooltip=\"You can assign one or more leaders to this team. Team leaders can manage their teams users and resources.\"\n errors={errors.leaders}\n >\n <UsersSelector\n value={values.leaders}\n onChange={(leaders) =>\n setFieldValue('leaders', leaders)\n }\n users={users}\n dataCy=\"team-teamLeaderSelect\"\n inputId=\"users-input\"\n placeholder=\"Select one or more team leaders\"\n disabled={teamSyncQuery.data}\n />\n </FormControl>\n )}\n\n {teamSyncQuery.data && (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <TextTip color=\"orange\">\n The team leader feature is disabled as external\n authentication is currently enabled with team sync.\n </TextTip>\n </div>\n </div>\n )}\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n disabled={!isValid}\n data-cy=\"team-createTeamButton\"\n isLoading={isSubmitting || addTeamMutation.isLoading}\n loadingText=\"Creating team...\"\n icon={Plus}\n >\n Create team\n </LoadingButton>\n </div>\n </div>\n </Form>\n )}\n </Formik>\n </Widget.Body>\n </Widget>\n </div>\n </div>\n );\n\n async function handleAddTeamClick(values: FormValues) {\n addTeamMutation.mutate(values, {\n onSuccess() {\n incFormKey();\n notifySuccess('Team successfully added', '');\n },\n });\n }\n}\n\nexport function useAddTeamMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n (values: FormValues) => createTeam(values.name, values.leaders),\n {\n meta: {\n error: {\n title: 'Failure',\n message: 'Failed to create team',\n },\n },\n onSuccess() {\n return queryClient.invalidateQueries(['teams']);\n },\n }\n );\n}\n","import { object, string, array, number } from 'yup';\n\nimport { Team } from '@/react/portainer/users/teams/types';\n\nexport function validationSchema(teams: Team[]) {\n return object().shape({\n name: string()\n .required('This field is required.')\n .test(\n 'is-unique',\n 'This team already exists.',\n (name) => !!name && teams.every((team) => team.Name !== name)\n ),\n leaders: array().of(number()),\n });\n}\n","import { useMutation, useQueryClient } from 'react-query';\nimport { Trash2, Users } from 'lucide-react';\nimport { ColumnDef } from '@tanstack/react-table';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport { Team, TeamId } from '@/react/portainer/users/teams/types';\nimport { deleteTeam } from '@/react/portainer/users/teams/teams.service';\n\nimport { confirmDelete } from '@@/modals/confirm';\nimport { Datatable } from '@@/datatables';\nimport { Button } from '@@/buttons';\nimport { buildNameColumn } from '@@/datatables/NameCell';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nconst storageKey = 'teams';\n\nconst columns: ColumnDef<Team>[] = [\n buildNameColumn<Team>('Name', 'Id', 'portainer.teams.team'),\n];\n\ninterface Props {\n teams: Team[];\n isAdmin: boolean;\n}\n\nconst settingsStore = createPersistedStore(storageKey);\n\nexport function TeamsDatatable({ teams, isAdmin }: Props) {\n const { handleRemove } = useRemoveMutation();\n const tableState = useTableState(settingsStore, storageKey);\n\n return (\n <Datatable<Team>\n dataset={teams}\n columns={columns}\n settingsManager={tableState}\n title=\"Teams\"\n titleIcon={Users}\n renderTableActions={(selectedRows) =>\n isAdmin && (\n <Button\n color=\"dangerlight\"\n onClick={() => handleRemoveClick(selectedRows)}\n disabled={selectedRows.length === 0}\n icon={Trash2}\n >\n Remove\n </Button>\n )\n }\n emptyContentLabel=\"No teams found\"\n />\n );\n\n function handleRemoveClick(selectedRows: Team[]) {\n const ids = selectedRows.map((row) => row.Id);\n handleRemove(ids);\n }\n}\n\nfunction useRemoveMutation() {\n const queryClient = useQueryClient();\n\n const deleteMutation = useMutation(\n async (ids: TeamId[]) =>\n promiseSequence(ids.map((id) => () => deleteTeam(id))),\n {\n meta: {\n error: { title: 'Failure', message: 'Unable to remove team' },\n },\n onSuccess() {\n return queryClient.invalidateQueries(['teams']);\n },\n }\n );\n\n return { handleRemove };\n\n async function handleRemove(teams: TeamId[]) {\n const confirmed = await confirmDelete(\n 'Are you sure you want to remove the selected teams?'\n );\n\n if (!confirmed) {\n return;\n }\n\n deleteMutation.mutate(teams, {\n onSuccess: () => {\n notifySuccess('Teams successfully removed', '');\n },\n });\n }\n}\n","import angular from 'angular';\nimport { StateRegistry } from '@uirouter/angularjs';\n\nimport { ItemView, ListView } from '@/react/portainer/users/teams';\nimport { r2a } from '@/react-tools/react2angular';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\n\nexport const teamsModule = angular\n .module('portainer.app.teams', [])\n .config(config)\n .component(\n 'teamView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ItemView))), [])\n )\n .component(\n 'teamsView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ListView))), [])\n ).name;\n\n/* @ngInject */\nfunction config($stateRegistryProvider: StateRegistry) {\n $stateRegistryProvider.register({\n name: 'portainer.teams',\n url: '/teams',\n views: {\n 'content@': {\n component: 'teamsView',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'portainer.teams.team',\n url: '/:id',\n views: {\n 'content@': {\n component: 'teamView',\n },\n },\n });\n}\n","import { useRouter } from '@uirouter/react';\n\nimport { useUsers } from '@/portainer/users/queries';\nimport { useUser } from '@/react/hooks/useUser';\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\n\nimport { TextTip } from '@@/Tip/TextTip';\nimport { PageHeader } from '@@/PageHeader';\n\nimport { useTeam, useTeamMemberships } from '../queries';\n\nimport { Details } from './Details';\nimport { TeamAssociationSelector } from './TeamAssociationSelector';\nimport { useTeamIdParam } from './useTeamIdParam';\n\nexport function ItemView() {\n const teamId = useTeamIdParam();\n\n const { isAdmin } = useUser();\n const router = useRouter();\n const teamQuery = useTeam(teamId, () =>\n router.stateService.go('portainer.teams')\n );\n const usersQuery = useUsers();\n const membershipsQuery = useTeamMemberships(teamId);\n const teamSyncQuery = usePublicSettings<boolean>({\n select: (settings) => settings.TeamSync,\n });\n\n if (!teamQuery.data) {\n return null;\n }\n\n const team = teamQuery.data;\n\n return (\n <>\n <PageHeader\n title=\"Team details\"\n breadcrumbs={[{ label: 'Teams' }, { label: team.Name }]}\n />\n\n {membershipsQuery.data && (\n <Details\n team={team}\n memberships={membershipsQuery.data}\n isAdmin={isAdmin}\n />\n )}\n\n {teamSyncQuery.data && (\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <TextTip color=\"orange\">\n The team leader feature is disabled as external authentication is\n currently enabled with team sync.\n </TextTip>\n </div>\n </div>\n )}\n\n {usersQuery.data && membershipsQuery.data && (\n <TeamAssociationSelector\n teamId={teamId}\n memberships={membershipsQuery.data}\n users={usersQuery.data}\n disabled={teamSyncQuery.data}\n />\n )}\n </>\n );\n}\n","import { useCurrentStateAndParams } from '@uirouter/react';\n\nexport function useTeamIdParam() {\n const {\n params: { id: teamIdParam },\n } = useCurrentStateAndParams();\n const teamId = parseInt(teamIdParam, 10);\n\n if (!teamIdParam || Number.isNaN(teamId)) {\n throw new Error('Team ID is missing');\n }\n\n return teamId;\n}\n","import { useUsers } from '@/portainer/users/queries';\nimport { useUser } from '@/react/hooks/useUser';\n\nimport { PageHeader } from '@@/PageHeader';\n\nimport { useTeams } from '../queries';\n\nimport { CreateTeamForm } from './CreateTeamForm';\nimport { TeamsDatatable } from './TeamsDatatable';\n\nexport function ListView() {\n const { isAdmin } = useUser();\n\n const usersQuery = useUsers(false);\n const teamsQuery = useTeams(!isAdmin, 0, { enabled: !!usersQuery.data });\n\n return (\n <>\n <PageHeader title=\"Teams\" breadcrumbs={[{ label: 'Teams management' }]} />\n\n {isAdmin && usersQuery.data && teamsQuery.data && (\n <CreateTeamForm users={usersQuery.data} teams={teamsQuery.data} />\n )}\n\n {teamsQuery.data && (\n <TeamsDatatable teams={teamsQuery.data} isAdmin={isAdmin} />\n )}\n </>\n );\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { EdgeUpdateResponse, StatusType } from '../types';\n\nimport { queryKeys } from './query-keys';\nimport { buildUrl } from './urls';\n\nexport type EdgeUpdateListItemResponse = EdgeUpdateResponse & {\n status: StatusType;\n statusMessage: string;\n};\n\nasync function getList(includeEdgeStacks?: boolean) {\n try {\n const { data } = await axios.get<EdgeUpdateListItemResponse[]>(buildUrl(), {\n params: { includeEdgeStacks },\n });\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Failed to get list of edge update schedules'\n );\n }\n}\n\nexport function useList(includeEdgeStacks?: boolean) {\n return useQuery(queryKeys.list(includeEdgeStacks), () =>\n getList(includeEdgeStacks)\n );\n}\n","import { EnvironmentId } from '@/react/portainer/environments/types';\nimport { UserId } from '@/portainer/users/types';\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\n\nexport enum ScheduleType {\n Update = 1,\n Rollback,\n}\n\nexport enum StatusType {\n Pending,\n Failed,\n Success,\n Sent,\n}\n\nexport type EdgeUpdateSchedule = {\n id: number;\n name: string;\n\n type: ScheduleType;\n\n created: number;\n createdBy: UserId;\n version: string;\n environmentsPreviousVersions: Record<EnvironmentId, string>;\n};\n\nexport type EdgeUpdateResponse = EdgeUpdateSchedule & {\n // from edge stack:\n edgeGroupIds: EdgeGroup['Id'][];\n scheduledTime: string;\n};\n","import { useQueryClient, useMutation } from 'react-query';\n\nimport { promiseSequence } from '@/portainer/helpers/promise-utils';\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport {\n mutationOptions,\n withError,\n withInvalidate,\n} from '@/react-tools/react-query';\n\nimport { EdgeUpdateSchedule } from '../types';\n\nimport { buildUrl } from './urls';\nimport { queryKeys } from './query-keys';\n\nexport function useRemoveMutation() {\n const queryClient = useQueryClient();\n\n return useMutation(\n (schedules: EdgeUpdateSchedule[]) =>\n promiseSequence(\n schedules.map((schedule) => () => deleteUpdateSchedule(schedule.id))\n ),\n\n mutationOptions(\n withInvalidate(queryClient, [queryKeys.base()]),\n withError()\n )\n );\n}\n\nasync function deleteUpdateSchedule(id: EdgeUpdateSchedule['id']) {\n try {\n const { data } = await axios.delete<EdgeUpdateSchedule[]>(buildUrl(id));\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Failed to delete edge update schedule'\n );\n }\n}\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { DecoratedItem } from '../types';\n\nexport const columnHelper = createColumnHelper<DecoratedItem>();\n","import { isoDateFromTimestamp } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const created = columnHelper.accessor('created', {\n id: 'created',\n header: 'Created',\n cell: ({ getValue }) => {\n const value = getValue();\n return isoDateFromTimestamp(value);\n },\n});\n","import { CellContext } from '@tanstack/react-table';\n\nimport { DecoratedItem } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const groups = columnHelper.accessor('edgeGroupNames', {\n header: 'Edge Groups',\n cell: GroupsCell,\n});\n\nexport function GroupsCell({\n getValue,\n}: CellContext<DecoratedItem, Array<string>>) {\n const groups = getValue();\n\n return groups.join(', ');\n}\n","import { CellContext } from '@tanstack/react-table';\n\nimport { StatusType } from '../../types';\nimport { DecoratedItem } from '../types';\n\nimport { columnHelper } from './helper';\n\nexport const scheduleStatus = columnHelper.accessor('status', {\n header: 'Status',\n cell: StatusCell,\n});\n\nfunction StatusCell({\n getValue,\n row: {\n original: { statusMessage },\n },\n}: CellContext<DecoratedItem, DecoratedItem['status']>) {\n const status = getValue();\n\n switch (status) {\n case StatusType.Failed:\n return statusMessage;\n default:\n return StatusType[status];\n }\n}\n","import { columnHelper } from './helper';\n\nexport const scheduledTime = columnHelper.accessor('scheduledTime', {\n header: 'Scheduled Time & Date',\n});\n","import { ScheduleType } from '../../types';\n\nimport { columnHelper } from './helper';\n\nexport const scheduleType = columnHelper.accessor('type', {\n header: 'Type',\n cell: ({ getValue }) => {\n const value = getValue();\n\n return ScheduleType[value];\n },\n});\n","import { buildNameColumn } from '@@/datatables/NameCell';\n\nimport { DecoratedItem } from '../types';\n\nimport { created } from './created';\nimport { groups } from './groups';\nimport { scheduleStatus } from './schedule-status';\nimport { scheduledTime } from './scheduled-time';\nimport { scheduleType } from './type';\n\nexport const columns = [\n buildNameColumn<DecoratedItem>('name', 'id', '.item'),\n scheduledTime,\n groups,\n scheduleType,\n scheduleStatus,\n created,\n];\n","import { Clock, Trash2 } from 'lucide-react';\nimport { useMemo } from 'react';\nimport _ from 'lodash';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { withLimitToBE } from '@/react/hooks/useLimitToBE';\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\n\nimport { confirmDelete } from '@@/modals/confirm';\nimport { Datatable } from '@@/datatables';\nimport { PageHeader } from '@@/PageHeader';\nimport { Button } from '@@/buttons';\nimport { Link } from '@@/Link';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { useList } from '../queries/list';\nimport { EdgeUpdateSchedule, StatusType } from '../types';\nimport { useRemoveMutation } from '../queries/useRemoveMutation';\nimport { BetaAlert } from '../common/BetaAlert';\n\nimport { columns } from './columns';\nimport { createStore } from './datatable-store';\nimport { DecoratedItem } from './types';\n\nconst storageKey = 'update-schedules-list';\nconst settingsStore = createStore(storageKey);\n\nexport default withLimitToBE(ListView);\n\nexport function ListView() {\n const tableState = useTableState(settingsStore, storageKey);\n\n const listQuery = useList(true);\n const groupsQuery = useEdgeGroups({\n select: (groups) => Object.fromEntries(groups.map((g) => [g.Id, g.Name])),\n });\n\n const items: Array<DecoratedItem> = useMemo(() => {\n if (!listQuery.data || !groupsQuery.data) {\n return [];\n }\n\n return listQuery.data.map((item) => ({\n ...item,\n edgeGroupNames: _.compact(\n item.edgeGroupIds.map((id) => groupsQuery.data[id])\n ),\n }));\n }, [listQuery.data, groupsQuery.data]);\n\n if (!listQuery.data || !groupsQuery.data) {\n return null;\n }\n\n return (\n <>\n <PageHeader\n title=\"Update & Rollback\"\n reload\n breadcrumbs=\"Update and rollback\"\n />\n\n <BetaAlert\n className=\"ml-[15px] mb-2\"\n message=\"Beta feature - currently limited to standalone Linux and Nomad edge devices.\"\n />\n\n <Datatable\n dataset={items}\n columns={columns}\n settingsManager={tableState}\n title=\"Update & rollback\"\n titleIcon={Clock}\n emptyContentLabel=\"No schedules found\"\n isLoading={listQuery.isLoading}\n renderTableActions={(selectedRows) => (\n <TableActions selectedRows={selectedRows} />\n )}\n isRowSelectable={(row) => row.original.status === StatusType.Pending}\n />\n </>\n );\n}\n\nfunction TableActions({\n selectedRows,\n}: {\n selectedRows: EdgeUpdateSchedule[];\n}) {\n const removeMutation = useRemoveMutation();\n return (\n <>\n <Button\n icon={Trash2}\n color=\"dangerlight\"\n onClick={() => handleRemove()}\n disabled={selectedRows.length === 0}\n >\n Remove\n </Button>\n\n <Link to=\".create\">\n <Button>Add update & rollback schedule</Button>\n </Link>\n </>\n );\n\n async function handleRemove() {\n const confirmed = await confirmDelete(\n 'Are you sure you want to remove these?'\n );\n if (!confirmed) {\n return;\n }\n\n removeMutation.mutate(selectedRows, {\n onSuccess: () => {\n notifySuccess('Success', 'Schedules successfully removed');\n },\n });\n }\n}\n","import {\n refreshableSettings,\n hiddenColumnsSettings,\n RefreshableTableSettings,\n SettableColumnsTableSettings,\n createPersistedStore,\n BasicTableSettings,\n} from '@/react/components/datatables/types';\n\ninterface TableSettings\n extends BasicTableSettings,\n SettableColumnsTableSettings,\n RefreshableTableSettings {}\n\nexport function createStore(storageKey: string) {\n return createPersistedStore<TableSettings>(\n storageKey,\n 'time',\n\n (set) => ({\n ...hiddenColumnsSettings(set),\n ...refreshableSettings(set),\n })\n );\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError, withInvalidate } from '@/react-tools/react-query';\n\nimport { EdgeUpdateSchedule } from '../types';\nimport { FormValues } from '../common/types';\n\nimport { queryKeys } from './query-keys';\nimport { buildUrl } from './urls';\n\nasync function create(schedule: FormValues) {\n try {\n const { data } = await axios.post<EdgeUpdateSchedule>(buildUrl(), schedule);\n\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Failed to create edge update schedule'\n );\n }\n}\n\nexport function useCreateMutation() {\n const queryClient = useQueryClient();\n return useMutation(create, {\n ...withInvalidate(queryClient, [queryKeys.base()]),\n ...withError(),\n });\n}\n","import { Field, useField } from 'formik';\nimport { string } from 'yup';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\n\nimport { EdgeUpdateSchedule } from '../types';\n\nimport { FormValues } from './types';\n\nexport function NameField() {\n const [{ name }, { error }] = useField<FormValues['name']>('name');\n\n return (\n <FormControl\n label=\"Name\"\n required\n inputId=\"name-input\"\n errors={error}\n tooltip=\"A descriptive name helps identify the update or roll back schedule when you have more than one\"\n >\n <Field as={Input} name={name} id=\"name-input\" />\n </FormControl>\n );\n}\n\nexport function nameValidation(\n schedules: EdgeUpdateSchedule[],\n currentId?: EdgeUpdateSchedule['id']\n) {\n return string()\n .required('This field is required')\n .test('unique', 'Name must be unique', (value) =>\n schedules.every((s) => s.id === currentId || s.name !== value)\n );\n}\n","import _ from 'lodash';\nimport { useMemo } from 'react';\n\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\n\nexport function useEdgeGroupsEnvironmentIds(\n edgeGroupsIds: Array<EdgeGroup['Id']>\n) {\n const groupsQuery = useEdgeGroups({\n select: (groups) =>\n Object.fromEntries(groups.map((g) => [g.Id, g.Endpoints])),\n });\n\n const envIds = useMemo(\n () =>\n _.uniq(\n _.compact(\n edgeGroupsIds.flatMap((id) =>\n groupsQuery.data ? groupsQuery.data[id] : []\n )\n )\n ),\n [edgeGroupsIds, groupsQuery.data]\n );\n\n return useMemo(\n () => ({\n data: groupsQuery.data ? envIds : null,\n isLoading: groupsQuery.isLoading,\n }),\n [envIds, groupsQuery.data, groupsQuery.isLoading]\n );\n}\n","import DateTimePicker from 'react-datetime-picker';\nimport { Calendar, X } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { string } from 'yup';\nimport { useField } from 'formik';\n\nimport {\n isoDate,\n parseIsoDate,\n TIME_FORMAT,\n} from '@/portainer/filters/filters';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { FormValues } from './types';\n\ninterface Props {\n disabled?: boolean;\n}\n\nexport function ScheduledTimeField({ disabled }: Props) {\n const [{ name, value }, { error }, { setValue }] =\n useField<FormValues['scheduledTime']>('scheduledTime');\n\n const dateValue = useMemo(() => parseIsoDate(value), [value]);\n\n if (!value) {\n return null;\n }\n\n return (\n <>\n <FormControl label=\"Schedule date & time\" errors={error}>\n {!disabled ? (\n <DateTimePicker\n format=\"y-MM-dd HH:mm:ss\"\n className=\"form-control [&>div]:border-0\"\n onChange={(date) => {\n const dateToSave =\n date || new Date(Date.now() + 24 * 60 * 60 * 1000);\n setValue(isoDate(dateToSave.valueOf()));\n }}\n name={name}\n value={dateValue}\n calendarIcon={<Calendar className=\"lucide\" />}\n clearIcon={<X className=\"lucide\" />}\n disableClock\n minDate={new Date(Date.now() - 24 * 60 * 60 * 1000)}\n />\n ) : (\n <Input defaultValue={value} disabled />\n )}\n </FormControl>\n {!disabled && value && (\n <TextTip color=\"blue\">\n If time zone is not set on edge agent then UTC+0 will be used.\n </TextTip>\n )}\n </>\n );\n}\n\nexport function timeValidation() {\n return string()\n .required('Scheduled time is required')\n .test(\n 'validFormat',\n `Scheduled time must be in the format ${TIME_FORMAT}`,\n (value) => isValidDate(parseIsoDate(value))\n )\n .test(\n 'validDate',\n `Scheduled time must be bigger then ${isoDate(\n Date.now() - 24 * 60 * 60 * 1000\n )}`,\n (value) =>\n parseIsoDate(value).valueOf() > Date.now() - 24 * 60 * 60 * 1000\n );\n}\n\nexport function defaultValue() {\n return isoDate(Date.now() + 24 * 60 * 60 * 1000);\n}\n\nfunction isValidDate(date: Date) {\n return date instanceof Date && !Number.isNaN(date.valueOf());\n}\n","import { Field, useField } from 'formik';\nimport _ from 'lodash';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Select } from '@@/form-components/Input';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { useSupportedAgentVersions } from '../queries/useSupportedAgentVersions';\n\nimport { FormValues } from './types';\n\n/**\n * in-case agents don't have any version field, it means they are version less then 2.15.x or that they still not associated.\n */\nconst DEFAULT_MIN_VERSION = '2.14.10';\n\nexport function VersionSelect({\n minVersion = DEFAULT_MIN_VERSION,\n}: {\n minVersion?: string;\n}) {\n const [{ value: version }, { error }, { setValue }] =\n useField<FormValues['version']>('version');\n const supportedAgentVersionsQuery = useSupportedAgentVersions(minVersion, {\n onSuccess(versions) {\n if (versions.includes(version)) {\n return;\n }\n\n setValue(_.last(versions) || '');\n },\n });\n\n if (!supportedAgentVersionsQuery.data) {\n return null;\n }\n\n if (!supportedAgentVersionsQuery.data.length) {\n return (\n <FormControl label=\"Version\">\n <TextTip>No supported versions available</TextTip>\n </FormControl>\n );\n }\n\n const supportedVersions = supportedAgentVersionsQuery.data.map((version) => ({\n label: version,\n value: version,\n }));\n\n return (\n <FormControl label=\"Version\" errors={error} inputId=\"version-input\">\n <Field\n id=\"version-input\"\n name=\"version\"\n as={Select}\n className=\"form-control\"\n placeholder=\"Version\"\n options={supportedVersions}\n />\n </FormControl>\n );\n}\n","import _ from 'lodash';\n\nimport { Environment } from '@/react/portainer/environments/types';\nimport { semverCompare } from '@/react/common/semver-utils';\n\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { VersionSelect } from './VersionSelect';\nimport { ScheduledTimeField } from './ScheduledTimeField';\n\ninterface Props {\n environments: Environment[];\n hasTimeZone: boolean;\n hasNoTimeZone: boolean;\n hasGroupSelected: boolean;\n version: string;\n}\n\nexport function UpdateScheduleDetailsFieldset({\n environments,\n hasTimeZone,\n hasNoTimeZone,\n hasGroupSelected,\n version,\n}: Props) {\n const minVersion = _.first(\n _.compact<string>(environments.map((env) => env.Agent.Version)).sort(\n (a, b) => semverCompare(a, b)\n )\n );\n\n return (\n <>\n {environments.length > 0 ? (\n !!version && (\n <TextTip color=\"blue\">\n {environments.length} environment(s) will be updated to {version}\n </TextTip>\n )\n ) : (\n <TextTip color=\"orange\">\n No environments options for the selected edge groups\n </TextTip>\n )}\n <VersionSelect minVersion={minVersion} />\n\n {hasTimeZone && hasGroupSelected && <ScheduledTimeField />}\n {hasNoTimeZone && (\n <TextTip>\n These edge groups have older versions of the edge agent that do not\n support scheduling, these will happen immediately\n </TextTip>\n )}\n </>\n );\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { queryKeys } from './query-keys';\nimport { buildUrl } from './urls';\n\ninterface Options<T> {\n select?: (data: Record<EnvironmentId, string>) => T;\n onSuccess?(data: T): void;\n enabled?: boolean;\n}\n\nexport function usePreviousVersions<T = Record<EnvironmentId, string>>({\n select,\n onSuccess,\n enabled,\n}: Options<T> = {}) {\n return useQuery(queryKeys.previousVersions(), getPreviousVersions, {\n select,\n onSuccess,\n enabled,\n });\n}\n\nasync function getPreviousVersions() {\n try {\n const { data } = await axios.get<Record<EnvironmentId, string>>(\n buildUrl(undefined, 'previous_versions')\n );\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Failed to get list of edge update schedules'\n );\n }\n}\n","import { useFormikContext } from 'formik';\nimport _ from 'lodash';\nimport { useMemo, useEffect } from 'react';\n\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\n\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { usePreviousVersions } from '../queries/usePreviousVersions';\n\nimport { FormValues } from './types';\nimport { useEdgeGroupsEnvironmentIds } from './useEdgeGroupsEnvironmentIds';\n\nexport function RollbackOptions() {\n const { isLoading, count, version, versionError } = useSelectVersionOnMount();\n\n const groupNames = useGroupNames();\n\n if (versionError) {\n return <TextTip>{versionError}</TextTip>;\n }\n\n if (!count) {\n return (\n <TextTip>\n There are no rollback options available for your selected groups(s)\n </TextTip>\n );\n }\n\n if (isLoading || !groupNames) {\n return null;\n }\n\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n {count} edge device(s) from {groupNames} will rollback to version{' '}\n {version}\n </div>\n </div>\n );\n}\n\nfunction useSelectVersionOnMount() {\n const {\n values: { groupIds, version },\n setFieldValue,\n setFieldError,\n errors: { version: versionError },\n } = useFormikContext<FormValues>();\n\n const environmentIdsQuery = useEdgeGroupsEnvironmentIds(groupIds);\n\n const previousVersionsQuery = usePreviousVersions<string[]>({\n enabled: !!environmentIdsQuery.data,\n });\n\n const previousVersions = useMemo(\n () =>\n previousVersionsQuery.data\n ? _.uniq(\n _.compact(\n environmentIdsQuery.data?.map(\n (envId) => previousVersionsQuery.data[envId]\n )\n )\n )\n : [],\n [environmentIdsQuery.data, previousVersionsQuery.data]\n );\n\n useEffect(() => {\n switch (previousVersions.length) {\n case 0:\n setFieldValue('version', '');\n setFieldError('version', 'No rollback options available');\n break;\n case 1:\n setFieldValue('version', previousVersions[0]);\n break;\n default:\n setFieldError(\n 'version',\n 'Rollback is not available for these edge group as there are multiple version types to rollback to'\n );\n }\n }, [previousVersions, setFieldError, setFieldValue]);\n\n return {\n isLoading: previousVersionsQuery.isLoading,\n versionError,\n version,\n count: environmentIdsQuery.data?.length,\n };\n}\n\nfunction useGroupNames() {\n const {\n values: { groupIds },\n } = useFormikContext<FormValues>();\n\n const groupsQuery = useEdgeGroups({\n select: (groups) => Object.fromEntries(groups.map((g) => [g.Id, g.Name])),\n });\n\n if (!groupsQuery.data) {\n return null;\n }\n\n return groupIds.map((id) => groupsQuery.data[id]).join(', ');\n}\n","import { RollbackOptions } from './RollbackOptions';\nimport { ScheduledTimeField } from './ScheduledTimeField';\n\ninterface Props {\n hasTimeZone: boolean;\n hasGroupSelected: boolean;\n}\n\nexport function RollbackScheduleDetailsFieldset({\n hasTimeZone,\n hasGroupSelected,\n}: Props) {\n return (\n <div className=\"mt-3\">\n <RollbackOptions />\n {hasTimeZone && hasGroupSelected && <ScheduledTimeField />}\n </div>\n );\n}\n","import { useFormikContext } from 'formik';\nimport { number } from 'yup';\nimport { useEffect } from 'react';\n\nimport { NavTabs } from '@@/NavTabs';\n\nimport { ScheduleType } from '../types';\n\nimport { useEdgeGroupsEnvironmentIds } from './useEdgeGroupsEnvironmentIds';\nimport { useEnvironments } from './useEnvironments';\nimport { defaultValue } from './ScheduledTimeField';\nimport { FormValues } from './types';\nimport { UpdateScheduleDetailsFieldset } from './UpdateScheduleDetailsFieldset';\nimport { RollbackScheduleDetailsFieldset } from './RollbackScheduleDetailsFieldset';\n\nexport function ScheduleTypeSelector() {\n const { values, setFieldValue } = useFormikContext<FormValues>();\n\n const environmentIdsQuery = useEdgeGroupsEnvironmentIds(values.groupIds);\n\n const edgeGroupsEnvironmentIds = environmentIdsQuery.data || [];\n const environments = useEnvironments(edgeGroupsEnvironmentIds);\n\n // old version is version that doesn't support scheduling of updates\n const hasNoTimeZone = environments.some((env) => !env.LocalTimeZone);\n const hasTimeZone = environments.some((env) => env.LocalTimeZone);\n const hasGroupSelected = values.groupIds.length > 0;\n\n useEffect(() => {\n if (!hasTimeZone || !hasGroupSelected) {\n setFieldValue('scheduledTime', '');\n } else if (!values.scheduledTime) {\n setFieldValue('scheduledTime', defaultValue());\n }\n }, [setFieldValue, hasTimeZone, values.scheduledTime, hasGroupSelected]);\n\n return (\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <NavTabs\n options={[\n {\n id: ScheduleType.Update,\n label: 'Update',\n children: (\n <UpdateScheduleDetailsFieldset\n environments={environments}\n hasTimeZone={hasTimeZone}\n hasNoTimeZone={hasNoTimeZone}\n hasGroupSelected={hasGroupSelected}\n version={values.version}\n />\n ),\n },\n {\n id: ScheduleType.Rollback,\n label: 'Rollback',\n children: (\n <RollbackScheduleDetailsFieldset\n hasTimeZone={hasTimeZone}\n hasGroupSelected={hasGroupSelected}\n />\n ),\n },\n ]}\n selectedId={values.type}\n onSelect={handleChangeType}\n />\n </div>\n </div>\n );\n\n function handleChangeType(scheduleType: ScheduleType) {\n setFieldValue('type', scheduleType);\n setFieldValue('version', '');\n }\n}\n\nexport function typeValidation() {\n return number()\n .oneOf([ScheduleType.Rollback, ScheduleType.Update])\n .default(ScheduleType.Update);\n}\n","import { useEnvironmentList } from '@/react/portainer/environments/queries/useEnvironmentList';\nimport { EdgeTypes, EnvironmentId } from '@/react/portainer/environments/types';\n\nexport function useEnvironments(environmentsIds: Array<EnvironmentId>) {\n const environmentsQuery = useEnvironmentList(\n { endpointIds: environmentsIds, types: EdgeTypes },\n {\n enabled: environmentsIds.length > 0,\n }\n );\n\n return environmentsQuery.environments;\n}\n","import { array, object, SchemaOf, string, number } from 'yup';\n\nimport { parseIsoDate } from '@/portainer/filters/filters';\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\n\nimport { EdgeUpdateSchedule, ScheduleType } from '../types';\n\nimport { nameValidation } from './NameField';\nimport { typeValidation } from './ScheduleTypeSelector';\nimport { FormValues } from './types';\n\nexport function validation(\n schedules: EdgeUpdateSchedule[],\n edgeGroups: Array<EdgeGroup> | undefined,\n currentId?: EdgeUpdateSchedule['id']\n): SchemaOf<FormValues> {\n return object({\n groupIds: array()\n .of(number().default(0))\n .min(1, 'At least one group is required')\n .test(\n 'At least one group must have endpoints',\n (groupIds) =>\n !!(\n groupIds &&\n edgeGroups &&\n groupIds?.flatMap(\n (id) => edgeGroups?.find((group) => group.Id === id)?.Endpoints\n ).length > 0\n )\n ),\n name: nameValidation(schedules, currentId),\n type: typeValidation(),\n scheduledTime: string()\n .default('')\n .test('valid', (value) => !value || parseIsoDate(value) !== null),\n version: string()\n .default('')\n .when('type', {\n is: ScheduleType.Update,\n // update type\n then: (schema) => schema.required('Version is required'),\n // rollback\n otherwise: (schema) => schema.required('No rollback options available'),\n }),\n registryId: number().default(0),\n });\n}\n","import { FormikErrors, FormikHandlers } from 'formik';\n\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\n\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Select } from '@@/form-components/ReactSelect';\nimport { TextTip } from '@@/Tip/TextTip';\n\nimport { FormValues } from './types';\n\ninterface Props {\n disabled?: boolean;\n onBlur: FormikHandlers['handleBlur'];\n value: FormValues['groupIds'];\n error?: FormikErrors<FormValues>['groupIds'];\n onChange(value: FormValues['groupIds']): void;\n}\n\nexport function EdgeGroupsField({\n disabled,\n onBlur,\n value,\n error,\n onChange,\n}: Props) {\n const groupsQuery = useEdgeGroups();\n\n const selectedGroups = groupsQuery.data?.filter((group) =>\n value.includes(group.Id)\n );\n\n return (\n <div>\n <FormControl\n label=\"Groups\"\n required\n inputId=\"groups-select\"\n errors={error}\n tooltip=\"Updates are done based on groups, allowing you to choose multiple devices at the same time and the ability to roll out progressively across all environments by scheduling them for different days.\"\n >\n <Select\n name=\"groupIds\"\n onBlur={onBlur}\n value={selectedGroups}\n inputId=\"groups-select\"\n placeholder=\"Select one or multiple group(s)\"\n onChange={(selectedGroups) =>\n onChange(selectedGroups.map((g) => g.Id))\n }\n isMulti\n options={groupsQuery.data || []}\n getOptionLabel={(group) => group.Name}\n getOptionValue={(group) => group.Id.toString()}\n closeMenuOnSelect={false}\n isDisabled={disabled}\n />\n </FormControl>\n <TextTip color=\"blue\">\n Select groups of Edge environments to update\n </TextTip>\n </div>\n );\n}\n","import { useMemo } from 'react';\nimport { Settings } from 'lucide-react';\nimport { Formik, Form as FormikForm } from 'formik';\nimport { useRouter } from '@uirouter/react';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { withLimitToBE } from '@/react/hooks/useLimitToBE';\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\n\nimport { PageHeader } from '@@/PageHeader';\nimport { Widget } from '@@/Widget';\nimport { LoadingButton } from '@@/buttons';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { Link } from '@@/Link';\n\nimport { ScheduleType } from '../types';\nimport { useCreateMutation } from '../queries/create';\nimport { FormValues } from '../common/types';\nimport { validation } from '../common/validation';\nimport { ScheduleTypeSelector } from '../common/ScheduleTypeSelector';\nimport { useList } from '../queries/list';\nimport { NameField } from '../common/NameField';\nimport { EdgeGroupsField } from '../common/EdgeGroupsField';\nimport { BetaAlert } from '../common/BetaAlert';\nimport { defaultValue } from '../common/ScheduledTimeField';\n\nexport default withLimitToBE(CreateView);\n\nfunction CreateView() {\n const initialValues = useMemo<FormValues>(\n () => ({\n name: '',\n groupIds: [],\n type: ScheduleType.Update,\n version: '',\n scheduledTime: defaultValue(),\n }),\n []\n );\n const edgeGroupsQuery = useEdgeGroups();\n const schedulesQuery = useList();\n\n const createMutation = useCreateMutation();\n const router = useRouter();\n\n if (!schedulesQuery.data) {\n return null;\n }\n\n const schedules = schedulesQuery.data;\n\n return (\n <>\n <PageHeader\n title=\"Update & Rollback\"\n breadcrumbs=\"Edge agent update and rollback\"\n />\n\n <BetaAlert\n className=\"ml-[15px] mb-2\"\n message=\"Beta feature - currently limited to standalone Linux and Nomad edge devices.\"\n />\n\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Widget>\n <Widget.Title title=\"Update & Rollback Scheduler\" icon={Settings} />\n <Widget.Body>\n <TextTip color=\"blue\" className=\"mb-2\">\n Devices need to be allocated to an Edge group, visit the{' '}\n <Link to=\"edge.groups\">Edge Groups</Link> page to assign\n environments and create groups.\n </TextTip>\n\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validateOnMount\n validationSchema={() =>\n validation(schedules, edgeGroupsQuery.data)\n }\n >\n {({ isValid, setFieldValue, values, handleBlur, errors }) => (\n <FormikForm className=\"form-horizontal\">\n <NameField />\n <EdgeGroupsField\n onChange={(value) => setFieldValue('groupIds', value)}\n value={values.groupIds}\n onBlur={handleBlur}\n error={errors.groupIds}\n />\n\n <TextTip color=\"blue\">\n You can upgrade from any agent version to 2.17 or later\n only. You can not upgrade to an agent version prior to\n 2.17 . The ability to rollback to originating version is\n for 2.15.0+ only.\n </TextTip>\n\n <div className=\"mt-2\">\n <ScheduleTypeSelector />\n </div>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n disabled={!isValid}\n isLoading={createMutation.isLoading}\n loadingText=\"Creating...\"\n >\n Create Schedule\n </LoadingButton>\n </div>\n </div>\n </FormikForm>\n )}\n </Formik>\n </Widget.Body>\n </Widget>\n </div>\n </div>\n </>\n );\n\n function handleSubmit(values: FormValues) {\n createMutation.mutate(values, {\n onSuccess() {\n notifySuccess('Success', 'Created schedule successfully');\n router.stateService.go('^');\n },\n });\n }\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { EdgeUpdateResponse, EdgeUpdateSchedule } from '../types';\n\nimport { queryKeys } from './query-keys';\nimport { buildUrl } from './urls';\n\nexport function useItem(id: EdgeUpdateSchedule['id']) {\n return useQuery(queryKeys.item(id), () => getItem(id));\n}\n\ntype EdgeUpdateItemResponse = EdgeUpdateResponse & {\n isActive: boolean;\n};\n\nasync function getItem(id: EdgeUpdateSchedule['id']) {\n try {\n const { data } = await axios.get<EdgeUpdateItemResponse>(buildUrl(id), {\n params: { includeEdgeStack: true },\n });\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Failed to get list of edge update schedules'\n );\n }\n}\n","import { useMutation, useQueryClient } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError, withInvalidate } from '@/react-tools/react-query';\n\nimport { EdgeUpdateSchedule } from '../types';\nimport { FormValues } from '../common/types';\n\nimport { queryKeys } from './query-keys';\nimport { buildUrl } from './urls';\n\ninterface Update {\n id: EdgeUpdateSchedule['id'];\n values: Partial<FormValues>;\n}\n\nasync function update({ id, values }: Update) {\n try {\n const { data } = await axios.put<EdgeUpdateSchedule>(buildUrl(id), values);\n\n return data;\n } catch (err) {\n throw parseAxiosError(\n err as Error,\n 'Failed to update edge update schedule'\n );\n }\n}\n\nexport function useUpdateMutation() {\n const queryClient = useQueryClient();\n return useMutation(update, {\n ...withInvalidate(queryClient, [queryKeys.base()]),\n ...withError(),\n });\n}\n","import { Settings } from 'lucide-react';\nimport { Formik, Form as FormikForm } from 'formik';\nimport { useCurrentStateAndParams, useRouter } from '@uirouter/react';\nimport { object, SchemaOf } from 'yup';\n\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { withLimitToBE } from '@/react/hooks/useLimitToBE';\nimport { useEdgeGroups } from '@/react/edge/edge-groups/queries/useEdgeGroups';\nimport { EdgeGroup } from '@/react/edge/edge-groups/types';\n\nimport { PageHeader } from '@@/PageHeader';\nimport { Widget } from '@@/Widget';\nimport { LoadingButton } from '@@/buttons';\nimport { TextTip } from '@@/Tip/TextTip';\nimport { InformationPanel } from '@@/InformationPanel';\nimport { Link } from '@@/Link';\n\nimport { useItem } from '../queries/useItem';\nimport { validation } from '../common/validation';\nimport { useUpdateMutation } from '../queries/useUpdateMutation';\nimport { useList } from '../queries/list';\nimport { NameField, nameValidation } from '../common/NameField';\nimport { EdgeGroupsField } from '../common/EdgeGroupsField';\nimport { EdgeUpdateSchedule } from '../types';\nimport { FormValues } from '../common/types';\nimport { ScheduleTypeSelector } from '../common/ScheduleTypeSelector';\nimport { BetaAlert } from '../common/BetaAlert';\n\nexport default withLimitToBE(ItemView);\n\nfunction ItemView() {\n const {\n params: { id: idParam },\n } = useCurrentStateAndParams();\n\n const id = parseInt(idParam, 10);\n const edgeGroupsQuery = useEdgeGroups();\n\n if (!idParam || Number.isNaN(id)) {\n throw new Error('id is a required path param');\n }\n\n const updateMutation = useUpdateMutation();\n const router = useRouter();\n const itemQuery = useItem(id);\n const schedulesQuery = useList();\n\n if (!itemQuery.data || !schedulesQuery.data) {\n return null;\n }\n\n const item = itemQuery.data;\n const isScheduleActive = item.isActive;\n\n const schedules = schedulesQuery.data;\n\n const initialValuesActive: Partial<FormValues> = {\n name: item.name,\n };\n\n const initialValues: FormValues = {\n name: item.name,\n groupIds: item.edgeGroupIds,\n type: item.type,\n version: item.version,\n scheduledTime: item.scheduledTime,\n };\n\n const environmentsCount = Object.keys(\n item.environmentsPreviousVersions\n ).length;\n\n return (\n <>\n <PageHeader\n title=\"Update & Rollback\"\n breadcrumbs={[\n { label: 'Edge agent update and rollback', link: '^' },\n item.name,\n ]}\n />\n\n <BetaAlert\n className=\"ml-[15px] mb-2\"\n message=\"Beta feature - currently limited to standalone Linux and Nomad edge devices.\"\n />\n\n <div className=\"row\">\n <div className=\"col-sm-12\">\n <Widget>\n <Widget.Title title=\"Update & Rollback Scheduler\" icon={Settings} />\n <Widget.Body>\n <TextTip color=\"blue\">\n Devices need to be allocated to an Edge group, visit the{' '}\n <Link to=\"edge.groups\">Edge Groups</Link> page to assign\n environments and create groups.\n </TextTip>\n\n <Formik\n initialValues={\n !isScheduleActive ? initialValues : initialValuesActive\n }\n onSubmit={(values) => {\n updateMutation.mutate(\n { id, values },\n {\n onSuccess() {\n notifySuccess(\n 'Success',\n 'Updated schedule successfully'\n );\n router.stateService.go('^');\n },\n }\n );\n }}\n validateOnMount\n validationSchema={() =>\n updateValidation(\n item.id,\n schedules,\n edgeGroupsQuery.data,\n isScheduleActive\n )\n }\n >\n {({ isValid, setFieldValue, values, handleBlur, errors }) => (\n <FormikForm className=\"form-horizontal\">\n <NameField />\n\n <EdgeGroupsField\n disabled={isScheduleActive}\n onChange={(value) => setFieldValue('groupIds', value)}\n value={\n isScheduleActive\n ? item.edgeGroupIds\n : values.groupIds || []\n }\n onBlur={handleBlur}\n error={errors.groupIds}\n />\n\n <div className=\"mt-2\">\n {isScheduleActive ? (\n <InformationPanel>\n <TextTip color=\"blue\">\n {environmentsCount} environment(s) will be updated\n to version {item.version} on {item.scheduledTime}{' '}\n (local time)\n </TextTip>\n </InformationPanel>\n ) : (\n <ScheduleTypeSelector />\n )}\n </div>\n\n <div className=\"form-group\">\n <div className=\"col-sm-12\">\n <LoadingButton\n disabled={!isValid}\n isLoading={updateMutation.isLoading}\n loadingText=\"Updating...\"\n >\n Update Schedule\n </LoadingButton>\n </div>\n </div>\n </FormikForm>\n )}\n </Formik>\n </Widget.Body>\n </Widget>\n </div>\n </div>\n </>\n );\n}\n\nfunction updateValidation(\n itemId: EdgeUpdateSchedule['id'],\n schedules: EdgeUpdateSchedule[],\n edgeGroups: Array<EdgeGroup> | undefined,\n isScheduleActive: boolean\n): SchemaOf<{ name: string } | FormValues> {\n return !isScheduleActive\n ? validation(schedules, edgeGroups, itemId)\n : object({ name: nameValidation(schedules, itemId) });\n}\n","import angular from 'angular';\nimport { StateRegistry } from '@uirouter/angularjs';\n\nimport { r2a } from '@/react-tools/react2angular';\nimport {\n ListView,\n CreateView,\n ItemView,\n} from '@/react/portainer/environments/update-schedules';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\n\nexport const updateSchedulesModule = angular\n .module('portainer.edge.updateSchedules', [])\n .component(\n 'updateSchedulesListView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ListView))), [])\n )\n .component(\n 'updateSchedulesCreateView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(CreateView))), [])\n )\n .component(\n 'updateSchedulesItemView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(ItemView))), [])\n )\n .config(config).name;\n\nfunction config($stateRegistryProvider: StateRegistry) {\n $stateRegistryProvider.register({\n name: 'portainer.endpoints.updateSchedules',\n url: '/update-schedules',\n views: {\n 'content@': {\n component: 'updateSchedulesListView',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'portainer.endpoints.updateSchedules.create',\n url: '/update-schedules/new',\n views: {\n 'content@': {\n component: 'updateSchedulesCreateView',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'portainer.endpoints.updateSchedules.item',\n url: '/update-schedules/:id',\n views: {\n 'content@': {\n component: 'updateSchedulesItemView',\n },\n },\n });\n}\n","import angular from 'angular';\n\nimport { HomeView } from '@/react/portainer/HomeView';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { r2a } from '@/react-tools/react2angular';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { CreateAccessToken } from '@/react/portainer/account/CreateAccessTokenView';\nimport { EdgeComputeSettingsView } from '@/react/portainer/settings/EdgeComputeView/EdgeComputeSettingsView';\nimport { withI18nSuspense } from '@/react-tools/withI18nSuspense';\nimport { EdgeAutoCreateScriptView } from '@/react/portainer/environments/EdgeAutoCreateScriptView';\nimport { ListView as EnvironmentsListView } from '@/react/portainer/environments/ListView';\nimport { BackupSettingsPanel } from '@/react/portainer/settings/SettingsView/BackupSettingsView/BackupSettingsPanel';\nimport { SettingsView } from '@/react/portainer/settings/SettingsView/SettingsView';\n\nimport { wizardModule } from './wizard';\nimport { teamsModule } from './teams';\nimport { updateSchedulesModule } from './update-schedules';\n\nexport const viewsModule = angular\n .module('portainer.app.react.views', [\n wizardModule,\n teamsModule,\n updateSchedulesModule,\n ])\n .component(\n 'homeView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(HomeView))), [])\n )\n .component(\n 'edgeAutoCreateScriptView',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(EdgeAutoCreateScriptView))),\n []\n )\n )\n .component(\n 'createAccessToken',\n r2a(withI18nSuspense(withUIRouter(CreateAccessToken)), [\n 'onSubmit',\n 'onError',\n ])\n )\n .component(\n 'settingsEdgeCompute',\n r2a(\n withUIRouter(withReactQuery(withCurrentUser(EdgeComputeSettingsView))),\n ['onSubmit', 'settings']\n )\n )\n .component(\n 'environmentsListView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(EnvironmentsListView))), [])\n )\n .component(\n 'backupSettingsPanel',\n r2a(withUIRouter(withReactQuery(withCurrentUser(BackupSettingsPanel))), [])\n )\n .component(\n 'settingsView',\n r2a(withUIRouter(withReactQuery(withCurrentUser(SettingsView))), [])\n ).name;\n","import { ComponentType, Suspense } from 'react';\n\nexport function withI18nSuspense<T>(\n WrappedComponent: ComponentType<T>\n): ComponentType<T> {\n // Try to create a nice displayName for React Dev Tools.\n const displayName =\n WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\n function WrapperComponent(props: T & JSX.IntrinsicAttributes) {\n return (\n <Suspense fallback=\"Loading translations...\">\n <WrappedComponent {...props} />\n </Suspense>\n );\n }\n\n WrapperComponent.displayName = `withI18nSuspense(${displayName})`;\n\n return WrapperComponent;\n}\n","import { Settings } from '@/react/portainer/settings/types';\n\nimport { isBE } from '../../feature-flags/feature-flags.service';\n\nimport { EdgeComputeSettings } from './EdgeComputeSettings';\nimport { DeploymentSyncOptions } from './DeploymentSyncOptions/DeploymentSyncOptions';\nimport { AutomaticEdgeEnvCreation } from './AutomaticEdgeEnvCreation';\n\ninterface Props {\n settings: Settings;\n onSubmit(values: Settings): void;\n}\n\nexport function EdgeComputeSettingsView({ settings, onSubmit }: Props) {\n return (\n <div className=\"row\">\n <EdgeComputeSettings settings={settings} onSubmit={onSubmit} />\n\n <DeploymentSyncOptions />\n\n {isBE && <AutomaticEdgeEnvCreation />}\n </div>\n );\n}\n","import angular from 'angular';\n\nimport { componentsModule } from './components';\nimport { viewsModule } from './views';\n\nexport const reactModule = angular.module('portainer.app.react', [\n viewsModule,\n componentsModule,\n]).name;\n","import {\n createContext,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useReducer,\n} from 'react';\nimport angular, { IScope } from 'angular';\nimport _ from 'lodash';\n\nimport * as storage from '@/react/hooks/useLocalStorage';\n\n// using bootstrap breakpoint - https://getbootstrap.com/docs/5.0/layout/breakpoints/#min-width\nconst mobileWidth = 992;\nconst storageKey = 'toolbar_toggle';\n\ninterface State {\n isOpen: boolean;\n toggle(): void;\n}\n\nexport const Context = createContext<State | null>(null);\nContext.displayName = 'SidebarContext';\n\nexport function useSidebarState() {\n const context = useContext(Context);\n\n if (!context) {\n throw new Error('useSidebarContext must be used within a SidebarProvider');\n }\n\n return context;\n}\n\nexport function SidebarProvider({ children }: { children: React.ReactNode }) {\n const state = useSidebarStateLocal();\n\n return <Context.Provider value={state}> {children} </Context.Provider>;\n}\n\nexport function TestSidebarProvider({ children }: PropsWithChildren<unknown>) {\n const [isOpen, toggle] = useReducer((state) => !state, true);\n\n const state = useMemo(\n () => ({ isOpen, toggle: () => toggle() }),\n [isOpen, toggle]\n );\n\n return <Context.Provider value={state}> {children} </Context.Provider>;\n}\n\n/* @ngInject */\nexport function AngularSidebarService($rootScope: IScope) {\n const state = {\n isOpen: false,\n };\n\n function isSidebarOpen() {\n return state.isOpen;\n }\n\n function setIsOpen(isOpen: boolean) {\n $rootScope.$evalAsync(() => {\n state.isOpen = isOpen;\n });\n }\n\n return { isSidebarOpen, setIsOpen };\n}\n\nfunction useSidebarStateLocal() {\n const [storageIsOpen, setIsOpenInStorage] = storage.useLocalStorage(\n storageKey,\n true\n );\n const [isOpen, setIsOpen, undoIsOpenChange] = useStateWithUndo(\n initialState()\n );\n\n const onResize = useMemo(\n () =>\n _.debounce(() => {\n if (isMobile()) {\n if (isOpen) {\n setIsOpen(false);\n }\n } else {\n undoIsOpenChange();\n }\n }, 50),\n [setIsOpen, undoIsOpenChange, isOpen]\n );\n\n useUpdateAngularService(isOpen);\n\n useEffect(() => {\n if (window.ddExtension) {\n return undefined;\n }\n\n window.addEventListener('resize', onResize);\n return () => window.removeEventListener('resize', onResize);\n }, [onResize]);\n\n return {\n isOpen,\n toggle,\n };\n\n function toggle(value = !isOpen) {\n setIsOpenInStorage(value);\n setIsOpen(value);\n }\n\n function initialState() {\n if (isMobile() || window.ddExtension) {\n return false;\n }\n\n return storageIsOpen;\n }\n}\n\nfunction useStateWithUndo<T>(\n initialState: T\n): [T, (value: T) => void, () => void] {\n const [state, setState] = useState(initialState);\n const prevState = useRef<T>();\n\n const undo = useCallback(() => {\n if (!prevState.current) {\n return;\n }\n\n setState(prevState.current);\n prevState.current = undefined;\n }, [prevState]);\n\n const handleSetState = useCallback(\n (newState: T) => {\n prevState.current = state;\n setState(newState);\n },\n [state]\n );\n\n return [state, handleSetState, undo];\n}\n\nfunction useUpdateAngularService(isOpen: boolean) {\n useEffect(() => {\n // to sync \"outside state\" - for angularjs\n const $injector = angular.element(document).injector();\n $injector.invoke(\n /* @ngInject */ (\n SidebarService: ReturnType<typeof AngularSidebarService>\n ) => {\n SidebarService.setIsOpen(isOpen);\n }\n );\n }, [isOpen]);\n}\n\nfunction isMobile() {\n const width = window.innerWidth;\n\n return width < mobileWidth;\n}\n","import { PropsWithChildren, AriaAttributes } from 'react';\nimport clsx from 'clsx';\n\ninterface Props {\n className?: string;\n label?: string;\n}\n\nexport function Wrapper({\n className,\n children,\n label,\n ...ariaProps\n}: PropsWithChildren<Props> & AriaAttributes) {\n return (\n <li\n className={clsx(\n 'flex',\n className,\n 'min-h-8 text-gray-3 [&>a]:text-inherit [&>a]:hover:text-inherit [&>a]:hover:no-underline'\n )}\n aria-label={label}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...ariaProps}\n >\n {children}\n </li>\n );\n}\n","import { ReactNode, ReactElement, Children } from 'react';\n\nfunction isReactElement(element: ReactNode): element is ReactElement {\n return (\n !!element &&\n typeof element === 'object' &&\n 'type' in element &&\n 'props' in element\n );\n}\n\nexport function getPathsForChildren(children: ReactNode): string[] {\n return Children.map(children, (child) => getPaths(child, []))?.flat() || [];\n}\n\nexport function getPaths(element: ReactNode, paths: string[]): string[] {\n if (!isReactElement(element)) {\n return paths;\n }\n\n if (typeof element.props.to === 'undefined') {\n return Children.map(element.props.children, (child) =>\n getPaths(child, paths)\n );\n }\n\n return [element.props.to, ...paths];\n}\n","import { useCurrentStateAndParams } from '@uirouter/react';\nimport {\n Children,\n PropsWithChildren,\n ReactNode,\n useMemo,\n useReducer,\n} from 'react';\nimport { ChevronDown, ChevronUp } from 'lucide-react';\n\nimport { useSidebarState } from '../useSidebarState';\n\nimport { getPaths } from './utils';\n\ninterface Props {\n head: ReactNode;\n openOnPaths?: string[];\n}\n\nexport function Menu({\n children,\n head,\n openOnPaths = [],\n}: PropsWithChildren<Props>) {\n const { isOpen: isSidebarOpen } = useSidebarState();\n\n const paths = useMemo(\n () => [...getPaths(head, []), ...openOnPaths],\n [openOnPaths, head]\n );\n\n const { isOpen, toggleOpen } = useIsOpen(isSidebarOpen, paths);\n\n const CollapseButtonIcon = isOpen ? ChevronUp : ChevronDown;\n\n if (!isSidebarOpen) {\n return head as JSX.Element;\n }\n\n return (\n <div className=\"flex-1\">\n <div className=\"relative flex w-full items-center justify-between \">\n {head}\n {isSidebarOpen && Children.count(children) > 0 && (\n <button\n className=\"absolute right-2 flex h-6 w-6 items-center justify-center border-0 bg-transparent text-gray-5\"\n onClick={handleClickArrow}\n type=\"button\"\n aria-label=\"Collapse button\"\n >\n <CollapseButtonIcon className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n\n {isOpen && <ul className=\"!pl-11\">{children}</ul>}\n </div>\n );\n\n function handleClickArrow(e: React.MouseEvent<HTMLButtonElement>) {\n e.preventDefault();\n e.stopPropagation();\n toggleOpen();\n }\n}\n\nfunction useIsOpen(\n isSidebarOpen: boolean,\n\n paths: string[] = []\n) {\n const { state } = useCurrentStateAndParams();\n const currentStateName = state.name || '';\n const isOpenByState = paths.some((path) => currentStateName.startsWith(path));\n\n const [forceOpen, toggleForceOpen] = useReducer((state) => !state, false);\n\n const isOpen = checkIfOpen();\n\n return { isOpen, toggleOpen };\n\n function toggleOpen() {\n if (!isOpenByState) {\n toggleForceOpen();\n }\n }\n\n function checkIfOpen() {\n if (!isSidebarOpen) {\n return false;\n }\n\n if (forceOpen) {\n return true;\n }\n\n return isOpenByState;\n }\n}\n","import {\n TransitionOptions,\n useCurrentStateAndParams,\n useSrefActive as useUiRouterSrefActive,\n} from '@uirouter/react';\nimport clsx from 'clsx';\nimport { ComponentProps } from 'react';\nimport Tippy from '@tippyjs/react';\n\nimport { AutomationTestingProps } from '@/types';\n\nimport 'tippy.js/dist/tippy.css';\nimport { Link } from '@@/Link';\nimport { IconProps, Icon } from '@@/Icon';\n\nimport { useSidebarState } from '../useSidebarState';\n\ninterface Props\n extends IconProps,\n ComponentProps<typeof Link>,\n AutomationTestingProps {\n label: string;\n ignorePaths?: string[];\n}\n\nexport function Head({\n to,\n options,\n params = {},\n label,\n icon,\n ignorePaths = [],\n 'data-cy': dataCy,\n}: Props) {\n const { isOpen } = useSidebarState();\n const anchorProps = useSrefActive(\n to,\n 'bg-blue-8 be:bg-gray-8 th-dark:bg-gray-true-8',\n params,\n options,\n ignorePaths\n );\n\n const anchor = (\n <a\n href={anchorProps.href}\n onClick={anchorProps.onClick}\n className={clsx(\n anchorProps.className,\n 'text-inherit no-underline hover:text-inherit hover:no-underline focus:text-inherit focus:no-underline',\n 'flex h-8 w-full flex-1 items-center space-x-4 rounded-md text-sm',\n 'transition-colors duration-200 hover:bg-blue-9 be:hover:bg-gray-9 th-dark:hover:bg-gray-true-9',\n {\n 'w-full justify-start px-3': isOpen,\n 'w-8 justify-center': !isOpen,\n }\n )}\n data-cy={dataCy}\n >\n {!!icon && <Icon icon={icon} className={clsx('flex [&>svg]:w-4')} />}\n {isOpen && <span>{label}</span>}\n </a>\n );\n\n if (isOpen) return anchor;\n\n return (\n <Tippy\n className=\"!rounded-md bg-blue-9 !py-2 !px-3 !opacity-100 be:bg-gray-9 th-dark:bg-gray-true-9\"\n content={label}\n delay={[0, 0]}\n duration={[0, 0]}\n zIndex={1000}\n placement=\"right\"\n arrow\n allowHTML\n interactive\n >\n {anchor}\n </Tippy>\n );\n}\n\nfunction useSrefActive(\n to: string,\n activeClassName: string,\n params: Partial<Record<string, string>> = {},\n options: TransitionOptions = {},\n ignorePaths: string[] = []\n) {\n const { state: { name: stateName = '' } = {} } = useCurrentStateAndParams();\n const anchorProps = useUiRouterSrefActive(\n to,\n params || {},\n activeClassName,\n options\n );\n\n const className = ignorePaths.some((path) => stateName.includes(path))\n ? ''\n : anchorProps.className;\n\n return {\n ...anchorProps,\n className,\n };\n}\n","import { SidebarItem as MainComponent } from './SidebarItem';\nimport { Menu } from './Menu';\nimport { Wrapper } from './Wrapper';\n\ninterface SubComponents {\n Menu: typeof Menu;\n Wrapper: typeof Wrapper;\n}\n\nexport const SidebarItem: typeof MainComponent & SubComponents =\n MainComponent as typeof MainComponent & SubComponents;\n\nSidebarItem.Menu = Menu;\nSidebarItem.Wrapper = Wrapper;\n","import { ReactNode } from 'react';\nimport { Icon } from 'lucide-react';\n\nimport { AutomationTestingProps } from '@/types';\n\nimport { Wrapper } from './Wrapper';\nimport { Menu } from './Menu';\nimport { Head } from './Head';\nimport { getPathsForChildren } from './utils';\n\ninterface Props extends AutomationTestingProps {\n icon?: Icon;\n to: string;\n params?: object;\n label: string;\n children?: ReactNode;\n openOnPaths?: string[];\n}\n\nexport function SidebarItem({\n children,\n icon,\n to,\n params,\n label,\n openOnPaths = [],\n 'data-cy': dataCy,\n}: Props) {\n const childrenPath = getPathsForChildren(children);\n const head = (\n <Head\n icon={icon}\n to={to}\n params={params}\n label={label}\n ignorePaths={childrenPath}\n data-cy={dataCy}\n />\n );\n\n return (\n <Wrapper label={label} className=\"sidebar\">\n {children ? (\n <Menu head={head} openOnPaths={[...openOnPaths, ...childrenPath]}>\n {children}\n </Menu>\n ) : (\n head\n )}\n </Wrapper>\n );\n}\n","import { PropsWithChildren, ReactNode } from 'react';\n\nimport { useSidebarState } from './useSidebarState';\n\ninterface Props {\n title: ReactNode;\n showTitleWhenOpen?: boolean;\n 'aria-label'?: string;\n}\n\nexport function SidebarSection({\n title,\n children,\n showTitleWhenOpen,\n 'aria-label': ariaLabel,\n}: PropsWithChildren<Props>) {\n return (\n <div>\n <SidebarSectionTitle showWhenOpen={showTitleWhenOpen}>\n {title}\n </SidebarSectionTitle>\n\n <nav\n aria-label={typeof title === 'string' ? title : ariaLabel}\n className=\"mt-4\"\n >\n <ul>{children}</ul>\n </nav>\n </div>\n );\n}\n\ninterface TitleProps {\n showWhenOpen?: boolean;\n}\n\nexport function SidebarSectionTitle({\n showWhenOpen,\n children,\n}: PropsWithChildren<TitleProps>) {\n const { isOpen } = useSidebarState();\n\n if (!isOpen && !showWhenOpen) {\n return null;\n }\n\n return (\n <li className=\"ml-3 text-sm text-gray-3 transition-all duration-500 ease-in-out be:text-gray-6\">\n {children}\n </li>\n );\n}\n","import { Box, Clock, LayoutGrid, Layers } from 'lucide-react';\n\nimport { isBE } from '../portainer/feature-flags/feature-flags.service';\n\nimport { SidebarItem } from './SidebarItem';\nimport { SidebarSection } from './SidebarSection';\n\nexport function EdgeComputeSidebar() {\n return (\n <SidebarSection title=\"Edge compute\">\n <SidebarItem\n to=\"edge.groups\"\n label=\"Edge Groups\"\n icon={LayoutGrid}\n data-cy=\"portainerSidebar-edgeGroups\"\n />\n <SidebarItem\n to=\"edge.stacks\"\n label=\"Edge Stacks\"\n icon={Layers}\n data-cy=\"portainerSidebar-edgeStacks\"\n />\n <SidebarItem\n to=\"edge.jobs\"\n label=\"Edge Jobs\"\n icon={Clock}\n data-cy=\"portainerSidebar-edgeJobs\"\n />\n {isBE && (\n <SidebarItem\n to=\"edge.devices.waiting-room\"\n label=\"Waiting Room\"\n icon={Box}\n data-cy=\"portainerSidebar-edgeDevicesWaitingRoom\"\n />\n )}\n </SidebarSection>\n );\n}\n","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgDocker = function SvgDocker(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 105 95\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0091E2\",\n d: \"M102.014 39.337c-.27-.229-2.695-2.11-7.902-2.11-1.347 0-2.74.138-4.085.369-.989-7.02-6.69-10.416-6.914-10.598l-1.393-.826-.898 1.33a19.85 19.85 0 0 0-2.469 5.874c-.942 3.993-.36 7.754 1.617 10.966-2.381 1.376-6.242 1.697-7.05 1.744H9.16c-1.66 0-3.009 1.376-3.009 3.074a47.34 47.34 0 0 0 2.783 16.747c2.2 5.874 5.477 10.232 9.699 12.894 4.76 2.983 12.527 4.68 21.282 4.68 3.951 0 7.902-.369 11.81-1.103a48.094 48.094 0 0 0 15.446-5.734 42.497 42.497 0 0 0 10.507-8.809c5.073-5.826 8.082-12.341 10.283-18.123h.898c5.524 0 8.935-2.248 10.821-4.174 1.257-1.194 2.201-2.662 2.873-4.314l.404-1.193-.942-.69-.002-.004Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0091E2\",\n d: \"M15.086 44.2h8.53c.405 0 .765-.32.765-.78v-7.8a.764.764 0 0 0-.764-.778h-8.53a.765.765 0 0 0-.765.779v7.799c.044.458.36.78.764.78ZM26.851 44.2h8.53c.405 0 .763-.32.763-.78v-7.8a.764.764 0 0 0-.763-.778h-8.53a.765.765 0 0 0-.764.779v7.799c.044.458.36.78.764.78ZM38.842 44.2h8.53c.404 0 .765-.32.765-.78v-7.8a.764.764 0 0 0-.765-.778h-8.53a.765.765 0 0 0-.764.779v7.799c0 .458.314.78.764.78ZM50.647 44.2h8.53c.405 0 .765-.32.765-.78v-7.8a.764.764 0 0 0-.764-.778h-8.53a.765.765 0 0 0-.765.779v7.799c0 .458.36.78.764.78ZM26.851 33.05h8.53c.405 0 .763-.367.763-.78v-7.799c0-.413-.314-.781-.763-.781h-8.53a.766.766 0 0 0-.764.781v7.799c.044.413.36.78.764.78ZM38.842 33.05h8.53c.404 0 .765-.367.765-.78v-7.799a.766.766 0 0 0-.765-.781h-8.53a.766.766 0 0 0-.764.781v7.799c0 .413.314.78.764.78ZM50.647 33.05h8.53c.405 0 .765-.367.765-.78v-7.799c0-.413-.36-.781-.764-.781h-8.53a.766.766 0 0 0-.765.781v7.799c0 .413.36.78.764.78ZM50.647 21.856h8.53c.405 0 .765-.32.765-.78v-7.8c0-.413-.36-.78-.764-.78h-8.53a.766.766 0 0 0-.765.78v7.8c0 .412.36.78.764.78ZM62.551 44.2h8.53c.405 0 .765-.32.765-.78v-7.8a.764.764 0 0 0-.764-.778h-8.53a.765.765 0 0 0-.765.779v7.799c.044.458.36.78.764.78Z\"\n })));\n};\nexport default SvgDocker;","var _path, _path2, _path3, _path4, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgAzure = function SvgAzure(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 105 95\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#azure_svg__a)\",\n d: \"M40.041 11.192h21.975l-22.81 69.066a3.565 3.565 0 0 1-1.278 1.763 3.455 3.455 0 0 1-2.043.672h-17.1a3.444 3.444 0 0 1-1.599-.394 3.538 3.538 0 0 1-1.245-1.095 3.603 3.603 0 0 1-.618-1.556 3.658 3.658 0 0 1 .144-1.673l21.255-64.346c.235-.71.68-1.326 1.278-1.763a3.455 3.455 0 0 1 2.043-.671l-.002-.003Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#0078D4\",\n d: \"M71.975 57.518H37.13c-.325 0-.64.098-.909.284a1.637 1.637 0 0 0-.592.758c-.12.308-.145.646-.074.967.072.323.237.616.474.84L58.42 81.725c.65.622 1.51.967 2.401.967h19.73l-8.576-25.178v.005Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#azure_svg__b)\",\n d: \"M40.042 11.193a3.44 3.44 0 0 0-2.062.682 3.54 3.54 0 0 0-1.265 1.8l-21.22 64.244a3.63 3.63 0 0 0 .434 3.265c.325.469.754.852 1.252 1.115.499.263 1.052.4 1.613.398h17.542a3.705 3.705 0 0 0 1.77-.854 3.816 3.816 0 0 0 1.107-1.647l4.232-12.742L58.56 81.861a3.529 3.529 0 0 0 2.25.838H80.47l-8.623-25.177-25.133.007 15.384-46.337H40.042Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#azure_svg__c)\",\n d: \"M68.109 13.625a3.579 3.579 0 0 0-1.275-1.76 3.448 3.448 0 0 0-2.04-.673h-24.49c.733 0 1.445.236 2.04.672a3.577 3.577 0 0 1 1.275 1.761l21.255 64.352c.178.537.228 1.11.144 1.673a3.602 3.602 0 0 1-.617 1.556c-.325.46-.75.836-1.246 1.095a3.437 3.437 0 0 1-1.598.394h24.49c.555 0 1.104-.135 1.598-.394a3.512 3.512 0 0 0 1.243-1.095c.325-.46.536-.995.618-1.556a3.658 3.658 0 0 0-.144-1.673L68.109 13.625Z\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"azure_svg__a\",\n x1: 48.052,\n x2: 24.328,\n y1: 16.492,\n y2: 85.073,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#114A8B\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#0669BC\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"azure_svg__b\",\n x1: 55.179,\n x2: 49.877,\n y1: 48.598,\n y2: 50.351,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopOpacity: 0.3\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.07,\n stopOpacity: 0.2\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.32,\n stopOpacity: 0.1\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.62,\n stopOpacity: 0.05\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"azure_svg__c\",\n x1: 52.44,\n x2: 78.457,\n y1: 14.419,\n y2: 82.248,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#3CCBF4\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#2892DF\"\n })))));\n};\nexport default SvgAzure;","var _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgKubernetes = function SvgKubernetes(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 105 95\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#326CE4\",\n d: \"M52.958 88.267c-5.243 0-10.485-.044-15.724.02-2.383.026-4.221-.819-5.716-2.694-6.63-8.317-13.299-16.6-19.966-24.89-1.337-1.661-1.862-3.43-1.352-5.608 2.448-10.471 4.806-20.967 7.202-31.456.479-2.1 1.694-3.543 3.661-4.476 9.69-4.605 19.357-9.246 29.019-13.907 2.022-.977 3.947-.917 5.954.046 9.602 4.63 19.211 9.251 28.844 13.822 2.037.968 3.276 2.447 3.77 4.616 2.39 10.491 4.765 20.985 7.198 31.463.466 2.01.044 3.707-1.213 5.268-6.734 8.399-13.473 16.796-20.186 25.215-1.449 1.82-3.272 2.614-5.565 2.594-5.305-.04-10.614-.01-15.92-.01l-.008-.005.002.002ZM51.61 21.251c.094 2.704-.234 3.12-2.717 3.607-4.407.867-8.387 2.678-11.614 5.846-1.217 1.198-2.242.944-3.326.17-.835-.592-1.509-1.413-2.263-2.122-.515-.483-.998-1.038-1.589-1.41-.865-.537-1.772-.46-2.406.411-.575.784-.43 1.631.218 2.303.444.457 1.01.797 1.548 1.152.804.538 1.668.995 2.441 1.577 1.574 1.183 1.718 1.986.785 3.677-2.153 3.894-3.117 8.067-2.962 12.521.086 2.428-.625 3.197-3.062 3.473-1.093.125-2.192.191-3.276.376-1.224.206-2.095.886-1.83 2.256.254 1.32 1.325 1.522 2.422 1.254 1.185-.297 2.317-.793 3.486-1.153 2.394-.733 3.202-.346 4.206 1.943 1.757 4.024 4.435 7.284 8.008 9.813 1.535 1.089 1.784 2.022.895 3.732-.416.799-.956 1.54-1.43 2.313-.304.497-.619.988-.885 1.504-.534 1.028-.306 1.928.645 2.538 1.057.678 1.969.151 2.441-.773.638-1.26 1.008-2.654 1.52-3.978.819-2.127 1.671-2.553 3.776-1.962 4.271 1.19 8.547 1.205 12.822.02 2.083-.578 2.853-.23 3.677 1.826.48 1.199.78 2.474 1.318 3.649.48 1.064 1.29 1.927 2.597 1.233 1.213-.643 1.259-1.732.633-2.834-.605-1.069-1.344-2.066-1.951-3.134-1.19-2.104-1.019-2.821.898-4.229 3.587-2.627 6.24-5.986 7.939-10.109.785-1.907 1.532-2.287 3.547-1.69 1.235.367 2.422.909 3.666 1.223 1.115.28 2.262.241 2.693-1.155.35-1.135-.415-2.068-1.952-2.322-1.209-.203-2.448-.231-3.661-.418-1.935-.3-2.643-1.152-2.562-3.07.194-4.587-.78-8.89-3.036-12.889-.864-1.53-.726-2.443.69-3.556.814-.637 1.738-1.118 2.6-1.686.535-.356 1.108-.692 1.55-1.148.653-.668.788-1.5.22-2.303-.584-.823-1.453-.898-2.254-.5-.614.305-1.114.862-1.632 1.345-.709.663-1.34 1.414-2.08 2.037-1.468 1.24-2.358 1.214-3.754-.026-3.421-3.045-7.388-4.95-11.878-5.774-1.803-.331-2.352-.922-2.278-2.783.05-1.293.285-2.575.4-3.864.14-1.506-.703-2.728-1.842-2.724-1.139.004-1.978 1.223-1.828 2.733.105 1.03.28 2.053.429 3.08h-.009.007Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FDFDFE\",\n d: \"M51.608 21.25c-.144-1.026-.323-2.047-.428-3.079-.15-1.51.689-2.729 1.827-2.733 1.14-.005 1.983 1.218 1.843 2.724-.12 1.293-.354 2.573-.4 3.864-.07 1.861.474 2.452 2.278 2.783 4.49.824 8.456 2.725 11.877 5.774 1.395 1.24 2.284 1.269 3.755.026.74-.623 1.373-1.374 2.08-2.037.515-.483 1.018-1.043 1.632-1.346.8-.397 1.672-.325 2.254.5.568.804.43 1.632-.221 2.304-.444.456-1.014.788-1.55 1.148-.859.573-1.788 1.053-2.599 1.686-1.418 1.113-1.554 2.026-.69 3.556 2.253 4 3.23 8.302 3.036 12.888-.081 1.917.63 2.769 2.561 3.071 1.213.187 2.448.216 3.662.418 1.538.256 2.303 1.187 1.951 2.322-.43 1.398-1.578 1.436-2.692 1.155-1.244-.312-2.433-.854-3.666-1.223-2.013-.597-2.758-.22-3.548 1.69-1.698 4.123-4.351 7.482-7.938 10.11-1.917 1.404-2.092 2.122-.899 4.228.606 1.069 1.34 2.065 1.952 3.134.625 1.105.58 2.189-.634 2.834-1.305.694-2.114-.17-2.597-1.233-.533-1.17-.834-2.452-1.318-3.649-.828-2.057-1.593-2.404-3.676-1.826-4.276 1.187-8.551 1.17-12.822-.02-2.11-.586-2.962-.16-3.777 1.962-.51 1.329-.883 2.72-1.52 3.978-.465.924-1.383 1.451-2.44.773-.95-.608-1.175-1.51-.646-2.538.27-.516.58-1.007.886-1.503.474-.773 1.01-1.51 1.43-2.314.889-1.71.64-2.646-.895-3.732-3.572-2.53-6.254-5.789-8.009-9.813-1.003-2.292-1.812-2.674-4.205-1.943-1.17.36-2.302.854-3.486 1.153-1.096.272-2.165.07-2.422-1.254-.265-1.37.605-2.046 1.83-2.256 1.079-.185 2.183-.25 3.276-.376 2.441-.272 3.147-1.043 3.062-3.473-.155-4.454.809-8.625 2.962-12.521.933-1.69.789-2.494-.785-3.677-.774-.582-1.637-1.039-2.442-1.576-.535-.356-1.103-.694-1.547-1.153-.65-.672-.794-1.52-.219-2.303.639-.87 1.544-.948 2.407-.41.59.37 1.073.922 1.589 1.41.754.71 1.43 1.53 2.262 2.122 1.084.773 2.107 1.027 3.327-.171 3.222-3.17 7.202-4.981 11.613-5.846 2.483-.488 2.81-.902 2.717-3.607h.009-.007ZM50.59 31.84h.105c0-.515-.026-1.038.009-1.553.045-.712-.219-.879-.91-.742-3.366.658-6.363 2.065-8.996 4.278-.726.608-.584.953.12 1.434 2.078 1.429 4.107 2.928 6.183 4.355 1.878 1.288 3.032.718 3.178-1.554.132-2.068.21-4.145.31-6.217ZM34.445 47.45c-.017 1.6.678 2.195 2.088 1.787 2.162-.628 4.337-1.223 6.485-1.89 1.968-.613 2.27-1.835.77-3.256-1.828-1.732-3.777-3.337-5.59-5.09-.963-.934-1.313-.468-1.757.432-1.279 2.595-1.884 5.347-1.998 8.012l.003.005Zm18.508 19.015c1.69.046 3.33-.254 4.964-.663.664-.167 1.093-.272.614-1.109-1.38-2.412-2.638-4.895-4.061-7.279-.796-1.335-2.134-1.32-2.918.02-1.408 2.397-2.689 4.862-4.046 7.288-.354.632-.21.863.49 1.038 1.632.41 3.267.734 4.959.703v.004l-.002-.002Zm18.636-18.958c-.15-2.603-.708-5.308-1.952-7.85-.505-1.03-1.073-1.381-2.048-.466-1.744 1.636-3.572 3.186-5.314 4.826-1.563 1.47-1.235 2.698.864 3.332 2.157.656 4.33 1.26 6.494 1.886 1.987.573 1.993.57 1.954-1.73l.002.002Zm-9.515 5.282c-2.798.125-3.143.652-2.197 2.99.9 2.221 1.854 4.42 2.724 6.653.295.758.535 1.129 1.34.523 2.747-2.077 4.855-4.652 6.18-7.846.163-.395.463-.924-.285-1.054-2.669-.456-5.349-.873-7.764-1.268l.002.002ZM55.342 31.61h.065c.11 2.127.21 4.255.33 6.386.132 2.294 1.268 2.9 3.126 1.625 2.018-1.386 3.948-2.9 6.005-4.22 1.1-.706.854-1.1.03-1.771a19.363 19.363 0 0 0-8.448-4.013c-1.113-.23-1.218.15-1.12 1.027.036.32.005.644.005.969h.009l-.002-.003Zm-8.593 22.725c-.303-.658-.264-1.525-1.403-1.484-2.863.106-5.655.73-8.476 1.12-.995.136-1.198.566-.81 1.43 1.365 3.009 3.358 5.503 6.005 7.478.68.507 1.034.516 1.36-.397.586-1.64 1.324-3.225 1.989-4.836.444-1.074.87-2.154 1.333-3.306v-.005h.002Zm6.363-8.965c-1.982-.004-3.152.784-3.198 2.158-.054 1.65 1.55 3.506 3.067 3.537 1.443.03 3.093-1.717 3.102-3.287.009-1.46-1.154-2.408-2.973-2.412l.005.004h-.003Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#326CE4\",\n d: \"M50.594 31.84c-.1 2.073-.18 4.145-.31 6.218-.15 2.276-1.306 2.845-3.179 1.554-2.079-1.43-4.105-2.93-6.184-4.355-.703-.483-.843-.824-.12-1.434 2.634-2.213 5.63-3.618 8.997-4.278.695-.137.955.035.91.742-.036.515-.01 1.038-.01 1.556h-.104v-.004.002ZM34.448 47.45c.116-2.666.72-5.419 1.998-8.014.444-.902.793-1.37 1.757-.432 1.808 1.752 3.762 3.352 5.59 5.09 1.499 1.425 1.197 2.646-.77 3.256-2.149.668-4.322 1.26-6.485 1.89-1.408.409-2.103-.186-2.088-1.787l-.002-.004ZM52.96 66.46c-1.69.03-3.327-.297-4.96-.707-.7-.176-.84-.406-.49-1.038 1.358-2.424 2.639-4.896 4.046-7.289.785-1.339 2.123-1.354 2.918-.02 1.423 2.385 2.687 4.867 4.062 7.28.478.834.045.94-.615 1.108-1.632.411-3.272.712-4.964.663l.003.003ZM71.588 47.504c.04 2.298.03 2.307-1.954 1.73-2.164-.628-4.337-1.234-6.494-1.886-2.098-.637-2.424-1.857-.863-3.332 1.742-1.64 3.567-3.19 5.313-4.826.975-.913 1.543-.566 2.048.466 1.244 2.54 1.8 5.247 1.952 7.85l-.002-.002ZM62.079 52.783c2.413.391 5.09.813 7.764 1.27.743.124.445.656.284 1.053-1.33 3.196-3.432 5.773-6.18 7.846-.804.608-1.044.235-1.34-.523-.87-2.232-1.822-4.434-2.723-6.654-.949-2.337-.599-2.864 2.197-2.99l-.002-.002ZM55.348 31.606c0-.325.03-.648-.004-.968-.096-.878.009-1.254 1.119-1.028 3.16.652 5.95 1.983 8.448 4.013.824.672 1.073 1.063-.03 1.772-2.057 1.324-3.987 2.834-6.005 4.22-1.858 1.274-2.997.67-3.126-1.625-.12-2.128-.22-4.26-.33-6.386h-.074l.002.002ZM46.749 54.329c-.464 1.152-.89 2.232-1.334 3.306-.664 1.611-1.398 3.196-1.989 4.836-.325.913-.68.909-1.36.397-2.646-1.975-4.635-4.47-6.004-7.479-.393-.863-.19-1.293.809-1.429 2.822-.386 5.611-1.014 8.477-1.12 1.138-.044 1.1.828 1.403 1.484v.005h-.002ZM53.115 45.364c1.814.004 2.981.948 2.973 2.412-.011 1.57-1.66 3.317-3.102 3.286-1.515-.035-3.121-1.885-3.067-3.536.046-1.374 1.218-2.167 3.198-2.158l-.004-.005h.002Z\"\n })));\n};\nexport default SvgKubernetes;","var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgNomad = function SvgNomad(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 105 95\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#00CA8E\",\n d: \"M52.36 3.306 14.06 25.4v44.2l38.273 22.094L90.632 69.6V25.4L52.36 3.306Zm17.085 48.629-10.198 5.888-12.33-6.742V65.17L35.34 72.516V43.078l9.2-5.625 12.75 6.717V29.79l12.156-7.307v29.453-.002Z\"\n })));\n};\nexport default SvgNomad;","import { getPlatformType } from '@/react/portainer/environments/utils';\nimport {\n EnvironmentType,\n PlatformType,\n} from '@/react/portainer/environments/types';\n\nimport Docker from './docker.svg?c';\nimport Azure from './azure.svg?c';\nimport Kubernetes from './kubernetes.svg?c';\nimport Nomad from './nomad.svg?c';\n\nconst icons: {\n [key in PlatformType]: SvgrComponent;\n} = {\n [PlatformType.Docker]: Docker,\n [PlatformType.Kubernetes]: Kubernetes,\n [PlatformType.Azure]: Azure,\n [PlatformType.Nomad]: Nomad,\n};\n\nexport function getPlatformIcon(type: EnvironmentType) {\n const platform = getPlatformType(type);\n\n return icons[platform];\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-sidebar-EnvironmentSidebar-module__root\",\"closeBtn\":\"app-react-sidebar-EnvironmentSidebar-module__closeBtn\"};","import { Layout } from 'lucide-react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { AutomationTestingProps } from '@/types';\n\nimport { SidebarItem } from '../SidebarItem';\n\ninterface Props extends AutomationTestingProps {\n environmentId: EnvironmentId;\n platformPath: string;\n}\n\nexport function DashboardLink({\n environmentId,\n platformPath,\n 'data-cy': dataCy,\n}: Props) {\n return (\n <SidebarItem\n to={`${platformPath}.dashboard`}\n params={{ endpointId: environmentId }}\n icon={Layout}\n label=\"Dashboard\"\n data-cy={dataCy}\n />\n );\n}\n","import { Box } from 'lucide-react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { DashboardLink } from '../items/DashboardLink';\nimport { SidebarItem } from '../SidebarItem';\n\ninterface Props {\n environmentId: EnvironmentId;\n}\n\nexport function AzureSidebar({ environmentId }: Props) {\n return (\n <>\n <DashboardLink\n environmentId={environmentId}\n platformPath=\"azure\"\n data-cy=\"azureSidebar-dashboard\"\n />\n <SidebarItem\n to=\"azure.containerinstances\"\n params={{ endpointId: environmentId }}\n icon={Box}\n label=\"Container instances\"\n data-cy=\"azureSidebar-containerInstances\"\n />\n </>\n );\n}\n","import { Database } from 'lucide-react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { AutomationTestingProps } from '@/types';\n\nimport { SidebarItem } from '../SidebarItem';\n\ninterface Props extends AutomationTestingProps {\n environmentId: EnvironmentId;\n platformPath: string;\n}\n\nexport function VolumesLink({\n environmentId,\n platformPath,\n 'data-cy': dataCy,\n}: Props) {\n return (\n <SidebarItem\n to={`${platformPath}.volumes`}\n params={{ endpointId: environmentId }}\n icon={Database}\n label=\"Volumes\"\n data-cy={dataCy}\n />\n );\n}\n","import {\n Box,\n Clock,\n Layers,\n List,\n Lock,\n Share2,\n Shuffle,\n Trello,\n Clipboard,\n Edit,\n} from 'lucide-react';\n\nimport {\n type Environment,\n type EnvironmentId,\n} from '@/react/portainer/environments/types';\nimport { Authorized, useUser, isEnvironmentAdmin } from '@/react/hooks/useUser';\nimport { useInfo, useVersion } from '@/docker/services/system.service';\n\nimport { SidebarItem } from './SidebarItem';\nimport { DashboardLink } from './items/DashboardLink';\nimport { VolumesLink } from './items/VolumesLink';\n\ninterface Props {\n environmentId: EnvironmentId;\n environment: Environment;\n}\n\nexport function DockerSidebar({ environmentId, environment }: Props) {\n const { user } = useUser();\n const isAdmin = isEnvironmentAdmin(user, environmentId);\n\n const areStacksVisible =\n isAdmin || environment.SecuritySettings.allowStackManagementForRegularUsers;\n\n const envInfoQuery = useInfo(\n environmentId,\n (info) => !!info.Swarm?.NodeID && !!info.Swarm?.ControlAvailable\n );\n\n const envVersionQuery = useVersion(environmentId, (version) =>\n parseFloat(version.ApiVersion)\n );\n\n const isSwarmManager = envInfoQuery.data;\n const apiVersion = envVersionQuery.data || 0;\n\n const setupSubMenuProps = isSwarmManager\n ? {\n label: 'Swarm',\n icon: Trello,\n to: 'docker.swarm',\n dataCy: 'portainerSidebar-swarm',\n }\n : {\n label: 'Host',\n icon: Trello,\n to: 'docker.host',\n dataCy: 'portainerSidebar-host',\n };\n\n const featSubMenuTo = isSwarmManager\n ? 'docker.swarm.featuresConfiguration'\n : 'docker.host.featuresConfiguration';\n const registrySubMenuTo = isSwarmManager\n ? 'docker.swarm.registries'\n : 'docker.host.registries';\n\n return (\n <>\n <DashboardLink\n environmentId={environmentId}\n platformPath=\"docker\"\n data-cy=\"dockerSidebar-dashboard\"\n />\n\n <SidebarItem\n label=\"App Templates\"\n icon={Edit}\n to=\"docker.templates\"\n params={{ endpointId: environmentId }}\n data-cy=\"portainerSidebar-appTemplates\"\n >\n <SidebarItem\n label=\"Custom Templates\"\n to=\"docker.templates.custom\"\n params={{ endpointId: environmentId }}\n data-cy=\"dockerSidebar-customTemplates\"\n />\n </SidebarItem>\n\n {areStacksVisible && (\n <SidebarItem\n to=\"docker.stacks\"\n params={{ endpointId: environmentId }}\n icon={Layers}\n label=\"Stacks\"\n data-cy=\"dockerSidebar-stacks\"\n />\n )}\n\n {isSwarmManager && (\n <SidebarItem\n to=\"docker.services\"\n params={{ endpointId: environmentId }}\n icon={Shuffle}\n label=\"Services\"\n data-cy=\"dockerSidebar-services\"\n />\n )}\n\n <SidebarItem\n to=\"docker.containers\"\n params={{ endpointId: environmentId }}\n icon={Box}\n label=\"Containers\"\n data-cy=\"dockerSidebar-containers\"\n />\n\n <SidebarItem\n to=\"docker.images\"\n params={{ endpointId: environmentId }}\n icon={List}\n label=\"Images\"\n data-cy=\"dockerSidebar-images\"\n />\n\n <SidebarItem\n to=\"docker.networks\"\n params={{ endpointId: environmentId }}\n icon={Share2}\n label=\"Networks\"\n data-cy=\"dockerSidebar-networks\"\n />\n\n <VolumesLink\n environmentId={environmentId}\n platformPath=\"docker\"\n data-cy=\"dockerSidebar-volumes\"\n />\n\n {apiVersion >= 1.3 && isSwarmManager && (\n <SidebarItem\n to=\"docker.configs\"\n params={{ endpointId: environmentId }}\n icon={Clipboard}\n label=\"Configs\"\n data-cy=\"dockerSidebar-configs\"\n />\n )}\n\n {apiVersion >= 1.25 && isSwarmManager && (\n <SidebarItem\n to=\"docker.secrets\"\n params={{ endpointId: environmentId }}\n icon={Lock}\n label=\"Secrets\"\n data-cy=\"dockerSidebar-secrets\"\n />\n )}\n\n {!isSwarmManager && isAdmin && (\n <SidebarItem\n to=\"docker.events\"\n params={{ endpointId: environmentId }}\n icon={Clock}\n label=\"Events\"\n data-cy=\"dockerSidebar-events\"\n />\n )}\n\n <SidebarItem\n label={setupSubMenuProps.label}\n icon={setupSubMenuProps.icon}\n to={setupSubMenuProps.to}\n params={{ endpointId: environmentId }}\n data-cy={setupSubMenuProps.dataCy}\n >\n <Authorized\n authorizations=\"PortainerEndpointUpdateSettings\"\n adminOnlyCE\n environmentId={environmentId}\n >\n <SidebarItem\n to={featSubMenuTo}\n params={{ endpointId: environmentId }}\n label=\"Setup\"\n />\n </Authorized>\n\n <SidebarItem\n to={registrySubMenuTo}\n params={{ endpointId: environmentId }}\n label=\"Registries\"\n />\n </SidebarItem>\n </>\n );\n}\n","const terminalHeight = 495;\n\nexport function terminalClose() {\n update('100%', 'initial');\n}\n\nexport function terminalResize() {\n const contentWrapperHeight = window.innerHeight;\n const newContentWrapperHeight = contentWrapperHeight - terminalHeight;\n update(`${newContentWrapperHeight}px`, 'auto');\n}\n\nfunction update(height: string, overflowY: string) {\n const pageWrapper = document.getElementById('pageWrapper-wrapper');\n\n if (pageWrapper) {\n pageWrapper.style.height = height;\n pageWrapper.style.overflowY = overflowY;\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__root\",\"header\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__header\",\"minimized\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__minimized\",\"title\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__title\",\"actions\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__actions\",\"terminalContainer\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__terminal-container\",\"loadingMessage\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShell-module__loading-message\"};","import { Terminal } from 'xterm';\nimport { fit } from 'xterm/lib/addons/fit/fit';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { RotateCw, X, Terminal as TerminalIcon } from 'lucide-react';\n\nimport { baseHref } from '@/portainer/helpers/pathHelper';\nimport {\n terminalClose,\n terminalResize,\n} from '@/portainer/services/terminal-window';\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { error as notifyError } from '@/portainer/services/notifications';\nimport { useLocalStorage } from '@/react/hooks/useLocalStorage';\n\nimport { Icon } from '@@/Icon';\nimport { Button } from '@@/buttons';\n\nimport styles from './KubectlShell.module.css';\n\ninterface ShellState {\n socket: WebSocket | null;\n minimized: boolean;\n}\n\ninterface Props {\n environmentId: EnvironmentId;\n onClose(): void;\n}\n\nexport function KubeCtlShell({ environmentId, onClose }: Props) {\n const [terminal] = useState(new Terminal());\n\n const [shell, setShell] = useState<ShellState>({\n socket: null,\n minimized: false,\n });\n\n const { socket } = shell;\n\n const terminalElem = useRef(null);\n\n const [jwt] = useLocalStorage('JWT', '');\n\n const handleClose = useCallback(() => {\n terminalClose(); // only css trick\n socket?.close();\n terminal.dispose();\n onClose();\n }, [onClose, terminal, socket]);\n\n const openTerminal = useCallback(() => {\n if (!terminalElem.current) {\n return;\n }\n\n terminal.open(terminalElem.current);\n terminal.setOption('cursorBlink', true);\n terminal.focus();\n fit(terminal);\n terminal.writeln('#Run kubectl commands inside here');\n terminal.writeln('#e.g. kubectl get all');\n terminal.writeln('');\n }, [terminal]);\n\n // refresh socket listeners on socket updates\n useEffect(() => {\n if (!socket) {\n return () => {};\n }\n function onOpen() {\n openTerminal();\n }\n function onMessage(e: MessageEvent) {\n terminal.write(e.data);\n }\n function onClose() {\n handleClose();\n }\n function onError(e: Event) {\n handleClose();\n if (socket?.readyState !== WebSocket.CLOSED) {\n notifyError(\n 'Failure',\n e as unknown as Error,\n 'Websocket connection error'\n );\n }\n }\n\n socket.addEventListener('open', onOpen);\n socket.addEventListener('message', onMessage);\n socket.addEventListener('close', onClose);\n socket.addEventListener('error', onError);\n\n return () => {\n socket.removeEventListener('open', onOpen);\n socket.removeEventListener('message', onMessage);\n socket.removeEventListener('close', onClose);\n socket.removeEventListener('error', onError);\n };\n }, [handleClose, openTerminal, socket, terminal]);\n\n // on component load/destroy\n useEffect(() => {\n const socket = new WebSocket(buildUrl(jwt, environmentId));\n setShell((shell) => ({ ...shell, socket }));\n\n terminal.onData((data) => socket.send(data));\n terminal.onKey(({ domEvent }) => {\n if (domEvent.ctrlKey && domEvent.code === 'KeyD') {\n close();\n }\n });\n\n window.addEventListener('resize', () => terminalResize());\n\n function close() {\n socket.close();\n terminal.dispose();\n window.removeEventListener('resize', terminalResize);\n }\n\n return close;\n }, [environmentId, jwt, terminal]);\n\n return (\n <div className={clsx(styles.root, { [styles.minimized]: shell.minimized })}>\n <div className={styles.header}>\n <div className={clsx(styles.title, 'vertical-center')}>\n <Icon icon={TerminalIcon} />\n kubectl shell\n </div>\n <div className={clsx(styles.actions, 'space-x-8')}>\n <Button\n color=\"link\"\n onClick={clearScreen}\n data-cy=\"k8sShell-refreshButton\"\n >\n <Icon icon={RotateCw} size=\"md\" />\n </Button>\n <Button\n color=\"link\"\n onClick={toggleMinimize}\n data-cy={shell.minimized ? 'k8sShell-restore' : 'k8sShell-minimise'}\n >\n <Icon\n icon={shell.minimized ? 'maximize-2' : 'minimize-2'}\n size=\"md\"\n data-cy={\n shell.minimized ? 'k8sShell-restore' : 'k8sShell-minimise'\n }\n />\n </Button>\n <Button\n color=\"link\"\n onClick={handleClose}\n data-cy=\"k8sShell-closeButton\"\n >\n <Icon icon={X} size=\"md\" />\n </Button>\n </div>\n </div>\n\n <div className={styles.terminalContainer} ref={terminalElem}>\n <div className={styles.loadingMessage}>Loading Terminal...</div>\n </div>\n </div>\n );\n\n function clearScreen() {\n terminal.clear();\n }\n\n function toggleMinimize() {\n if (shell.minimized) {\n terminalResize();\n setShell((shell) => ({ ...shell, minimized: false }));\n } else {\n terminalClose();\n setShell((shell) => ({ ...shell, minimized: true }));\n }\n }\n\n function buildUrl(jwt: string, environmentId: EnvironmentId) {\n const params = {\n token: jwt,\n endpointId: environmentId,\n };\n\n const wsProtocol =\n window.location.protocol === 'https:' ? 'wss://' : 'ws://';\n const path = `${baseHref()}api/websocket/kubernetes-shell`;\n const base = path.startsWith('http')\n ? path.replace(/^https?:\\/\\//i, '')\n : window.location.host + path;\n\n const queryParams = Object.entries(params)\n .map(([k, v]) => `${k}=${v}`)\n .join('&');\n return `${wsProtocol}${base}?${queryParams}`;\n }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-sidebar-KubernetesSidebar-KubectlShell-KubectlShellButton-module__root\"};","import clsx from 'clsx';\nimport { useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Terminal } from 'lucide-react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { useAnalytics } from '@/angulartics.matomo/analytics-services';\n\nimport { Button } from '@@/buttons';\nimport { Icon } from '@@/Icon';\n\nimport { KubeCtlShell } from './KubectlShell';\nimport styles from './KubectlShellButton.module.css';\n\ninterface Props {\n environmentId: EnvironmentId;\n}\nexport function KubectlShellButton({ environmentId }: Props) {\n const [open, setOpen] = useState(false);\n const { trackEvent } = useAnalytics();\n return (\n <>\n <Button\n color=\"primary\"\n size=\"small\"\n disabled={open}\n data-cy=\"k8sSidebar-shellButton\"\n onClick={() => handleOpen()}\n className={clsx(styles.root, '!flex')}\n >\n <Icon icon={Terminal} className=\"vertical-center\" size=\"md\" /> kubectl\n shell\n </Button>\n\n {open &&\n createPortal(\n <KubeCtlShell\n environmentId={environmentId}\n onClose={() => setOpen(false)}\n />,\n document.body\n )}\n </>\n );\n\n function handleOpen() {\n setOpen(true);\n\n trackEvent('kubernetes-kubectl-shell', { category: 'kubernetes' });\n }\n}\n","import { Box, Edit, Layers, Lock, Server, Shuffle } from 'lucide-react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\nimport { Authorized } from '@/react/hooks/useUser';\nimport Helm from '@/assets/ico/vendor/helm.svg?c';\nimport Route from '@/assets/ico/route.svg?c';\n\nimport { DashboardLink } from '../items/DashboardLink';\nimport { SidebarItem } from '../SidebarItem';\nimport { VolumesLink } from '../items/VolumesLink';\nimport { useSidebarState } from '../useSidebarState';\n\nimport { KubectlShellButton } from './KubectlShell';\n\ninterface Props {\n environmentId: EnvironmentId;\n}\n\nexport function KubernetesSidebar({ environmentId }: Props) {\n const { isOpen } = useSidebarState();\n\n return (\n <>\n {isOpen && (\n <div className=\"mb-3\">\n <KubectlShellButton environmentId={environmentId} />\n </div>\n )}\n\n <DashboardLink\n environmentId={environmentId}\n platformPath=\"kubernetes\"\n data-cy=\"k8sSidebar-dashboard\"\n />\n\n <SidebarItem\n to=\"kubernetes.templates.custom\"\n params={{ endpointId: environmentId }}\n icon={Edit}\n label=\"Custom Templates\"\n data-cy=\"k8sSidebar-customTemplates\"\n />\n\n <SidebarItem\n to=\"kubernetes.resourcePools\"\n params={{ endpointId: environmentId }}\n icon={Layers}\n label=\"Namespaces\"\n data-cy=\"k8sSidebar-namespaces\"\n />\n\n <Authorized\n authorizations=\"HelmInstallChart\"\n environmentId={environmentId}\n >\n <SidebarItem\n to=\"kubernetes.templates.helm\"\n params={{ endpointId: environmentId }}\n icon={Helm}\n label=\"Helm\"\n data-cy=\"k8sSidebar-helm\"\n />\n </Authorized>\n\n <SidebarItem\n to=\"kubernetes.applications\"\n params={{ endpointId: environmentId }}\n icon={Box}\n label=\"Applications\"\n data-cy=\"k8sSidebar-applications\"\n />\n\n <SidebarItem\n to=\"kubernetes.services\"\n params={{ endpointId: environmentId }}\n label=\"Services\"\n data-cy=\"k8sSidebar-services\"\n icon={Shuffle}\n />\n\n <SidebarItem\n to=\"kubernetes.ingresses\"\n params={{ endpointId: environmentId }}\n label=\"Ingresses\"\n data-cy=\"k8sSidebar-ingresses\"\n icon={Route}\n />\n\n <SidebarItem\n to=\"kubernetes.configurations\"\n params={{ endpointId: environmentId }}\n icon={Lock}\n label=\"ConfigMaps & Secrets\"\n data-cy=\"k8sSidebar-configurations\"\n />\n\n <VolumesLink\n environmentId={environmentId}\n platformPath=\"kubernetes\"\n data-cy=\"k8sSidebar-volumes\"\n />\n\n <SidebarItem\n label=\"Cluster\"\n to=\"kubernetes.cluster\"\n icon={Server}\n params={{ endpointId: environmentId }}\n data-cy=\"k8sSidebar-cluster\"\n >\n <Authorized\n authorizations=\"K8sClusterSetupRW\"\n adminOnlyCE\n environmentId={environmentId}\n >\n <SidebarItem\n to=\"kubernetes.cluster.setup\"\n params={{ endpointId: environmentId }}\n label=\"Setup\"\n data-cy=\"k8sSidebar-setup\"\n />\n </Authorized>\n\n <Authorized\n authorizations=\"K8sClusterSetupRW\"\n adminOnlyCE\n environmentId={environmentId}\n >\n <SidebarItem\n to=\"kubernetes.cluster.securityConstraint\"\n params={{ endpointId: environmentId }}\n label=\"Security constraints\"\n data-cy=\"k8sSidebar-securityConstraints\"\n />\n </Authorized>\n\n <SidebarItem\n to=\"kubernetes.registries\"\n params={{ endpointId: environmentId }}\n label=\"Registries\"\n data-cy=\"k8sSidebar-registries\"\n />\n </SidebarItem>\n </>\n );\n}\n","import { Clock } from 'lucide-react';\n\nimport { EnvironmentId } from '@/react/portainer/environments/types';\n\nimport { DashboardLink } from '../items/DashboardLink';\nimport { SidebarItem } from '../SidebarItem';\n\ninterface Props {\n environmentId: EnvironmentId;\n}\n\nexport function NomadSidebar({ environmentId }: Props) {\n return (\n <>\n <DashboardLink\n environmentId={environmentId}\n platformPath=\"nomad\"\n data-cy=\"nomadSidebar-dashboard\"\n />\n\n <SidebarItem\n to=\"nomad.jobs\"\n params={{ endpointId: environmentId }}\n icon={Clock}\n label=\"Nomad Jobs\"\n data-cy=\"nomadSidebar-jobs\"\n />\n </>\n );\n}\n","import { useCurrentStateAndParams, useRouter } from '@uirouter/react';\nimport { useEffect } from 'react';\nimport { X, Slash } from 'lucide-react';\nimport clsx from 'clsx';\nimport { useStore } from 'zustand';\n\nimport {\n PlatformType,\n EnvironmentId,\n Environment,\n} from '@/react/portainer/environments/types';\nimport { getPlatformType } from '@/react/portainer/environments/utils';\nimport { useEnvironment } from '@/react/portainer/environments/queries/useEnvironment';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { environmentStore } from '@/react/hooks/current-environment-store';\n\nimport { Icon } from '@@/Icon';\n\nimport { getPlatformIcon } from '../portainer/environments/utils/get-platform-icon';\n\nimport styles from './EnvironmentSidebar.module.css';\nimport { AzureSidebar } from './AzureSidebar';\nimport { DockerSidebar } from './DockerSidebar';\nimport { KubernetesSidebar } from './KubernetesSidebar';\nimport { SidebarSection, SidebarSectionTitle } from './SidebarSection';\nimport { useSidebarState } from './useSidebarState';\nimport { NomadSidebar } from './NomadSidebar';\n\nexport function EnvironmentSidebar() {\n const { query: currentEnvironmentQuery, clearEnvironment } =\n useCurrentEnvironment();\n const environment = currentEnvironmentQuery.data;\n\n const { isOpen } = useSidebarState();\n\n if (!isOpen && !environment) {\n return null;\n }\n\n return (\n <div className={clsx(styles.root, 'rounded border border-dotted py-2')}>\n {environment ? (\n <Content environment={environment} onClear={clearEnvironment} />\n ) : (\n <SidebarSectionTitle>\n <div className=\"flex items-center gap-1\">\n <span>Environment:</span>\n <Icon icon={Slash} className=\"text-xl !text-gray-6\" />\n <span className=\"text-sm text-gray-6\">None selected</span>\n </div>\n </SidebarSectionTitle>\n )}\n </div>\n );\n}\n\ninterface ContentProps {\n environment: Environment;\n onClear: () => void;\n}\n\nfunction Content({ environment, onClear }: ContentProps) {\n const platform = getPlatformType(environment.Type);\n const Sidebar = getSidebar(platform);\n\n return (\n <SidebarSection\n title={<Title environment={environment} onClear={onClear} />}\n aria-label={environment.Name}\n showTitleWhenOpen\n >\n <div className=\"mt-2\">\n {Sidebar && (\n <Sidebar environmentId={environment.Id} environment={environment} />\n )}\n </div>\n </SidebarSection>\n );\n\n function getSidebar(platform: PlatformType) {\n const sidebar: {\n [key in PlatformType]: React.ComponentType<{\n environmentId: EnvironmentId;\n environment: Environment;\n }> | null;\n } = {\n [PlatformType.Azure]: AzureSidebar,\n [PlatformType.Docker]: DockerSidebar,\n [PlatformType.Kubernetes]: KubernetesSidebar,\n [PlatformType.Nomad]: isBE ? NomadSidebar : null,\n };\n\n return sidebar[platform];\n }\n}\n\nfunction useCurrentEnvironment() {\n const { params } = useCurrentStateAndParams();\n const router = useRouter();\n\n const envStore = useStore(environmentStore);\n const { setEnvironmentId } = envStore;\n useEffect(() => {\n const environmentId = parseInt(params.endpointId, 10);\n if (params.endpointId && !Number.isNaN(environmentId)) {\n setEnvironmentId(environmentId);\n }\n }, [setEnvironmentId, params.endpointId, params.environmentId]);\n\n return { query: useEnvironment(envStore.environmentId), clearEnvironment };\n\n function clearEnvironment() {\n if (params.endpointId || params.environmentId) {\n router.stateService.go('portainer.home');\n }\n\n envStore.clear();\n }\n}\n\ninterface TitleProps {\n environment: Environment;\n onClear(): void;\n}\n\nfunction Title({ environment, onClear }: TitleProps) {\n const { isOpen } = useSidebarState();\n\n const EnvironmentIcon = getPlatformIcon(environment.Type);\n\n if (!isOpen) {\n return (\n <div className=\"-ml-3 flex w-8 justify-center\" title={environment.Name}>\n <EnvironmentIcon className=\"text-2xl\" />\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center\">\n <EnvironmentIcon className=\"mr-3 text-2xl\" />\n <span className=\"overflow-hidden text-ellipsis whitespace-nowrap text-white\">\n {environment.Name}\n </span>\n\n <button\n title=\"Clear environment\"\n type=\"button\"\n onClick={onClear}\n className={clsx(\n styles.closeBtn,\n 'ml-auto mr-2 flex h-5 w-5 items-center justify-center rounded border-0 p-1 text-sm text-gray-5 transition-colors duration-200 hover:text-white be:text-gray-6 be:hover:text-white'\n )}\n >\n <X />\n </button>\n </div>\n );\n}\n","import {\n Users,\n Award,\n Settings,\n HardDrive,\n Radio,\n FileText,\n Bell,\n} from 'lucide-react';\n\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { SidebarItem } from './SidebarItem';\nimport { SidebarSection } from './SidebarSection';\n\ninterface Props {\n isAdmin: boolean;\n isTeamLeader?: boolean;\n}\n\nexport function SettingsSidebar({ isAdmin, isTeamLeader }: Props) {\n const teamSyncQuery = usePublicSettings<boolean>({\n select: (settings) => settings.TeamSync,\n });\n\n const showUsersSection =\n !window.ddExtension && (isAdmin || (isTeamLeader && !teamSyncQuery.data));\n\n return (\n <SidebarSection title=\"Settings\">\n {showUsersSection && (\n <SidebarItem\n to=\"portainer.users\"\n label=\"Users\"\n icon={Users}\n data-cy=\"portainerSidebar-users\"\n >\n <SidebarItem\n to=\"portainer.teams\"\n label=\"Teams\"\n data-cy=\"portainerSidebar-teams\"\n />\n\n {isAdmin && (\n <SidebarItem\n to=\"portainer.roles\"\n label=\"Roles\"\n data-cy=\"portainerSidebar-roles\"\n />\n )}\n </SidebarItem>\n )}\n {isAdmin && (\n <>\n <SidebarItem\n label=\"Environments\"\n to=\"portainer.endpoints\"\n icon={HardDrive}\n openOnPaths={['portainer.wizard.endpoints']}\n data-cy=\"portainerSidebar-environments\"\n >\n <SidebarItem\n to=\"portainer.groups\"\n label=\"Groups\"\n data-cy=\"portainerSidebar-environmentGroups\"\n />\n <SidebarItem\n to=\"portainer.tags\"\n label=\"Tags\"\n data-cy=\"portainerSidebar-environmentTags\"\n />\n <EdgeUpdatesSidebarItem />\n </SidebarItem>\n\n <SidebarItem\n label=\"Registries\"\n to=\"portainer.registries\"\n icon={Radio}\n data-cy=\"portainerSidebar-registries\"\n />\n\n {isBE && (\n <SidebarItem\n to=\"portainer.licenses\"\n label=\"Licenses\"\n icon={Award}\n data-cy=\"portainerSidebar-licenses\"\n />\n )}\n\n <SidebarItem\n label=\"Authentication logs\"\n to=\"portainer.authLogs\"\n icon={FileText}\n data-cy=\"portainerSidebar-authLogs\"\n >\n <SidebarItem\n to=\"portainer.activityLogs\"\n label=\"Activity Logs\"\n data-cy=\"portainerSidebar-activityLogs\"\n />\n </SidebarItem>\n </>\n )}\n <SidebarItem\n to=\"portainer.notifications\"\n icon={Bell}\n label=\"Notifications\"\n data-cy=\"portainerSidebar-notifications\"\n />\n {isAdmin && (\n <SidebarItem\n to=\"portainer.settings\"\n label=\"Settings\"\n icon={Settings}\n data-cy=\"portainerSidebar-settings\"\n >\n {!window.ddExtension && (\n <SidebarItem\n to=\"portainer.settings.authentication\"\n label=\"Authentication\"\n data-cy=\"portainerSidebar-authentication\"\n />\n )}\n {isBE && (\n <SidebarItem\n to=\"portainer.settings.cloud\"\n label=\"Cloud\"\n data-cy=\"portainerSidebar-cloud\"\n />\n )}\n <SidebarItem\n to=\"portainer.settings.edgeCompute\"\n label=\"Edge Compute\"\n data-cy=\"portainerSidebar-edgeCompute\"\n />\n\n <SidebarItem.Wrapper label=\"Help / About\">\n <a\n href={\n process.env.PORTAINER_EDITION === 'CE'\n ? 'https://www.portainer.io/community_help'\n : 'https://documentation.portainer.io/r/business-support'\n }\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"flex h-8 items-center rounded px-3\"\n >\n Help / About\n </a>\n </SidebarItem.Wrapper>\n </SidebarItem>\n )}\n </SidebarSection>\n );\n}\n\nfunction EdgeUpdatesSidebarItem() {\n const settingsQuery = usePublicSettings();\n\n if (!isBE || !settingsQuery.data?.EnableEdgeComputeFeatures) {\n return null;\n }\n\n return (\n <SidebarItem\n to=\"portainer.endpoints.updateSchedules\"\n label=\"Update & Rollback\"\n data-cy=\"portainerSidebar-updateSchedules\"\n />\n );\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\n\nimport { buildUrl } from './build-url';\nimport { queryKeys } from './query-keys';\n\nexport const queryKey = [...queryKeys.base(), 'version'] as const;\n\nexport interface VersionResponse {\n // Whether portainer has an update available\n UpdateAvailable: boolean;\n // The latest version available\n LatestVersion: string;\n ServerVersion: string;\n DatabaseVersion: string;\n Build: {\n BuildNumber: string;\n ImageTag: string;\n NodejsVersion: string;\n YarnVersion: string;\n WebpackVersion: string;\n GoVersion: string;\n };\n}\n\nexport async function getSystemVersion() {\n try {\n const { data } = await axios.get<VersionResponse>(buildUrl('version'));\n return data;\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\nexport function useSystemVersion() {\n return useQuery(queryKey, () => getSystemVersion());\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-sidebar-Footer-UpdateNotifications-module__root\",\"dismissTitle\":\"app-react-sidebar-Footer-UpdateNotifications-module__dismissTitle\",\"dismissBtn\":\"app-react-sidebar-Footer-UpdateNotifications-module__dismissBtn\",\"actions\":\"app-react-sidebar-Footer-UpdateNotifications-module__actions\"};","import clsx from 'clsx';\nimport { DownloadCloud } from 'lucide-react';\n\nimport { useUIState } from '@/react/hooks/useUIState';\nimport { useSystemVersion } from '@/react/portainer/system/useSystemVersion';\n\nimport { Icon } from '@@/Icon';\n\nimport styles from './UpdateNotifications.module.css';\n\nexport function UpdateNotification() {\n const uiStateStore = useUIState();\n const query = useSystemVersion();\n\n if (!query.data || !query.data.UpdateAvailable) {\n return null;\n }\n\n const { LatestVersion } = query.data;\n\n if (\n !!uiStateStore.dismissedUpdateVersion &&\n LatestVersion?.length > 0 &&\n uiStateStore.dismissedUpdateVersion === LatestVersion\n ) {\n return null;\n }\n\n return (\n <div\n className={clsx(\n styles.root,\n 'rounded border py-2',\n 'bg-blue-11 th-dark:bg-gray-warm-11',\n 'border-blue-9 th-dark:border-gray-warm-9'\n )}\n >\n <div className={clsx(styles.dismissTitle, 'vertical-center')}>\n <Icon icon={DownloadCloud} mode=\"primary\" size=\"md\" />\n <span className=\"space-left\">\n New version available {LatestVersion}\n </span>\n </div>\n\n <div className={clsx(styles.actions)}>\n <button\n type=\"button\"\n className={clsx(styles.dismissBtn, 'space-right')}\n onClick={() => onDismiss(LatestVersion)}\n >\n Dismiss\n </button>\n <a\n className=\"hyperlink space-left\"\n target=\"_blank\"\n href={`https://github.com/portainer/portainer/releases/tag/${LatestVersion}`}\n rel=\"noreferrer\"\n >\n See what's new\n </a>\n </div>\n </div>\n );\n\n function onDismiss(version: string) {\n uiStateStore.dismissUpdateVersion(version);\n }\n}\n","var _g, _defs;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgPortainerLogo = function SvgPortainerLogo(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 190 47\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#portainer_logo_svg__a)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#13BEF9\",\n fillRule: \"evenodd\",\n d: \"M10.893 10.604h-.698v3.658h.698v-3.658ZM13.895 10.604h-.698v3.658h.698v-3.658ZM17.997 3.623 17.28 2.37 5.342 9.349l.716 1.255 11.939-6.98Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#13BEF9\",\n fillRule: \"evenodd\",\n d: \"m17.927 3.623.715-1.254 11.94 6.98-.716 1.255-11.94-6.98Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#13BEF9\",\n fillRule: \"evenodd\",\n d: \"M32.693 10.622v-1.45H-.017v1.45h32.71Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#13BEF9\",\n fillRule: \"evenodd\",\n d: \"M19.742 31.087V9.614h1.431V32.13c-.384-.442-.872-.76-1.43-1.043ZM17.299 30.716V.425h1.43v30.468c-.4-.195-1.378-.177-1.43-.177ZM3.737 33.738a7.19 7.19 0 0 1-2.898-5.761c0-1.255.332-2.492.943-3.57H14a7.085 7.085 0 0 1 .942 3.57c0 1.095-.14 2.12-.576 3.04-.925-.902-2.286-1.29-3.665-1.29-2.444 0-4.538 1.537-5.08 3.834-.191-.017-.313-.035-.505-.035a6.054 6.054 0 0 0-1.38.212ZM9.74 15.888h-3.7v3.765h3.7v-3.765ZM5.57 15.888H1.868v3.765h3.7v-3.765ZM5.57 20.077H1.868v3.764h3.7v-3.764ZM9.74 20.077h-3.7v3.764h3.7v-3.764ZM13.895 20.077h-3.7v3.764h3.7v-3.764ZM13.895 13.873h-3.7v3.765h3.7v-3.765Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#13BEF9\",\n fillRule: \"evenodd\",\n d: \"M6.232 34.303c.507-2.173 2.444-3.8 4.748-3.8 1.484 0 2.81.672 3.718 1.733a4.785 4.785 0 0 1 2.758-.866c2.688 0 4.87 2.209 4.87 4.93 0 .566-.088 1.096-.262 1.609.593.813.96 1.838.96 2.933 0 2.722-2.182 4.931-4.87 4.931a4.795 4.795 0 0 1-3.107-1.131c-.89 1.255-2.339 2.085-3.98 2.085-1.885 0-3.525-1.095-4.346-2.686-.331.07-.663.106-1.012.106-2.688 0-4.887-2.209-4.887-4.93 0-2.722 2.182-4.931 4.887-4.931.175-.018.349-.018.524.017Z\",\n clipRule: \"evenodd\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M43.964 17.884c.503-.659 1.187-1.213 2.054-1.664.867-.45 1.846-.676 2.938-.676 1.248 0 2.383.312 3.406.936 1.04.607 1.855 1.465 2.444 2.574.59 1.11.884 2.383.884 3.822s-.295 2.73-.884 3.874c-.59 1.127-1.404 2.01-2.444 2.652-1.023.624-2.158.936-3.406.936-1.092 0-2.063-.217-2.912-.65-.85-.45-1.543-1.005-2.08-1.664v8.892H41V15.778h2.964v2.106Zm8.71 4.992c0-.988-.208-1.837-.624-2.548-.399-.728-.936-1.274-1.612-1.638a4.184 4.184 0 0 0-2.132-.572c-.745 0-1.456.19-2.132.572-.659.381-1.196.936-1.612 1.664-.399.728-.598 1.586-.598 2.574 0 .988.2 1.855.598 2.6.416.728.953 1.283 1.612 1.664a4.277 4.277 0 0 0 2.132.572c.763 0 1.473-.19 2.132-.572.676-.399 1.213-.97 1.612-1.716.416-.745.624-1.612.624-2.6ZM64.835 30.338c-1.352 0-2.574-.303-3.666-.91a6.746 6.746 0 0 1-2.574-2.6c-.624-1.127-.936-2.427-.936-3.9 0-1.456.32-2.747.962-3.874a6.645 6.645 0 0 1 2.626-2.6c1.11-.607 2.349-.91 3.718-.91 1.37 0 2.609.303 3.718.91a6.645 6.645 0 0 1 2.626 2.6c.641 1.127.962 2.418.962 3.874s-.33 2.747-.988 3.874a6.909 6.909 0 0 1-2.704 2.626c-1.127.607-2.375.91-3.744.91Zm0-2.574c.763 0 1.473-.182 2.132-.546.676-.364 1.222-.91 1.638-1.638.416-.728.624-1.612.624-2.652s-.2-1.915-.598-2.626c-.399-.728-.927-1.274-1.586-1.638a4.337 4.337 0 0 0-2.132-.546c-.763 0-1.473.182-2.132.546-.641.364-1.153.91-1.534 1.638-.381.71-.572 1.586-.572 2.626 0 1.543.39 2.739 1.17 3.588.797.832 1.794 1.248 2.99 1.248ZM78.165 17.858a4.584 4.584 0 0 1 1.716-1.69c.728-.416 1.586-.624 2.574-.624v3.068h-.754c-1.161 0-2.045.295-2.652.884-.59.59-.884 1.612-.884 3.068v7.54h-2.964V15.778h2.964v2.08ZM88.638 18.196v7.93c0 .537.121.927.364 1.17.26.225.693.338 1.3.338h1.82v2.47h-2.34c-1.335 0-2.358-.312-3.068-.936-.711-.624-1.066-1.638-1.066-3.042v-7.93h-1.69v-2.418h1.69v-3.562h2.99v3.562h3.484v2.418h-3.484ZM93.865 22.876c0-1.439.295-2.713.885-3.822.606-1.11 1.421-1.967 2.444-2.574a6.546 6.546 0 0 1 3.432-.936c1.126 0 2.106.225 2.938.676.849.433 1.525.98 2.028 1.638v-2.08h2.99v14.326h-2.99v-2.132c-.503.676-1.188 1.24-2.054 1.69-.867.45-1.855.676-2.964.676a6.362 6.362 0 0 1-3.38-.936c-1.023-.641-1.838-1.525-2.444-2.652-.59-1.144-.885-2.435-.885-3.874Zm11.727.052c0-.988-.208-1.846-.624-2.574-.399-.728-.928-1.283-1.586-1.664a4.186 4.186 0 0 0-2.132-.572c-.763 0-1.474.19-2.132.572-.659.364-1.196.91-1.612 1.638-.399.71-.598 1.56-.598 2.548s.199 1.855.598 2.6c.416.745.953 1.317 1.612 1.716a4.275 4.275 0 0 0 2.132.572c.762 0 1.473-.19 2.132-.572.658-.381 1.187-.936 1.586-1.664.416-.745.624-1.612.624-2.6ZM113.983 13.88c-.538 0-.988-.182-1.352-.546-.364-.364-.546-.815-.546-1.352 0-.537.182-.988.546-1.352.364-.364.814-.546 1.352-.546.52 0 .962.182 1.326.546.364.364.546.815.546 1.352 0 .537-.182.988-.546 1.352a1.805 1.805 0 0 1-1.326.546Zm1.456 1.898v14.326h-2.964V15.778h2.964ZM126.558 15.544c1.127 0 2.132.234 3.016.702a4.977 4.977 0 0 1 2.106 2.08c.503.919.754 2.028.754 3.328v8.45h-2.938v-8.008c0-1.283-.321-2.262-.962-2.938-.641-.693-1.517-1.04-2.626-1.04s-1.993.347-2.652 1.04c-.641.676-.962 1.655-.962 2.938v8.008h-2.964V15.778h2.964v1.638a4.928 4.928 0 0 1 1.846-1.378 6.038 6.038 0 0 1 2.418-.494ZM149.345 22.59c0 .537-.035 1.023-.104 1.456h-10.946c.087 1.144.511 2.063 1.274 2.756.763.693 1.699 1.04 2.808 1.04 1.595 0 2.721-.667 3.38-2.002h3.198c-.433 1.317-1.222 2.4-2.366 3.25-1.127.832-2.531 1.248-4.212 1.248-1.369 0-2.6-.303-3.692-.91a6.799 6.799 0 0 1-2.548-2.6c-.607-1.127-.91-2.427-.91-3.9 0-1.473.295-2.765.884-3.874.607-1.127 1.447-1.993 2.522-2.6 1.092-.607 2.34-.91 3.744-.91 1.352 0 2.557.295 3.614.884a6.224 6.224 0 0 1 2.47 2.496c.589 1.057.884 2.28.884 3.666Zm-3.094-.936c-.017-1.092-.407-1.967-1.17-2.626-.763-.659-1.707-.988-2.834-.988-1.023 0-1.898.33-2.626.988-.728.641-1.161 1.517-1.3 2.626h7.93ZM155.226 17.858a4.58 4.58 0 0 1 1.716-1.69c.728-.416 1.586-.624 2.574-.624v3.068h-.754c-1.162 0-2.046.295-2.652.884-.59.59-.884 1.612-.884 3.068v7.54h-2.964V15.778h2.964v2.08ZM163.436 30.286c-.537 0-.988-.182-1.352-.546-.364-.364-.546-.815-.546-1.352 0-.537.182-.988.546-1.352.364-.364.815-.546 1.352-.546.52 0 .962.182 1.326.546.364.364.546.815.546 1.352 0 .537-.182.988-.546 1.352a1.805 1.805 0 0 1-1.326.546ZM170.02 13.88c-.538 0-.988-.182-1.352-.546-.364-.364-.546-.815-.546-1.352 0-.537.182-.988.546-1.352.364-.364.814-.546 1.352-.546.52 0 .962.182 1.326.546.364.364.546.815.546 1.352 0 .537-.182.988-.546 1.352a1.805 1.805 0 0 1-1.326.546Zm1.456 1.898v14.326h-2.964V15.778h2.964ZM181.581 30.338c-1.352 0-2.574-.303-3.666-.91a6.746 6.746 0 0 1-2.574-2.6c-.624-1.127-.936-2.427-.936-3.9 0-1.456.321-2.747.962-3.874a6.651 6.651 0 0 1 2.626-2.6c1.11-.607 2.349-.91 3.718-.91 1.37 0 2.609.303 3.718.91a6.638 6.638 0 0 1 2.626 2.6c.642 1.127.962 2.418.962 3.874s-.329 2.747-.988 3.874a6.904 6.904 0 0 1-2.704 2.626c-1.126.607-2.374.91-3.744.91Zm0-2.574c.763 0 1.474-.182 2.132-.546.676-.364 1.222-.91 1.638-1.638.416-.728.624-1.612.624-2.652s-.199-1.915-.598-2.626c-.398-.728-.927-1.274-1.586-1.638a4.335 4.335 0 0 0-2.132-.546 4.34 4.34 0 0 0-2.132.546c-.641.364-1.152.91-1.534 1.638-.381.71-.572 1.586-.572 2.626 0 1.543.39 2.739 1.17 3.588.798.832 1.794 1.248 2.99 1.248Z\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"portainer_logo_svg__a\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M0 0h190v47H0z\"\n })))));\n};\nexport default SvgPortainerLogo;","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-sidebar-Footer-Footer-module__root\",\"dialog\":\"app-react-sidebar-Footer-Footer-module__dialog\",\"versionInfo\":\"app-react-sidebar-Footer-Footer-module__versionInfo\",\"toolsList\":\"app-react-sidebar-Footer-Footer-module__toolsList\",\"tools\":\"app-react-sidebar-Footer-Footer-module__tools\"};","import { useState } from 'react';\nimport { Database, Hash, Server, Tag, Wrench } from 'lucide-react';\n\nimport { useSystemStatus } from '@/react/portainer/system/useSystemStatus';\nimport { useSystemVersion } from '@/react/portainer/system/useSystemVersion';\n\nimport { Modal } from '@@/modals';\nimport { Button } from '@@/buttons';\n\nimport styles from './Footer.module.css';\n\nexport function BuildInfoModalButton() {\n const [isBuildInfoVisible, setIsBuildInfoVisible] = useState(false);\n const statusQuery = useSystemStatus();\n\n if (!statusQuery.data) {\n return null;\n }\n\n const { Version } = statusQuery.data;\n\n return (\n <>\n <button\n type=\"button\"\n data-cy=\"portainerSidebar-versionNumber\"\n className=\"btn-none\"\n onClick={() => setIsBuildInfoVisible(true)}\n >\n {Version}\n </button>\n {isBuildInfoVisible && (\n <BuildInfoModal closeModal={() => setIsBuildInfoVisible(false)} />\n )}\n </>\n );\n}\n\nfunction BuildInfoModal({ closeModal }: { closeModal: () => void }) {\n const versionQuery = useSystemVersion();\n const statusQuery = useSystemStatus();\n\n if (!statusQuery.data || !versionQuery.data) {\n return null;\n }\n\n const { Edition } = statusQuery.data;\n const { ServerVersion, DatabaseVersion, Build } = versionQuery.data;\n\n return (\n <Modal onDismiss={closeModal} aria-label=\"build-info-modal\">\n <Modal.Header title={`Portainer ${Edition}`} />\n <Modal.Body>\n <div className={styles.versionInfo}>\n <table>\n <tbody>\n <tr>\n <td>\n <span className=\"inline-flex items-center\">\n <Server size=\"13\" className=\"space-right\" />\n Server Version: {ServerVersion}\n </span>\n </td>\n <td>\n <span className=\"inline-flex items-center\">\n <Database size=\"13\" className=\"space-right\" />\n Database Version: {DatabaseVersion}\n </span>\n </td>\n </tr>\n <tr>\n <td>\n <span className=\"inline-flex items-center\">\n <Hash size=\"13\" className=\"space-right\" />\n CI Build Number: {Build.BuildNumber}\n </span>\n </td>\n <td>\n <span>\n <Tag size=\"13\" className=\"space-right\" />\n Image Tag: {Build.ImageTag}\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div className={styles.toolsList}>\n <span className=\"inline-flex items-center\">\n <Wrench size=\"13\" className=\"space-right\" />\n Compilation tools:\n </span>\n\n <div className={styles.tools}>\n <span className=\"text-muted small\">\n Nodejs v{Build.NodejsVersion}\n </span>\n <span className=\"text-muted small\">Yarn v{Build.YarnVersion}</span>\n <span className=\"text-muted small\">\n Webpack v{Build.WebpackVersion}\n </span>\n <span className=\"text-muted small\">Go v{Build.GoVersion}</span>\n </div>\n </div>\n </Modal.Body>\n <Modal.Footer>\n <Button className=\"w-full\" onClick={closeModal}>\n Ok\n </Button>\n </Modal.Footer>\n </Modal>\n );\n}\n","import { PropsWithChildren } from 'react';\nimport clsx from 'clsx';\n\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { UpdateNotification } from './UpdateNotifications';\nimport { BuildInfoModalButton } from './BuildInfoModal';\nimport '@reach/dialog/styles.css';\nimport styles from './Footer.module.css';\nimport Logo from './portainer_logo.svg?c';\n\nexport function Footer() {\n return isBE ? <BEFooter /> : <CEFooter />;\n}\n\nfunction CEFooter() {\n return (\n <div className={clsx(styles.root, 'text-center')}>\n <UpdateNotification />\n\n <FooterContent>\n <Logo width=\"90px\" height=\"100%\" />\n <span>Community Edition</span>\n\n <BuildInfoModalButton />\n </FooterContent>\n </div>\n );\n}\n\nfunction BEFooter() {\n return (\n <div className={clsx(styles.root, 'text-center')}>\n <FooterContent>\n <span>©</span>\n <span>Portainer Business Edition</span>\n\n <BuildInfoModalButton />\n </FooterContent>\n </div>\n );\n}\n\nfunction FooterContent({ children }: PropsWithChildren<unknown>) {\n return (\n <div className=\"mx-auto flex items-center justify-center space-x-1 text-[10px] text-gray-5 be:text-gray-6\">\n {children}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"app-react-sidebar-Header-module__logo\",\"collapseBtn\":\"app-react-sidebar-Header-module__collapseBtn\"};","import { ChevronsLeft, ChevronsRight } from 'lucide-react';\nimport clsx from 'clsx';\n\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport smallLogo from '@/assets/ico/logomark.svg';\n\nimport { Link } from '@@/Link';\n\nimport fullLogoBE from './portainer_logo-BE.svg';\nimport fullLogoCE from './portainer_logo-CE.svg';\nimport { useSidebarState } from './useSidebarState';\nimport styles from './Header.module.css';\n\ninterface Props {\n logo?: string;\n}\n\nexport function Header({ logo: customLogo }: Props) {\n const { toggle, isOpen } = useSidebarState();\n\n return (\n <div className=\"flex\">\n <div>\n <Link\n to=\"portainer.home\"\n data-cy=\"portainerSidebar-homeImage\"\n className=\"text-2xl text-white no-underline hover:text-white hover:no-underline focus:text-white focus:no-underline focus:outline-none\"\n >\n <Logo customLogo={customLogo} isOpen={isOpen} />\n </Link>\n {isOpen && customLogo && (\n <div\n className={clsx(\n 'space-x-1 pt-3 text-[9.4px] uppercase tracking-[.28em]',\n 'text-gray-3',\n 'th-dark:text-gray-warm-6'\n )}\n >\n <span className=\"font-medium\">Powered by</span>\n <span className=\"font-semibold\">\n {isBE ? (\n 'portainer business'\n ) : (\n <a\n href=\"https://www.portainer.io/install-BE-now\"\n className={clsx(\n 'hover:underline',\n 'text-blue-6 hover:text-blue-8',\n 'th-dark:text-blue-7 th-dark:hover:text-blue-9'\n )}\n >\n portainer community\n </a>\n )}\n </span>\n </div>\n )}\n </div>\n\n <button\n type=\"button\"\n onClick={() => toggle()}\n className={clsx(\n styles.collapseBtn,\n 'flex h-6 w-6 items-center justify-center rounded border-0',\n 'transition-all duration-200',\n 'text-sm text-gray-4 hover:text-white be:text-gray-5 be:hover:text-white',\n 'bg-blue-11 be:bg-gray-10',\n 'th-dark:bg-gray-warm-11',\n 'absolute',\n { '-right-[10px]': !isOpen, 'right-6': isOpen }\n )}\n aria-label=\"Toggle Sidebar\"\n title=\"Toggle Sidebar\"\n >\n {isOpen ? <ChevronsLeft /> : <ChevronsRight />}\n </button>\n </div>\n );\n}\n\nfunction getLogo(isOpen: boolean, customLogo?: string) {\n if (customLogo) {\n return customLogo;\n }\n\n if (!isOpen) {\n return smallLogo;\n }\n\n return isBE ? fullLogoBE : fullLogoCE;\n}\n\nfunction Logo({\n customLogo,\n isOpen,\n}: {\n customLogo?: string;\n isOpen: boolean;\n}) {\n const logo = getLogo(isOpen, customLogo);\n\n return (\n <img\n src={logo}\n className={clsx('img-responsive', styles.logo)}\n alt=\"Logo\"\n />\n );\n}\n","import { useQuery } from 'react-query';\n\nimport axios, { parseAxiosError } from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { buildUrl } from './build-url';\nimport { queryKeys } from './query-keys';\n\nexport const queryKey = [...queryKeys.base(), 'info'] as const;\n\nexport type ContainerPlatform =\n | 'Docker Standalone'\n | 'Docker Swarm'\n | 'Kubernetes'\n | 'Podman'\n | 'Nomad';\n\nexport interface SystemInfoResponse {\n platform: ContainerPlatform;\n agents: number;\n edgeAgents: number;\n}\n\nasync function getSystemInfo() {\n try {\n const { data } = await axios.get<SystemInfoResponse>(buildUrl('info'));\n return data;\n } catch (error) {\n throw parseAxiosError(error as Error);\n }\n}\n\nexport function useSystemInfo() {\n return useQuery(queryKey, getSystemInfo, {\n ...withError('Unable to retrieve system info'),\n });\n}\n","import { useMutation } from 'react-query';\n\nimport axios, {\n isAxiosError,\n parseAxiosError,\n} from '@/portainer/services/axios';\nimport { withError } from '@/react-tools/react-query';\n\nimport { buildUrl } from './build-url';\n\nexport function useUpgradeEditionMutation() {\n return useMutation(upgradeEdition, {\n ...withError('Unable to upgrade edition'),\n });\n}\n\nasync function upgradeEdition({ license }: { license: string }) {\n try {\n await axios.post(buildUrl('upgrade'), { license });\n } catch (error) {\n if (!isAxiosError(error)) {\n throw error;\n }\n\n // if error is because the server disconnected, then everything went well\n if (!error.response || !error.response.status) {\n return;\n }\n\n throw parseAxiosError(error);\n }\n}\n","import { Field, Form, Formik } from 'formik';\nimport { object, SchemaOf, string } from 'yup';\n\nimport { useUpgradeEditionMutation } from '@/react/portainer/system/useUpgradeEditionMutation';\nimport { notifySuccess } from '@/portainer/services/notifications';\nimport { useAnalytics } from '@/angulartics.matomo/analytics-services';\n\nimport { Button, LoadingButton } from '@@/buttons';\nimport { FormControl } from '@@/form-components/FormControl';\nimport { Input } from '@@/form-components/Input';\nimport { Modal } from '@@/modals/Modal';\nimport { Alert } from '@@/Alert';\n\ninterface FormValues {\n license: string;\n}\n\nconst initialValues: FormValues = {\n license: '',\n};\n\nexport function UploadLicenseDialog({\n onDismiss,\n goToLoading,\n goToGetLicense,\n isGetLicenseSubmitted,\n}: {\n onDismiss: () => void;\n goToLoading: () => void;\n goToGetLicense: () => void;\n isGetLicenseSubmitted: boolean;\n}) {\n const upgradeMutation = useUpgradeEditionMutation();\n const { trackEvent } = useAnalytics();\n\n return (\n <Modal\n onDismiss={onDismiss}\n aria-label=\"Upgrade Portainer to Business Edition\"\n >\n <Modal.Header\n title={<h4 className=\"text-xl font-medium\">Upgrade Portainer</h4>}\n />\n <Formik\n initialValues={initialValues}\n onSubmit={handleSubmit}\n validationSchema={validation}\n validateOnMount\n >\n {({ errors }) => (\n <Form noValidate>\n <Modal.Body>\n {!isGetLicenseSubmitted ? (\n <p className=\"font-semibold text-gray-7\">\n Please enter your Portainer License below\n </p>\n ) : (\n <div className=\"mb-4\">\n <Alert color=\"success\" title=\"License successfully sent\">\n Please check your email and copy your license into the field\n below to upgrade Portainer.\n </Alert>\n </div>\n )}\n\n <FormControl\n label=\"License\"\n errors={errors.license}\n required\n size=\"vertical\"\n >\n <Field name=\"license\" as={Input} required />\n </FormControl>\n </Modal.Body>\n <Modal.Footer>\n <div className=\"flex w-full gap-2 [&>*]:w-1/2\">\n <Button\n color=\"default\"\n size=\"medium\"\n className=\"w-full\"\n onClick={goToGetLicense}\n >\n Get a license\n </Button>\n <LoadingButton\n color=\"primary\"\n size=\"medium\"\n loadingText=\"Validating License\"\n isLoading={upgradeMutation.isLoading}\n >\n Start upgrade\n </LoadingButton>\n </div>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal>\n );\n\n function handleSubmit(values: FormValues) {\n upgradeMutation.mutate(values, {\n onSuccess() {\n trackEvent('portainer-upgrade-license-key-provided', {\n category: 'portainer',\n metadata: {\n Upgrade: 'true',\n },\n });\n\n notifySuccess('Starting upgrade', 'License validated successfully');\n goToLoading();\n },\n });\n }\n}\n\nfunction validation(): SchemaOf<FormValues> {\n return object().shape({\n license: string()\n .required('License is required')\n .matches(/^\\d-.+/, 'License is invalid'),\n });\n}\n","import { Loader2 } from 'lucide-react';\nimport { useEffect, useState } from 'react';\n\nimport { useSystemStatus } from '@/react/portainer/system/useSystemStatus';\n\nimport { Modal } from '@@/modals/Modal';\nimport { Icon } from '@@/Icon';\n\nexport function LoadingDialog() {\n useWaitForServerStatus();\n\n return (\n <Modal aria-label=\"Upgrade Portainer to Business Edition\">\n <Modal.Body>\n <div className=\"flex w-full flex-col items-center justify-center\">\n <Icon\n icon={Loader2}\n className=\"animate-spin-slow !text-8xl !text-blue-8\"\n aria-label=\"loading\"\n />\n\n <h1 className=\"!text-2xl\">Upgrading Portainer...</h1>\n\n <p className=\"text-center text-xl text-gray-6\">\n Please wait while we upgrade your Portainer to Business Edition.\n </p>\n </div>\n </Modal.Body>\n </Modal>\n );\n}\n\nfunction useWaitForServerStatus() {\n const [enabled, setEnabled] = useState(false);\n useSystemStatus({\n enabled,\n retry: true,\n onSuccess() {\n window.location.reload();\n },\n });\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n setEnabled(true);\n }, 3000);\n\n return () => {\n clearTimeout(timeoutId);\n };\n });\n}\n","import { ExternalLink } from 'lucide-react';\n\nimport { Button } from '@@/buttons';\nimport { Modal } from '@@/modals/Modal';\nimport { ModalType } from '@@/modals/Modal/types';\n\nexport function NonAdminUpgradeDialog({\n onDismiss,\n}: {\n onDismiss: () => void;\n}) {\n return (\n <Modal aria-label=\"Upgrade Portainer to Business Edition\">\n <Modal.Header\n title=\"Contact your administrator\"\n modalType={ModalType.Warn}\n />\n <Modal.Body>\n You need to be logged in as an admin to upgrade Portainer to Business\n Edition.\n </Modal.Body>\n <Modal.Footer>\n <div className=\"flex w-full gap-2\">\n <Button\n color=\"default\"\n size=\"medium\"\n className=\"w-1/3\"\n onClick={() => onDismiss()}\n >\n Cancel\n </Button>\n\n <a\n href=\"https://www.portainer.io/take-5\"\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"no-link w-2/3\"\n >\n <Button\n color=\"primary\"\n size=\"medium\"\n className=\"w-full\"\n icon={ExternalLink}\n >\n Learn about Business Edition\n </Button>\n </a>\n </div>\n </Modal.Footer>\n </Modal>\n );\n}\n","import { ReactNode, useRef } from 'react';\nimport { useQuery } from 'react-query';\n\nlet globalId = 0;\n\ninterface Props {\n portalId: HubSpotCreateFormOptions['portalId'];\n formId: HubSpotCreateFormOptions['formId'];\n region: HubSpotCreateFormOptions['region'];\n\n onSubmitted: () => void;\n\n loading?: ReactNode;\n}\n\nexport function HubspotForm({\n loading,\n portalId,\n region,\n formId,\n onSubmitted,\n}: Props) {\n const elRef = useRef<HTMLDivElement>(null);\n const id = useRef(`reactHubspotForm${globalId++}`);\n const { isLoading } = useHubspotForm({\n elId: id.current,\n formId,\n portalId,\n region,\n onSubmitted,\n });\n\n return (\n <>\n <div\n ref={elRef}\n id={id.current}\n style={{ display: isLoading ? 'none' : 'block' }}\n />\n {isLoading && loading}\n </>\n );\n}\n\nfunction useHubspotForm({\n elId,\n formId,\n portalId,\n region,\n onSubmitted,\n}: {\n elId: string;\n portalId: HubSpotCreateFormOptions['portalId'];\n formId: HubSpotCreateFormOptions['formId'];\n region: HubSpotCreateFormOptions['region'];\n\n onSubmitted: () => void;\n}) {\n return useQuery(\n ['hubspot', { elId, formId, portalId, region }],\n async () => {\n await loadHubspot();\n await createForm(`#${elId}`, {\n formId,\n portalId,\n region,\n onFormSubmitted: onSubmitted,\n });\n },\n {\n refetchOnWindowFocus: false,\n }\n );\n}\n\nasync function loadHubspot() {\n return new Promise<void>((resolve) => {\n if (window.hbspt) {\n resolve();\n return;\n }\n\n const script = document.createElement(`script`);\n\n script.defer = true;\n script.onload = () => {\n resolve();\n };\n script.src = `//js.hsforms.net/forms/v2.js`;\n document.head.appendChild(script);\n });\n}\n\nasync function createForm(\n target: string,\n options: Omit<HubSpotCreateFormOptions, 'target'>\n) {\n return new Promise<void>((resolve) => {\n if (!window.hbspt) {\n throw new Error('hbspt object is missing');\n }\n\n window.hbspt.forms.create({\n ...options,\n target,\n onFormReady(...rest) {\n options.onFormReady?.(...rest);\n resolve();\n },\n });\n });\n}\n","import { useAnalytics } from '@/angulartics.matomo/analytics-services';\n\nimport { HubspotForm } from '@@/HubspotForm';\nimport { Modal } from '@@/modals/Modal';\n\nexport function GetLicenseDialog({\n onDismiss,\n goToUploadLicense,\n}: {\n onDismiss: () => void;\n goToUploadLicense: (isSubmitted: boolean) => void;\n}) {\n // form is loaded from hubspot, so it won't have the same styling as the rest of the app\n // since it won't support darkmode, we enforce a white background and black text for the components we use\n // (Modal, CloseButton, loading text)\n const { trackEvent } = useAnalytics();\n\n return (\n <Modal\n onDismiss={onDismiss}\n aria-label=\"Upgrade Portainer to Business Edition\"\n size=\"lg\"\n className=\"!bg-white [&>.close-button]:!text-black\"\n >\n <Modal.Body>\n <div className=\"max-h-[80vh] overflow-auto\">\n <HubspotForm\n region=\"na1\"\n portalId=\"4731999\"\n formId=\"1ef8ea88-3e03-46c5-8aef-c1d9f48fd06b\"\n onSubmitted={() => {\n trackEvent('portainer-upgrade-license-key-requested', {\n category: 'portainer',\n metadata: { 'Upgrade-key-requested': true },\n });\n\n goToUploadLicense(true);\n }}\n loading={<div className=\"text-black\">Loading...</div>}\n />\n </div>\n </Modal.Body>\n </Modal>\n );\n}\n","import { useState } from 'react';\n\nimport { useUser } from '@/react/hooks/useUser';\n\nimport { UploadLicenseDialog } from './UploadLicenseDialog';\nimport { LoadingDialog } from './LoadingDialog';\nimport { NonAdminUpgradeDialog } from './NonAdminUpgradeDialog';\nimport { GetLicenseDialog } from './GetLicenseDialog';\n\ntype Step = 'uploadLicense' | 'loading' | 'getLicense';\n\nexport function UpgradeDialog({ onDismiss }: { onDismiss: () => void }) {\n const { isAdmin } = useUser();\n const [currentStep, setCurrentStep] = useState<Step>('uploadLicense');\n const [isGetLicenseSubmitted, setIsGetLicenseSubmitted] = useState(false);\n const component = getDialog();\n\n return component;\n\n function getDialog() {\n if (!isAdmin) {\n return <NonAdminUpgradeDialog onDismiss={onDismiss} />;\n }\n\n switch (currentStep) {\n case 'getLicense':\n return (\n <GetLicenseDialog\n goToUploadLicense={(isSubmitted) => {\n setCurrentStep('uploadLicense');\n setIsGetLicenseSubmitted(isSubmitted);\n }}\n onDismiss={onDismiss}\n />\n );\n case 'uploadLicense':\n return (\n <UploadLicenseDialog\n goToLoading={() => setCurrentStep('loading')}\n onDismiss={onDismiss}\n goToGetLicense={() => setCurrentStep('getLicense')}\n isGetLicenseSubmitted={isGetLicenseSubmitted}\n />\n );\n case 'loading':\n return <LoadingDialog />;\n default:\n throw new Error('step type not found');\n }\n }\n}\n","import { ArrowUpCircle } from 'lucide-react';\nimport { useState } from 'react';\nimport clsx from 'clsx';\n\nimport { useAnalytics } from '@/angulartics.matomo/analytics-services';\nimport { useNodesCount } from '@/react/portainer/system/useNodesCount';\nimport {\n ContainerPlatform,\n useSystemInfo,\n} from '@/react/portainer/system/useSystemInfo';\nimport { useCurrentUser } from '@/react/hooks/useUser';\nimport { withEdition } from '@/react/portainer/feature-flags/withEdition';\nimport { withHideOnExtension } from '@/react/hooks/withHideOnExtension';\nimport { useUser } from '@/portainer/users/queries/useUser';\n\nimport { useSidebarState } from '../useSidebarState';\n\nimport { UpgradeDialog } from './UpgradeDialog';\n\nexport const UpgradeBEBannerWrapper = withHideOnExtension(\n withEdition(UpgradeBEBanner, 'CE')\n);\n\nconst enabledPlatforms: Array<ContainerPlatform> = [\n 'Docker Standalone',\n 'Docker Swarm',\n 'Kubernetes',\n];\n\nfunction UpgradeBEBanner() {\n const {\n isAdmin,\n user: { Id },\n } = useCurrentUser();\n\n const { trackEvent } = useAnalytics();\n const { isOpen: isSidebarOpen } = useSidebarState();\n\n const nodesCountQuery = useNodesCount();\n const systemInfoQuery = useSystemInfo();\n const userQuery = useUser(Id);\n\n const [isOpen, setIsOpen] = useState(false);\n\n if (!nodesCountQuery.isSuccess || !systemInfoQuery.data || !userQuery.data) {\n return null;\n }\n\n const nodesCount = nodesCountQuery.data;\n const systemInfo = systemInfoQuery.data;\n\n const metadata = {\n upgrade: false,\n nodeCount: nodesCount,\n platform: systemInfo.platform,\n edgeAgents: systemInfo.edgeAgents,\n agents: systemInfo.agents,\n };\n\n if (\n !enabledPlatforms.includes(systemInfo.platform) &&\n process.env.NODE_ENV !== 'development'\n ) {\n return null;\n }\n\n return (\n <>\n <button\n type=\"button\"\n className={clsx(\n 'flex w-full items-center justify-center gap-1 py-2 pr-2 hover:underline',\n 'border border-solid border-blue-9 bg-[#023959] font-medium text-white th-dark:border-[#343434] th-dark:bg-black',\n 'th-highcontrast:border th-highcontrast:border-solid th-highcontrast:border-white th-highcontrast:bg-black th-highcontrast:font-medium th-highcontrast:text-white'\n )}\n onClick={handleClick}\n >\n <ArrowUpCircle\n className={clsx(\n 'lucide text-lg',\n 'fill-gray-6 stroke-[#023959] th-highcontrast:stroke-black th-dark:stroke-black'\n )}\n />\n {isSidebarOpen && <>Upgrade to Business Edition</>}\n </button>\n\n {isOpen && <UpgradeDialog onDismiss={() => setIsOpen(false)} />}\n </>\n );\n\n function handleClick() {\n trackEvent(\n isAdmin ? 'portainer-upgrade-admin' : 'portainer-upgrade-non-admin',\n {\n category: 'portainer',\n metadata,\n }\n );\n setIsOpen(true);\n }\n}\n","import angular from 'angular';\n\nimport { AngularSidebarService } from '@/react/sidebar/useSidebarState';\nimport { Sidebar } from '@/react/sidebar/Sidebar';\nimport { r2a } from '@/react-tools/react2angular';\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\n\nexport const sidebarModule = angular\n .module('portainer.app.sidebar', [])\n .component(\n 'sidebar',\n r2a(withUIRouter(withReactQuery(withCurrentUser(Sidebar))), [])\n )\n .factory('SidebarService', AngularSidebarService).name;\n","import clsx from 'clsx';\nimport { Home } from 'lucide-react';\n\nimport { useUser } from '@/react/hooks/useUser';\nimport { useIsTeamLeader } from '@/portainer/users/queries';\nimport { usePublicSettings } from '@/react/portainer/settings/queries';\n\nimport styles from './Sidebar.module.css';\nimport { EdgeComputeSidebar } from './EdgeComputeSidebar';\nimport { EnvironmentSidebar } from './EnvironmentSidebar';\nimport { SettingsSidebar } from './SettingsSidebar';\nimport { SidebarItem } from './SidebarItem';\nimport { Footer } from './Footer';\nimport { Header } from './Header';\nimport { SidebarProvider } from './useSidebarState';\nimport { UpgradeBEBannerWrapper } from './UpgradeBEBanner';\n\nexport function Sidebar() {\n const { isAdmin, user } = useUser();\n const isTeamLeader = useIsTeamLeader(user) as boolean;\n\n const settingsQuery = usePublicSettings();\n\n if (!settingsQuery.data) {\n return null;\n }\n\n const { EnableEdgeComputeFeatures, LogoURL } = settingsQuery.data;\n\n return (\n /* in the future (when we remove r2a) this should wrap the whole app - to change root styles */\n <SidebarProvider>\n <div className={clsx(styles.root, 'sidebar flex flex-col')}>\n <UpgradeBEBannerWrapper />\n <nav\n className={clsx(\n styles.nav,\n 'flex flex-1 flex-col overflow-y-auto p-5'\n )}\n aria-label=\"Main\"\n >\n <Header logo={LogoURL} />\n {/* negative margin + padding -> scrollbar won't hide the content */}\n <div className=\"mt-6 -mr-4 flex-1 overflow-y-auto pr-4\">\n <ul className=\"space-y-9\">\n <SidebarItem\n to=\"portainer.home\"\n icon={Home}\n label=\"Home\"\n data-cy=\"portainerSidebar-home\"\n />\n <EnvironmentSidebar />\n {isAdmin && EnableEdgeComputeFeatures && <EdgeComputeSidebar />}\n <SettingsSidebar isAdmin={isAdmin} isTeamLeader={isTeamLeader} />\n </ul>\n </div>\n <div className=\"mt-auto pt-8\">\n <Footer />\n </div>\n </nav>\n </div>\n </SidebarProvider>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"app-react-sidebar-Sidebar-module__root\",\"nav\":\"app-react-sidebar-Sidebar-module__nav\"};","import angular from 'angular';\n\nimport { azureEndpointConfig } from './azure-endpoint-config/azure-endpoint-config';\n\nexport default angular\n .module('portainer.environments', [])\n .component('azureEndpointConfig', azureEndpointConfig).name;\n","import angular from 'angular';\n\nimport { WebhookHelperFactory } from './webhookHelper';\n\nexport const helpersModule = angular\n .module('portainer.app.helpers', [])\n .factory('WebhookHelper', WebhookHelperFactory).name;\n","const autoNgTemplateLoaderTemplate1 = require('./views/account/account.html');\nconst autoNgTemplateLoaderTemplate2 = require('./views/auth/auth.html');\nconst autoNgTemplateLoaderTemplate3 = require('./views/logout/logout.html');\nconst autoNgTemplateLoaderTemplate4 = require('./views/endpoints/edit/endpoint.html');\nconst autoNgTemplateLoaderTemplate5 = require('./views/devices/import/importDevice.html');\nconst autoNgTemplateLoaderTemplate6 = require('./views/endpoints/access/endpointAccess.html');\nconst autoNgTemplateLoaderTemplate7 = require('./views/endpoints/kvm/endpointKVM.html');\nconst autoNgTemplateLoaderTemplate8 = require('./views/groups/groups.html');\nconst autoNgTemplateLoaderTemplate9 = require('./views/groups/edit/group.html');\nconst autoNgTemplateLoaderTemplate10 = require('./views/groups/create/creategroup.html');\nconst autoNgTemplateLoaderTemplate11 = require('./views/groups/access/groupAccess.html');\nconst autoNgTemplateLoaderTemplate12 = require('./views/init/admin/initAdmin.html');\nconst autoNgTemplateLoaderTemplate13 = require('./views/registries/registries.html');\nconst autoNgTemplateLoaderTemplate14 = require('./views/settings/authentication/settingsAuthentication.html');\nconst autoNgTemplateLoaderTemplate15 = require('./views/tags/tags.html');\nconst autoNgTemplateLoaderTemplate16 = require('./views/users/users.html');\nconst autoNgTemplateLoaderTemplate17 = require('./views/users/edit/user.html');\n\nimport _ from 'lodash-es';\n\nimport featureFlagModule from '@/react/portainer/feature-flags';\n\nimport './rbac';\n\nimport componentsModule from './components';\nimport settingsModule from './settings';\nimport userActivityModule from './user-activity';\nimport servicesModule from './services';\nimport { reactModule } from './react';\nimport { sidebarModule } from './react/views/sidebar';\nimport environmentsModule from './environments';\nimport { helpersModule } from './helpers';\nimport { AXIOS_UNAUTHENTICATED } from './services/axios';\n\nasync function initAuthentication(authManager, Authentication, $rootScope, $state) {\n authManager.checkAuthOnRefresh();\n\n function handleUnauthenticated(data, performReload) {\n if (!_.includes(data.config.url, '/v2/') && !_.includes(data.config.url, '/api/v4/') && isTransitionRequiresAuthentication($state.transition)) {\n $state.go('portainer.logout', { error: 'Your session has expired' });\n if (performReload) {\n window.location.reload();\n }\n }\n }\n\n // The unauthenticated event is broadcasted by the jwtInterceptor when\n // hitting a 401. We're using this instead of the usual combination of\n // authManager.redirectWhenUnauthenticated() + unauthenticatedRedirector\n // to have more controls on which URL should trigger the unauthenticated state.\n $rootScope.$on('unauthenticated', function (event, data) {\n handleUnauthenticated(data, true);\n });\n\n // the AXIOS_UNAUTHENTICATED event is emitted by axios when a request returns with a 401 code\n // the event contains the entire AxiosError in detail.err\n window.addEventListener(AXIOS_UNAUTHENTICATED, (event) => {\n const data = event.detail.err;\n handleUnauthenticated(data);\n });\n\n return await Authentication.init();\n}\n\nangular\n .module('portainer.app', [\n 'portainer.oauth',\n 'portainer.rbac',\n componentsModule,\n settingsModule,\n featureFlagModule,\n userActivityModule,\n 'portainer.shared.datatable',\n servicesModule,\n reactModule,\n sidebarModule,\n environmentsModule,\n helpersModule,\n ])\n .config([\n '$stateRegistryProvider',\n function ($stateRegistryProvider) {\n var root = {\n name: 'root',\n abstract: true,\n onEnter: /* @ngInject */ function onEnter($async, StateManager, Authentication, Notifications, authManager, $rootScope, $state) {\n return $async(async () => {\n const appState = StateManager.getState();\n if (!appState.loading) {\n return;\n }\n try {\n const loggedIn = await initAuthentication(authManager, Authentication, $rootScope, $state);\n await StateManager.initialize();\n if (!loggedIn && isTransitionRequiresAuthentication($state.transition)) {\n $state.go('portainer.logout');\n return Promise.reject('Unauthenticated');\n }\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to retrieve application settings');\n throw err;\n }\n });\n },\n views: {\n 'sidebar@': {\n component: 'sidebar',\n },\n },\n };\n\n var endpointRoot = {\n name: 'endpoint',\n url: '/:endpointId',\n parent: 'root',\n abstract: true,\n resolve: {\n endpoint: /* @ngInject */ function endpoint($async, $state, $transition$, EndpointProvider, EndpointService, Notifications) {\n return $async(async () => {\n try {\n const endpointId = +$transition$.params().endpointId;\n\n const endpoint = await EndpointService.endpoint(endpointId);\n if ((endpoint.Type === 4 || endpoint.Type === 7) && !endpoint.EdgeID) {\n $state.go('portainer.endpoints.endpoint', { id: endpoint.Id });\n return;\n }\n\n EndpointProvider.setCurrentEndpoint(endpoint);\n\n return endpoint;\n } catch (e) {\n Notifications.error('Failed loading environment', e);\n $state.go('portainer.home', {}, { reload: true });\n return;\n }\n });\n },\n },\n };\n\n var portainer = {\n name: 'portainer',\n parent: 'root',\n abstract: true,\n };\n\n var account = {\n name: 'portainer.account',\n url: '/account',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'AccountController',\n },\n },\n };\n\n const tokenCreation = {\n name: 'portainer.account.new-access-token',\n url: '/tokens/new',\n views: {\n 'content@': {\n component: 'createUserAccessToken',\n },\n },\n };\n\n var authentication = {\n name: 'portainer.auth',\n url: '/auth',\n params: {\n reload: false,\n },\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate2,\n controller: 'AuthenticationController',\n controllerAs: 'ctrl',\n },\n 'sidebar@': {},\n },\n };\n\n const logout = {\n name: 'portainer.logout',\n url: '/logout',\n params: {\n error: '',\n },\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate3,\n controller: 'LogoutController',\n controllerAs: 'ctrl',\n },\n 'sidebar@': {},\n },\n };\n\n var endpoints = {\n name: 'portainer.endpoints',\n url: '/endpoints',\n views: {\n 'content@': {\n component: 'environmentsListView',\n },\n },\n };\n\n var endpoint = {\n name: 'portainer.endpoints.endpoint',\n url: '/:id?redirectTo',\n params: {\n redirectTo: '',\n },\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate4,\n controller: 'EndpointController',\n },\n },\n };\n\n var deviceImport = {\n name: 'portainer.endpoints.importDevice',\n url: '/device',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate5,\n controller: 'ImportDeviceController',\n },\n },\n };\n\n const edgeAutoCreateScript = {\n name: 'portainer.endpoints.edgeAutoCreateScript',\n url: '/aeec',\n views: {\n 'content@': {\n component: 'edgeAutoCreateScriptView',\n },\n },\n };\n\n var addFDOProfile = {\n name: 'portainer.endpoints.profile',\n url: '/profile',\n views: {\n 'content@': {\n component: 'addProfileView',\n },\n },\n };\n\n var editFDOProfile = {\n name: 'portainer.endpoints.profile.edit',\n url: '/:id',\n views: {\n 'content@': {\n component: 'editProfileView',\n },\n },\n };\n\n var endpointAccess = {\n name: 'portainer.endpoints.endpoint.access',\n url: '/access',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate6,\n controller: 'EndpointAccessController',\n controllerAs: 'ctrl',\n },\n },\n };\n\n var endpointKVM = {\n name: 'portainer.endpoints.endpoint.kvm',\n url: '/kvm?deviceId&deviceName',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate7,\n controller: 'EndpointKVMController',\n },\n },\n };\n\n var groups = {\n name: 'portainer.groups',\n url: '/groups',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate8,\n controller: 'GroupsController',\n },\n },\n };\n\n var group = {\n name: 'portainer.groups.group',\n url: '/:id',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate9,\n controller: 'GroupController',\n },\n },\n };\n\n var groupCreation = {\n name: 'portainer.groups.new',\n url: '/new',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate10,\n controller: 'CreateGroupController',\n },\n },\n };\n\n var groupAccess = {\n name: 'portainer.groups.group.access',\n url: '/access',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate11,\n controller: 'GroupAccessController',\n },\n },\n };\n\n var home = {\n name: 'portainer.home',\n url: '/home?redirect&environmentId&environmentName&route',\n views: {\n 'content@': {\n component: 'homeView',\n },\n },\n };\n\n var init = {\n name: 'portainer.init',\n abstract: true,\n url: '/init',\n views: {\n 'sidebar@': {},\n },\n };\n\n var initAdmin = {\n name: 'portainer.init.admin',\n url: '/admin',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate12,\n controller: 'InitAdminController',\n },\n },\n };\n\n var registries = {\n name: 'portainer.registries',\n url: '/registries',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate13,\n controller: 'RegistriesController',\n },\n },\n };\n\n var registry = {\n name: 'portainer.registries.registry',\n url: '/:id',\n views: {\n 'content@': {\n component: 'editRegistry',\n },\n },\n };\n\n const registryCreation = {\n name: 'portainer.registries.new',\n url: '/new',\n views: {\n 'content@': {\n component: 'createRegistry',\n },\n },\n };\n\n var settings = {\n name: 'portainer.settings',\n url: '/settings',\n views: {\n 'content@': {\n component: 'settingsView',\n },\n },\n };\n\n var settingsAuthentication = {\n name: 'portainer.settings.authentication',\n url: '/auth',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate14,\n controller: 'SettingsAuthenticationController',\n },\n },\n };\n\n var settingsEdgeCompute = {\n name: 'portainer.settings.edgeCompute',\n url: '/edge',\n views: {\n 'content@': {\n component: 'settingsEdgeComputeView',\n },\n },\n };\n\n var tags = {\n name: 'portainer.tags',\n url: '/tags',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate15,\n controller: 'TagsController',\n },\n },\n };\n\n var users = {\n name: 'portainer.users',\n url: '/users',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate16,\n controller: 'UsersController',\n },\n },\n };\n\n var user = {\n name: 'portainer.users.user',\n url: '/:id',\n views: {\n 'content@': {\n templateUrl: autoNgTemplateLoaderTemplate17,\n controller: 'UserController',\n },\n },\n };\n\n $stateRegistryProvider.register(root);\n $stateRegistryProvider.register(endpointRoot);\n $stateRegistryProvider.register(portainer);\n $stateRegistryProvider.register(account);\n $stateRegistryProvider.register(tokenCreation);\n $stateRegistryProvider.register(authentication);\n $stateRegistryProvider.register(logout);\n $stateRegistryProvider.register(endpoints);\n $stateRegistryProvider.register(endpoint);\n $stateRegistryProvider.register(endpointAccess);\n $stateRegistryProvider.register(endpointKVM);\n $stateRegistryProvider.register(edgeAutoCreateScript);\n $stateRegistryProvider.register(deviceImport);\n $stateRegistryProvider.register(addFDOProfile);\n $stateRegistryProvider.register(editFDOProfile);\n $stateRegistryProvider.register(groups);\n $stateRegistryProvider.register(group);\n $stateRegistryProvider.register(groupAccess);\n $stateRegistryProvider.register(groupCreation);\n $stateRegistryProvider.register(home);\n $stateRegistryProvider.register(init);\n $stateRegistryProvider.register(initAdmin);\n $stateRegistryProvider.register(registries);\n $stateRegistryProvider.register(registry);\n $stateRegistryProvider.register(registryCreation);\n $stateRegistryProvider.register(settings);\n $stateRegistryProvider.register(settingsAuthentication);\n $stateRegistryProvider.register(settingsEdgeCompute);\n $stateRegistryProvider.register(tags);\n $stateRegistryProvider.register(users);\n $stateRegistryProvider.register(user);\n },\n ]);\n\nfunction isTransitionRequiresAuthentication(transition) {\n const UNAUTHENTICATED_ROUTES = ['portainer.logout', 'portainer.auth'];\n if (!transition) {\n return true;\n }\n const nextTransition = transition && transition.to();\n const nextTransitionName = nextTransition ? nextTransition.name : '';\n return !UNAUTHENTICATED_ROUTES.some((route) => nextTransitionName.startsWith(route));\n}\n","const autoNgTemplateLoaderTemplate1 = require('./InformationPanelAngular.html');\n\nexport const InformationPanelAngular = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n titleText: '@',\n dismissAction: '&?',\n },\n transclude: true,\n};\n","const autoNgTemplateLoaderTemplate1 = require('./accessDatatable.html');\n\nangular.module('portainer.app').component('accessDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'AccessDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n roles: '<',\n tableKey: '@',\n orderBy: '@',\n removeAction: '<',\n updateAction: '<',\n reverseOrder: '<',\n inheritFrom: '<',\n },\n});\n","angular.module('portainer.app').controller('AccessDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.disableRemove = function (item) {\n return item.Inherited && this.inheritFrom;\n };\n\n this.allowSelection = function (item) {\n return !this.disableRemove(item);\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./accessTable.html');\n\nangular.module('portainer.app').component('accessTable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: function () {\n this.state = {\n orderBy: 'Name',\n reverseOrder: false,\n paginatedItemLimit: '10',\n textFilter: '',\n };\n\n this.changeOrderBy = function (orderField) {\n this.state.reverseOrder = this.state.orderBy === orderField ? !this.state.reverseOrder : false;\n this.state.orderBy = orderField;\n };\n },\n bindings: {\n dataset: '<',\n entryClick: '<',\n emptyDatasetMessage: '@',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./porAccessControlForm.html');\n\nangular.module('portainer.app').component('porAccessControlForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'porAccessControlFormController',\n bindings: {\n // This object will be populated with the form data.\n // Model reference in porAccessControlFromModel.js\n formData: '=',\n // Optional. An existing resource control object that will be used to set\n // the default values of the component.\n resourceControl: '<',\n hideTitle: '<',\n },\n});\n","import _ from 'lodash-es';\nimport { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types';\n\nangular.module('portainer.app').controller('porAccessControlFormController', [\n '$q',\n '$scope',\n '$state',\n 'UserService',\n 'TeamService',\n 'Notifications',\n 'Authentication',\n 'ResourceControlService',\n function ($q, $scope, $state, UserService, TeamService, Notifications, Authentication, ResourceControlService) {\n var ctrl = this;\n\n ctrl.RCO = RCO;\n\n this.onAuthorizedTeamsChange = onAuthorizedTeamsChange.bind(this);\n this.onAuthorizedUsersChange = onAuthorizedUsersChange.bind(this);\n\n ctrl.availableTeams = [];\n ctrl.availableUsers = [];\n\n ctrl.onChangeEnablement = onChangeEnablement;\n ctrl.onChangeOwnership = onChangeOwnership;\n\n function onChangeOwnership(ownership) {\n onChange({ Ownership: ownership });\n }\n\n function setOwnership(resourceControl, isAdmin) {\n if (isAdmin && resourceControl.Ownership === RCO.PRIVATE) {\n ctrl.formData.Ownership = RCO.RESTRICTED;\n } else {\n ctrl.formData.Ownership = resourceControl.Ownership;\n }\n\n if (ctrl.formData.Ownership === RCO.PUBLIC) {\n ctrl.formData.AccessControlEnabled = false;\n }\n }\n\n function setAuthorizedUsersAndTeams(authorizedUsers, authorizedTeams) {\n ctrl.formData.AuthorizedTeams = authorizedTeams;\n ctrl.formData.AuthorizedUsers = authorizedUsers;\n }\n\n function onAuthorizedTeamsChange(AuthorizedTeams) {\n onChange({ AuthorizedTeams });\n }\n\n function onAuthorizedUsersChange(AuthorizedUsers) {\n onChange({ AuthorizedUsers });\n }\n\n function onChange(formData) {\n $scope.$evalAsync(() => {\n ctrl.formData = {\n ...ctrl.formData,\n ...formData,\n };\n });\n }\n\n this.$onInit = $onInit;\n function $onInit() {\n var isAdmin = Authentication.isAdmin();\n ctrl.isAdmin = isAdmin;\n\n if (isAdmin) {\n ctrl.formData.Ownership = ctrl.RCO.ADMINISTRATORS;\n }\n\n const environmentId = $state.params.endpointId;\n $q.all({\n availableTeams: TeamService.teams(environmentId),\n availableUsers: isAdmin ? UserService.users(false, environmentId) : [],\n })\n .then(function success(data) {\n ctrl.availableUsers = _.orderBy(data.availableUsers, 'Username', 'asc');\n ctrl.availableTeams = _.orderBy(data.availableTeams, 'Name', 'asc');\n if (!isAdmin && ctrl.availableTeams.length === 1) {\n ctrl.formData.AuthorizedTeams = ctrl.availableTeams;\n }\n return $q.when(ctrl.resourceControl && ResourceControlService.retrieveOwnershipDetails(ctrl.resourceControl));\n })\n .then(function success(data) {\n if (data) {\n const authorizedTeams = !isAdmin && ctrl.availableTeams.length === 1 ? ctrl.availableTeams : data.authorizedTeams;\n const authorizedUsers = !isAdmin && authorizedTeams.length === 1 ? [] : data.authorizedUsers;\n setOwnership(ctrl.resourceControl, isAdmin);\n setAuthorizedUsersAndTeams(authorizedUsers, authorizedTeams);\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve access control information');\n });\n }\n\n function onChangeEnablement(enable) {\n const isAdmin = Authentication.isAdmin();\n onChange({ AccessControlEnabled: enable, Ownership: isAdmin ? RCO.ADMINISTRATORS : RCO.PRIVATE });\n }\n },\n]);\n","import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types';\n\n/**\n * @deprecated use only for angularjs components. For react components use ./model.ts\n */\nexport function AccessControlFormData() {\n this.AccessControlEnabled = true;\n this.Ownership = RCO.PRIVATE;\n this.AuthorizedUsers = [];\n this.AuthorizedTeams = [];\n}\n","import angular from 'angular';\n\nimport { porAccessManagement } from './por-access-management';\n\nexport default angular.module('portainer.app.component.access-management', []).component('porAccessManagement', porAccessManagement).name;\n","const autoNgTemplateLoaderTemplate1 = require('./porAccessManagement.html');\n\nexport const porAccessManagement = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'porAccessManagementController',\n controllerAs: 'ctrl',\n bindings: {\n accessControlledEntity: '<',\n inheritFrom: '<',\n entityType: '@',\n updateAccess: '<',\n actionInProgress: '<',\n filterUsers: '<',\n limitedFeature: '<',\n },\n};\n","import _ from 'lodash-es';\nimport angular from 'angular';\n\nimport { RoleTypes } from '@/portainer/rbac/models/role';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nclass PorAccessManagementController {\n /* @ngInject */\n constructor($scope, $state, Notifications, AccessService, RoleService) {\n Object.assign(this, { $scope, $state, Notifications, AccessService, RoleService });\n\n this.limitedToBE = false;\n this.$state = $state;\n\n this.unauthorizeAccess = this.unauthorizeAccess.bind(this);\n this.updateAction = this.updateAction.bind(this);\n this.onChangeUsersAndTeams = this.onChangeUsersAndTeams.bind(this);\n }\n\n onChangeUsersAndTeams(value) {\n this.$scope.$evalAsync(() => {\n this.formValues.multiselectOutput = value;\n });\n }\n\n updateAction() {\n const entity = this.accessControlledEntity;\n const oldUserAccessPolicies = entity.UserAccessPolicies;\n const oldTeamAccessPolicies = entity.TeamAccessPolicies;\n const updatedUserAccesses = _.filter(this.authorizedUsersAndTeams, { Updated: true, Type: 'user', Inherited: false });\n const updatedTeamAccesses = _.filter(this.authorizedUsersAndTeams, { Updated: true, Type: 'team', Inherited: false });\n\n const accessPolicies = this.AccessService.generateAccessPolicies(oldUserAccessPolicies, oldTeamAccessPolicies, updatedUserAccesses, updatedTeamAccesses);\n this.accessControlledEntity.UserAccessPolicies = accessPolicies.userAccessPolicies;\n this.accessControlledEntity.TeamAccessPolicies = accessPolicies.teamAccessPolicies;\n this.updateAccess();\n }\n\n authorizeAccess() {\n const entity = this.accessControlledEntity;\n const oldUserAccessPolicies = entity.UserAccessPolicies;\n const oldTeamAccessPolicies = entity.TeamAccessPolicies;\n const selectedRoleId = this.formValues.selectedRole.Id;\n const selectedUserAccesses = _.filter(this.formValues.multiselectOutput, (access) => access.Type === 'user');\n const selectedTeamAccesses = _.filter(this.formValues.multiselectOutput, (access) => access.Type === 'team');\n\n const accessPolicies = this.AccessService.generateAccessPolicies(oldUserAccessPolicies, oldTeamAccessPolicies, selectedUserAccesses, selectedTeamAccesses, selectedRoleId);\n this.accessControlledEntity.UserAccessPolicies = accessPolicies.userAccessPolicies;\n this.accessControlledEntity.TeamAccessPolicies = accessPolicies.teamAccessPolicies;\n this.updateAccess();\n }\n\n unauthorizeAccess(selectedAccesses) {\n const entity = this.accessControlledEntity;\n const userAccessPolicies = entity.UserAccessPolicies;\n const teamAccessPolicies = entity.TeamAccessPolicies;\n const selectedUserAccesses = _.filter(selectedAccesses, (access) => access.Type === 'user');\n const selectedTeamAccesses = _.filter(selectedAccesses, (access) => access.Type === 'team');\n\n _.forEach(selectedUserAccesses, (access) => delete userAccessPolicies[access.Id]);\n _.forEach(selectedTeamAccesses, (access) => delete teamAccessPolicies[access.Id]);\n this.updateAccess();\n }\n\n isRoleLimitedToBE(role) {\n if (!this.limitedToBE) {\n return false;\n }\n\n return role.ID !== RoleTypes.STANDARD;\n }\n\n roleLabel(role) {\n if (!this.limitedToBE) {\n return role.Name;\n }\n\n if (this.isRoleLimitedToBE(role)) {\n return `${role.Name} (Business Feature)`;\n }\n\n return `${role.Name} (Default)`;\n }\n\n async $onInit() {\n try {\n if (this.limitedFeature) {\n this.limitedToBE = isLimitedToBE(this.limitedFeature);\n }\n\n const entity = this.accessControlledEntity;\n const parent = this.inheritFrom;\n\n const roles = await this.RoleService.roles();\n this.roles = _.orderBy(roles, 'Priority', 'asc');\n this.formValues = {\n selectedRole: this.roles.find((role) => !this.isRoleLimitedToBE(role)),\n };\n\n const data = await this.AccessService.accesses(entity, parent, this.roles);\n\n if (this.filterUsers) {\n data.availableUsersAndTeams = this.filterUsers(data.availableUsersAndTeams);\n }\n\n this.availableUsersAndTeams = _.orderBy(data.availableUsersAndTeams, 'Name', 'asc');\n this.authorizedUsersAndTeams = data.authorizedUsersAndTeams;\n } catch (err) {\n this.$state.go('portainer.home');\n this.availableUsersAndTeams = [];\n this.authorizedUsersAndTeams = [];\n this.Notifications.error('Failure', err, 'Unable to retrieve accesses');\n }\n }\n}\n\nexport default PorAccessManagementController;\nangular.module('portainer.app').controller('porAccessManagementController', PorAccessManagementController);\n","angular.module('portainer.app').directive('autoFocus', [\n '$timeout',\n function porAutoFocus($timeout) {\n var directive = {\n restrict: 'A',\n link: function (scope, element) {\n $timeout(function () {\n element[0].focus();\n });\n },\n };\n\n return directive;\n },\n]);\n","angular.module('portainer.app').directive('buttonSpinner', function buttonSpinner() {\n var directive = {\n restrict: 'A',\n scope: {\n spinning: '=buttonSpinner',\n },\n transclude: true,\n template: '<ng-transclude></ng-transclude><span ng-show=\"spinning\"><pr-icon icon=\"\\'loader-2\\'\" class-name=\"\\'animate-spin-slow ml-0.5\\'\"></pr-icon> </span>',\n };\n\n return directive;\n});\n","/* @ngInject */\nexport default function CodeEditorController($scope) {\n this.handleChange = (value) => {\n $scope.$evalAsync(() => {\n this.onChange(value);\n });\n };\n}\n","const autoNgTemplateLoaderTemplate1 = require('./code-editor.html');\n\nimport controller from './code-editor.controller';\n\nangular.module('portainer.app').component('codeEditor', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n identifier: '@',\n placeholder: '@',\n yml: '<',\n dockerFile: '<',\n shell: '<',\n readOnly: '<',\n onChange: '<',\n value: '<',\n height: '@',\n },\n});\n","angular.module('portainer.app').controller('CodeEditorController', function CodeEditorController($document, CodeMirrorService, $scope) {\n var ctrl = this;\n\n this.$onChanges = function $onChanges({ value, readOnly }) {\n if (!ctrl.editor) {\n return;\n }\n\n if (readOnly && typeof readOnly.currentValue === 'boolean' && ctrl.editor.getValue('readOnly') !== ctrl.readOnly) {\n ctrl.editor.setOption('readOnly', ctrl.readOnly);\n }\n if (value && value.currentValue && ctrl.editor.getValue() !== value.currentValue) {\n ctrl.editor.setValue(value.currentValue);\n }\n\n if (ctrl.editor) {\n ctrl.editor.setOption('readOnly', ctrl.readOnly);\n }\n };\n\n this.$onInit = function () {\n $document.ready(function () {\n var editorElement = $document[0].getElementById(ctrl.identifier);\n ctrl.editor = CodeMirrorService.applyCodeMirrorOnElement(editorElement, ctrl.yml, ctrl.readOnly);\n if (ctrl.onChange) {\n ctrl.editor.on('change', (...args) => $scope.$evalAsync(() => ctrl.onChange(...args)));\n }\n if (ctrl.value) {\n ctrl.editor.setValue(ctrl.value);\n }\n });\n };\n});\n","export default class CopyButtonController {\n /* @ngInject */\n constructor(clipboard) {\n this.clipboard = clipboard;\n this.state = { isFading: false };\n }\n\n copyValueText() {\n this.clipboard.copyText(this.value);\n this.state.isFading = true;\n setTimeout(() => (this.state.isFading = false), 1000);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./copy-button.html');\n\nimport angular from 'angular';\nimport controller from './copy-button.controller';\nimport './copy-button.css';\n\nangular.module('portainer.app').component('copyButton', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n value: '<',\n },\n});\n","class CustomTemplateCommonFieldsController {\n /* @ngInject */\n constructor() {\n this.platformTypes = [\n { label: 'Linux', value: 1 },\n { label: 'Windows', value: 2 },\n ];\n\n this.templateTypes = [\n { label: 'Swarm', value: 1 },\n { label: 'Standalone', value: 2 },\n ];\n }\n}\n\nexport default CustomTemplateCommonFieldsController;\n","const autoNgTemplateLoaderTemplate1 = require('./customTemplateCommonFields.html');\n\nimport CustomTemplateCommonFieldsController from './customTemplateCommonFieldsController.js';\n\nangular.module('portainer.app').component('customTemplateCommonFields', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: CustomTemplateCommonFieldsController,\n bindings: {\n formValues: '=',\n showPlatformField: '<',\n showTypeField: '<',\n nameRegex: '<',\n nameRegexError: '<',\n },\n});\n","class CustomTemplateSelectorController {\n /* @ngInject */\n constructor($async, CustomTemplateService, Notifications) {\n Object.assign(this, { $async, CustomTemplateService, Notifications });\n\n this.selectedTemplate = null;\n this.templates = null;\n }\n\n async handleChangeTemplate(templateId) {\n this.selectedTemplate = this.templates.find((t) => t.Id === templateId);\n this.onChange(templateId, this.selectedTemplate);\n }\n\n $onChanges({ value }) {\n if (value && value.currentValue && this.templates) {\n this.handleChangeTemplate(value.currentValue);\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n try {\n const templates = await this.CustomTemplateService.customTemplates(this.stackType);\n this.templates = templates.map((template) => ({ ...template, label: `${template.Title} - ${template.Description}` }));\n if (this.value) {\n this.handleChangeTemplate(this.value);\n }\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve Custom Templates');\n }\n });\n }\n}\n\nexport default CustomTemplateSelectorController;\n","const autoNgTemplateLoaderTemplate1 = require('./custom-template-selector.html');\n\nimport angular from 'angular';\nimport controller from './custom-template-selector.controller.js';\n\nexport const customTemplateSelector = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n newTemplatePath: '@',\n stackType: '<',\n\n value: '<',\n onChange: '<',\n },\n};\n\nangular.module('portainer.app').component('customTemplateSelector', customTemplateSelector);\n","const CUSTOM_TEMPLATES_TYPES = {\n SWARM: 1,\n STANDALONE: 2,\n KUBERNETES: 3,\n};\n\nangular.module('portainer.docker').controller('CustomTemplatesListController', function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.typeLabel = typeLabel;\n this.$onInit = $onInit;\n\n function typeLabel(type) {\n switch (type) {\n case CUSTOM_TEMPLATES_TYPES.SWARM:\n return 'swarm';\n case CUSTOM_TEMPLATES_TYPES.KUBERNETES:\n return 'manifest';\n case CUSTOM_TEMPLATES_TYPES.STANDALONE:\n default:\n return 'standalone';\n }\n }\n\n function $onInit() {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n }\n});\n","const autoNgTemplateLoaderTemplate1 = require('./customTemplatesList.html');\n\nimport angular from 'angular';\n\nangular.module('portainer.app').component('customTemplatesList', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'CustomTemplatesListController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n templates: '<',\n tableKey: '@',\n onSelectClick: '<',\n showSwarmStacks: '<',\n onDeleteClick: '<',\n isEditAllowed: '<',\n createPath: '@',\n editPath: '@',\n },\n});\n","export default class AccessTokensDatatableController {\n /* @ngInject*/\n constructor($scope, $state, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.onClickAdd = () => {\n if (this.uiCanExit()) {\n $state.go('portainer.account.new-access-token');\n }\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n const storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n const textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n const storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n this.onSettingsRepeaterChange();\n };\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./access-tokens-datatable.html');\n\nimport angular from 'angular';\nimport controller from './access-tokens-datatable.controller';\n\nangular.module('portainer.app').component('accessTokensDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n removeAction: '<',\n uiCanExit: '<',\n },\n});\n","export default class DatatableColumnsVisibilityController {\n constructor() {\n this.state = {\n isOpen: false,\n };\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./datatable-columns-visibility.html');\n\nimport angular from 'angular';\n\nimport controller from './datatable-columns-visibility.controller';\n\nangular.module('portainer.app').component('datatableColumnsVisibility', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n columns: '<',\n onChange: '<',\n },\n});\n","export default class DatatableFilterController {\n isEnabled() {\n return 0 < this.state.length && this.state.length < this.labels.length;\n }\n\n onChangeItem(filterValue) {\n if (this.isChecked(filterValue)) {\n return this.onChange(\n this.filterKey,\n this.state.filter((v) => v !== filterValue)\n );\n }\n return this.onChange(this.filterKey, [...this.state, filterValue]);\n }\n\n isChecked(filterValue) {\n return this.state.includes(filterValue);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./datatable-filter.html');\n\nimport controller from './datatable-filter.controller';\n\nexport const datatableFilter = {\n bindings: {\n labels: '<', // [{label, value}]\n state: '<', // [filterValue]\n filterKey: '@',\n onChange: '<',\n },\n controller,\n templateUrl: autoNgTemplateLoaderTemplate1,\n transclude: true,\n};\n","import _ from 'lodash-es';\nimport './datatable.css';\nimport { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nfunction isBetween(value, a, b) {\n return (value >= a && value <= b) || (value >= b && value <= a);\n}\n\n// TODO: review - refactor to use a class that can be extended\nangular.module('portainer.app').controller('GenericDatatableController', [\n '$interval',\n 'PaginationService',\n 'DatatableService',\n 'PAGINATION_MAX_ITEMS',\n function ($interval, PaginationService, DatatableService, PAGINATION_MAX_ITEMS) {\n this.RCO = RCO;\n this.isBE = isBE;\n\n this.state = {\n selectAll: false,\n orderBy: this.orderBy,\n paginatedItemLimit: PAGINATION_MAX_ITEMS,\n displayTextFilter: false,\n get selectedItemCount() {\n return this.selectedItems.length || 0;\n },\n selectedItems: [],\n };\n\n this.settings = {\n open: false,\n repeater: {\n autoRefresh: false,\n refreshRate: '30',\n },\n };\n\n this.resetSelectionState = function () {\n this.state.selectAll = false;\n this.state.selectedItems = [];\n _.map(this.state.filteredDataSet, (item) => (item.Checked = false));\n };\n\n this.onTextFilterChangeGeneric = onTextFilterChangeGeneric;\n\n this.onTextFilterChange = function onTextFilterChange() {\n return this.onTextFilterChangeGeneric();\n };\n\n function onTextFilterChangeGeneric() {\n DatatableService.setDataTableTextFilters(this.tableKey, this.state.textFilter);\n }\n\n this.changeOrderBy = function changeOrderBy(orderField) {\n this.state.reverseOrder = this.state.orderBy === orderField ? !this.state.reverseOrder : false;\n this.state.orderBy = orderField;\n DatatableService.setDataTableOrder(this.tableKey, orderField, this.state.reverseOrder);\n };\n\n this.selectItem = function (item, event) {\n // Handle range select using shift\n if (event && event.originalEvent.shiftKey && this.state.firstClickedItem) {\n const firstItemIndex = this.state.filteredDataSet.indexOf(this.state.firstClickedItem);\n const lastItemIndex = this.state.filteredDataSet.indexOf(item);\n const itemsInRange = _.filter(this.state.filteredDataSet, (item, index) => {\n return isBetween(index, firstItemIndex, lastItemIndex);\n });\n const value = this.state.firstClickedItem.Checked;\n\n _.forEach(itemsInRange, (i) => {\n if (!this.allowSelection(i)) {\n return;\n }\n i.Checked = value;\n });\n this.state.firstClickedItem = item;\n } else if (event) {\n item.Checked = !item.Checked;\n this.state.firstClickedItem = item;\n }\n this.state.selectedItems = this.uniq().filter((i) => i.Checked);\n if (event && this.state.selectAll && this.state.selectedItems.length !== this.state.filteredDataSet.length) {\n this.state.selectAll = false;\n }\n this.onSelectionChanged();\n };\n\n this.selectAll = function () {\n this.state.firstClickedItem = null;\n for (var i = 0; i < this.state.filteredDataSet.length; i++) {\n var item = this.state.filteredDataSet[i];\n if (this.allowSelection(item) && item.Checked !== this.state.selectAll) {\n item.Checked = this.state.selectAll;\n this.selectItem(item);\n }\n }\n this.onSelectionChanged();\n };\n\n /**\n * Override this method to change the uniqness filter when selecting items\n */\n this.uniq = function () {\n return _.uniq(_.concat(this.state.filteredDataSet, this.state.selectedItems));\n };\n\n /**\n * Override this method to allow/deny selection\n */\n this.allowSelection = function (/*item*/) {\n return true;\n };\n\n /**\n * Override this method to prepare data table\n */\n this.prepareTableFromDataset = function () {\n return;\n };\n\n /**\n * Override this method to execute code after selection changed on datatable\n */\n this.onSelectionChanged = function () {\n return;\n };\n\n this.changePaginationLimit = function () {\n PaginationService.setPaginationLimit(this.tableKey, this.state.paginatedItemLimit);\n };\n\n this.setDefaults = function () {\n this.showTextFilter = this.showTextFilter ? this.showTextFilter : false;\n this.state.reverseOrder = this.reverseOrder ? this.reverseOrder : false;\n this.state.paginatedItemLimit = PaginationService.getPaginationLimit(this.tableKey);\n };\n\n /**\n * Duplicate this function when extending GenericDatatableController\n * Extending-controller's bindings are not accessible there\n * For more details see the following comments\n * https://github.com/portainer/portainer/pull/2877#issuecomment-503333425\n * https://github.com/portainer/portainer/pull/2877#issuecomment-503537249\n */\n this.$onInit = function $onInit() {\n this.$onInitGeneric();\n };\n\n this.$onInitGeneric = function $onInitGeneric() {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n\n var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);\n if (storedColumnVisibility !== null) {\n this.columnVisibility = storedColumnVisibility;\n }\n };\n\n /**\n * REPEATER SECTION\n */\n this.repeater = undefined;\n\n this.$onDestroy = function () {\n this.stopRepeater();\n };\n\n this.stopRepeater = function () {\n if (angular.isDefined(this.repeater)) {\n $interval.cancel(this.repeater);\n this.repeater = undefined;\n }\n };\n\n this.startRepeater = function () {\n this.repeater = $interval(async () => {\n await this.refreshCallback();\n this.onDataRefresh();\n }, this.settings.repeater.refreshRate * 1000);\n };\n\n this.onSettingsRepeaterChange = function () {\n this.stopRepeater();\n if (angular.isDefined(this.refreshCallback) && this.settings.repeater.autoRefresh) {\n this.startRepeater();\n $('#refreshRateChange').show();\n $('#refreshRateChange').fadeOut(1500);\n }\n DatatableService.setDataTableSettings(this.tableKey, this.settings);\n };\n\n /**\n * Override this method to execute code after calling the refresh callback\n */\n this.onDataRefresh = function () {\n return;\n };\n\n /**\n * !REPEATER SECTION\n */\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./groupsDatatable.html');\n\nangular.module('portainer.app').component('groupsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n },\n});\n","import angular from 'angular';\nimport 'angular-utils-pagination';\n\nimport { datatableTitlebar } from './titlebar';\nimport { datatablePagination } from './pagination';\nimport { datatableFilter } from './filter';\n\nexport default angular\n .module('portainer.shared.datatable', ['angularUtils.directives.dirPagination'])\n .component('datatableTitlebar', datatableTitlebar)\n .component('datatablePagination', datatablePagination)\n .component('datatableFilter', datatableFilter).name;\n","const autoNgTemplateLoaderTemplate1 = require('./pagination.html');\n\nexport const datatablePagination = {\n bindings: {\n onChangeLimit: '<',\n limit: '<',\n enableNoLimit: '<',\n onChangePage: '<',\n },\n templateUrl: autoNgTemplateLoaderTemplate1,\n};\n","const autoNgTemplateLoaderTemplate1 = require('./registriesDatatable.html');\n\nangular.module('portainer.app').component('registriesDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'RegistriesDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n canBrowse: '<',\n endpointType: '<',\n canManageAccess: '<',\n },\n});\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { PortainerEndpointTypes } from 'Portainer/models/endpoint/models';\n\nangular.module('portainer.docker').controller('RegistriesDatatableController', RegistriesDatatableController);\n\n/* @ngInject */\nfunction RegistriesDatatableController($scope, $controller, $state, Authentication, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.allowSelection = function (item) {\n return item.Id;\n };\n\n this.enableGoToLink = (item) => {\n return this.isAdmin && item.Id && !this.endpointType;\n };\n\n this.goToRegistry = function (item) {\n if (\n this.endpointType === PortainerEndpointTypes.KubernetesLocalEnvironment ||\n this.endpointType === PortainerEndpointTypes.AgentOnKubernetesEnvironment ||\n this.endpointType === PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment\n ) {\n $state.go('kubernetes.registries.registry', { id: item.Id });\n } else if (\n this.endpointType === PortainerEndpointTypes.DockerEnvironment ||\n this.endpointType === PortainerEndpointTypes.AgentOnDockerEnvironment ||\n this.endpointType === PortainerEndpointTypes.EdgeAgentOnDockerEnvironment\n ) {\n $state.go('docker.host.registries.registry', { id: item.Id });\n } else {\n $state.go('portainer.registries.registry', { id: item.Id });\n }\n };\n\n this.redirectToManageAccess = function (item) {\n if (\n this.endpointType === PortainerEndpointTypes.KubernetesLocalEnvironment ||\n this.endpointType === PortainerEndpointTypes.AgentOnKubernetesEnvironment ||\n this.endpointType === PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment\n ) {\n $state.go('kubernetes.registries.access', { id: item.Id });\n } else {\n if (window.location.hash.endsWith('/docker/swarm/registries')) {\n $state.go('docker.swarm.registries.access', { id: item.Id });\n } else {\n $state.go('docker.host.registries.access', { id: item.Id });\n }\n }\n };\n\n this.$onInit = function () {\n this.limitedFeature = FeatureId.REGISTRY_MANAGEMENT;\n this.isAdmin = Authentication.isAdmin();\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n\n var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);\n if (storedColumnVisibility !== null) {\n this.columnVisibility = storedColumnVisibility;\n }\n };\n}\n","const autoNgTemplateLoaderTemplate1 = require('./stacksDatatable.html');\n\nangular.module('portainer.app').component('stacksDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'StacksDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n refreshCallback: '<',\n createEnabled: '<',\n },\n});\n","angular.module('portainer.app').controller('StacksDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n 'Authentication',\n function ($scope, $controller, DatatableService, Authentication) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.filters = {\n state: {\n open: false,\n enabled: false,\n showActiveStacks: true,\n showUnactiveStacks: true,\n },\n };\n\n this.columnVisibility = {\n state: {\n open: false,\n },\n columns: {\n updated: {\n label: 'Updated',\n display: false,\n },\n },\n };\n\n this.onColumnVisibilityChange = onColumnVisibilityChange.bind(this);\n function onColumnVisibilityChange(columns) {\n this.columnVisibility.columns = columns;\n DatatableService.setColumnVisibilitySettings(this.tableKey, this.columnVisibility);\n }\n\n /**\n * Do not allow external items\n */\n this.allowSelection = function (item) {\n if (item.External) {\n return false;\n }\n\n return !(item.External && !this.isAdmin);\n };\n\n this.applyFilters = applyFilters.bind(this);\n function applyFilters(stack) {\n const { showActiveStacks, showUnactiveStacks } = this.filters.state;\n if (stack.Orphaned) {\n return stack.OrphanedRunning || this.settings.allOrphanedStacks;\n } else {\n return (stack.Status === 1 && showActiveStacks) || (stack.Status === 2 && showUnactiveStacks) || stack.External || !stack.Status;\n }\n }\n\n this.onFilterChange = onFilterChange.bind(this);\n function onFilterChange() {\n const { showActiveStacks, showUnactiveStacks } = this.filters.state;\n this.filters.state.enabled = !showActiveStacks || !showUnactiveStacks;\n DatatableService.setDataTableFilters(this.tableKey, this.filters);\n }\n\n this.onSettingsAllOrphanedStacksChange = function () {\n DatatableService.setDataTableSettings(this.tableKey, this.settings);\n };\n\n this.$onInit = function () {\n this.isAdmin = Authentication.isAdmin();\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n this.settings.allOrphanedStacks = this.settings.allOrphanedStacks && this.isAdmin;\n }\n this.onSettingsRepeaterChange();\n\n var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);\n if (storedColumnVisibility !== null) {\n this.columnVisibility = storedColumnVisibility;\n }\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./strings-datatable.html');\n\nimport angular from 'angular';\n// import controller from './strings-datatable.controller.js';\n\nexport const stringsDatatable = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n emptyDatasetMessage: '@',\n\n columnHeader: '@',\n tableKey: '@',\n\n onRemove: '<',\n },\n};\n\nangular.module('portainer.app').component('stringsDatatable', stringsDatatable);\n","const autoNgTemplateLoaderTemplate1 = require('./tagsDatatable.html');\n\nangular.module('portainer.app').component('tagsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./datatable-titlebar.html');\n\nexport const datatableTitlebar = {\n bindings: {\n icon: '@',\n title: '@',\n feature: '@',\n },\n templateUrl: autoNgTemplateLoaderTemplate1,\n};\n","const autoNgTemplateLoaderTemplate1 = require('./usersDatatable.html');\n\nimport angular from 'angular';\nimport UsersDatatableController from './usersDatatableController';\n\nangular.module('portainer.app').component('usersDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: UsersDatatableController,\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n removeAction: '<',\n authenticationMethod: '<',\n isAdmin: '<',\n },\n});\n","export default class UsersDatatableController {\n /* @ngInject*/\n constructor($controller, $scope) {\n const allowSelection = this.allowSelection;\n angular.extend(this, $controller('GenericDatatableController', { $scope }));\n this.allowSelection = allowSelection.bind(this);\n }\n\n /**\n * Override this method to allow/deny selection\n */\n allowSelection(item) {\n return item.Id !== 1;\n }\n}\n","class DemoFeatureIndicatorController {\n /* @ngInject */\n constructor(StateManager) {\n Object.assign(this, { StateManager });\n\n this.isDemo = false;\n }\n\n $onInit() {\n const state = this.StateManager.getState();\n\n this.isDemo = state.application.demoEnvironment.enabled;\n }\n}\n\nexport default DemoFeatureIndicatorController;\n","const autoNgTemplateLoaderTemplate1 = require('./demo-feature-indicator.html');\n\nimport angular from 'angular';\nimport controller from './demo-feature-indicator.controller.js';\n\nexport const demoFeatureIndicator = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n content: '<',\n },\n};\n\nangular.module('portainer.app').component('demoFeatureIndicator', demoFeatureIndicator);\n","const autoNgTemplateLoaderTemplate1 = require('./porEndpointSecurity.html');\n\nangular.module('portainer.app').component('porEndpointSecurity', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'porEndpointSecurityController',\n bindings: {\n // This object will be populated with the form data.\n // Model reference in endpointSecurityModel.js\n formData: '=',\n // The component will use this object to initialize the default values\n // if present.\n endpoint: '<',\n },\n});\n","import { Shield } from 'lucide-react';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport const tlsOptions: ReadonlyArray<BoxSelectorOption<string>> = [\n {\n id: 'tls_client_ca',\n value: 'tls_client_ca',\n icon: Shield,\n iconType: 'badge',\n label: 'TLS with server and client verification',\n description: 'Use client certificates and server verification',\n },\n {\n id: 'tls_client_noca',\n value: 'tls_client_noca',\n icon: Shield,\n iconType: 'badge',\n label: 'TLS with client verification only',\n description: 'Use client certificates without server verification',\n },\n {\n id: 'tls_ca',\n value: 'tls_ca',\n icon: Shield,\n iconType: 'badge',\n label: 'TLS with server verification only',\n description: 'Only verify the server certificate',\n },\n {\n id: 'tls_only',\n value: 'tls_only',\n icon: Shield,\n iconType: 'badge',\n label: 'TLS only',\n description: 'No server/client verification',\n },\n] as const;\n","import { tlsOptions } from '@/react/portainer/environments/ItemView/tls-options';\n\nangular.module('portainer.app').controller('porEndpointSecurityController', [\n '$scope',\n function ($scope) {\n var ctrl = this;\n\n this.tlsOptions = tlsOptions;\n\n function onChange(values) {\n $scope.$evalAsync(() => {\n ctrl.formData = {\n ...ctrl.formData,\n ...values,\n };\n });\n }\n\n ctrl.onChangeTLSMode = onChangeTLSMode;\n function onChangeTLSMode(mode) {\n onChange({ TLSMode: mode });\n }\n\n ctrl.onToggleTLS = onToggleTLS;\n function onToggleTLS(newValue) {\n onChange({ TLS: newValue });\n }\n\n this.$onInit = $onInit;\n function $onInit() {\n if (ctrl.endpoint) {\n var endpoint = ctrl.endpoint;\n var TLS = endpoint.TLSConfig.TLS;\n ctrl.formData.TLS = TLS;\n var CACert = endpoint.TLSConfig.TLSCACert;\n ctrl.formData.TLSCACert = CACert;\n var cert = endpoint.TLSConfig.TLSCert;\n ctrl.formData.TLSCert = cert;\n var key = endpoint.TLSConfig.TLSKey;\n ctrl.formData.TLSKey = key;\n\n if (TLS) {\n if (CACert && cert && key) {\n ctrl.formData.TLSMode = 'tls_client_ca';\n } else if (cert && key) {\n ctrl.formData.TLSMode = 'tls_client_noca';\n } else if (CACert) {\n ctrl.formData.TLSMode = 'tls_ca';\n } else {\n ctrl.formData.TLSMode = 'tls_only';\n }\n }\n }\n }\n },\n]);\n","export function EndpointSecurityFormData() {\n this.TLS = false;\n this.TLSMode = 'tls_client_ca';\n this.TLSCACert = null;\n this.TLSCert = null;\n this.TLSKey = null;\n}\n","import angular from 'angular';\n// ng-focus-if pkg from: https://github.com/hiebj/ng-focus-if\nangular.module('portainer.app').directive('focusIf', function ($timeout) {\n return {\n restrict: 'A',\n link: function ($scope, $element, $attrs) {\n var dom = $element[0];\n if ($attrs.focusIf) {\n $scope.$watch($attrs.focusIf, focus);\n } else {\n focus(true);\n }\n function focus(condition) {\n if (condition) {\n $timeout(function () {\n dom.focus();\n }, $scope.$eval($attrs.focusDelay) || 0);\n }\n }\n },\n };\n});\n","const autoNgTemplateLoaderTemplate1 = require('./file-upload-form.html');\n\nexport const fileUploadForm = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n\n bindings: {\n file: '<',\n ngRequired: '<',\n onChange: '<',\n },\n\n transclude: {\n description: '?fileUploadDescription',\n },\n};\n","import angular from 'angular';\n\nimport { webEditorForm } from './web-editor-form';\nimport { fileUploadForm } from './file-upload-form';\n\nexport default angular.module('portainer.app.components.form', []).component('webEditorForm', webEditorForm).component('fileUploadForm', fileUploadForm).name;\n","const autoNgTemplateLoaderTemplate1 = require('./web-editor-form.html');\n\nimport controller from './web-editor-form.controller.js';\n\nexport const webEditorForm = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n\n bindings: {\n identifier: '@',\n placeholder: '@',\n yml: '<',\n value: '<',\n readOnly: '<',\n onChange: '<',\n hideTitle: '<',\n height: '@',\n },\n\n transclude: {\n description: '?editorDescription',\n },\n};\n","class WebEditorFormController {\n /* @ngInject */\n constructor(BROWSER_OS_PLATFORM) {\n this.BROWSER_OS_PLATFORM = BROWSER_OS_PLATFORM;\n }\n}\n\nexport default WebEditorFormController;\n","const autoNgTemplateLoaderTemplate1 = require('./groupForm.html');\n\nimport angular from 'angular';\nimport GroupFormController from './groupFormController';\n\nangular.module('portainer.app').component('groupForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: GroupFormController,\n bindings: {\n loaded: '<',\n model: '=',\n associatedEndpoints: '=',\n formAction: '<',\n formActionLabel: '@',\n actionInProgress: '<',\n\n onChangeEnvironments: '<',\n },\n});\n","import angular from 'angular';\n\nclass GroupFormController {\n /* @ngInject */\n constructor($async, $scope, GroupService, Notifications, Authentication) {\n this.$async = $async;\n this.$scope = $scope;\n this.GroupService = GroupService;\n this.Notifications = Notifications;\n this.Authentication = Authentication;\n\n this.state = {\n allowCreateTag: this.Authentication.isAdmin(),\n };\n\n this.unassociatedQuery = {\n groupIds: [1],\n };\n\n this.onChangeTags = this.onChangeTags.bind(this);\n }\n\n onChangeTags(value) {\n return this.$scope.$evalAsync(() => {\n this.model.TagIds = value;\n });\n }\n}\n\nangular.module('portainer.app').controller('GroupFormController', GroupFormController);\nexport default GroupFormController;\n","import { RepositoryMechanismTypes } from 'Kubernetes/models/deploy';\nimport { confirm } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { ModalType } from '@@/modals';\nimport { parseAutoUpdateResponse } from '@/react/portainer/gitops/AutoUpdateFieldset/utils';\nimport { baseStackWebhookUrl, createWebhookId } from '@/portainer/helpers/webhookHelper';\nimport { confirmEnableTLSVerify } from '@/react/portainer/gitops/utils';\n\nclass KubernetesRedeployAppGitFormController {\n /* @ngInject */\n constructor($async, $state, StackService, Notifications) {\n this.$async = $async;\n this.$state = $state;\n this.StackService = StackService;\n this.Notifications = Notifications;\n\n this.state = {\n saveGitSettingsInProgress: false,\n redeployInProgress: false,\n showConfig: false,\n isEdit: false,\n\n // isAuthEdit is used to preserve the editing state of the AuthFieldset component.\n // Within the stack editing page, users have the option to turn the AuthFieldset on or off\n // and save the stack setting. If the user enables the AuthFieldset, it implies that they\n // must input new Git authentication, rather than edit existing authentication. Thus,\n // a dedicated state tracker is required to differentiate between the editing state of\n // AuthFieldset component and the whole stack\n // When isAuthEdit is true, PAT field needs to be validated.\n isAuthEdit: false,\n hasUnsavedChanges: false,\n baseWebhookUrl: baseStackWebhookUrl(),\n webhookId: createWebhookId(),\n };\n\n this.formValues = {\n RefName: '',\n RepositoryAuthentication: false,\n RepositoryUsername: '',\n RepositoryPassword: '',\n // auto update\n AutoUpdate: parseAutoUpdateResponse(),\n };\n\n this.onChange = this.onChange.bind(this);\n this.onChangeRef = this.onChangeRef.bind(this);\n this.onChangeAutoUpdate = this.onChangeAutoUpdate.bind(this);\n this.onChangeGitAuth = this.onChangeGitAuth.bind(this);\n this.onChangeTLSSkipVerify = this.onChangeTLSSkipVerify.bind(this);\n }\n\n onChangeRef(value) {\n this.onChange({ RefName: value });\n }\n\n async onChange(values) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n\n this.state.hasUnsavedChanges = angular.toJson(this.savedFormValues) !== angular.toJson(this.formValues);\n });\n }\n\n onChangeGitAuth(values) {\n return this.$async(async () => {\n this.onChange(values);\n });\n }\n\n onChangeTLSSkipVerify(value) {\n return this.$async(async () => {\n if (this.stack.GitConfig.TLSSkipVerify && !value) {\n const confirmed = await confirmEnableTLSVerify();\n\n if (!confirmed) {\n return;\n }\n }\n this.onChange({ TLSSkipVerify: value });\n });\n }\n\n async onChangeAutoUpdate(values) {\n return this.$async(async () => {\n await this.onChange({\n AutoUpdate: {\n ...this.formValues.AutoUpdate,\n ...values,\n },\n });\n });\n }\n\n buildAnalyticsProperties() {\n const metadata = {\n 'automatic-updates': automaticUpdatesLabel(this.formValues.AutoUpdate.RepositoryAutomaticUpdates, this.formValues.AutoUpdate.RepositoryMechanism),\n };\n\n return { metadata };\n\n function automaticUpdatesLabel(repositoryAutomaticUpdates, repositoryMechanism) {\n switch (repositoryAutomaticUpdates && repositoryMechanism) {\n case RepositoryMechanismTypes.INTERVAL:\n return 'polling';\n case RepositoryMechanismTypes.WEBHOOK:\n return 'webhook';\n default:\n return 'off';\n }\n }\n }\n\n async pullAndRedeployApplication() {\n return this.$async(async () => {\n try {\n const confirmed = await confirm({\n title: 'Are you sure?',\n message: 'Any changes to this application will be overridden by the definition in git and may cause a service interruption. Do you wish to continue?',\n confirmButton: buildConfirmButton('Update', 'warning'),\n modalType: ModalType.Warn,\n });\n if (!confirmed) {\n return;\n }\n\n this.state.redeployInProgress = true;\n await this.StackService.updateKubeGit(this.stack.Id, this.stack.EndpointId, this.namespace, this.formValues);\n this.Notifications.success('Success', 'Pulled and redeployed stack successfully');\n await this.$state.reload();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed redeploying application');\n } finally {\n this.state.redeployInProgress = false;\n }\n });\n }\n\n async saveGitSettings() {\n return this.$async(async () => {\n try {\n this.state.saveGitSettingsInProgress = true;\n await this.StackService.updateKubeStack({ EndpointId: this.stack.EndpointId, Id: this.stack.Id }, { gitConfig: this.formValues, webhookId: this.state.webhookId });\n this.savedFormValues = angular.copy(this.formValues);\n this.state.hasUnsavedChanges = false;\n\n if (!(this.stack.GitConfig && this.stack.GitConfig.Authentication)) {\n // update the AuthFieldset setting\n this.state.isAuthEdit = false;\n this.formValues.RepositoryUsername = '';\n this.formValues.RepositoryPassword = '';\n }\n this.Notifications.success('Success', 'Save stack settings successfully');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to save application settings');\n } finally {\n this.state.saveGitSettingsInProgress = false;\n }\n });\n }\n\n isSubmitButtonDisabled() {\n return this.state.saveGitSettingsInProgress || this.state.redeployInProgress;\n }\n\n $onInit() {\n this.formValues.RefName = this.stack.GitConfig.ReferenceName;\n this.formValues.TLSSkipVerify = this.stack.GitConfig.TLSSkipVerify;\n\n this.formValues.AutoUpdate = parseAutoUpdateResponse(this.stack.AutoUpdate);\n\n if (this.stack.AutoUpdate && this.stack.AutoUpdate.Webhook) {\n this.state.webhookId = this.stack.AutoUpdate.Webhook;\n }\n\n if (this.stack.GitConfig && this.stack.GitConfig.Authentication) {\n this.formValues.RepositoryUsername = this.stack.GitConfig.Authentication.Username;\n this.formValues.RepositoryPassword = this.stack.GitConfig.Authentication.Password;\n\n this.formValues.RepositoryAuthentication = true;\n this.state.isEdit = true;\n this.state.isAuthEdit = true;\n }\n\n this.savedFormValues = angular.copy(this.formValues);\n }\n}\n\nexport default KubernetesRedeployAppGitFormController;\n","const autoNgTemplateLoaderTemplate1 = require('./kubernetes-redeploy-app-git-form.html');\n\nimport angular from 'angular';\nimport controller from './kubernetes-redeploy-app-git-form.controller';\n\nconst kubernetesRedeployAppGitForm = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n stack: '<',\n namespace: '<',\n },\n};\n\nangular.module('portainer.app').component('kubernetesRedeployAppGitForm', kubernetesRedeployAppGitForm);\n","const autoNgTemplateLoaderTemplate1 = require('./registry-form-ecr.html');\n\nclass controller {\n constructor($scope) {\n this.$scope = $scope;\n this.toggleAuthentication = this.toggleAuthentication.bind(this);\n }\n\n $postLink() {\n this.registryFormEcr.registry_name.$validators.used = (modelValue) => !this.nameIsUsed(modelValue);\n }\n\n toggleAuthentication(newValue) {\n this.$scope.$evalAsync(() => {\n this.model.Authentication = newValue;\n });\n }\n}\n\nangular.module('portainer.app').component('registryFormEcr', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '=',\n formAction: '<',\n formActionLabel: '@',\n actionInProgress: '<',\n nameIsUsed: '<',\n },\n controller,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./registry-form-azure.html');\n\nclass controller {\n $postLink() {\n this.registryFormAzure.registry_name.$validators.used = (modelValue) => !this.nameIsUsed(modelValue);\n }\n}\n\nangular.module('portainer.app').component('registryFormAzure', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '=',\n formAction: '<',\n formActionLabel: '@',\n actionInProgress: '<',\n nameIsUsed: '<',\n },\n controller,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./registry-form-custom.html');\n\nclass controller {\n constructor($scope) {\n this.$scope = $scope;\n this.toggleAuthentication = this.toggleAuthentication.bind(this);\n }\n\n $postLink() {\n this.registryFormCustom.registry_name.$validators.used = (modelValue) => !this.nameIsUsed(modelValue);\n }\n\n toggleAuthentication(newValue) {\n this.$scope.$evalAsync(() => {\n this.model.Authentication = newValue;\n });\n }\n}\n\nangular.module('portainer.app').component('registryFormCustom', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '=',\n formAction: '<',\n formActionLabel: '@',\n actionInProgress: '<',\n nameIsUsed: '<',\n },\n controller,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./registry-form-dockerhub.html');\n\nclass controller {\n $postLink() {\n this.registryFormDockerhub.registry_name.$validators.used = (modelValue) => !this.nameIsUsed(modelValue);\n }\n}\n\nangular.module('portainer.app').component('registryFormDockerhub', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '=',\n formAction: '<',\n formActionLabel: '@',\n actionInProgress: '<',\n nameIsUsed: '<',\n },\n controller,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./gitlabProjectsDatatable.html');\n\nangular.module('portainer.app').component('gitlabProjectsDatatable', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GitlabProjectsDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n state: '=',\n },\n});\n","angular.module('portainer.app').controller('GitlabProjectsDatatableController', [\n '$scope',\n '$controller',\n 'DatatableService',\n function ($scope, $controller, DatatableService) {\n angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));\n\n this.disableSelection = function (item) {\n return !this.allowSelection(item);\n };\n\n // based on RegistryGitlabProject model\n this.allowSelection = function (item) {\n return item.RegistryEnabled;\n };\n\n this.$onInit = function () {\n this.setDefaults();\n this.prepareTableFromDataset();\n\n this.state.orderBy = this.orderBy;\n var storedOrder = DatatableService.getDataTableOrder(this.tableKey);\n if (storedOrder !== null) {\n this.state.reverseOrder = storedOrder.reverse;\n this.state.orderBy = storedOrder.orderBy;\n }\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n this.onTextFilterChange();\n }\n\n var storedFilters = DatatableService.getDataTableFilters(this.tableKey);\n if (storedFilters !== null) {\n this.filters = storedFilters;\n }\n if (this.filters && this.filters.state) {\n this.filters.state.open = false;\n }\n\n var storedSettings = DatatableService.getDataTableSettings(this.tableKey);\n if (storedSettings !== null) {\n this.settings = storedSettings;\n this.settings.open = false;\n }\n this.onSettingsRepeaterChange();\n };\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./registry-form-gitlab.html');\n\nangular.module('portainer.app').component('registryFormGitlab', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '=',\n retrieveRegistries: '<',\n createRegistries: '<',\n actionInProgress: '<',\n projects: '=',\n state: '=',\n resetDefaults: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./registry-form-proget.html');\n\nclass controller {\n $postLink() {\n this.registryFormProGet.registry_name.$validators.used = (modelValue) => !this.nameIsUsed(modelValue);\n }\n}\n\nangular.module('portainer.app').component('registryFormProget', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '=',\n formAction: '<',\n formActionLabel: '@',\n actionInProgress: '<',\n nameIsUsed: '<',\n },\n controller,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./registry-form-quay.html');\n\nclass controller {\n constructor($scope) {\n this.$scope = $scope;\n this.toggleOrganisation = this.toggleOrganisation.bind(this);\n }\n\n $postLink() {\n this.registryFormQuay.registry_name.$validators.used = (modelValue) => !this.nameIsUsed(modelValue);\n }\n\n toggleOrganisation(newValue) {\n this.$scope.$evalAsync(() => {\n this.model.Quay.useOrganisation = newValue;\n });\n }\n}\n\nangular.module('portainer.app').component('registryFormQuay', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '=',\n formAction: '<',\n formActionLabel: '@',\n actionInProgress: '<',\n nameIsUsed: '<',\n },\n controller,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./stackFromTemplateForm.html');\n\nimport angular from 'angular';\n\nangular.module('portainer.app').component('stackFromTemplateForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n template: '=',\n formValues: '=',\n state: '=',\n createTemplate: '<',\n unselectTemplate: '<',\n nameRegex: '<',\n },\n transclude: {\n advanced: '?advancedForm',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./stack-redeploy-git-form.html');\n\nimport angular from 'angular';\nimport controller from './stack-redeploy-git-form.controller.js';\n\nexport const stackRedeployGitForm = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n model: '<',\n stack: '<',\n endpoint: '<',\n },\n};\n\nangular.module('portainer.app').component('stackRedeployGitForm', stackRedeployGitForm);\n","import { RepositoryMechanismTypes } from 'Kubernetes/models/deploy';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { confirmStackUpdate } from '@/react/common/stacks/common/confirm-stack-update';\n\nimport { parseAutoUpdateResponse } from '@/react/portainer/gitops/AutoUpdateFieldset/utils';\nimport { baseStackWebhookUrl, createWebhookId } from '@/portainer/helpers/webhookHelper';\nimport { confirmEnableTLSVerify } from '@/react/portainer/gitops/utils';\n\nclass StackRedeployGitFormController {\n /* @ngInject */\n constructor($async, $state, $compile, $scope, StackService, Notifications, FormHelper) {\n this.$async = $async;\n this.$state = $state;\n this.$compile = $compile;\n this.$scope = $scope;\n this.StackService = StackService;\n this.Notifications = Notifications;\n this.FormHelper = FormHelper;\n $scope.stackPullImageFeature = FeatureId.STACK_PULL_IMAGE;\n this.state = {\n inProgress: false,\n redeployInProgress: false,\n showConfig: false,\n isEdit: false,\n\n // isAuthEdit is used to preserve the editing state of the AuthFieldset component.\n // Within the stack editing page, users have the option to turn the AuthFieldset on or off\n // and save the stack setting. If the user enables the AuthFieldset, it implies that they\n // must input new Git authentication, rather than edit existing authentication. Thus,\n // a dedicated state tracker is required to differentiate between the editing state of\n // AuthFieldset component and the whole stack\n // When isAuthEdit is true, PAT field needs to be validated.\n isAuthEdit: false,\n hasUnsavedChanges: false,\n baseWebhookUrl: baseStackWebhookUrl(),\n webhookId: createWebhookId(),\n };\n\n this.formValues = {\n RefName: '',\n RepositoryAuthentication: false,\n RepositoryUsername: '',\n RepositoryPassword: '',\n Env: [],\n PullImage: false,\n Option: {\n Prune: false,\n },\n // auto update\n AutoUpdate: parseAutoUpdateResponse(),\n };\n\n this.onChange = this.onChange.bind(this);\n this.onChangeRef = this.onChangeRef.bind(this);\n this.onChangeAutoUpdate = this.onChangeAutoUpdate.bind(this);\n this.onChangeEnvVar = this.onChangeEnvVar.bind(this);\n this.onChangeOption = this.onChangeOption.bind(this);\n this.onChangeGitAuth = this.onChangeGitAuth.bind(this);\n this.onChangeTLSSkipVerify = this.onChangeTLSSkipVerify.bind(this);\n }\n\n buildAnalyticsProperties() {\n const metadata = {};\n\n if (this.formValues.RepositoryAutomaticUpdates) {\n metadata.automaticUpdates = autoSyncLabel(this.formValues.RepositoryMechanism);\n }\n return { metadata };\n\n function autoSyncLabel(type) {\n switch (type) {\n case RepositoryMechanismTypes.INTERVAL:\n return 'polling';\n case RepositoryMechanismTypes.WEBHOOK:\n return 'webhook';\n }\n return 'off';\n }\n }\n\n onChange(values) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n this.state.hasUnsavedChanges = angular.toJson(this.savedFormValues) !== angular.toJson(this.formValues);\n });\n }\n\n onChangeRef(value) {\n this.onChange({ RefName: value });\n }\n\n onChangeEnvVar(value) {\n this.onChange({ Env: value });\n }\n\n async onChangeTLSSkipVerify(value) {\n return this.$async(async () => {\n if (this.model.TLSSkipVerify && !value) {\n const confirmed = await confirmEnableTLSVerify();\n\n if (!confirmed) {\n return;\n }\n }\n this.onChange({ TLSSkipVerify: value });\n });\n }\n\n onChangeOption(values) {\n this.onChange({\n Option: {\n ...this.formValues.Option,\n ...values,\n },\n });\n }\n\n async submit() {\n const isSwarmStack = this.stack.Type === 1;\n const that = this;\n confirmStackUpdate(\n 'Any changes to this stack or application made locally in Portainer will be overridden, which may cause service interruption. Do you wish to continue?',\n isSwarmStack\n ).then(async function (result) {\n if (!result) {\n return;\n }\n try {\n that.state.redeployInProgress = true;\n await that.StackService.updateGit(\n that.stack.Id,\n that.stack.EndpointId,\n that.FormHelper.removeInvalidEnvVars(that.formValues.Env),\n that.formValues.Option.Prune,\n that.formValues,\n result.pullImage\n );\n\n that.Notifications.success('Success', 'Pulled and redeployed stack successfully');\n that.$state.reload();\n } catch (err) {\n that.Notifications.error('Failure', err, 'Failed redeploying stack');\n } finally {\n that.state.redeployInProgress = false;\n }\n });\n }\n\n async saveGitSettings() {\n return this.$async(async () => {\n try {\n this.state.inProgress = true;\n const stack = await this.StackService.updateGitStackSettings(\n this.stack.Id,\n this.stack.EndpointId,\n this.FormHelper.removeInvalidEnvVars(this.formValues.Env),\n this.formValues,\n this.state.webhookId\n );\n this.savedFormValues = angular.copy(this.formValues);\n this.state.hasUnsavedChanges = false;\n this.Notifications.success('Success', 'Save stack settings successfully');\n\n if (!(this.stack.GitConfig && this.stack.GitConfig.Authentication)) {\n // update the AuthFieldset setting\n this.state.isAuthEdit = false;\n this.formValues.RepositoryUsername = '';\n this.formValues.RepositoryPassword = '';\n }\n this.stack = stack;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to save stack settings');\n } finally {\n this.state.inProgress = false;\n }\n });\n }\n\n isSubmitButtonDisabled() {\n return this.state.inProgress || this.state.redeployInProgress;\n }\n\n isAutoUpdateChanged() {\n const wasEnabled = !!(this.stack.AutoUpdate && (this.stack.AutoUpdate.Interval || this.stack.AutoUpdate.Webhook));\n const isEnabled = this.formValues.AutoUpdate.RepositoryAutomaticUpdates;\n return isEnabled !== wasEnabled;\n }\n\n onChangeGitAuth(values) {\n this.onChange(values);\n }\n\n onChangeAutoUpdate(values) {\n this.onChange({\n AutoUpdate: {\n ...this.formValues.AutoUpdate,\n ...values,\n },\n });\n }\n\n async $onInit() {\n this.formValues.RefName = this.model.ReferenceName;\n this.formValues.TLSSkipVerify = this.model.TLSSkipVerify;\n this.formValues.Env = this.stack.Env;\n\n if (this.stack.Option) {\n this.formValues.Option = this.stack.Option;\n }\n\n this.formValues.AutoUpdate = parseAutoUpdateResponse(this.stack.AutoUpdate);\n\n if (this.stack.AutoUpdate && this.stack.AutoUpdate.Webhook) {\n this.state.webhookId = this.stack.AutoUpdate.Webhook;\n }\n\n if (this.stack.GitConfig && this.stack.GitConfig.Authentication) {\n this.formValues.RepositoryUsername = this.stack.GitConfig.Authentication.Username;\n this.formValues.RepositoryPassword = this.stack.GitConfig.Authentication.Password;\n this.formValues.RepositoryAuthentication = true;\n this.state.isEdit = true;\n this.state.isAuthEdit = true;\n }\n\n this.savedFormValues = angular.copy(this.formValues);\n }\n}\n\nexport default StackRedeployGitFormController;\n","import angular from 'angular';\n\nimport { rdWidgetBody } from './rd-widget-body';\nimport { rdWidget } from './rd-widget';\nimport { rdWidgetCustomHeader } from './rd-widget-custom-header';\nimport { rdWidgetFooter } from './rd-widget-footer';\nimport { rdWidgetTaskbar } from './rd-widget-taskbar';\nimport { rdWidgetTitle } from './rd-widget-title';\n\nexport default angular\n .module('portainer.app.components.widget', [])\n .component('rdWidget', rdWidget)\n .component('rdWidgetBody', rdWidgetBody)\n .component('rdWidgetCustomHeader', rdWidgetCustomHeader)\n .component('rdWidgetFooter', rdWidgetFooter)\n .component('rdWidgetHeader', rdWidgetTitle)\n .component('rdWidgetTaskbar', rdWidgetTaskbar).name;\n","export const rdWidget = {\n transclude: true,\n template: `<div class=\"widget\" ng-transclude></div>`,\n};\n","export const rdWidgetBody = {\n requires: '^rdWidget',\n bindings: {\n loading: '@?',\n classes: '@?',\n },\n transclude: true,\n template: `\n <div class=\"widget-body\" ng-class=\"$ctrl.classes\">\n <rd-loading ng-show=\"$ctrl.loading\"></rd-loading>\n <div ng-hide=\"$ctrl.loading\" class=\"widget-content\" ng-transclude></div>\n </div>\n `,\n};\n","export const rdWidgetCustomHeader = {\n requires: '^rdWidget',\n bindings: {\n titleText: '=',\n icon: '=',\n },\n transclude: true,\n template: `\n <div class=\"widget-header\">\n <div class=\"row\">\n <span class=\"pull-left\">\n <img class=\"custom-header-ico space-right\" ng-src=\"{{$ctrl.icon}}\" ng-if=\"$ctrl.icon\" alt=\"header-icon\"></img>\n <pr-icon ng-if=\"!$ctrl.icon\" icon=\"'rocket'\"></pr-icon>\n <span class=\"text-muted\"> {{$ctrl.titleText}} </span>\n </span>\n <span class=\"pull-right col-xs-6 col-sm-4\" ng-transclude></span>\n </div>\n </div>\n `,\n};\n\n// a react component wasn't created because WidgetTitle were adjusted to support a custom image\n","export const rdWidgetFooter = {\n requires: '^rdWidget',\n transclude: true,\n template: `\n <div class=\"widget-footer\" ng-transclude></div>\n `,\n};\n","export const rdWidgetTitle = {\n requires: '^rdWidget',\n bindings: {\n titleText: '@',\n icon: '@',\n classes: '@?',\n parentClasses: '@?',\n },\n transclude: {\n title: '?headerTitle',\n },\n template: `\n <div class=\"widget-header\" ng-class=\"$ctrl.parentClasses\">\n <div class=\"row\">\n <span ng-class=\"$ctrl.classes\" class=\"pull-left vertical-center\">\n <div class=\"widget-icon space-right\">\n <pr-icon icon=\"$ctrl.icon\"></pr-icon>\n </div>\n <span ng-transclude=\"title\">{{ $ctrl.titleText }}</span>\n </span>\n <span ng-class=\"$ctrl.classes\" class=\"pull-right\" ng-transclude></span>\n </div>\n </div>\n`,\n};\n","export const rdWidgetTaskbar = {\n requires: '^rdWidget',\n bindings: {\n classes: '@?',\n },\n transclude: true,\n template: `\n <div class=\"widget-header\">\n <div class=\"row\">\n <div ng-class=\"$ctrl.classes\" ng-transclude></div>\n </div>\n </div>\n `,\n};\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { getFeatureDetails } from '@@/BEFeatureIndicator/utils';\n\nexport default class BeIndicatorController {\n limitedToBE?: boolean;\n\n url?: string;\n\n feature?: FeatureId;\n\n /* @ngInject */\n constructor() {\n this.limitedToBE = false;\n this.url = '';\n }\n\n $onInit() {\n const { url, limitedToBE } = getFeatureDetails(this.feature);\n\n this.limitedToBE = limitedToBE;\n this.url = url;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./BEFeatureIndicator.html');\n\nimport controller from './BEFeatureIndicator.controller';\n\nexport const beFeatureIndicator = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n feature: '<',\n },\n transclude: true,\n};\n","import { IFormController } from 'angular';\nimport { FormikErrors } from 'formik';\n\nimport { GitFormModel } from '@/react/portainer/gitops/types';\nimport { validateGitForm } from '@/react/portainer/gitops/GitForm';\nimport { notifyError } from '@/portainer/services/notifications';\nimport { IAuthenticationService } from '@/portainer/services/types';\nimport { getGitCredentials } from '@/react/portainer/account/git-credentials/git-credentials.service';\nimport { GitCredential } from '@/react/portainer/account/git-credentials/types';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nexport default class GitFormController {\n errors?: FormikErrors<GitFormModel>;\n\n $async: <T>(fn: () => Promise<T>) => Promise<T>;\n\n gitForm?: IFormController;\n\n gitCredentials: Array<GitCredential> = [];\n\n Authentication: IAuthenticationService;\n\n value?: GitFormModel;\n\n onChange?: (value: GitFormModel) => void;\n\n /* @ngInject */\n constructor(\n $async: <T>(fn: () => Promise<T>) => Promise<T>,\n Authentication: IAuthenticationService\n ) {\n this.$async = $async;\n this.Authentication = Authentication;\n\n this.handleChange = this.handleChange.bind(this);\n this.runGitFormValidation = this.runGitFormValidation.bind(this);\n }\n\n async handleChange(newValues: Partial<GitFormModel>) {\n // this should never happen, but just in case\n if (!this.value) {\n throw new Error('GitFormController: value is required');\n }\n\n const value = {\n ...this.value,\n ...newValues,\n };\n this.onChange?.(value);\n await this.runGitFormValidation(value);\n }\n\n async runGitFormValidation(value: GitFormModel) {\n return this.$async(async () => {\n this.errors = {};\n this.gitForm?.$setValidity('gitForm', true, this.gitForm);\n\n this.errors = await validateGitForm(this.gitCredentials, value);\n if (this.errors && Object.keys(this.errors).length > 0) {\n this.gitForm?.$setValidity('gitForm', false, this.gitForm);\n }\n });\n }\n\n async $onInit() {\n if (isBE) {\n try {\n this.gitCredentials = await getGitCredentials(\n this.Authentication.getUserDetails().ID\n );\n } catch (err) {\n notifyError(\n 'Failure',\n err as Error,\n 'Unable to retrieve user saved git credentials'\n );\n }\n }\n\n // this should never happen, but just in case\n if (!this.value) {\n throw new Error('GitFormController: value is required');\n }\n\n await this.runGitFormValidation(this.value);\n }\n}\n","import { IComponentOptions } from 'angular';\n\nimport controller from './git-form.controller';\n\nexport const gitForm: IComponentOptions = {\n template: `\n<ng-form name=\"$ctrl.gitForm\">\n <react-git-form \n value=\"$ctrl.value\"\n on-change=\"$ctrl.handleChange\"\n environment-type=\"$ctrl.environmentType\"\n is-docker-standalone=\"$ctrl.isDockerStandalone\"\n deploy-method=\"$ctrl.deployMethod\"\n is-additional-files-field-visible=\"$ctrl.isAdditionalFilesFieldVisible\"\n is-force-pull-visible=\"$ctrl.isForcePullVisible\"\n is-auth-explanation-visible=\"$ctrl.isAuthExplanationVisible\"\n base-webhook-url=\"$ctrl.baseWebhookUrl\"\n webhook-id=\"$ctrl.webhookId\"\n webhooks-docs=\"$ctrl.webhooksDocs\"\n errors=\"$ctrl.errors\">\n </react-git-form>\n</ng-form>`,\n bindings: {\n value: '<',\n onChange: '<',\n environmentType: '@',\n isDockerStandalone: '<',\n deployMethod: '@',\n baseWebhookUrl: '@',\n isAdditionalFilesFieldVisible: '<',\n isForcePullVisible: '<',\n isAuthExplanationVisible: '<',\n webhookId: '@',\n webhooksDocs: '@',\n },\n controller,\n};\n","import { IFormController } from 'angular';\nimport { FormikErrors } from 'formik';\n\nimport { notifyError } from '@/portainer/services/notifications';\nimport { IAuthenticationService } from '@/portainer/services/types';\nimport { GitAuthModel } from '@/react/portainer/gitops/types';\nimport { gitAuthValidation } from '@/react/portainer/gitops/AuthFieldset';\nimport { GitCredential } from '@/react/portainer/account/git-credentials/types';\nimport { getGitCredentials } from '@/react/portainer/account/git-credentials/git-credentials.service';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { validateForm } from '@@/form-components/validate-form';\n\nexport default class GitFormAuthFieldsetController {\n errors?: FormikErrors<GitAuthModel> = {};\n\n $async: <T>(fn: () => Promise<T>) => Promise<T>;\n\n gitFormAuthFieldset?: IFormController;\n\n gitCredentials: Array<GitCredential> = [];\n\n Authentication: IAuthenticationService;\n\n value?: GitAuthModel;\n\n isAuthEdit: boolean;\n\n onChange?: (value: GitAuthModel) => void;\n\n /* @ngInject */\n constructor(\n $async: <T>(fn: () => Promise<T>) => Promise<T>,\n Authentication: IAuthenticationService\n ) {\n this.$async = $async;\n this.Authentication = Authentication;\n\n this.isAuthEdit = false;\n this.handleChange = this.handleChange.bind(this);\n this.runGitValidation = this.runGitValidation.bind(this);\n }\n\n async handleChange(newValues: Partial<GitAuthModel>) {\n // this should never happen, but just in case\n if (!this.value) {\n throw new Error('GitFormController: value is required');\n }\n\n const value = {\n ...this.value,\n ...newValues,\n };\n this.onChange?.(value);\n await this.runGitValidation(value, false);\n }\n\n async runGitValidation(value: GitAuthModel, isAuthEdit: boolean) {\n return this.$async(async () => {\n this.errors = {};\n this.gitFormAuthFieldset?.$setValidity(\n 'gitFormAuth',\n true,\n this.gitFormAuthFieldset\n );\n\n this.errors = await validateForm<GitAuthModel>(\n () => gitAuthValidation(this.gitCredentials, isAuthEdit),\n value\n );\n if (this.errors && Object.keys(this.errors).length > 0) {\n this.gitFormAuthFieldset?.$setValidity(\n 'gitFormAuth',\n false,\n this.gitFormAuthFieldset\n );\n }\n });\n }\n\n async $onInit() {\n if (isBE) {\n try {\n // Only BE version support /gitcredentials\n this.gitCredentials = await getGitCredentials(\n this.Authentication.getUserDetails().ID\n );\n } catch (err) {\n notifyError(\n 'Failure',\n err as Error,\n 'Unable to retrieve user saved git credentials'\n );\n }\n }\n // this should never happen, but just in case\n if (!this.value) {\n throw new Error('GitFormController: value is required');\n }\n await this.runGitValidation(this.value, this.isAuthEdit);\n }\n}\n","import { IComponentOptions } from 'angular';\n\nimport controller from './git-form-auth-fieldset.controller';\n\nexport const gitFormAuthFieldset: IComponentOptions = {\n controller,\n template: `\n<ng-form name=\"$ctrl.gitFormAuthFieldset\">\n <react-git-form-auth-fieldset\n value=\"$ctrl.value\"\n on-change=\"$ctrl.handleChange\"\n is-auth-explanation-visible=\"$ctrl.isAuthExplanationVisible\"\n errors=\"$ctrl.errors\"\n is-auth-edit=\"$ctrl.isAuthEdit\">\n </react-git-form-auth-fieldset>\n</ng-form>`,\n bindings: {\n value: '<',\n onChange: '<',\n isAuthExplanationVisible: '<',\n isAuthEdit: '<',\n },\n};\n","import { IFormController } from 'angular';\nimport { FormikErrors } from 'formik';\n\nimport { IAuthenticationService } from '@/portainer/services/types';\nimport { AutoUpdateModel } from '@/react/portainer/gitops/types';\nimport { autoUpdateValidation } from '@/react/portainer/gitops/AutoUpdateFieldset/validation';\n\nimport { validateForm } from '@@/form-components/validate-form';\n\nexport default class GitFormAutoUpdateFieldsetController {\n errors?: FormikErrors<AutoUpdateModel> = {};\n\n $async: <T>(fn: () => Promise<T>) => Promise<T>;\n\n gitFormAutoUpdate?: IFormController;\n\n Authentication: IAuthenticationService;\n\n value?: AutoUpdateModel;\n\n onChange?: (value: AutoUpdateModel) => void;\n\n /* @ngInject */\n constructor(\n $async: <T>(fn: () => Promise<T>) => Promise<T>,\n Authentication: IAuthenticationService\n ) {\n this.$async = $async;\n this.Authentication = Authentication;\n\n this.handleChange = this.handleChange.bind(this);\n this.runGitValidation = this.runGitValidation.bind(this);\n }\n\n async handleChange(newValues: Partial<AutoUpdateModel>) {\n // this should never happen, but just in case\n if (!this.value) {\n throw new Error('GitFormController: value is required');\n }\n\n const value = {\n ...this.value,\n ...newValues,\n };\n this.onChange?.(value);\n await this.runGitValidation(value);\n }\n\n async runGitValidation(value: AutoUpdateModel) {\n return this.$async(async () => {\n this.errors = {};\n this.gitFormAutoUpdate?.$setValidity(\n 'gitFormAuth',\n true,\n this.gitFormAutoUpdate\n );\n\n this.errors = await validateForm<AutoUpdateModel>(\n () => autoUpdateValidation(),\n value\n );\n if (this.errors && Object.keys(this.errors).length > 0) {\n this.gitFormAutoUpdate?.$setValidity(\n 'gitFormAuth',\n false,\n this.gitFormAutoUpdate\n );\n }\n });\n }\n\n async $onInit() {\n // this should never happen, but just in case\n if (!this.value) {\n throw new Error('GitFormController: value is required');\n }\n\n await this.runGitValidation(this.value);\n }\n}\n","import { IComponentOptions } from 'angular';\n\nimport controller from './git-form-auto-update-fieldset.controller';\n\nexport const gitFormAutoUpdate: IComponentOptions = {\n template: `<ng-form name=\"$ctrl.gitFormAutoUpdate\">\n <react-git-form-auto-update-fieldset\n value=\"$ctrl.value\"\n on-change=\"$ctrl.handleChange\"\n environment-type=\"$ctrl.environmentType\"\n is-force-pull-visible=\"$ctrl.isForcePullVisible\"\n base-webhook-url=\"$ctrl.baseWebhookUrl\"\n webhook-id=\"$ctrl.webhookId\"\n webhooks-docs=\"$ctrl.webhooksDocs\"\n errors=\"$ctrl.errors\">\n </react-git-form-auto-update-fieldset>\n </ng-form>`,\n bindings: {\n value: '<',\n onChange: '<',\n environmentType: '@',\n isForcePullVisible: '<',\n baseWebhookUrl: '@',\n webhookId: '@',\n webhooksDocs: '@',\n },\n controller,\n};\n","import { IComponentOptions, IFormController } from 'angular';\n\nimport { GitFormModel } from '@/react/portainer/gitops/types';\nimport { AsyncService } from '@/portainer/services/types';\nimport { refFieldValidation } from '@/react/portainer/gitops/RefField/RefField';\n\nimport { validateForm } from '@@/form-components/validate-form';\n\nclass GitFormRefFieldController {\n $async: AsyncService;\n\n value?: string;\n\n onChange?: (value: string) => void;\n\n gitFormRefField?: IFormController;\n\n error?: string = '';\n\n model?: GitFormModel;\n\n stackId?: number = 0;\n\n /* @ngInject */\n constructor($async: AsyncService) {\n this.$async = $async;\n\n this.handleChange = this.handleChange.bind(this);\n this.runValidation = this.runValidation.bind(this);\n }\n\n async handleChange(value: string) {\n return this.$async(async () => {\n this.onChange?.(value);\n await this.runValidation(value);\n });\n }\n\n async runValidation(value: string) {\n return this.$async(async () => {\n this.error = '';\n this.gitFormRefField?.$setValidity(\n 'gitFormRefField',\n true,\n this.gitFormRefField\n );\n\n this.error = await validateForm<string>(\n () => refFieldValidation(),\n value\n );\n if (this.error) {\n this.gitFormRefField?.$setValidity(\n 'gitFormRefField',\n false,\n this.gitFormRefField\n );\n }\n });\n }\n}\n\nexport const gitFormRefField: IComponentOptions = {\n controller: GitFormRefFieldController,\n template: `\n<ng-form name=\"$ctrl.gitFormRefField\">\n <react-git-form-ref-field\n is-url-valid=\"$ctrl.isUrlValid\"\n model=\"$ctrl.model\"\n value=\"$ctrl.value\"\n on-change=\"$ctrl.handleChange\"\n stack-id=\"$ctrl.stackId\"\n error=\"$ctrl.error\">\n </react-git-form-ref-field>\n</ng-form>`,\n bindings: {\n isUrlValid: '<',\n value: '<',\n onChange: '<',\n model: '<',\n stackId: '<',\n },\n};\n","import angular from 'angular';\n\nimport { gitForm } from './git-form';\nimport { gitFormAuthFieldset } from './git-form-auth-fieldset';\nimport { gitFormAutoUpdate } from './git-form-auto-update-fieldset';\nimport { gitFormRefField } from './git-form-ref-field';\n\nexport const gitFormModule = angular\n .module('portainer.app.components.git-form', [])\n .component('gitForm', gitForm)\n .component('gitFormAuthFieldset', gitFormAuthFieldset)\n .component('gitFormAutoUpdateFieldset', gitFormAutoUpdate)\n .component('gitFormRefField', gitFormRefField).name;\n","import angular from 'angular';\n\nimport {\n TLSFieldset,\n tlsConfigValidation,\n} from '@/react/components/TLSFieldset';\nimport { withFormValidation } from '@/react-tools/withFormValidation';\n\nexport const ngModule = angular.module(\n 'portainer.app.components.tls-fieldset',\n []\n);\n\nexport const tlsFieldsetModule = ngModule.name;\n\nwithFormValidation(\n ngModule,\n TLSFieldset,\n 'tlsFieldset',\n [],\n tlsConfigValidation\n);\n","import angular from 'angular';\n\nimport formComponentsModule from './form-components';\nimport porAccessManagementModule from './accessManagement';\nimport widgetModule from './widget';\nimport { boxSelectorModule } from './BoxSelector';\n\nimport { beFeatureIndicator } from './BEFeatureIndicator';\nimport { InformationPanelAngular } from './InformationPanel';\nimport { gitFormModule } from './forms/git-form';\nimport { tlsFieldsetModule } from './tls-fieldset';\n\nexport default angular\n .module('portainer.app.components', [boxSelectorModule, widgetModule, gitFormModule, porAccessManagementModule, formComponentsModule, tlsFieldsetModule])\n .component('informationPanel', InformationPanelAngular)\n .component('beFeatureIndicator', beFeatureIndicator).name;\n","import angular from 'angular';\nimport parse from 'parse-duration';\n\nangular.module('portainer.app').directive('intervalFormat', function () {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function ($scope, $element, $attrs, ngModel) {\n ngModel.$validators.invalidIntervalFormat = function (modelValue) {\n try {\n return modelValue && modelValue.toUpperCase().match(/^P?(?!$)(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(T?(?=\\d+[HMS])(\\d+H)?(\\d+M)?(\\d+S)?)?$/gm) !== null;\n } catch (error) {\n return false;\n }\n };\n\n ngModel.$validators.minimumInterval = function (modelValue) {\n try {\n return modelValue && parse(modelValue, 'minute') >= 1;\n } catch (error) {\n return false;\n }\n };\n },\n };\n});\n","angular.module('portainer.app').directive('onEnterKey', [\n function porOnEnterKey() {\n var directive = {\n restrict: 'A',\n link: function (scope, element, attrs) {\n element.bind('keydown keypress', function (e) {\n if (e.which === 13) {\n e.preventDefault();\n scope.$apply(function () {\n scope.$eval(attrs.onEnterKey);\n });\n }\n });\n },\n };\n\n return directive;\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./option-panel.html');\n\nimport angular from 'angular';\n\nimport controller from './option-panel.controller.js';\n\nangular.module('portainer.app').component('optionPanel', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n ngModel: '<',\n explanation: '@',\n onChange: '<',\n },\n});\n","export default class OptionPanelController {\n /* @ngInject */\n constructor() {\n this.switchPruneService = this.switchPruneService.bind(this);\n }\n\n switchPruneService() {\n this.onChange(this.ngModel);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./productItem.html');\n\nangular.module('portainer.app').component('productItem', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '<',\n goTo: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./productList.html');\n\nangular.module('portainer.app').component('productList', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n titleText: '@',\n products: '<',\n goTo: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./registry-details.html');\n\nimport angular from 'angular';\n\nexport const registryDetails = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n registry: '<',\n },\n};\n\nangular.module('portainer.app').component('registryDetails', registryDetails);\n","const autoNgTemplateLoaderTemplate1 = require('./sensitive-details.html');\n\nimport angular from 'angular';\nimport './sensitive-details.css';\n\nangular.module('portainer.app').component('sensitiveDetails', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n key: '@',\n value: '@',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./show-hide.html');\n\nimport angular from 'angular';\n\nangular.module('portainer.app').component('showHide', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n value: '<',\n useAsterisk: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./slider.html');\n\nangular.module('portainer.app').component('slider', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'SliderController',\n bindings: {\n model: '=',\n onChange: '<',\n floor: '<',\n ceil: '<',\n step: '<',\n precision: '<',\n },\n});\n","// TODO: k8s merge - TEST WITH EXISTING SLIDERS !\n// Not sure if this is not breaking existing sliders on docker views\n// Or sliders with onChange call (docker service update view)\nimport angular from 'angular';\n\nclass SliderController {\n /* @ngInject */\n constructor($scope) {\n this.$scope = $scope;\n\n this.buildOptions = this.buildOptions.bind(this);\n this.translate = this.translate.bind(this);\n }\n\n $onChanges() {\n this.buildOptions();\n }\n\n translate(value, sliderId, label) {\n if ((label === 'floor' && this.floor === 0) || value === 0) {\n return 'unlimited';\n }\n return value;\n }\n\n buildOptions() {\n this.options = {\n floor: this.floor,\n ceil: this.ceil,\n step: this.step,\n precision: this.precision,\n showSelectionBar: true,\n enforceStep: false,\n translate: this.translate,\n onChange: () => this.onChange(),\n };\n }\n\n $onInit() {\n this.buildOptions();\n }\n}\n\nexport default SliderController;\nangular.module('portainer.app').controller('SliderController', SliderController);\n","import { STACK_NAME_VALIDATION_REGEX } from '@/react/constants';\n\nangular.module('portainer.app').controller('StackDuplicationFormController', [\n 'Notifications',\n '$scope',\n function StackDuplicationFormController(Notifications, $scope) {\n var ctrl = this;\n\n ctrl.environmentSelectorOptions = null;\n\n ctrl.state = {\n duplicationInProgress: false,\n migrationInProgress: false,\n };\n\n ctrl.formValues = {\n endpointId: null,\n newName: '',\n };\n\n ctrl.STACK_NAME_VALIDATION_REGEX = STACK_NAME_VALIDATION_REGEX;\n\n ctrl.isFormValidForDuplication = isFormValidForDuplication;\n ctrl.isFormValidForMigration = isFormValidForMigration;\n ctrl.duplicateStack = duplicateStack;\n ctrl.migrateStack = migrateStack;\n ctrl.isMigrationButtonDisabled = isMigrationButtonDisabled;\n ctrl.isEndpointSelected = isEndpointSelected;\n ctrl.onChangeEnvironment = onChangeEnvironment;\n ctrl.$onChanges = $onChanges;\n\n function isFormValidForMigration() {\n return ctrl.formValues.endpointId;\n }\n\n function isFormValidForDuplication() {\n return isFormValidForMigration() && ctrl.formValues.newName && !ctrl.yamlError;\n }\n\n function onChangeEnvironment(endpointId) {\n return $scope.$evalAsync(() => {\n ctrl.formValues.endpointId = endpointId;\n });\n }\n\n function duplicateStack() {\n if (!ctrl.formValues.newName) {\n Notifications.error('Failure', null, 'Stack name is required for duplication');\n return;\n }\n ctrl.state.duplicationInProgress = true;\n ctrl\n .onDuplicate({\n endpointId: ctrl.formValues.endpointId,\n name: ctrl.formValues.newName ? ctrl.formValues.newName : undefined,\n })\n .finally(function () {\n ctrl.state.duplicationInProgress = false;\n });\n }\n\n function migrateStack() {\n ctrl.state.migrationInProgress = true;\n ctrl\n .onMigrate({\n endpointId: ctrl.formValues.endpointId,\n name: ctrl.formValues.newName ? ctrl.formValues.newName : undefined,\n })\n .finally(function () {\n ctrl.state.migrationInProgress = false;\n });\n }\n\n function isMigrationButtonDisabled() {\n return !ctrl.isFormValidForMigration() || ctrl.state.duplicationInProgress || ctrl.state.migrationInProgress || isTargetEndpointAndCurrentEquals();\n }\n\n function isTargetEndpointAndCurrentEquals() {\n return ctrl.formValues.endpointId === ctrl.currentEndpointId;\n }\n\n function isEndpointSelected() {\n return ctrl.formValues.endpointId;\n }\n\n function $onChanges() {\n ctrl.environmentSelectorOptions = getOptions(ctrl.groups, ctrl.endpoints);\n }\n },\n]);\n\nfunction getOptions(groups, environments) {\n if (!groups || !environments) {\n return [];\n }\n\n const groupSet = environments.reduce((groupSet, environment) => {\n const groupEnvironments = groupSet[environment.GroupId] || [];\n\n return {\n ...groupSet,\n [environment.GroupId]: [...groupEnvironments, { label: environment.Name, value: environment.Id }],\n };\n }, {});\n\n return Object.entries(groupSet).map(([groupId, environments]) => {\n const group = groups.find((group) => group.Id === parseInt(groupId, 10));\n if (!group) {\n throw new Error('missing group');\n }\n\n return {\n label: group.Name,\n options: environments,\n };\n });\n}\n","const autoNgTemplateLoaderTemplate1 = require('./stack-duplication-form.html');\n\nangular.module('portainer.app').component('stackDuplicationForm', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'StackDuplicationFormController',\n bindings: {\n onDuplicate: '&',\n onMigrate: '&',\n endpoints: '<',\n groups: '<',\n currentEndpointId: '<',\n yamlError: '<',\n },\n});\n","const autoNgTemplateLoaderTemplate1 = require('./status-indicator.html');\n\nimport angular from 'angular';\n\nimport './status-indicator.css';\n\nexport const statusIndicator = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n ok: '<',\n },\n};\n\nangular.module('portainer.app').component('statusIndicator', statusIndicator);\n","const autoNgTemplateLoaderTemplate1 = require('./templateItem.html');\n\nimport angular from 'angular';\n\nimport './template-item.css';\n\nangular.module('portainer.app').component('templateItem', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n model: '<',\n typeLabel: '@',\n onSelect: '<',\n },\n transclude: {\n actions: '?templateItemActions',\n },\n});\n","import _ from 'lodash-es';\n\nangular.module('portainer.app').controller('TemplateListController', TemplateListController);\n\nfunction TemplateListController($scope, $async, $state, DatatableService, Notifications, TemplateService) {\n var ctrl = this;\n\n this.state = {\n textFilter: '',\n selectedCategory: null,\n categories: [],\n typeFilters: [],\n filterByType: null,\n showContainerTemplates: true,\n selectedOrderBy: null,\n orderByFields: [],\n orderDesc: false,\n };\n\n this.onTextFilterChange = function () {\n DatatableService.setDataTableTextFilters(this.tableKey, this.state.textFilter);\n };\n\n ctrl.filterByTemplateType = function (item) {\n switch (item.Type) {\n case 1: // container\n return ctrl.state.showContainerTemplates;\n case 2: // swarm stack\n return ctrl.showSwarmStacks && !ctrl.state.showContainerTemplates;\n case 3: // docker compose\n return !ctrl.state.showContainerTemplates || null === ctrl.state.filterByType;\n case 4: // Edge stack templates\n return false;\n }\n return false;\n };\n\n ctrl.updateCategories = function () {\n var availableCategories = [];\n\n for (var i = 0; i < ctrl.templates.length; i++) {\n var template = ctrl.templates[i];\n if (ctrl.filterByTemplateType(template)) {\n availableCategories = availableCategories.concat(template.Categories);\n }\n }\n\n ctrl.state.categories = _.sortBy(_.uniq(availableCategories));\n };\n\n ctrl.filterByCategory = function (item) {\n if (!ctrl.state.selectedCategory) {\n return true;\n }\n\n return _.includes(item.Categories, ctrl.state.selectedCategory);\n };\n\n this.duplicateTemplate = duplicateTemplate.bind(this);\n this.duplicateTemplateAsync = duplicateTemplateAsync.bind(this);\n function duplicateTemplate(template) {\n return $async(this.duplicateTemplateAsync, template);\n }\n\n async function duplicateTemplateAsync(template) {\n try {\n const { FileContent: fileContent } = await TemplateService.templateFile(template.Repository.url, template.Repository.stackfile);\n let type = 0;\n if (template.Type === 2) {\n type = 1;\n }\n if (template.Type === 3) {\n type = 2;\n }\n $state.go('docker.templates.custom.new', { fileContent, type });\n } catch (err) {\n Notifications.error('Failure', err, 'Failed to duplicate template');\n }\n }\n\n ctrl.changeOrderBy = function (orderField) {\n $scope.$evalAsync(() => {\n if (null === orderField) {\n ctrl.state.selectedOrderBy = null;\n ctrl.templates = ctrl.initalTemplates;\n }\n\n ctrl.state.selectedOrderBy = orderField;\n ctrl.templates = _.orderBy(ctrl.templates, [getSorter(ctrl.state.selectedOrderBy)], [ctrl.state.orderDesc ? 'desc' : 'asc']);\n });\n };\n\n ctrl.applyTypeFilter = function (type) {\n $scope.$evalAsync(() => {\n ctrl.state.filterByType = type;\n ctrl.state.showContainerTemplates = 'Container' === type || null === type;\n ctrl.updateCategories();\n });\n };\n\n ctrl.invertOrder = function () {\n $scope.$evalAsync(() => {\n ctrl.state.orderDesc = !ctrl.state.orderDesc;\n ctrl.templates = _.orderBy(ctrl.templates, [getSorter(ctrl.state.selectedOrderBy)], [ctrl.state.orderDesc ? 'desc' : 'asc']);\n });\n };\n\n ctrl.applyCategoriesFilter = function (category) {\n $scope.$evalAsync(() => {\n ctrl.state.selectedCategory = category;\n ctrl.updateCategories();\n });\n };\n\n this.$onInit = function () {\n if (this.showSwarmStacks) {\n this.state.showContainerTemplates = false;\n }\n this.updateCategories();\n\n var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);\n if (textFilter !== null) {\n this.state.textFilter = textFilter;\n }\n\n this.initalTemplates = this.templates;\n this.state.orderByFields = ['Title', 'Categories', 'Description'];\n this.state.typeFilters = ['Container', 'Stack'];\n };\n\n function categorySorter(template) {\n if (template.Categories && template.Categories.length > 0 && template.Categories[0] && template.Categories[0].length > 0) {\n return template.Categories[0].toLowerCase();\n }\n }\n\n function getSorter(orderBy) {\n let sorter;\n switch (orderBy) {\n case 'Categories':\n sorter = categorySorter;\n break;\n default:\n sorter = orderBy;\n }\n\n return sorter;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./templateList.html');\n\nangular.module('portainer.app').component('templateList', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'TemplateListController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n templates: '<',\n tableKey: '@',\n selectAction: '<',\n showSwarmStacks: '<',\n },\n});\n","angular.module('portainer.app').directive('rdTemplateWidget', function rdWidget() {\n var directive = {\n scope: {\n ngModel: '=',\n },\n transclude: true,\n template: '<div class=\"widget template-widget\" id=\"template-widget\" ng-transclude></div>',\n restrict: 'EA',\n };\n return directive;\n});\n","import { Eye, Moon, Sun, RefreshCw } from 'lucide-react';\n\nimport { BadgeIcon } from '@@/BadgeIcon';\n\nexport const options = [\n {\n id: 'light',\n icon: <BadgeIcon icon={Sun} />,\n label: 'Light Theme',\n description: 'Default color mode',\n value: 'light',\n },\n {\n id: 'dark',\n icon: <BadgeIcon icon={Moon} />,\n label: 'Dark Theme',\n description: 'Dark color mode',\n value: 'dark',\n },\n {\n id: 'highcontrast',\n icon: <BadgeIcon icon={Eye} />,\n label: 'High Contrast',\n description: 'High contrast color mode',\n value: 'highcontrast',\n },\n {\n id: 'auto',\n icon: <BadgeIcon icon={RefreshCw} />,\n label: 'Auto',\n description: 'Sync with system theme',\n value: 'auto',\n },\n];\n","import { notifyError, notifySuccess } from '@/portainer/services/notifications';\nimport { queryKeys } from '@/portainer/users/queries/queryKeys';\nimport { queryClient } from '@/react-tools/react-query';\nimport { options } from '@/react/portainer/account/AccountView/theme-options';\n\nexport default class ThemeSettingsController {\n /* @ngInject */\n constructor($async, Authentication, ThemeManager, StateManager, UserService) {\n this.$async = $async;\n this.Authentication = Authentication;\n this.ThemeManager = ThemeManager;\n this.StateManager = StateManager;\n this.UserService = UserService;\n\n this.setThemeColor = this.setThemeColor.bind(this);\n }\n\n async setThemeColor(color) {\n return this.$async(async () => {\n if (color === 'auto' || !color) {\n this.ThemeManager.autoTheme();\n } else {\n this.ThemeManager.setTheme(color);\n }\n\n this.state.themeColor = color;\n this.updateThemeSettings({ color });\n });\n }\n\n async updateThemeSettings(theme) {\n try {\n if (!this.state.isDemo) {\n await this.UserService.updateUserTheme(this.state.userId, theme);\n await queryClient.invalidateQueries(queryKeys.user(this.state.userId));\n }\n\n notifySuccess('Success', 'User theme settings successfully updated');\n } catch (err) {\n notifyError('Failure', err, 'Unable to update user theme settings');\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n const state = this.StateManager.getState();\n\n this.state = {\n userId: null,\n themeColor: 'auto',\n isDemo: state.application.demoEnvironment.enabled,\n };\n\n this.state.availableThemes = options;\n\n try {\n this.state.userId = await this.Authentication.getUserDetails().ID;\n const user = await this.UserService.user(this.state.userId);\n\n this.state.themeColor = user.ThemeSettings.color || this.state.themeColor;\n } catch (err) {\n notifyError('Failure', err, 'Unable to get user details');\n }\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./theme-settings.html');\n\nimport angular from 'angular';\nimport controller from './theme-settings.controller';\n\nangular.module('portainer.app').component('themeSettings', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./azureEndpointConfig.html');\n\nexport const azureEndpointConfig = {\n bindings: {\n applicationId: '=',\n tenantId: '=',\n authenticationKey: '=',\n },\n templateUrl: autoNgTemplateLoaderTemplate1,\n};\n","import moment from 'moment';\nimport _ from 'lodash-es';\nimport filesize from 'filesize';\nimport { Eye, EyeOff, Users, Cloud } from 'lucide-react';\n\nimport Kube from '@/assets/ico/kube.svg?c';\nimport DockerIcon from '@/assets/ico/vendor/docker-icon.svg?c';\nimport MicrosoftIcon from '@/assets/ico/vendor/microsoft-icon.svg?c';\nimport NomadIcon from '@/assets/ico/vendor/nomad-icon.svg?c';\nimport { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types';\nimport { EnvironmentType } from '@/react/portainer/environments/types';\n\nexport function truncateLeftRight(text, max, left, right) {\n max = isNaN(max) ? 50 : max;\n left = isNaN(left) ? 25 : left;\n right = isNaN(right) ? 25 : right;\n\n if (text.length <= max) {\n return text;\n } else {\n return text.substring(0, left) + '[...]' + text.substring(text.length - right, text.length);\n }\n}\n\nexport function stripProtocol(url) {\n return url.replace(/.*?:\\/\\//g, '');\n}\n\nexport function humanize(bytes, round, base) {\n if (!round) {\n round = 1;\n }\n if (!base) {\n base = 10;\n }\n if (bytes || bytes === 0) {\n return filesize(bytes, { base: base, round: round });\n }\n}\nexport const TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';\n\nexport function isoDateFromTimestamp(timestamp) {\n return moment.unix(timestamp).format(TIME_FORMAT);\n}\n\nexport function isoDate(date) {\n return moment(date).format(TIME_FORMAT);\n}\n\nexport function parseIsoDate(date) {\n return moment(date, TIME_FORMAT).toDate();\n}\n\nexport function formatDate(date, strFormat = 'YYYY-MM-DD HH:mm:ss Z') {\n return moment(date, strFormat).format(TIME_FORMAT);\n}\n\nexport function getPairKey(pair, separator) {\n if (!pair.includes(separator)) {\n return pair;\n }\n\n return pair.slice(0, pair.indexOf(separator));\n}\n\nexport function getPairValue(pair, separator) {\n if (!pair.includes(separator)) {\n return '';\n }\n\n return pair.slice(pair.indexOf(separator) + 1);\n}\n\nexport function ipAddress(ip) {\n return ip.slice(0, ip.indexOf('/'));\n}\n\nexport function arrayToStr(arr, separator) {\n if (arr) {\n return _.join(arr, separator);\n }\n return '';\n}\n\nexport function labelsToStr(arr, separator) {\n if (arr) {\n return _.join(\n arr.map((item) => item.key + ':' + item.value),\n separator\n );\n }\n return '';\n}\n\nexport function endpointTypeName(type) {\n if (type === 1) {\n return 'Docker';\n } else if (type === 2 || type === 6) {\n return 'Agent';\n } else if (type === 3) {\n return 'Azure ACI';\n } else if (type === 5) {\n return 'Kubernetes';\n } else if (type === 4 || type === 7) {\n return 'Edge Agent';\n }\n return '';\n}\n\nexport function environmentTypeIcon(type) {\n switch (type) {\n case EnvironmentType.Azure:\n return MicrosoftIcon;\n case EnvironmentType.EdgeAgentOnDocker:\n return Cloud;\n case EnvironmentType.AgentOnKubernetes:\n case EnvironmentType.EdgeAgentOnKubernetes:\n case EnvironmentType.KubernetesLocal:\n return Kube;\n case EnvironmentType.AgentOnDocker:\n case EnvironmentType.Docker:\n return DockerIcon;\n case EnvironmentType.EdgeAgentOnNomad:\n return NomadIcon;\n default:\n throw new Error(`type ${type}-${EnvironmentType[type]} is not supported`);\n }\n}\n\nexport function ownershipIcon(ownership) {\n switch (ownership) {\n case RCO.PRIVATE:\n return EyeOff;\n case RCO.ADMINISTRATORS:\n return EyeOff;\n case RCO.RESTRICTED:\n return Users;\n default:\n return Eye;\n }\n}\n\nexport function truncate(text, length, end) {\n if (isNaN(length)) {\n length = 10;\n }\n\n if (end === undefined) {\n end = '...';\n }\n\n if (text.length <= length || text.length - end.length <= length) {\n return text;\n } else {\n return String(text).substring(0, length - end.length) + end;\n }\n}\n","import angular from 'angular';\nimport _ from 'lodash-es';\n\nimport {\n arrayToStr,\n environmentTypeIcon,\n endpointTypeName,\n getPairKey,\n getPairValue,\n humanize,\n ipAddress,\n isoDate,\n isoDateFromTimestamp,\n labelsToStr,\n ownershipIcon,\n stripProtocol,\n truncate,\n truncateLeftRight,\n} from './filters';\n\nangular\n .module('portainer.app')\n .filter('truncate', () => truncate)\n .filter('truncatelr', () => truncateLeftRight)\n .filter('capitalize', () => _.capitalize)\n .filter('stripprotocol', () => stripProtocol)\n .filter('humansize', () => humanize)\n .filter('getisodatefromtimestamp', () => isoDateFromTimestamp)\n .filter('getisodate', () => isoDate)\n .filter('key', () => getPairKey)\n .filter('value', () => getPairValue)\n .filter('emptyobject', () => _.isEmpty)\n .filter('ipaddress', () => ipAddress)\n .filter('arraytostr', () => arrayToStr)\n .filter('labelsToStr', () => labelsToStr)\n .filter('endpointtypename', () => endpointTypeName)\n .filter('endpointtypeicon', () => environmentTypeIcon)\n .filter('ownershipicon', () => ownershipIcon);\n","import _ from 'lodash-es';\nimport { PortainerEndpointTypes } from 'Portainer/models/endpoint/models';\n\nfunction findAssociatedGroup(endpoint, groups) {\n return _.find(groups, function (group) {\n return group.Id === endpoint.GroupId;\n });\n}\n\nexport default class EndpointHelper {\n static isDockerEndpoint(endpoint) {\n return [PortainerEndpointTypes.DockerEnvironment, PortainerEndpointTypes.AgentOnDockerEnvironment, PortainerEndpointTypes.EdgeAgentOnDockerEnvironment].includes(endpoint.Type);\n }\n\n static isAgentEndpoint(endpoint) {\n return [\n PortainerEndpointTypes.AgentOnDockerEnvironment,\n PortainerEndpointTypes.EdgeAgentOnDockerEnvironment,\n PortainerEndpointTypes.AgentOnKubernetesEnvironment,\n PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment,\n ].includes(endpoint.Type);\n }\n\n static isEdgeEndpoint(endpoint) {\n return [PortainerEndpointTypes.EdgeAgentOnDockerEnvironment, PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment].includes(endpoint.Type);\n }\n\n static mapGroupNameToEndpoint(endpoints, groups) {\n for (var i = 0; i < endpoints.length; i++) {\n var endpoint = endpoints[i];\n var group = findAssociatedGroup(endpoint, groups);\n if (group) {\n endpoint.GroupName = group.Name;\n }\n }\n }\n}\n","angular.module('portainer.app').factory('FormHelper', [\n function FormHelperFactory() {\n 'use strict';\n var helper = {};\n\n helper.removeInvalidEnvVars = function (env) {\n for (var i = env.length - 1; i >= 0; i--) {\n var envvar = env[i];\n if (!envvar.name) {\n env.splice(i, 1);\n }\n }\n\n return env;\n };\n\n return helper;\n },\n]);\n","import _ from 'lodash-es';\n\nclass GenericHelper {\n static findDeepAll(obj, target, res = []) {\n if (typeof obj === 'object') {\n _.forEach(obj, (child, key) => {\n if (key === target) res.push(child);\n if (typeof child === 'object') GenericHelper.findDeepAll(child, target, res);\n });\n }\n return res;\n }\n}\n\nexport default GenericHelper;\n","import _ from 'lodash-es';\nimport angular from 'angular';\n\nclass NetworkHelper {\n /* @ngInject */\n constructor(PREDEFINED_NETWORKS) {\n this.PREDEFINED_NETWORKS = PREDEFINED_NETWORKS;\n }\n\n isSystemNetwork(item) {\n return _.includes(this.PREDEFINED_NETWORKS, item.Name);\n }\n}\n\nexport default NetworkHelper;\nangular.module('portainer.app').service('NetworkHelper', NetworkHelper);\n","/**\n * calculates baseHref\n *\n * return [string]\n *\n */\nexport function baseHref() {\n const base = document.getElementById('base');\n return base ? base.getAttribute('href') || '/' : '/';\n}\n","import _ from 'lodash-es';\nimport angular from 'angular';\nimport { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types';\nimport { ResourceControlOwnershipParameters } from '../models/resourceControl/resourceControlOwnershipParameters';\n\nclass ResourceControlHelper {\n /**\n * Transform ResourceControlViewModel to ResourceControlOwnershipParameters\n * @param {int} userId ID of User performing the action\n * @param {ResourceControlViewModel} resourceControl ResourceControl view model\n */\n RCViewModelToOwnershipParameters(userId, resourceControl) {\n if (!resourceControl) {\n return new ResourceControlOwnershipParameters(true);\n }\n let adminOnly = false;\n let publicOnly = false;\n let users = [];\n let teams = [];\n switch (resourceControl.Ownership) {\n case RCO.PUBLIC:\n publicOnly = true;\n break;\n case RCO.PRIVATE:\n users = [userId];\n break;\n case RCO.RESTRICTED:\n users = _.map(resourceControl.UserAccesses, (user) => user.UserId);\n teams = _.map(resourceControl.TeamAccesses, (team) => team.TeamId);\n break;\n default:\n adminOnly = true;\n break;\n }\n return new ResourceControlOwnershipParameters(adminOnly, publicOnly, users, teams);\n }\n\n /**\n * Transform AccessControlFormData to ResourceControlOwnershipParameters\n * @param {int} userId ID of user performing the operation\n * @param {AccessControlFormData} formValues Form data (generated by AccessControlForm)\n * @param {int[]} subResources Sub Resources restricted by the ResourceControl\n */\n RCFormDataToOwnershipParameters(userId, formValues, subResources = []) {\n if (!formValues.AccessControlEnabled) {\n formValues.Ownership = RCO.PUBLIC;\n }\n\n let adminOnly = false;\n let publicOnly = false;\n let users = [];\n let teams = [];\n switch (formValues.Ownership) {\n case RCO.PUBLIC:\n publicOnly = true;\n break;\n case RCO.PRIVATE:\n users.push(userId);\n break;\n case RCO.RESTRICTED:\n users = _.map(formValues.AuthorizedUsers, (user) => user.Id);\n teams = _.map(formValues.AuthorizedTeams, (team) => team.Id);\n break;\n default:\n adminOnly = true;\n break;\n }\n return new ResourceControlOwnershipParameters(adminOnly, publicOnly, users, teams, subResources);\n }\n\n retrieveAuthorizedUsers(resourceControl, users) {\n const authorizedUsers = [];\n _.forEach(resourceControl.UserAccesses, (access) => {\n const user = _.find(users, { Id: access.UserId });\n if (user) {\n authorizedUsers.push(user);\n }\n });\n return authorizedUsers;\n }\n\n retrieveAuthorizedTeams(resourceControl, teams) {\n const authorizedTeams = [];\n _.forEach(resourceControl.TeamAccesses, (access) => {\n const team = _.find(teams, { Id: access.TeamId });\n if (team) {\n authorizedTeams.push(team);\n }\n });\n return authorizedTeams;\n }\n}\n\nexport default ResourceControlHelper;\nangular.module('portainer.app').service('ResourceControlHelper', ResourceControlHelper);\n","import _ from 'lodash-es';\nimport YAML from 'yaml';\nimport GenericHelper from '@/portainer/helpers/genericHelper';\nimport { ExternalStackViewModel } from '@/portainer/models/stack';\n\nangular.module('portainer.app').factory('StackHelper', [\n function StackHelperFactory() {\n 'use strict';\n var helper = {};\n\n helper.getExternalStacksFromContainers = function (containers) {\n return getExternalStacksFromLabel(containers, 'com.docker.compose.project', 2);\n };\n\n helper.getExternalStacksFromServices = function (services) {\n return getExternalStacksFromLabel(services, 'com.docker.stack.namespace', 1);\n };\n\n function getExternalStacksFromLabel(items, label, type) {\n return _.uniqBy(\n items.filter((item) => item.Labels && item.Labels[label]).map((item) => new ExternalStackViewModel(item.Labels[label], type, item.Created)),\n 'Name'\n );\n }\n\n helper.validateYAML = validateYAML;\n\n return helper;\n },\n]);\n\nfunction validateYAML(yaml, containerNames, originalContainersNames = []) {\n let yamlObject;\n\n try {\n yamlObject = YAML.parse(yaml);\n } catch (err) {\n return 'There is an error in the yaml syntax: ' + err;\n }\n\n const names = _.uniq(GenericHelper.findDeepAll(yamlObject, 'container_name'));\n\n const duplicateContainers = _.intersection(_.difference(containerNames, originalContainersNames), names);\n\n if (duplicateContainers.length === 0) {\n return '';\n }\n\n return (\n (duplicateContainers.length === 1 ? 'This container name is' : 'These container names are') +\n ' already used by another container running in this environment: ' +\n _.join(duplicateContainers, ', ') +\n '.'\n );\n}\n\nexport function extractContainerNames(yaml = '') {\n let yamlObject;\n\n try {\n yamlObject = YAML.parse(yaml);\n } catch (err) {\n return [];\n }\n\n return _.uniq(GenericHelper.findDeepAll(yamlObject, 'container_name'));\n}\n","import _ from 'lodash';\n\nexport function idsToTagNames(tags, ids) {\n const filteredTags = _.filter(tags, (tag) => _.includes(ids, tag.ID));\n const tagNames = _.map(filteredTags, 'Name');\n return tagNames;\n}\n","import _ from 'lodash-es';\n\nangular.module('portainer.app').factory('TemplateHelper', [\n function TemplateHelperFactory() {\n 'use strict';\n var helper = {};\n\n helper.getDefaultContainerConfiguration = function () {\n return {\n Env: [],\n OpenStdin: false,\n Tty: false,\n ExposedPorts: {},\n HostConfig: {\n RestartPolicy: {\n Name: 'no',\n },\n PortBindings: {},\n Binds: [],\n Privileged: false,\n ExtraHosts: [],\n },\n Volumes: {},\n Labels: {},\n };\n };\n\n helper.portArrayToPortConfiguration = function (ports) {\n var portConfiguration = {\n bindings: {},\n exposedPorts: {},\n };\n ports.forEach(function (p) {\n if (p.containerPort) {\n var key = p.containerPort + '/' + p.protocol;\n var binding = {};\n if (p.hostPort) {\n binding.HostPort = p.hostPort;\n if (p.hostPort.indexOf(':') > -1) {\n var hostAndPort = p.hostPort.split(':');\n binding.HostIp = hostAndPort[0];\n binding.HostPort = hostAndPort[1];\n }\n }\n portConfiguration.bindings[key] = [binding];\n portConfiguration.exposedPorts[key] = {};\n }\n });\n return portConfiguration;\n };\n\n helper.updateContainerConfigurationWithLabels = function (labelsArray) {\n var labels = {};\n labelsArray.forEach(function (l) {\n if (l.name) {\n if (l.value) {\n labels[l.name] = l.value;\n } else {\n labels[l.name] = '';\n }\n }\n });\n return labels;\n };\n\n helper.EnvToStringArray = function (templateEnvironment) {\n var env = [];\n templateEnvironment.forEach(function (envvar) {\n if (envvar.value || envvar.set) {\n var value = envvar.set ? envvar.set : envvar.value;\n env.push(envvar.name + '=' + value);\n }\n });\n return env;\n };\n\n helper.getConsoleConfiguration = function (interactiveFlag) {\n var consoleConfiguration = {\n openStdin: false,\n tty: false,\n };\n if (interactiveFlag === true) {\n consoleConfiguration.openStdin = true;\n consoleConfiguration.tty = true;\n }\n return consoleConfiguration;\n };\n\n helper.createVolumeBindings = function (volumes, generatedVolumesPile) {\n volumes.forEach(function (volume) {\n if (volume.container) {\n var binding;\n if (volume.type === 'auto') {\n binding = generatedVolumesPile.pop().Id + ':' + volume.container;\n } else if (volume.type !== 'auto' && volume.bind) {\n binding = volume.bind + ':' + volume.container;\n }\n if (volume.readonly) {\n binding += ':ro';\n }\n volume.binding = binding;\n }\n });\n };\n\n helper.determineRequiredGeneratedVolumeCount = function (volumes) {\n var count = 0;\n volumes.forEach(function (volume) {\n if (volume.type === 'auto') {\n ++count;\n }\n });\n return count;\n };\n\n helper.getUniqueCategories = function (templates) {\n var categories = [];\n for (var i = 0; i < templates.length; i++) {\n var template = templates[i];\n categories = categories.concat(template.Categories);\n }\n return _.uniq(categories);\n };\n\n return helper;\n },\n]);\n","angular.module('portainer.app').factory('URLHelper', [\n '$window',\n function URLHelperFactory($window) {\n 'use strict';\n var helper = {};\n\n helper.getParameter = getParameter;\n helper.cleanParameters = cleanParameters;\n\n function getParameter(param) {\n var parameters = extractParameters();\n return parameters[param];\n }\n\n function extractParameters() {\n var queryString = $window.location.search.replace(/.*?\\?/, '').split('&');\n return queryString.reduce(function (acc, keyValStr) {\n var keyVal = keyValStr.split('=');\n var key = keyVal[0];\n var val = keyVal[1];\n acc[key] = val;\n return acc;\n }, {});\n }\n\n function cleanParameters() {\n $window.location.replace($window.location.origin + $window.location.pathname + $window.location.hash);\n }\n\n return helper;\n },\n]);\n","// create UserAccessViewModel from UserViewModel\nexport function UserAccessViewModel(data) {\n this.Id = data.Id;\n this.Name = data.Username;\n this.Type = 'user';\n this.Inherited = false;\n this.Override = false;\n this.Role = { Id: 0, Name: '-' };\n}\n\n// create TeamAccessViewModel from TeamViewModel\nexport function TeamAccessViewModel(data) {\n this.Id = data.Id;\n this.Name = data.Name;\n this.Type = 'team';\n this.Inherited = false;\n this.Override = false;\n this.Role = { Id: 0, Name: '-' };\n}\n","import { RegistryTypes } from './registryTypes';\n\nexport function DockerHubViewModel() {\n this.Id = 0;\n this.Type = RegistryTypes.ANONYMOUS;\n this.Name = 'Docker Hub (anonymous)';\n this.URL = 'docker.io';\n}\n","import { PortainerEndpointConnectionTypes } from 'Portainer/models/endpoint/models';\n\nexport class PortainerEndpointInitFormValues {\n constructor() {\n this.ConnectionType = PortainerEndpointConnectionTypes.KUBERNETES_LOCAL;\n this.Name = '';\n this.URL = '';\n this.TLS = false;\n this.TLSSkipVerify = false;\n this.TLSSKipClientVerify = false;\n this.TLSCACert = null;\n this.TLSCert = null;\n this.TLSKey = null;\n this.AzureApplicationId = '';\n this.AzureTenantId = '';\n this.AzureAuthenticationKey = '';\n }\n}\n","/**\n * JS reference of portainer.go#EndpointType iota\n */\nexport const PortainerEndpointTypes = Object.freeze({\n // DockerEnvironment represents an endpoint connected to a Docker environment\n DockerEnvironment: 1,\n // AgentOnDockerEnvironment represents an endpoint connected to a Portainer agent deployed on a Docker environment\n AgentOnDockerEnvironment: 2,\n // AzureEnvironment represents an endpoint connected to an Azure environment\n AzureEnvironment: 3,\n // EdgeAgentOnDockerEnvironment represents an endpoint connected to an Edge agent deployed on a Docker environment\n EdgeAgentOnDockerEnvironment: 4,\n // KubernetesLocalEnvironment represents an endpoint connected to a local Kubernetes environment\n KubernetesLocalEnvironment: 5,\n // AgentOnKubernetesEnvironment represents an endpoint connected to a Portainer agent deployed on a Kubernetes environment\n AgentOnKubernetesEnvironment: 6,\n // EdgeAgentOnKubernetesEnvironment represents an endpoint connected to an Edge agent deployed on a Kubernetes environment\n EdgeAgentOnKubernetesEnvironment: 7,\n});\n\n/**\n * JS reference of endpoint_create.go#EndpointCreationType iota\n */\nexport const PortainerEndpointCreationTypes = Object.freeze({\n LocalDockerEnvironment: 1,\n AgentEnvironment: 2,\n AzureEnvironment: 3,\n EdgeAgentEnvironment: 4,\n LocalKubernetesEnvironment: 5,\n});\n\nexport const PortainerEndpointConnectionTypes = Object.freeze({\n DOCKER_LOCAL: 1,\n KUBERNETES_LOCAL: 2,\n REMOTE: 3,\n AZURE: 4,\n AGENT: 5,\n EDGE: 6,\n});\n","export function RegistryGitlabProject(project) {\n this.Id = project.id;\n this.Description = project.description;\n this.Name = project.name;\n this.Namespace = project.namespace ? project.namespace.name : '';\n this.PathWithNamespace = project.path_with_namespace;\n this.RegistryEnabled = project.container_registry_enabled;\n}\n","export function EndpointGroupDefaultModel() {\n this.Name = '';\n this.Description = '';\n this.TagIds = [];\n this.AssociatedEndpoints = [];\n}\n\nexport function EndpointGroupModel(data) {\n this.Id = data.Id;\n this.Name = data.Name;\n this.Description = data.Description;\n this.TagIds = data.TagIds;\n this.AuthorizedUsers = data.AuthorizedUsers;\n this.AuthorizedTeams = data.AuthorizedTeams;\n this.UserAccessPolicies = data.UserAccessPolicies;\n this.TeamAccessPolicies = data.TeamAccessPolicies;\n}\n\nexport function EndpointGroupCreateRequest(model, endpoints) {\n this.Name = model.Name;\n this.Description = model.Description;\n this.TagIds = model.TagIds;\n this.AssociatedEndpoints = endpoints;\n}\n\nexport function EndpointGroupUpdateRequest(model, endpoints) {\n this.id = model.Id;\n this.Name = model.Name;\n this.Description = model.Description;\n this.TagIds = model.TagIds;\n this.AssociatedEndpoints = endpoints;\n this.UserAccessPolicies = model.UserAccessPolicies;\n this.TeamAccessPolicies = model.TeamAccessPolicies;\n}\n","import _ from 'lodash-es';\nimport { RegistryTypes } from './registryTypes';\n\nexport function RegistryViewModel(data) {\n this.Id = data.Id;\n this.Type = data.Type;\n this.Name = data.Name;\n this.URL = data.URL;\n this.BaseURL = data.BaseURL;\n this.Authentication = data.Authentication;\n this.Username = data.Username;\n this.Password = data.Password;\n this.RegistryAccesses = data.RegistryAccesses; // map[EndpointID]{UserAccessPolicies, TeamAccessPolicies, NamespaceAccessPolicies}\n this.Checked = false;\n this.Gitlab = data.Gitlab;\n this.Quay = data.Quay;\n this.Ecr = data.Ecr;\n}\n\nexport function RegistryManagementConfigurationDefaultModel(registry) {\n this.Authentication = registry.Authentication;\n this.Username = registry.Username;\n this.Password = '';\n this.TLS = false;\n this.TLSSkipVerify = false;\n this.TLSCACertFile = null;\n this.TLSCertFile = null;\n this.TLSKeyFile = null;\n\n if (registry.Type === RegistryTypes.ECR) {\n this.Region = registry.Ecr.Region;\n this.TLSSkipVerify = true;\n }\n\n if (registry.Type === RegistryTypes.QUAY || registry.Type === RegistryTypes.ECR) {\n this.Authentication = true;\n this.Username = registry.Username;\n this.TLS = true;\n }\n\n if ((registry.Type === RegistryTypes.CUSTOM || registry.Type === RegistryTypes.PROGET || registry.Type === RegistryTypes.AZURE) && registry.Authentication) {\n this.Authentication = true;\n this.Username = registry.Username;\n }\n}\n\nexport function RegistryCreateFormValues() {\n this.Type = RegistryTypes.CUSTOM;\n this.URL = '';\n this.Name = '';\n this.Authentication = false;\n this.Username = '';\n this.Password = '';\n}\n\nexport function RegistryCreateRequest(model) {\n this.Name = model.Name;\n this.Type = model.Type;\n this.URL = _.replace(model.URL, /^https?\\:\\/\\//i, '');\n this.URL = _.replace(this.URL, /\\/$/, '');\n this.Authentication = model.Authentication;\n if (model.Authentication) {\n this.Username = model.Username;\n this.Password = model.Password;\n }\n if (model.Type === RegistryTypes.GITLAB) {\n this.Gitlab = {\n ProjectId: model.Gitlab.ProjectId,\n InstanceURL: model.Gitlab.InstanceURL,\n ProjectPath: model.Gitlab.ProjectPath,\n };\n }\n if (model.Type === RegistryTypes.ECR) {\n this.Ecr = model.Ecr;\n }\n if (model.Type === RegistryTypes.QUAY) {\n this.Quay = {\n useOrganisation: model.Quay.useOrganisation,\n organisationName: model.Quay.organisationName,\n };\n }\n if (model.Type === RegistryTypes.PROGET) {\n this.BaseURL = _.replace(model.BaseURL, /^https?\\:\\/\\//i, '');\n this.BaseURL = _.replace(this.BaseURL, /\\/$/, '');\n }\n}\n","import _ from 'lodash-es';\n\nexport function RegistryRepositoryViewModel(item) {\n if (item.name && item.tags) {\n this.Name = item.name;\n this.TagsCount = _.without(item.tags, null).length;\n } else {\n this.Name = item;\n this.TagsCount = 0;\n }\n}\n\nexport function RegistryRepositoryGitlabViewModel(data) {\n this.Name = data.path;\n this.TagsCount = data.tags.length;\n}\n","export const RegistryTypes = Object.freeze({\n ANONYMOUS: 0, // not backend replicated, only for frontend\n QUAY: 1,\n AZURE: 2,\n CUSTOM: 3,\n GITLAB: 4,\n PROGET: 5,\n DOCKERHUB: 6,\n ECR: 7,\n});\n","/**\n * Payload for resourceControleCreate operation\n * @param {string} resourceId ID of involved Resource\n * @param {ResourceControlResourceType} resourceType Type of involved Resource\n * @param {ResourceControlOwnershipParameters} data Transcient type from view data to payload\n */\nexport function ResourceControlCreatePayload(resourceId, resourceType, data) {\n void data;\n\n this.ResourceID = resourceId;\n this.Type = resourceType;\n this.Public = data.Public;\n this.AdministratorsOnly = data.AdministratorsOnly;\n this.Users = data.Users;\n this.Teams = data.Teams;\n this.SubResourceIDs = data.SubResourceIDs;\n}\n","/**\n * Transcient type from view data to payload\n * @param {bool} adminOnly is ResourceControl restricted to admin only\n * @param {bool} publicOnly is ResourceControl exposed to public\n * @param {[]int} users Authorized UserIDs array\n * @param {[]int} teams Authorized TeamIDs array\n * @param {[]int} subResources subResourceIDs array\n */\nexport function ResourceControlOwnershipParameters(adminOnly = false, publicOnly = false, users = [], teams = [], subResources = []) {\n this.AdministratorsOnly = adminOnly;\n this.Public = publicOnly;\n this.Users = users;\n this.Teams = teams;\n this.SubResourceIDs = subResources;\n}\n","export function ScheduleCreateRequest(model) {\n this.Name = model.Name;\n this.Recurring = model.Recurring;\n this.CronExpression = model.CronExpression;\n this.Endpoints = model.Endpoints;\n this.FileContent = model.FileContent;\n this.File = model.File;\n this.EdgeGroups = model.EdgeGroups;\n}\n\nexport function ScheduleUpdateRequest(model) {\n this.id = model.Id;\n this.Name = model.Name;\n this.Recurring = model.Recurring;\n this.CronExpression = model.CronExpression;\n this.Endpoints = model.Endpoints;\n this.FileContent = model.FileContent;\n this.EdgeGroups = model.EdgeGroups;\n}\n","export function SettingsViewModel(data) {\n this.LogoURL = data.LogoURL;\n this.BlackListedLabels = data.BlackListedLabels;\n this.AuthenticationMethod = data.AuthenticationMethod;\n this.InternalAuthSettings = data.InternalAuthSettings;\n this.LDAPSettings = data.LDAPSettings;\n this.OAuthSettings = new OAuthSettingsViewModel(data.OAuthSettings);\n this.openAMTConfiguration = data.openAMTConfiguration;\n this.fdoConfiguration = data.fdoConfiguration;\n this.SnapshotInterval = data.SnapshotInterval;\n this.TemplatesURL = data.TemplatesURL;\n this.EdgeAgentCheckinInterval = data.EdgeAgentCheckinInterval;\n this.EnableEdgeComputeFeatures = data.EnableEdgeComputeFeatures;\n this.FeatureFlagSettings = data.FeatureFlagSettings;\n this.UserSessionTimeout = data.UserSessionTimeout;\n this.EnableTelemetry = data.EnableTelemetry;\n this.KubeconfigExpiry = data.KubeconfigExpiry;\n this.HelmRepositoryURL = data.HelmRepositoryURL;\n this.TrustOnFirstConnect = data.TrustOnFirstConnect;\n this.EnforceEdgeID = data.EnforceEdgeID;\n this.AgentSecret = data.AgentSecret;\n this.EdgePortainerUrl = data.EdgePortainerUrl;\n}\n\nexport function PublicSettingsViewModel(settings) {\n this.AuthenticationMethod = settings.AuthenticationMethod;\n this.TeamSync = settings.TeamSync;\n this.RequiredPasswordLength = settings.RequiredPasswordLength;\n this.EnableEdgeComputeFeatures = settings.EnableEdgeComputeFeatures;\n this.EnforceEdgeID = settings.EnforceEdgeID;\n this.LogoURL = settings.LogoURL;\n this.OAuthLoginURI = settings.OAuthLoginURI;\n this.EnableTelemetry = settings.EnableTelemetry;\n this.OAuthLogoutURI = settings.OAuthLogoutURI;\n this.KubeconfigExpiry = settings.KubeconfigExpiry;\n this.Features = settings.Features;\n this.Edge = new EdgeSettingsViewModel(settings.Edge);\n this.DefaultRegistry = settings.DefaultRegistry;\n this.IsAMTEnabled = settings.IsAMTEnabled;\n this.IsFDOEnabled = settings.IsFDOEnabled;\n}\n\nexport function InternalAuthSettingsViewModel(data) {\n this.RequiredPasswordLength = data.RequiredPasswordLength;\n}\n\nexport function LDAPSettingsViewModel(data) {\n this.ReaderDN = data.ReaderDN;\n this.Password = data.Password;\n this.URL = data.URL;\n this.SearchSettings = data.SearchSettings;\n this.GroupSearchSettings = data.GroupSearchSettings;\n this.AutoCreateUsers = data.AutoCreateUsers;\n}\n\nexport function LDAPSearchSettings(BaseDN, UsernameAttribute, Filter) {\n this.BaseDN = BaseDN;\n this.UsernameAttribute = UsernameAttribute;\n this.Filter = Filter;\n}\n\nexport function LDAPGroupSearchSettings(GroupBaseDN, GroupAttribute, GroupFilter) {\n this.GroupBaseDN = GroupBaseDN;\n this.GroupAttribute = GroupAttribute;\n this.GroupFilter = GroupFilter;\n}\n\nexport function OAuthSettingsViewModel(data) {\n this.ClientID = data.ClientID;\n this.ClientSecret = data.ClientSecret;\n this.AccessTokenURI = data.AccessTokenURI;\n this.AuthorizationURI = data.AuthorizationURI;\n this.ResourceURI = data.ResourceURI;\n this.RedirectURI = data.RedirectURI;\n this.UserIdentifier = data.UserIdentifier;\n this.Scopes = data.Scopes;\n this.OAuthAutoCreateUsers = data.OAuthAutoCreateUsers;\n this.DefaultTeamID = data.DefaultTeamID;\n this.SSO = data.SSO;\n this.LogoutURI = data.LogoutURI;\n}\n\nexport function EdgeSettingsViewModel(data = {}) {\n this.CheckinInterval = data.CheckinInterval;\n this.PingInterval = data.PingInterval;\n this.SnapshotInterval = data.SnapshotInterval;\n this.CommandInterval = data.CommandInterval;\n}\n","import { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\n\nexport function StackViewModel(data) {\n this.Id = data.Id;\n this.Type = data.Type;\n this.Name = data.Name;\n this.EndpointId = data.EndpointId;\n this.SwarmId = data.SwarmId;\n this.Env = data.Env ? data.Env : [];\n this.Option = data.Option;\n this.IsComposeFormat = data.IsComposeFormat;\n if (data.ResourceControl && data.ResourceControl.Id !== 0) {\n this.ResourceControl = new ResourceControlViewModel(data.ResourceControl);\n }\n this.Status = data.Status;\n this.CreationDate = data.CreationDate;\n this.CreatedBy = data.CreatedBy;\n this.UpdateDate = data.UpdateDate;\n this.UpdatedBy = data.UpdatedBy;\n this.Regular = true;\n this.External = false;\n this.Orphaned = false;\n this.Checked = false;\n this.GitConfig = data.GitConfig;\n this.FromAppTemplate = data.FromAppTemplate;\n this.AdditionalFiles = data.AdditionalFiles;\n this.AutoUpdate = data.AutoUpdate;\n}\n\nexport function ExternalStackViewModel(name, type, creationDate) {\n this.Name = name;\n this.Type = type;\n this.CreationDate = creationDate;\n\n this.Regular = false;\n this.External = true;\n this.Orphaned = false;\n this.Checked = false;\n}\n\nexport function OrphanedStackViewModel(data) {\n this.Id = data.Id;\n this.Type = data.Type;\n this.Name = data.Name;\n this.EndpointId = data.EndpointId;\n this.SwarmId = data.SwarmId;\n this.Env = data.Env ? data.Env : [];\n this.Option = data.Option;\n if (data.ResourceControl && data.ResourceControl.Id !== 0) {\n this.ResourceControl = new ResourceControlViewModel(data.ResourceControl);\n }\n this.Status = data.Status;\n this.CreationDate = data.CreationDate;\n this.CreatedBy = data.CreatedBy;\n this.UpdateDate = data.UpdateDate;\n this.UpdatedBy = data.UpdatedBy;\n\n this.Regular = false;\n this.External = false;\n this.Orphaned = true;\n this.OrphanedRunning = false;\n this.Checked = false;\n}\n","export function StatusViewModel(data) {\n this.Authentication = data.Authentication;\n this.Snapshot = data.Snapshot;\n this.Version = data.Version;\n this.Edition = data.Edition;\n this.InstanceID = data.InstanceID;\n this.DemoEnvironment = data.DemoEnvironment;\n}\n\nexport function StatusVersionViewModel(data) {\n this.UpdateAvailable = data.UpdateAvailable;\n this.LatestVersion = data.LatestVersion;\n}\n","import _ from 'lodash-es';\n\nexport function TagViewModel(data) {\n this.Id = data.ID;\n this.Name = _.escape(data.Name);\n}\n","import _ from 'lodash-es';\n\nexport function TeamViewModel(data) {\n this.Id = data.Id;\n this.Name = _.escape(data.Name);\n this.Checked = false;\n}\n","export function TeamMembershipModel(data) {\n this.Id = data.Id;\n this.UserId = data.UserID;\n this.TeamId = data.TeamID;\n this.Role = data.Role;\n}\n","import _ from 'lodash-es';\nimport { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\n\nexport class TemplateViewModel {\n constructor(data, version) {\n switch (version) {\n case '2':\n this.setTemplatesV2(data);\n break;\n default:\n throw new Error('Unsupported template version');\n }\n }\n\n setTemplatesV2(data) {\n this.Id = data.Id;\n this.Title = data.title;\n this.Type = data.type;\n this.Description = data.description;\n this.AdministratorOnly = data.AdministratorOnly;\n this.Name = data.name;\n this.Note = data.note;\n this.Categories = data.categories ? data.categories : [];\n this.Platform = data.platform ? data.platform : '';\n this.Logo = data.logo;\n this.Repository = data.repository;\n this.Hostname = data.hostname;\n this.RegistryModel = new PorImageRegistryModel();\n this.RegistryModel.Image = data.image;\n this.RegistryModel.Registry.URL = data.registry || '';\n this.Command = data.command ? data.command : '';\n this.Network = data.network ? data.network : '';\n this.Privileged = data.privileged ? data.privileged : false;\n this.Interactive = data.interactive ? data.interactive : false;\n this.RestartPolicy = data.restart_policy ? data.restart_policy : 'always';\n this.Labels = data.labels ? data.labels : [];\n this.Hosts = data.hosts ? data.hosts : [];\n this.Env = templateEnv(data);\n this.Volumes = templateVolumes(data);\n this.Ports = templatePorts(data);\n }\n}\n\nfunction templatePorts(data) {\n var ports = [];\n\n if (data.ports) {\n ports = data.ports.map(function (p) {\n var portAndProtocol = _.split(p, '/');\n var hostAndContainerPort = _.split(portAndProtocol[0], ':');\n\n return {\n hostPort: hostAndContainerPort.length > 1 ? hostAndContainerPort[0] : undefined,\n containerPort: hostAndContainerPort.length > 1 ? hostAndContainerPort[1] : hostAndContainerPort[0],\n protocol: portAndProtocol[1],\n };\n });\n }\n\n return ports;\n}\n\nfunction templateVolumes(data) {\n var volumes = [];\n\n if (data.volumes) {\n volumes = data.volumes.map(function (v) {\n return {\n container: v.container,\n readonly: v.readonly || false,\n type: v.bind ? 'bind' : 'auto',\n bind: v.bind ? v.bind : null,\n };\n });\n }\n\n return volumes;\n}\n\nfunction templateEnv(data) {\n var env = [];\n\n if (data.env) {\n env = data.env.map(function (envvar) {\n envvar.type = 2;\n envvar.value = envvar.default ? envvar.default : '';\n\n if (envvar.preset) {\n envvar.type = 1;\n }\n\n if (envvar.select) {\n envvar.type = 3;\n for (var i = 0; i < envvar.select.length; i++) {\n var allowedValue = envvar.select[i];\n if (allowedValue.default) {\n envvar.value = allowedValue.value;\n break;\n }\n }\n }\n return envvar;\n });\n }\n\n return env;\n}\n","export function UserViewModel(data) {\n this.Id = data.Id;\n this.Username = data.Username;\n this.Role = data.Role;\n this.ThemeSettings = data.ThemeSettings;\n this.EndpointAuthorizations = data.EndpointAuthorizations;\n this.PortainerAuthorizations = data.PortainerAuthorizations;\n if (data.Role === 1) {\n this.RoleName = 'administrator';\n } else {\n this.RoleName = 'user';\n }\n this.AuthenticationMethod = data.AuthenticationMethod;\n this.Checked = false;\n}\n\nexport function UserTokenModel(data) {\n this.id = data.id;\n this.userId = data.userId;\n this.description = data.description;\n this.prefix = data.prefix;\n this.dateCreated = data.dateCreated;\n this.lastUsed = data.lastUsed;\n}\n","export function WebhookViewModel(data) {\n this.Id = data.Id;\n this.Token = data.Token;\n this.ResourceId = data.ResourceID;\n this.EndpointId = data.EndpointID;\n this.WebhookType = data.WebhookType;\n}\n","angular.module('portainer.oauth', ['ngResource']).constant('API_ENDPOINT_OAUTH', 'api/auth/oauth');\n","const autoNgTemplateLoaderTemplate1 = require('./oauth-providers-selector.html');\n\nimport angular from 'angular';\nimport controller from './oauth-provider-selector.controller';\n\nangular.module('portainer.oauth').component('oauthProvidersSelector', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n onChange: '<',\n value: '<',\n },\n controller,\n});\n","import { Edit } from 'lucide-react';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport Microsoft from '@/assets/ico/vendor/microsoft.svg?c';\nimport Google from '@/assets/ico/vendor/google.svg?c';\nimport Github from '@/assets/ico/vendor/github.svg?c';\n\nexport const options = [\n {\n id: 'microsoft',\n icon: Microsoft,\n label: 'Microsoft',\n description: 'Microsoft OAuth provider',\n value: 'microsoft',\n iconType: 'logo',\n feature: FeatureId.HIDE_INTERNAL_AUTH,\n },\n {\n id: 'google',\n icon: Google,\n label: 'Google',\n description: 'Google OAuth provider',\n value: 'google',\n iconType: 'logo',\n feature: FeatureId.HIDE_INTERNAL_AUTH,\n },\n {\n id: 'github',\n icon: Github,\n label: 'Github',\n description: 'Github OAuth provider',\n value: 'github',\n iconType: 'logo',\n feature: FeatureId.HIDE_INTERNAL_AUTH,\n },\n {\n id: 'custom',\n icon: Edit,\n iconType: 'badge',\n label: 'Custom',\n description: 'Custom OAuth provider',\n value: 'custom',\n },\n];\n","import { options } from '@/react/portainer/settings/AuthenticationView/oauth-options';\n\nexport default class OAuthProviderSelectorController {\n constructor() {\n this.options = options;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./oauth-settings.html');\n\nimport angular from 'angular';\nimport controller from './oauth-settings.controller';\n\nangular.module('portainer.oauth').component('oauthSettings', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n settings: '=',\n teams: '<',\n onSaveSettings: '<',\n saveButtonState: '<',\n },\n controller,\n});\n","import { baseHref } from '@/portainer/helpers/pathHelper';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { ModalType } from '@@/modals';\nimport { confirm } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nimport providers, { getProviderByUrl } from './providers';\n\nconst MS_TENANT_ID_PLACEHOLDER = 'TENANT_ID';\n\nexport default class OAuthSettingsController {\n /* @ngInject */\n constructor($scope, $async) {\n Object.assign(this, { $scope, $async });\n\n this.limitedFeature = FeatureId.HIDE_INTERNAL_AUTH;\n this.limitedFeatureClass = 'limited-be';\n\n this.state = {\n provider: 'custom',\n overrideConfiguration: false,\n microsoftTenantID: '',\n };\n\n this.$onInit = this.$onInit.bind(this);\n this.onSelectProvider = this.onSelectProvider.bind(this);\n this.onMicrosoftTenantIDChange = this.onMicrosoftTenantIDChange.bind(this);\n this.useDefaultProviderConfiguration = this.useDefaultProviderConfiguration.bind(this);\n this.updateSSO = this.updateSSO.bind(this);\n this.addTeamMembershipMapping = this.addTeamMembershipMapping.bind(this);\n this.removeTeamMembership = this.removeTeamMembership.bind(this);\n this.onToggleAutoTeamMembership = this.onToggleAutoTeamMembership.bind(this);\n }\n\n onMicrosoftTenantIDChange() {\n const tenantID = this.state.microsoftTenantID || MS_TENANT_ID_PLACEHOLDER;\n\n this.settings.AuthorizationURI = `https://login.microsoftonline.com/${tenantID}/oauth2/v2.0/authorize`;\n this.settings.AccessTokenURI = `https://login.microsoftonline.com/${tenantID}/oauth2/v2.0/token`;\n this.settings.ResourceURI = `https://graph.microsoft.com/v1.0/me`;\n this.settings.LogoutURI = `https://login.microsoftonline.com/${tenantID}/oauth2/v2.0/logout`;\n }\n\n useDefaultProviderConfiguration(providerId) {\n const provider = providers[providerId];\n\n this.state.overrideConfiguration = false;\n\n if (!this.isLimitedToBE || providerId === 'custom') {\n this.settings.AuthorizationURI = provider.authUrl;\n this.settings.AccessTokenURI = provider.accessTokenUrl;\n this.settings.ResourceURI = provider.resourceUrl;\n this.settings.LogoutURI = provider.logoutUrl;\n this.settings.UserIdentifier = provider.userIdentifier;\n this.settings.Scopes = provider.scopes;\n\n if (providerId === 'microsoft' && this.state.microsoftTenantID !== '') {\n this.onMicrosoftTenantIDChange();\n }\n } else {\n this.settings.ClientID = '';\n this.settings.ClientSecret = '';\n }\n }\n\n onSelectProvider(provider) {\n this.state.provider = provider;\n\n this.useDefaultProviderConfiguration(provider);\n }\n\n updateSSO(checked) {\n this.$scope.$evalAsync(() => {\n this.settings.SSO = checked;\n this.settings.HideInternalAuth = false;\n });\n }\n\n async onChangeHideInternalAuth(checked) {\n this.$async(async () => {\n if (this.isLimitedToBE) {\n return;\n }\n\n if (checked) {\n const confirmed = await confirm({\n title: 'Hide internal authentication prompt',\n message: 'By hiding internal authentication prompt, you will only be able to login via SSO. Are you sure?',\n confirmButton: buildConfirmButton('Confirm', 'danger'),\n modalType: ModalType.Warn,\n });\n\n if (!confirmed) {\n return;\n }\n }\n\n this.settings.HideInternalAuth = checked;\n });\n }\n\n onToggleAutoTeamMembership(checked) {\n this.$scope.$evalAsync(() => {\n this.settings.OAuthAutoMapTeamMemberships = checked;\n });\n }\n\n addTeamMembershipMapping() {\n this.settings.TeamMemberships.OAuthClaimMappings.push({ ClaimValRegex: '', Team: this.settings.DefaultTeamID });\n }\n\n removeTeamMembership(index) {\n this.settings.TeamMemberships.OAuthClaimMappings.splice(index, 1);\n }\n\n isOAuthTeamMembershipFormValid() {\n if (this.settings.OAuthAutoMapTeamMemberships && this.settings.TeamMemberships) {\n if (!this.settings.TeamMemberships.OAuthClaimName) {\n return false;\n }\n\n const hasInvalidMapping = this.settings.TeamMemberships.OAuthClaimMappings.some((m) => !(m.ClaimValRegex && m.Team));\n if (hasInvalidMapping) {\n return false;\n }\n }\n return true;\n }\n\n $onInit() {\n this.isLimitedToBE = isLimitedToBE(this.limitedFeature);\n\n if (this.isLimitedToBE) {\n return;\n }\n\n if (this.settings.RedirectURI === '') {\n this.settings.RedirectURI = window.location.origin + baseHref();\n }\n\n if (this.settings.AuthorizationURI) {\n const authUrl = this.settings.AuthorizationURI;\n\n this.state.provider = getProviderByUrl(authUrl);\n if (this.state.provider === 'microsoft') {\n const tenantID = authUrl.match(/login.microsoftonline.com\\/(.*?)\\//)[1];\n if (tenantID !== MS_TENANT_ID_PLACEHOLDER) {\n this.state.microsoftTenantID = tenantID;\n this.onMicrosoftTenantIDChange();\n }\n }\n }\n\n if (this.settings.DefaultTeamID === 0) {\n this.settings.DefaultTeamID = null;\n }\n\n if (this.settings.TeamMemberships == null) {\n this.settings.TeamMemberships = {};\n }\n\n if (this.settings.TeamMemberships.OAuthClaimMappings === null) {\n this.settings.TeamMemberships.OAuthClaimMappings = [];\n }\n }\n}\n","import { baseHref } from '@/portainer/helpers/pathHelper';\n\nexport default {\n microsoft: {\n authUrl: 'https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize',\n accessTokenUrl: 'https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token',\n resourceUrl: 'https://graph.microsoft.com/v1.0/me',\n logoutUrl: `https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/logout`,\n userIdentifier: 'userPrincipalName',\n scopes: 'profile openid',\n },\n google: {\n authUrl: 'https://accounts.google.com/o/oauth2/auth',\n accessTokenUrl: 'https://accounts.google.com/o/oauth2/token',\n resourceUrl: 'https://www.googleapis.com/oauth2/v1/userinfo?alt=json',\n logoutUrl: `https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=${window.location.origin}${baseHref()}#!/auth`,\n userIdentifier: 'email',\n scopes: 'profile email',\n },\n github: {\n authUrl: 'https://github.com/login/oauth/authorize',\n accessTokenUrl: 'https://github.com/login/oauth/access_token',\n resourceUrl: 'https://api.github.com/user',\n logoutUrl: `https://github.com/logout`,\n userIdentifier: 'login',\n scopes: 'id email name',\n },\n custom: { authUrl: '', accessTokenUrl: '', resourceUrl: '', logoutUrl: '', userIdentifier: '', scopes: '' },\n};\n\nexport function getProviderByUrl(providerAuthURL = '') {\n if (providerAuthURL.includes('login.microsoftonline.com')) {\n return 'microsoft';\n }\n\n if (providerAuthURL.includes('accounts.google.com')) {\n return 'google';\n }\n\n if (providerAuthURL.includes('github.com')) {\n return 'github';\n }\n\n return 'custom';\n}\n","angular.module('portainer.oauth').factory('OAuth', [\n '$resource',\n 'API_ENDPOINT_OAUTH',\n function OAuthFactory($resource, API_ENDPOINT_OAUTH) {\n 'use strict';\n return $resource(\n API_ENDPOINT_OAUTH + '/:action',\n {},\n {\n validate: {\n method: 'POST',\n ignoreLoadingBar: true,\n params: {\n action: 'validate',\n },\n },\n }\n );\n },\n]);\n","const autoNgTemplateLoaderTemplate1 = require('./access-viewer-datatable.html');\n\nimport './access-viewer-datatable.css';\n\nexport const accessViewerDatatable = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n tableKey: '@',\n orderBy: '@',\n dataset: '<',\n isAdmin: '<',\n },\n};\n","import _ from 'lodash-es';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nimport { getEnvironments } from '@/react/portainer/environments/environment.service';\nimport AccessViewerPolicyModel from '../../models/access';\n\nexport default class AccessViewerController {\n /* @ngInject */\n constructor($scope, Notifications, RoleService, UserService, GroupService, TeamService, TeamMembershipService, Authentication) {\n this.$scope = $scope;\n this.Notifications = Notifications;\n this.RoleService = RoleService;\n this.UserService = UserService;\n this.GroupService = GroupService;\n this.TeamService = TeamService;\n this.TeamMembershipService = TeamMembershipService;\n this.Authentication = Authentication;\n\n this.limitedFeature = 'rbac-roles';\n this.users = [];\n this.selectedUserId = null;\n\n this.onUserSelect = this.onUserSelect.bind(this);\n }\n\n onUserSelect(selectedUserId) {\n this.$scope.$evalAsync(() => {\n this.userRoles = [];\n this.selectedUserId = selectedUserId;\n\n const userRoles = {};\n const user = this.allUsers.find((user) => user.Id === selectedUserId);\n if (!user) {\n throw new Error('User not found');\n }\n\n const userMemberships = _.filter(this.teamMemberships, { UserId: user.Id });\n\n for (const [, endpoint] of _.entries(this.endpoints)) {\n let role = this.getRoleFromUserEndpointPolicy(user, endpoint);\n if (role) {\n userRoles[endpoint.Id] = role;\n continue;\n }\n\n role = this.getRoleFromUserEndpointGroupPolicy(user, endpoint);\n if (role) {\n userRoles[endpoint.Id] = role;\n continue;\n }\n\n role = this.getRoleFromTeamEndpointPolicies(userMemberships, endpoint);\n if (role) {\n userRoles[endpoint.Id] = role;\n continue;\n }\n\n role = this.getRoleFromTeamEndpointGroupPolicies(userMemberships, endpoint);\n if (role) {\n userRoles[endpoint.Id] = role;\n }\n }\n\n this.userRoles = _.values(userRoles);\n });\n }\n\n findLowestRole(policies) {\n return _.first(_.orderBy(policies, 'RolePriority', 'desc'));\n }\n\n getRoleFromUserEndpointPolicy(user, endpoint) {\n const policyRoles = [];\n const policy = (endpoint.UserAccessPolicies || {})[user.Id];\n if (policy) {\n const accessPolicy = new AccessViewerPolicyModel(policy, endpoint, this.roles, null, null);\n policyRoles.push(accessPolicy);\n }\n return this.findLowestRole(policyRoles);\n }\n\n getRoleFromUserEndpointGroupPolicy(user, endpoint) {\n const policyRoles = [];\n const policy = this.groupUserAccessPolicies[endpoint.GroupId][user.Id];\n if (policy) {\n const accessPolicy = new AccessViewerPolicyModel(policy, endpoint, this.roles, this.groups[endpoint.GroupId], null);\n policyRoles.push(accessPolicy);\n }\n return this.findLowestRole(policyRoles);\n }\n\n getRoleFromTeamEndpointPolicies(memberships, endpoint) {\n const policyRoles = [];\n for (const membership of memberships) {\n const policy = (endpoint.TeamAccessPolicies || {})[membership.TeamId];\n if (policy) {\n const accessPolicy = new AccessViewerPolicyModel(policy, endpoint, this.roles, null, this.teams[membership.TeamId]);\n policyRoles.push(accessPolicy);\n }\n }\n return this.findLowestRole(policyRoles);\n }\n\n getRoleFromTeamEndpointGroupPolicies(memberships, endpoint) {\n const policyRoles = [];\n for (const membership of memberships) {\n const policy = this.groupTeamAccessPolicies[endpoint.GroupId][membership.TeamId];\n if (policy) {\n const accessPolicy = new AccessViewerPolicyModel(policy, endpoint, this.roles, this.groups[endpoint.GroupId], this.teams[membership.TeamId]);\n policyRoles.push(accessPolicy);\n }\n }\n return this.findLowestRole(policyRoles);\n }\n\n // for admin, returns all users\n // for team leader, only return all his/her team member users\n async teamMemberUsers(users, teamMemberships) {\n if (this.isAdmin) {\n return users;\n }\n\n const filteredUsers = [];\n const userId = this.Authentication.getUserDetails().ID;\n const leadingTeams = await this.UserService.userLeadingTeams(userId);\n\n const isMember = (userId, teamId) => {\n return !!_.find(teamMemberships, { UserId: userId, TeamId: teamId });\n };\n\n for (const user of users) {\n for (const leadingTeam of leadingTeams) {\n if (isMember(user.Id, leadingTeam.Id)) {\n filteredUsers.push(user);\n break;\n }\n }\n }\n\n return filteredUsers;\n }\n\n async $onInit() {\n try {\n const limitedToBE = isLimitedToBE(this.limitedFeature);\n\n if (limitedToBE) {\n return;\n }\n\n this.isAdmin = this.Authentication.isAdmin();\n this.allUsers = await this.UserService.users();\n this.endpoints = _.keyBy((await getEnvironments()).value, 'Id');\n const groups = await this.GroupService.groups();\n this.groupUserAccessPolicies = {};\n this.groupTeamAccessPolicies = {};\n _.forEach(groups, (group) => {\n this.groupUserAccessPolicies[group.Id] = group.UserAccessPolicies;\n this.groupTeamAccessPolicies[group.Id] = group.TeamAccessPolicies;\n });\n this.groups = _.keyBy(groups, 'Id');\n this.roles = _.keyBy(await this.RoleService.roles(), 'Id');\n this.teams = _.keyBy(await this.TeamService.teams(), 'Id');\n this.teamMemberships = await this.TeamMembershipService.memberships();\n const teamUsers = await this.teamMemberUsers(this.allUsers, this.teamMemberships);\n this.users = teamUsers.map((user) => ({ label: user.Username, value: user.Id }));\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve accesses');\n }\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./access-viewer.html');\n\nimport controller from './access-viewer.controller';\n\nexport const accessViewer = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","const autoNgTemplateLoaderTemplate1 = require('./roles-datatable.html');\n\nimport controller from './roles-datatable.controller';\nimport './roles-datatable.css';\n\nexport const rolesDatatable = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n titleText: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n },\n};\n","import angular from 'angular';\nimport { RoleTypes } from '../../models/role';\n\nexport default class RolesDatatableController {\n /* @ngInject */\n constructor($controller, $scope) {\n this.limitedFeature = 'rbac-roles';\n\n angular.extend(this, $controller('GenericDatatableController', { $scope }));\n }\n\n isDefaultItem(item) {\n return item.ID === RoleTypes.STANDARD;\n }\n}\n","import { rolesView } from './views/roles';\nimport { accessViewer } from './components/access-viewer';\nimport { accessViewerDatatable } from './components/access-viewer/access-viewer-datatable';\nimport { rolesDatatable } from './components/roles-datatable';\n\nimport { RoleService } from './services/role.service';\nimport { RolesFactory } from './services/role.rest';\n\nangular\n .module('portainer.rbac', ['ngResource'])\n .constant('API_ENDPOINT_ROLES', 'api/roles')\n .component('accessViewer', accessViewer)\n .component('accessViewerDatatable', accessViewerDatatable)\n .component('rolesDatatable', rolesDatatable)\n .component('rolesView', rolesView)\n .factory('RoleService', RoleService)\n .factory('Roles', RolesFactory)\n .config(config);\n\n/* @ngInject */\nfunction config($stateRegistryProvider) {\n const roles = {\n name: 'portainer.roles',\n url: '/roles',\n views: {\n 'content@': {\n component: 'rolesView',\n },\n },\n };\n\n $stateRegistryProvider.register(roles);\n}\n","export default function AccessViewerPolicyModel(policy, endpoint, roles, group, team) {\n this.EndpointId = endpoint.Id;\n this.EndpointName = endpoint.Name;\n this.RoleId = policy.RoleId;\n this.RoleName = roles[policy.RoleId].Name;\n this.RolePriority = roles[policy.RoleId].Priority;\n if (group) {\n this.GroupId = group.Id;\n this.GroupName = group.Name;\n }\n if (team) {\n this.TeamId = team.Id;\n this.TeamName = team.Name;\n }\n this.AccessLocation = group ? 'environment group' : 'environment';\n}\n","export function RoleViewModel(id, name, description, authorizations) {\n this.ID = id;\n this.Name = name;\n this.Description = description;\n this.Authorizations = authorizations;\n}\n\nexport const RoleTypes = Object.freeze({\n ENDPOINT_ADMIN: 1,\n HELPDESK: 2,\n STANDARD: 3,\n READ_ONLY: 4,\n OPERATOR: 5,\n});\n","/* @ngInject */\nexport function RolesFactory($resource, API_ENDPOINT_ROLES) {\n return $resource(\n API_ENDPOINT_ROLES + '/:id',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true },\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'PUT', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n}\n","import { RoleViewModel, RoleTypes } from '../models/role';\n\nexport function RoleService() {\n const rolesData = [\n new RoleViewModel(RoleTypes.ENDPOINT_ADMIN, 'Environment administrator', 'Full control of all resources in an environment', []),\n new RoleViewModel(RoleTypes.OPERATOR, 'Operator', 'Operational Control of all existing resources in an environment', []),\n new RoleViewModel(RoleTypes.HELPDESK, 'Helpdesk', 'Read-only access of all resources in an environment', []),\n new RoleViewModel(RoleTypes.READ_ONLY, 'Read-only user', 'Read-only access of assigned resources in an environment', []),\n new RoleViewModel(RoleTypes.STANDARD, 'Standard user', 'Full control of assigned resources in an environment', []),\n ];\n\n return {\n roles,\n };\n\n function roles() {\n return rolesData;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./roles.html');\n\nimport controller from './roles.controller';\n\nexport const rolesView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","import _ from 'lodash-es';\n\nexport default class RolesController {\n /* @ngInject */\n constructor(Notifications, RoleService) {\n this.Notifications = Notifications;\n this.RoleService = RoleService;\n }\n\n async $onInit() {\n this.roles = [];\n\n try {\n this.roles = await this.RoleService.roles();\n this.roles = _.orderBy(this.roles, 'Priority', 'asc');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve roles');\n }\n }\n}\n","angular.module('portainer.app').factory('Auth', [\n '$resource',\n 'API_ENDPOINT_AUTH',\n function AuthFactory($resource, API_ENDPOINT_AUTH) {\n 'use strict';\n return $resource(\n API_ENDPOINT_AUTH + '/:action',\n {},\n {\n login: { method: 'POST', ignoreLoadingBar: true },\n logout: { method: 'POST', params: { action: 'logout' }, ignoreLoadingBar: true },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('Backup', [\n '$resource',\n 'API_ENDPOINT_BACKUP',\n function BackupFactory($resource, API_ENDPOINT_BACKUP) {\n 'use strict';\n return $resource(\n API_ENDPOINT_BACKUP + '/:subResource/:action',\n {},\n {\n download: {\n method: 'POST',\n responseType: 'arraybuffer',\n ignoreLoadingBar: true,\n transformResponse: (data, headersGetter, status) => {\n if (status !== 200) {\n const decoder = new TextDecoder('utf-8');\n const str = decoder.decode(data);\n return JSON.parse(str);\n }\n\n return {\n file: data,\n name: headersGetter('Content-Disposition').replace('attachment; filename=', ''),\n };\n },\n },\n getS3Settings: { method: 'GET', params: { subResource: 's3', action: 'settings' } },\n saveS3Settings: { method: 'POST', params: { subResource: 's3', action: 'settings' } },\n exportS3Backup: { method: 'POST', params: { subResource: 's3', action: 'execute' } },\n restoreS3Backup: { method: 'POST', params: { subResource: 's3', action: 'restore' } },\n }\n );\n },\n]);\n","import angular from 'angular';\n\nangular.module('portainer.app').factory('CustomTemplates', CustomTemplatesFactory);\n\nfunction CustomTemplatesFactory($resource, API_ENDPOINT_CUSTOM_TEMPLATES) {\n return $resource(\n API_ENDPOINT_CUSTOM_TEMPLATES + '/:id/:action',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true, params: { id: 'create', action: '@method' } },\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'PUT', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n file: { method: 'GET', params: { id: '@id', action: 'file' } },\n gitFetch: { method: 'PUT', params: { id: '@id', action: 'git_fetch' } },\n }\n );\n}\n","import getEndpointsTotalCount from './transform/getEndpointsTotalCount';\n\nangular.module('portainer.app').factory('Endpoints', [\n '$resource',\n 'API_ENDPOINT_ENDPOINTS',\n function EndpointsFactory($resource, API_ENDPOINT_ENDPOINTS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINTS + '/:id/:action',\n {},\n {\n query: {\n method: 'GET',\n params: { start: '@start', limit: '@limit', search: '@search', groupId: '@groupId' },\n transformResponse: getEndpointsTotalCount,\n },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'PUT', params: { id: '@id' } },\n disassociate: { method: 'DELETE', params: { id: '@id', action: 'association' } },\n updateAccess: { method: 'PUT', params: { id: '@id', action: 'access' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n snapshots: { method: 'POST', params: { action: 'snapshot' } },\n snapshot: { method: 'POST', params: { id: '@id', action: 'snapshot' } },\n status: { method: 'GET', params: { id: '@id', action: 'status' } },\n updateSecuritySettings: { method: 'PUT', params: { id: '@id', action: 'settings' } },\n dockerhubLimits: {\n method: 'GET',\n url: `${API_ENDPOINT_ENDPOINTS}/:id/dockerhub/:registryId`,\n },\n registries: {\n method: 'GET',\n url: `${API_ENDPOINT_ENDPOINTS}/:id/registries`,\n params: { id: '@id', namespace: '@namespace' },\n isArray: true,\n },\n updateRegistryAccess: {\n method: 'PUT',\n url: `${API_ENDPOINT_ENDPOINTS}/:id/registries/:registryId`,\n params: { id: '@id', registryId: '@registryId' },\n },\n }\n );\n },\n]);\n","import gitlabResponseGetLink from './transform/gitlabResponseGetLink';\n\nangular.module('portainer.app').factory('Gitlab', [\n '$resource',\n 'API_ENDPOINT_REGISTRIES',\n function GitlabFactory($resource, API_ENDPOINT_REGISTRIES) {\n 'use strict';\n return function (env) {\n const headers = {};\n if (env) {\n headers['Private-Token'] = env.token;\n headers['X-Gitlab-Domain'] = env.url;\n }\n\n const baseUrl = API_ENDPOINT_REGISTRIES + '/:id/proxies/gitlab/api/v4/projects';\n\n return $resource(\n baseUrl,\n { id: '@id' },\n {\n projects: {\n method: 'GET',\n params: { membership: 'true' },\n transformResponse: gitlabResponseGetLink,\n headers: headers,\n },\n repositories: {\n method: 'GET',\n url: baseUrl + '/:projectId/registry/repositories',\n params: { tags: true },\n headers: headers,\n transformResponse: gitlabResponseGetLink,\n },\n }\n );\n };\n },\n]);\n","angular.module('portainer.app').factory('EndpointGroups', [\n '$resource',\n 'API_ENDPOINT_ENDPOINT_GROUPS',\n function EndpointGroupsFactory($resource, API_ENDPOINT_ENDPOINT_GROUPS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_ENDPOINT_GROUPS + '/:id/:action',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true },\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'PUT', params: { id: '@id' } },\n updateAccess: { method: 'PUT', params: { id: '@id', action: 'access' } },\n addEndpoint: { method: 'PUT', params: { id: '@id', action: '@action' } },\n removeEndpoint: { method: 'DELETE', params: { id: '@id', action: '@action' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('Registries', [\n '$resource',\n 'API_ENDPOINT_REGISTRIES',\n function RegistriesFactory($resource, API_ENDPOINT_REGISTRIES) {\n 'use strict';\n return $resource(\n API_ENDPOINT_REGISTRIES + '/:id/:action',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true },\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id', action: '', endpointId: '@endpointId' } },\n update: { method: 'PUT', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n configure: { method: 'POST', params: { id: '@id', action: 'configure' } },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('ResourceControl', [\n '$resource',\n 'API_ENDPOINT_RESOURCE_CONTROLS',\n function ResourceControlFactory($resource, API_ENDPOINT_RESOURCE_CONTROLS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_RESOURCE_CONTROLS + '/:id',\n {},\n {\n update: { method: 'PUT', params: { id: '@id' } },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('Settings', [\n '$resource',\n 'API_ENDPOINT_SETTINGS',\n function SettingsFactory($resource, API_ENDPOINT_SETTINGS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_SETTINGS + '/:subResource/:action',\n {},\n {\n get: { method: 'GET' },\n update: { method: 'PUT', ignoreLoadingBar: true },\n publicSettings: { method: 'GET', params: { subResource: 'public' }, ignoreLoadingBar: true },\n checkLDAPConnectivity: { method: 'PUT', params: { subResource: 'authentication', action: 'checkLDAP' } },\n }\n );\n },\n]);\n","import angular from 'angular';\n\nconst API_ENDPOINT_SSL = 'api/ssl';\n\nangular.module('portainer.app').factory('SSL', SSLFactory);\n\n/* @ngInject */\nfunction SSLFactory($resource) {\n return $resource(\n API_ENDPOINT_SSL,\n {},\n {\n get: { method: 'GET' },\n upload: { method: 'PUT' },\n }\n );\n}\n","import angular from 'angular';\n\nangular.module('portainer.app').factory('Stack', StackFactory);\n\n/* @ngInject */\nfunction StackFactory($resource, API_ENDPOINT_STACKS) {\n return $resource(\n API_ENDPOINT_STACKS + '/:id/:action/:subaction',\n {},\n {\n get: { method: 'GET', params: { id: '@id' } },\n query: { method: 'GET', isArray: true },\n create: { method: 'POST', ignoreLoadingBar: true, params: { id: 'create', subaction: '@method', action: '@type' } },\n update: { method: 'PUT', params: { id: '@id' }, ignoreLoadingBar: true },\n associate: { method: 'PUT', params: { id: '@id', swarmId: '@swarmId', endpointId: '@endpointId', orphanedRunning: '@orphanedRunning', action: 'associate' } },\n remove: { method: 'DELETE', params: { id: '@id', external: '@external', endpointId: '@endpointId' } },\n getStackFile: { method: 'GET', params: { id: '@id', action: 'file' } },\n migrate: { method: 'POST', params: { id: '@id', action: 'migrate', endpointId: '@endpointId' }, ignoreLoadingBar: true },\n start: { method: 'POST', params: { id: '@id', action: 'start', endpointId: '@endpointId' } },\n stop: { method: 'POST', params: { id: '@id', action: 'stop', endpointId: '@endpointId' } },\n updateGit: { method: 'PUT', params: { id: '@id', action: 'git', subaction: 'redeploy' } },\n updateGitStackSettings: { method: 'POST', params: { id: '@id', action: 'git' }, ignoreLoadingBar: true },\n }\n );\n}\n","angular.module('portainer.app').factory('Support', [\n '$resource',\n 'API_ENDPOINT_SUPPORT',\n function SupportFactory($resource, API_ENDPOINT_SUPPORT) {\n 'use strict';\n return $resource(\n API_ENDPOINT_SUPPORT,\n {},\n {\n get: { method: 'GET', isArray: true },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('Tags', [\n '$resource',\n 'API_ENDPOINT_TAGS',\n function TagsFactory($resource, API_ENDPOINT_TAGS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_TAGS + '/:id',\n {},\n {\n create: { method: 'POST' },\n query: { method: 'GET', isArray: true },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('Teams', [\n '$resource',\n 'API_ENDPOINT_TEAMS',\n function TeamsFactory($resource, API_ENDPOINT_TEAMS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_TEAMS + '/:id/:entity/:entityId',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true },\n query: { method: 'GET', isArray: true, params: { environmentId: '@environmentId' } },\n get: { method: 'GET', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n queryMemberships: { method: 'GET', isArray: true, params: { id: '@id', entity: 'memberships' } },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('TeamMemberships', [\n '$resource',\n 'API_ENDPOINT_TEAM_MEMBERSHIPS',\n function TeamMembershipsFactory($resource, API_ENDPOINT_TEAM_MEMBERSHIPS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_TEAM_MEMBERSHIPS + '/:id/:action',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true },\n query: { method: 'GET', isArray: true },\n update: { method: 'PUT', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('Templates', [\n '$resource',\n 'API_ENDPOINT_TEMPLATES',\n function TemplatesFactory($resource, API_ENDPOINT_TEMPLATES) {\n return $resource(\n API_ENDPOINT_TEMPLATES + '/:action',\n {},\n {\n query: { method: 'GET' },\n file: { method: 'POST', params: { action: 'file' } },\n }\n );\n },\n]);\n","export default function getEndpointsTotalCount(data, headers) {\n const response = {};\n response.value = angular.fromJson(data);\n response.totalCount = headers('X-Total-Count');\n return response;\n}\n","export default function gitlabResponseGetLink(data, headers) {\n let response = {};\n try {\n response.data = angular.fromJson(data);\n response.next = headers('X-Next-Page');\n } catch (error) {\n response = data;\n }\n return response;\n}\n","angular.module('portainer.app').factory('Users', [\n '$resource',\n 'API_ENDPOINT_USERS',\n function UsersFactory($resource, API_ENDPOINT_USERS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_USERS + '/:id/:entity/:entityId',\n {},\n {\n create: { method: 'POST', ignoreLoadingBar: true },\n query: { method: 'GET', isArray: true },\n get: { method: 'GET', params: { id: '@id' } },\n update: { method: 'PUT', params: { id: '@id' }, ignoreLoadingBar: true },\n updatePassword: { method: 'PUT', params: { id: '@id', entity: 'passwd' } },\n updateTheme: { method: 'PUT', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n queryMemberships: { method: 'GET', isArray: true, params: { id: '@id', entity: 'memberships' } },\n checkAdminUser: { method: 'GET', params: { id: 'admin', entity: 'check' }, isArray: true, ignoreLoadingBar: true },\n initAdminUser: { method: 'POST', params: { id: 'admin', entity: 'init' }, ignoreLoadingBar: true },\n createAccessToken: { url: `${API_ENDPOINT_USERS}/:id/tokens`, method: 'POST', params: { id: '@id' }, ignoreLoadingBar: true },\n getAccessTokens: { method: 'GET', params: { id: '@id', entity: 'tokens' }, isArray: true },\n deleteAccessToken: { url: `${API_ENDPOINT_USERS}/:id/tokens/:tokenId`, method: 'DELETE', params: { id: '@id', entityId: '@tokenId' } },\n }\n );\n },\n]);\n","angular.module('portainer.app').factory('Webhooks', [\n '$resource',\n 'API_ENDPOINT_WEBHOOKS',\n function WebhooksFactory($resource, API_ENDPOINT_WEBHOOKS) {\n 'use strict';\n return $resource(\n API_ENDPOINT_WEBHOOKS + '/:id',\n {},\n {\n query: { method: 'GET', isArray: true },\n create: { method: 'POST' },\n update: { method: 'PUT', params: { id: '@id' } },\n remove: { method: 'DELETE', params: { id: '@id' } },\n }\n );\n },\n]);\n","import _ from 'lodash-es';\n\n/**\n *\n * @param {any[]} promises\n */\nexport default async function $allSettled(promises) {\n const res = {\n fulfilled: [],\n rejected: [],\n };\n const data = await Promise.allSettled(promises);\n res.fulfilled = _.reduce(\n data,\n (acc, item) => {\n if (item.status === 'fulfilled') {\n acc.push(item.value);\n }\n return acc;\n },\n []\n );\n res.rejected = _.reduce(\n data,\n (acc, item) => {\n if (item.status === 'rejected') {\n acc.push(item.reason);\n }\n return acc;\n },\n []\n );\n return res;\n}\n","import _ from 'lodash-es';\nimport { UserAccessViewModel } from '../../models/access';\nimport { TeamAccessViewModel } from '../../models/access';\n\nangular.module('portainer.app').factory('AccessService', [\n '$q',\n '$async',\n 'UserService',\n 'TeamService',\n function AccessServiceFactory($q, $async, UserService, TeamService) {\n 'use strict';\n return {\n accesses,\n generateAccessPolicies,\n };\n\n function _mapAccessData(accesses, authorizedPolicies, inheritedPolicies) {\n var availableAccesses = [];\n var authorizedAccesses = [];\n\n for (var i = 0; i < accesses.length; i++) {\n const access = accesses[i];\n\n const authorized = authorizedPolicies && authorizedPolicies[access.Id];\n const inherited = inheritedPolicies && inheritedPolicies[access.Id];\n\n if (authorized && inherited) {\n access.Override = true;\n authorizedAccesses.push(access);\n } else if (authorized && !inherited) {\n authorizedAccesses.push(access);\n } else if (!authorized && inherited) {\n access.Inherited = true;\n authorizedAccesses.push(access);\n availableAccesses.push(access);\n } else {\n availableAccesses.push(access);\n }\n }\n\n return {\n available: availableAccesses,\n authorized: authorizedAccesses,\n };\n }\n\n function getAccesses(authorizedUserPolicies, authorizedTeamPolicies, inheritedUserPolicies, inheritedTeamPolicies) {\n var deferred = $q.defer();\n\n $q.all({\n users: UserService.users(false),\n teams: TeamService.teams(),\n })\n .then(function success(data) {\n var userAccesses = data.users.map(function (user) {\n return new UserAccessViewModel(user);\n });\n var teamAccesses = data.teams.map(function (team) {\n return new TeamAccessViewModel(team);\n });\n\n var userAccessData = _mapAccessData(userAccesses, authorizedUserPolicies, inheritedUserPolicies);\n var teamAccessData = _mapAccessData(teamAccesses, authorizedTeamPolicies, inheritedTeamPolicies);\n\n var accessData = {\n availableUsersAndTeams: userAccessData.available.concat(teamAccessData.available),\n authorizedUsersAndTeams: userAccessData.authorized.concat(teamAccessData.authorized),\n };\n\n deferred.resolve(accessData);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve users and teams', err: err });\n });\n\n return deferred.promise;\n }\n\n async function accessesAsync(entity, parent) {\n if (!entity) {\n throw new Error('Unable to retrieve accesses');\n }\n if (!entity.UserAccessPolicies) {\n entity.UserAccessPolicies = {};\n }\n if (!entity.TeamAccessPolicies) {\n entity.TeamAccessPolicies = {};\n }\n if (parent && !parent.UserAccessPolicies) {\n parent.UserAccessPolicies = {};\n }\n if (parent && !parent.TeamAccessPolicies) {\n parent.TeamAccessPolicies = {};\n }\n return await getAccesses(entity.UserAccessPolicies, entity.TeamAccessPolicies, parent ? parent.UserAccessPolicies : {}, parent ? parent.TeamAccessPolicies : {});\n }\n\n function accesses(entity, parent) {\n return $async(accessesAsync, entity, parent);\n }\n\n function generateAccessPolicies(userAccessPolicies, teamAccessPolicies, selectedUserAccesses, selectedTeamAccesses, selectedRoleId) {\n const newUserPolicies = _.clone(userAccessPolicies);\n const newTeamPolicies = _.clone(teamAccessPolicies);\n\n _.forEach(selectedUserAccesses, (access) => (newUserPolicies[access.Id] = { RoleId: selectedRoleId ? selectedRoleId : access.Role.Id }));\n _.forEach(selectedTeamAccesses, (access) => (newTeamPolicies[access.Id] = { RoleId: selectedRoleId ? selectedRoleId : access.Role.Id }));\n\n const accessPolicies = {\n userAccessPolicies: newUserPolicies,\n teamAccessPolicies: newTeamPolicies,\n };\n\n return accessPolicies;\n }\n },\n]);\n","angular.module('portainer.app').factory('BackupService', [\n '$q',\n '$async',\n 'Backup',\n 'FileUploadService',\n function BackupServiceFactory($q, $async, Backup, FileUploadService) {\n 'use strict';\n const service = {};\n\n service.downloadBackup = function (payload) {\n return Backup.download({}, payload).$promise;\n };\n\n service.uploadBackup = function (file, password) {\n return FileUploadService.uploadBackup(file, password);\n };\n\n service.getS3Settings = function () {\n var deferred = $q.defer();\n\n Backup.getS3Settings()\n .$promise.then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve backup S3 settings', err: err });\n });\n\n return deferred.promise;\n };\n\n service.saveS3Settings = function (payload) {\n var deferred = $q.defer();\n\n Backup.saveS3Settings({}, payload)\n .$promise.then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to save backup S3 settings', err: err });\n });\n\n return deferred.promise;\n };\n\n service.exportBackup = function (payload) {\n var deferred = $q.defer();\n\n Backup.exportS3Backup({}, payload)\n .$promise.then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to export backup', err: err });\n });\n\n return deferred.promise;\n };\n\n service.restoreFromS3 = function (payload) {\n var deferred = $q.defer();\n\n Backup.restoreS3Backup({}, payload)\n .$promise.then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to restore backup from S3', err: err });\n });\n\n return deferred.promise;\n };\n\n return service;\n },\n]);\n","import angular from 'angular';\nimport PortainerError from 'Portainer/error';\n\nangular.module('portainer.app').factory('CustomTemplateService', CustomTemplateServiceFactory);\n\n/* @ngInject */\nfunction CustomTemplateServiceFactory($sanitize, CustomTemplates, FileUploadService) {\n var service = {};\n\n service.customTemplate = function customTemplate(id) {\n return CustomTemplates.get({ id }).$promise;\n };\n\n service.customTemplates = async function customTemplates(type) {\n const templates = await CustomTemplates.query({ type }).$promise;\n templates.forEach((template) => {\n if (template.Note) {\n template.Note = $('<p>').html($sanitize(template.Note)).find('img').remove().end().html();\n }\n });\n return templates;\n };\n\n service.remove = function remove(id) {\n return CustomTemplates.remove({ id }).$promise;\n };\n\n service.customTemplateFile = async function customTemplateFile(id, remote = false) {\n try {\n const { FileContent } = remote ? await CustomTemplates.gitFetch({ id }).$promise : await CustomTemplates.file({ id }).$promise;\n return FileContent;\n } catch (err) {\n throw new PortainerError('Unable to retrieve custom template content', err);\n }\n };\n\n service.updateCustomTemplate = async function updateCustomTemplate(id, customTemplate) {\n return CustomTemplates.update({ id }, customTemplate).$promise;\n };\n\n service.createCustomTemplateFromFileContent = async function createCustomTemplateFromFileContent(payload) {\n try {\n return await CustomTemplates.create({}, { method: 'string', ...payload }).$promise;\n } catch (err) {\n throw { msg: 'Unable to create the customTemplate', err };\n }\n };\n\n service.createCustomTemplateFromFileUpload = async function createCustomTemplateFromFileUpload(payload) {\n try {\n const { data } = await FileUploadService.createCustomTemplate(payload);\n return data;\n } catch (err) {\n throw { msg: 'Unable to create the customTemplate', err };\n }\n };\n\n service.createCustomTemplateFromGitRepository = async function createCustomTemplateFromGitRepository(payload) {\n try {\n return await CustomTemplates.create({}, { method: 'repository', ...payload }).$promise;\n } catch (err) {\n throw { msg: 'Unable to create the customTemplate', err };\n }\n };\n\n return service;\n}\n","import { PortainerEndpointTypes } from '@/portainer/models/endpoint/models';\nimport { isLocalEnvironment } from '@/react/portainer/environments/utils';\n\nangular.module('portainer.app').factory('DockerHubService', DockerHubService);\n\n/* @ngInject */\nfunction DockerHubService(Endpoints, AgentDockerhub) {\n return {\n checkRateLimits,\n };\n\n function checkRateLimits(endpoint, registryId) {\n if (isLocalEnvironment(endpoint)) {\n return Endpoints.dockerhubLimits({ id: endpoint.Id, registryId }).$promise;\n }\n\n switch (endpoint.Type) {\n case PortainerEndpointTypes.AgentOnDockerEnvironment:\n case PortainerEndpointTypes.EdgeAgentOnDockerEnvironment:\n return AgentDockerhub.limits({ endpointId: endpoint.Id, endpointType: 'docker', registryId }).$promise;\n\n case PortainerEndpointTypes.AgentOnKubernetesEnvironment:\n case PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment:\n return AgentDockerhub.limits({ endpointId: endpoint.Id, endpointType: 'kubernetes', registryId }).$promise;\n }\n }\n}\n","import { PortainerEndpointCreationTypes } from 'Portainer/models/endpoint/models';\n\nangular.module('portainer.app').factory('EndpointService', [\n '$q',\n 'Endpoints',\n 'FileUploadService',\n function EndpointServiceFactory($q, Endpoints, FileUploadService) {\n 'use strict';\n var service = {\n updateSecuritySettings,\n registries,\n updateRegistryAccess,\n };\n\n service.endpoint = function (endpointID) {\n return Endpoints.get({ id: endpointID }).$promise;\n };\n\n service.snapshotEndpoints = function () {\n return Endpoints.snapshots({}, {}).$promise;\n };\n\n service.snapshotEndpoint = function (endpointID) {\n return Endpoints.snapshot({ id: endpointID }, {}).$promise;\n };\n\n service.updateAccess = function (id, userAccessPolicies, teamAccessPolicies) {\n return Endpoints.updateAccess({ id: id }, { UserAccessPolicies: userAccessPolicies, TeamAccessPolicies: teamAccessPolicies }).$promise;\n };\n\n service.disassociateEndpoint = function (endpointID) {\n return Endpoints.disassociate({ id: endpointID }).$promise;\n };\n\n service.updateEndpoint = function (id, payload) {\n var deferred = $q.defer();\n FileUploadService.uploadTLSFilesForEndpoint(id, payload.TLSCACert, payload.TLSCert, payload.TLSKey)\n .then(function success() {\n deferred.notify({ upload: false });\n return Endpoints.update({ id: id }, payload).$promise;\n })\n .then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.notify({ upload: false });\n deferred.reject({ msg: 'Unable to update environment', err: err });\n });\n return deferred.promise;\n };\n\n service.deleteEndpoint = function (endpointID) {\n return Endpoints.remove({ id: endpointID }).$promise;\n };\n\n service.createLocalEndpoint = function (name = 'local', URL = '', PublicURL = '', groupID = 1, tagIds = []) {\n var deferred = $q.defer();\n\n var endpointURL = URL;\n if (endpointURL !== '') {\n if (endpointURL.indexOf('//./pipe/') == 0) {\n // Windows named pipe\n endpointURL = 'npipe://' + URL;\n } else {\n endpointURL = 'unix://' + URL;\n }\n }\n\n FileUploadService.createEndpoint(name, PortainerEndpointCreationTypes.LocalDockerEnvironment, endpointURL, PublicURL, groupID, tagIds, false)\n .then(function success(response) {\n deferred.resolve(response.data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create environment', err: err });\n });\n\n return deferred.promise;\n };\n\n service.createRemoteEndpoint = function (\n name,\n creationType,\n URL,\n PublicURL,\n groupID,\n tagIds,\n TLS,\n TLSSkipVerify,\n TLSSkipClientVerify,\n TLSCAFile,\n TLSCertFile,\n TLSKeyFile,\n checkinInterval\n ) {\n var deferred = $q.defer();\n\n var endpointURL = URL;\n if (creationType !== PortainerEndpointCreationTypes.EdgeAgentEnvironment) {\n endpointURL = 'tcp://' + URL;\n }\n\n FileUploadService.createEndpoint(\n name,\n creationType,\n endpointURL,\n PublicURL,\n groupID,\n tagIds,\n TLS,\n TLSSkipVerify,\n TLSSkipClientVerify,\n TLSCAFile,\n TLSCertFile,\n TLSKeyFile,\n checkinInterval\n )\n .then(function success(response) {\n deferred.resolve(response.data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create environment', err: err });\n });\n\n return deferred.promise;\n };\n\n service.createLocalKubernetesEndpoint = function (name = 'local', tagIds = []) {\n var deferred = $q.defer();\n\n FileUploadService.createEndpoint(name, PortainerEndpointCreationTypes.LocalKubernetesEnvironment, '', '', 1, tagIds, true, true, true)\n .then(function success(response) {\n deferred.resolve(response.data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create environment', err: err });\n });\n\n return deferred.promise;\n };\n\n service.createAzureEndpoint = function (name, applicationId, tenantId, authenticationKey, groupId, tagIds) {\n var deferred = $q.defer();\n\n FileUploadService.createAzureEndpoint(name, applicationId, tenantId, authenticationKey, groupId, tagIds)\n .then(function success(response) {\n deferred.resolve(response.data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to connect to Azure', err: err });\n });\n\n return deferred.promise;\n };\n\n service.trust = function (id) {\n Endpoints.updateEndpoint({ id }, { UserTrusted: true }).$promise;\n };\n\n function updateRegistryAccess(id, registryId, endpointAccesses) {\n return Endpoints.updateRegistryAccess({ registryId, id }, endpointAccesses).$promise;\n }\n\n function registries(id, namespace) {\n return Endpoints.registries({ namespace, id }).$promise;\n }\n\n return service;\n\n function updateSecuritySettings(id, securitySettings) {\n return Endpoints.updateSecuritySettings({ id }, securitySettings).$promise;\n }\n },\n]);\n","import { EndpointGroupCreateRequest, EndpointGroupModel, EndpointGroupUpdateRequest } from '../../models/group';\n\nangular.module('portainer.app').factory('GroupService', [\n '$q',\n 'EndpointGroups',\n function GroupService($q, EndpointGroups) {\n 'use strict';\n var service = {};\n\n service.group = function (groupId) {\n var deferred = $q.defer();\n\n EndpointGroups.get({ id: groupId })\n .$promise.then(function success(data) {\n var group = new EndpointGroupModel(data);\n deferred.resolve(group);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve group', err: err });\n });\n\n return deferred.promise;\n };\n\n service.groups = function () {\n return EndpointGroups.query({}).$promise;\n };\n\n service.createGroup = function (model, endpoints) {\n var payload = new EndpointGroupCreateRequest(model, endpoints);\n return EndpointGroups.create(payload).$promise;\n };\n\n service.updateGroup = function (model, endpoints) {\n var payload = new EndpointGroupUpdateRequest(model, endpoints);\n return EndpointGroups.update(payload).$promise;\n };\n\n service.updateAccess = function (groupId, userAccessPolicies, teamAccessPolicies) {\n return EndpointGroups.updateAccess({ id: groupId }, { UserAccessPolicies: userAccessPolicies, TeamAccessPolicies: teamAccessPolicies }).$promise;\n };\n\n service.addEndpoint = function (groupId, endpointId) {\n return EndpointGroups.addEndpoint({ id: groupId, action: 'endpoints/' + endpointId }).$promise;\n };\n\n service.removeEndpoint = function (groupId, endpointId) {\n return EndpointGroups.removeEndpoint({ id: groupId, action: 'endpoints/' + endpointId }).$promise;\n };\n\n service.deleteGroup = function (groupId) {\n return EndpointGroups.remove({ id: groupId }).$promise;\n };\n\n return service;\n },\n]);\n","import _ from 'lodash-es';\nimport { PorImageRegistryModel } from 'Docker/models/porImageRegistry';\nimport { RegistryTypes } from 'Portainer/models/registryTypes';\nimport { RegistryCreateRequest, RegistryViewModel } from 'Portainer/models/registry';\nimport { DockerHubViewModel } from 'Portainer/models/dockerhub';\n\nangular.module('portainer.app').factory('RegistryService', [\n '$q',\n '$async',\n 'EndpointService',\n 'Registries',\n 'ImageHelper',\n 'FileUploadService',\n function RegistryServiceFactory($q, $async, EndpointService, Registries, ImageHelper, FileUploadService) {\n return {\n registries,\n registry,\n encodedCredentials,\n deleteRegistry,\n updateRegistry,\n configureRegistry,\n createRegistry,\n createGitlabRegistries,\n retrievePorRegistryModelFromRepository,\n retrievePorRegistryModelFromRepositoryWithRegistries,\n loadRegistriesForDropdown,\n };\n\n function registries() {\n var deferred = $q.defer();\n\n Registries.query()\n .$promise.then(function success(data) {\n var registries = data.map(function (item) {\n return new RegistryViewModel(item);\n });\n deferred.resolve(registries);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve registries', err: err });\n });\n\n return deferred.promise;\n }\n\n function registry(id, endpointId) {\n var deferred = $q.defer();\n\n Registries.get({ id, endpointId })\n .$promise.then(function success(data) {\n var registry = new RegistryViewModel(data);\n deferred.resolve(registry);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve registry details', err: err });\n });\n\n return deferred.promise;\n }\n\n function encodedCredentials(registry) {\n var credentials = {\n registryId: registry.Id,\n };\n return btoa(JSON.stringify(credentials));\n }\n\n function deleteRegistry(id) {\n return Registries.remove({ id: id }).$promise;\n }\n\n function updateRegistry(registry) {\n registry.URL = _.replace(registry.URL, /^https?\\:\\/\\//i, '');\n registry.URL = _.replace(registry.URL, /\\/$/, '');\n return Registries.update({ id: registry.Id }, registry).$promise;\n }\n\n function configureRegistry(id, registryManagementConfigurationModel) {\n return FileUploadService.configureRegistry(id, registryManagementConfigurationModel);\n }\n\n function createRegistry(model) {\n var payload = new RegistryCreateRequest(model);\n return Registries.create(payload).$promise;\n }\n\n function createGitlabRegistries(model, projects) {\n const promises = [];\n _.forEach(projects, (p) => {\n const m = model;\n m.Name = p.PathWithNamespace;\n m.Gitlab.ProjectPath = _.toLower(p.PathWithNamespace);\n m.Gitlab.ProjectId = p.Id;\n m.Password = m.Token;\n const payload = new RegistryCreateRequest(m);\n promises.push(Registries.create(payload).$promise);\n });\n return $q.all(promises);\n }\n\n function getURL(reg) {\n let url = reg.URL;\n if (reg.Type === RegistryTypes.GITLAB) {\n url = reg.URL + '/' + reg.Gitlab.ProjectPath;\n } else if (reg.Type === RegistryTypes.QUAY) {\n const name = reg.Quay.UseOrganisation ? reg.Quay.OrganisationName : reg.Username;\n url = reg.URL + '/' + name;\n }\n return url;\n }\n\n // findBestMatchRegistry finds out the best match registry for repository\n // matching precedence:\n // 1. registryId matched\n // 2. both domain name and username matched (for dockerhub only)\n // 3. only URL matched\n // 4. pick up the first dockerhub registry\n function findBestMatchRegistry(repository, registries, registryId) {\n let match2, match3, match4;\n\n for (const registry of registries) {\n if (registry.Id == registryId) {\n return registry;\n }\n\n if (registry.Type === RegistryTypes.DOCKERHUB) {\n // try to match repository examples:\n // <USERNAME>/nginx:latest\n // docker.io/<USERNAME>/nginx:latest\n if (repository.startsWith(registry.Username + '/') || repository.startsWith(getURL(registry) + '/' + registry.Username + '/')) {\n match2 = registry;\n }\n\n // try to match repository examples:\n // portainer/portainer-ee:latest\n // <NON-USERNAME>/portainer-ee:latest\n match4 = match4 || registry;\n }\n\n if (repository.startsWith(getURL(registry))) {\n match3 = registry;\n }\n }\n\n return match2 || match3 || match4;\n }\n\n function retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries, registryId) {\n const model = new PorImageRegistryModel();\n const registry = findBestMatchRegistry(repository, registries, registryId);\n if (registry) {\n const url = getURL(registry);\n let lastIndex = repository.lastIndexOf(url);\n lastIndex = lastIndex === -1 ? 0 : lastIndex + url.length;\n let image = repository.substring(lastIndex);\n if (_.startsWith(image, '/')) {\n image = image.substring(1);\n }\n model.Registry = registry;\n model.Image = image;\n } else {\n if (ImageHelper.imageContainsURL(repository)) {\n model.UseRegistry = false;\n }\n model.Registry = new DockerHubViewModel();\n model.Image = repository;\n }\n return model;\n }\n\n function retrievePorRegistryModelFromRepository(repository, endpointId, registryId, namespace) {\n return $async(async () => {\n try {\n const regs = await EndpointService.registries(endpointId, namespace);\n return retrievePorRegistryModelFromRepositoryWithRegistries(repository, regs, registryId);\n } catch (err) {\n throw { msg: 'Unable to retrieve the registry associated to the repository', err: err };\n }\n });\n }\n\n function loadRegistriesForDropdown(endpointId, namespace) {\n return $async(async () => {\n try {\n const registries = await EndpointService.registries(endpointId, namespace);\n\n // hide default(anonymous) dockerhub registry if user has an authenticated one\n if (!registries.some((registry) => registry.Type === RegistryTypes.DOCKERHUB)) {\n registries.push(new DockerHubViewModel());\n }\n\n return registries;\n } catch (err) {\n throw { msg: 'Unable to retrieve the registries', err: err };\n }\n });\n }\n },\n]);\n","angular.module('portainer.app').factory('ResourceControlService', [\n '$q',\n 'ResourceControl',\n 'UserService',\n 'TeamService',\n 'ResourceControlHelper',\n function ResourceControlServiceFactory($q, ResourceControl, UserService, TeamService, ResourceControlHelper) {\n 'use strict';\n const service = {};\n\n service.duplicateResourceControl = duplicateResourceControl;\n service.applyResourceControl = applyResourceControl;\n service.retrieveOwnershipDetails = retrieveOwnershipDetails;\n\n /**\n * PRIVATE SECTION\n */\n\n /**\n * Update a ResourceControl\n * @param {String} rcID ID of involved resource\n * @param {ResourceControlOwnershipParameters} ownershipParameters Transcient type from view data to payload\n */\n function updateResourceControl(rcID, ownershipParameters) {\n const payload = {\n AdministratorsOnly: ownershipParameters.AdministratorsOnly,\n Public: ownershipParameters.Public,\n Users: ownershipParameters.Users,\n Teams: ownershipParameters.Teams,\n };\n\n return ResourceControl.update({ id: rcID }, payload).$promise;\n }\n\n /**\n * END PRIVATE SECTION\n */\n\n /**\n * PUBLIC SECTION\n */\n\n /**\n * Apply a ResourceControl after Resource creation\n * @param {int} userId ID of User performing the action\n * @param {AccessControlFormData} accessControlData ResourceControl to apply\n * @param {ResourceControlViewModel} resourceControl ResourceControl to update\n * @param {[]int} subResources SubResources managed by the ResourceControl\n */\n function applyResourceControl(userId, accessControlData, resourceControl, subResources = []) {\n const ownershipParameters = ResourceControlHelper.RCFormDataToOwnershipParameters(userId, accessControlData, subResources);\n return updateResourceControl(resourceControl.Id, ownershipParameters);\n }\n\n /**\n * Duplicate an existing ResourceControl (default to AdministratorsOnly if undefined)\n * @param {int} userId ID of User performing the action\n * @param {ResourceControlViewModel} oldResourceControl ResourceControl to duplicate\n * @param {ResourceControlViewModel} newResourceControl ResourceControl to apply duplication to\n */\n function duplicateResourceControl(userId, oldResourceControl, newResourceControl) {\n const ownershipParameters = ResourceControlHelper.RCViewModelToOwnershipParameters(userId, oldResourceControl);\n return updateResourceControl(newResourceControl.Id, ownershipParameters);\n }\n\n /**\n * Retrieve users and team details for ResourceControlViewModel\n * @param {ResourceControlViewModel} resourceControl ResourceControl view model\n */\n function retrieveOwnershipDetails(resourceControl) {\n var deferred = $q.defer();\n\n if (!resourceControl) {\n deferred.resolve({ authorizedUsers: [], authorizedTeams: [] });\n return deferred.promise;\n }\n\n $q.all({\n users: resourceControl.UserAccesses.length > 0 ? UserService.users(false) : [],\n teams: resourceControl.TeamAccesses.length > 0 ? TeamService.teams() : [],\n })\n .then(function success(data) {\n var authorizedUsers = ResourceControlHelper.retrieveAuthorizedUsers(resourceControl, data.users);\n var authorizedTeams = ResourceControlHelper.retrieveAuthorizedTeams(resourceControl, data.teams);\n deferred.resolve({ authorizedUsers: authorizedUsers, authorizedTeams: authorizedTeams });\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve user and team information', err: err });\n });\n\n return deferred.promise;\n }\n\n /**\n * END PUBLIC SECTION\n */\n\n return service;\n },\n]);\n","import { SettingsViewModel, PublicSettingsViewModel } from '../../models/settings';\n\nangular.module('portainer.app').factory('SettingsService', [\n '$q',\n 'Settings',\n function SettingsServiceFactory($q, Settings) {\n 'use strict';\n var service = {};\n\n service.settings = function () {\n var deferred = $q.defer();\n\n Settings.get()\n .$promise.then(function success(data) {\n var settings = new SettingsViewModel(data);\n deferred.resolve(settings);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve application settings', err: err });\n });\n\n return deferred.promise;\n };\n\n service.update = function (settings) {\n return Settings.update({}, settings).$promise;\n };\n\n service.publicSettings = function () {\n var deferred = $q.defer();\n\n Settings.publicSettings()\n .$promise.then(function success(data) {\n var settings = new PublicSettingsViewModel(data);\n deferred.resolve(settings);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve application settings', err: err });\n });\n\n return deferred.promise;\n };\n\n service.checkLDAPConnectivity = function (settings) {\n return Settings.checkLDAPConnectivity({}, settings).$promise;\n };\n\n return service;\n },\n]);\n","import angular from 'angular';\n\nangular.module('portainer.app').service('SSLService', SSLServiceFactory);\n\n/* @ngInject */\nfunction SSLServiceFactory(SSL) {\n return {\n upload,\n get,\n };\n\n function get() {\n return SSL.get().$promise;\n }\n\n function upload(SSLPayload) {\n return SSL.upload(SSLPayload).$promise;\n }\n}\n","import _ from 'lodash-es';\nimport { transformAutoUpdateViewModel } from '@/react/portainer/gitops/AutoUpdateFieldset/utils';\nimport { StackViewModel, OrphanedStackViewModel } from '../../models/stack';\n\nangular.module('portainer.app').factory('StackService', [\n '$q',\n '$async',\n 'Stack',\n 'FileUploadService',\n 'StackHelper',\n 'ServiceService',\n 'ContainerService',\n 'SwarmService',\n function StackServiceFactory($q, $async, Stack, FileUploadService, StackHelper, ServiceService, ContainerService, SwarmService) {\n 'use strict';\n var service = {\n updateGit,\n updateKubeGit,\n };\n\n service.stack = function (id) {\n var deferred = $q.defer();\n\n Stack.get({ id: id })\n .$promise.then(function success(data) {\n var stack = new StackViewModel(data);\n deferred.resolve(stack);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve stack details', err: err });\n });\n\n return deferred.promise;\n };\n\n service.getStackFile = function (id) {\n var deferred = $q.defer();\n\n Stack.getStackFile({ id: id })\n .$promise.then(function success(data) {\n deferred.resolve(data.StackFileContent);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve stack content', err: err });\n });\n\n return deferred.promise;\n };\n\n service.migrateSwarmStack = function (stack, targetEndpointId, newName) {\n var deferred = $q.defer();\n\n SwarmService.swarm(targetEndpointId)\n .then(function success(data) {\n var swarm = data;\n if (swarm.Id === stack.SwarmId) {\n deferred.reject({ msg: 'Target environment is located in the same Swarm cluster as the current environment', err: null });\n return;\n }\n return Stack.migrate({ id: stack.Id, endpointId: stack.EndpointId }, { EndpointID: targetEndpointId, SwarmID: swarm.Id, Name: newName }).$promise;\n })\n .then(function success() {\n deferred.resolve();\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to migrate stack', err: err });\n });\n\n return deferred.promise;\n };\n\n service.migrateComposeStack = function (stack, targetEndpointId, newName) {\n var deferred = $q.defer();\n\n Stack.migrate({ id: stack.Id, endpointId: stack.EndpointId }, { EndpointID: targetEndpointId, Name: newName })\n .$promise.then(function success() {\n deferred.resolve();\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to migrate stack', err: err });\n });\n\n return deferred.promise;\n };\n\n service.stacks = function (compose, swarm, endpointId, includeOrphanedStacks = false) {\n var deferred = $q.defer();\n\n var queries = [];\n if (compose) {\n queries.push(service.composeStacks(endpointId, true, { EndpointID: endpointId, IncludeOrphanedStacks: includeOrphanedStacks }));\n }\n if (swarm) {\n queries.push(service.swarmStacks(endpointId, true, { IncludeOrphanedStacks: includeOrphanedStacks }));\n }\n\n $q.all(queries)\n .then(function success(data) {\n var stacks = [];\n if (data[0]) {\n stacks = stacks.concat(data[0]);\n }\n if (data[1]) {\n stacks = stacks.concat(data[1]);\n }\n deferred.resolve(stacks);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve stacks', err: err });\n });\n\n return deferred.promise;\n };\n\n service.externalSwarmStacks = function () {\n var deferred = $q.defer();\n\n ServiceService.services()\n .then(function success(services) {\n deferred.resolve(StackHelper.getExternalStacksFromServices(services));\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve external stacks', err: err });\n });\n\n return deferred.promise;\n };\n\n service.externalComposeStacks = function () {\n var deferred = $q.defer();\n\n ContainerService.containers(1)\n .then(function success(containers) {\n deferred.resolve(StackHelper.getExternalStacksFromContainers(containers));\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve external stacks', err: err });\n });\n\n return deferred.promise;\n };\n\n service.unionStacks = function (stacks, externalStacks) {\n stacks.forEach((stack) => {\n externalStacks.forEach((externalStack) => {\n if (stack.Orphaned && stack.Name == externalStack.Name) {\n stack.OrphanedRunning = true;\n }\n });\n });\n const result = _.unionWith(stacks, externalStacks, function (a, b) {\n return a.Name === b.Name;\n });\n\n return result;\n };\n\n service.composeStacks = function (endpointId, includeExternalStacks, filters) {\n var deferred = $q.defer();\n\n $q.all({\n stacks: Stack.query({ filters: filters }).$promise,\n externalStacks: includeExternalStacks ? service.externalComposeStacks() : [],\n })\n .then(function success(data) {\n var stacks = data.stacks.map(function (item) {\n if (item.EndpointId == endpointId) {\n return new StackViewModel(item);\n } else {\n return new OrphanedStackViewModel(item);\n }\n });\n\n var externalStacks = data.externalStacks;\n const result = service.unionStacks(stacks, externalStacks);\n deferred.resolve(result);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve stacks', err: err });\n });\n\n return deferred.promise;\n };\n\n service.swarmStacks = function (endpointId, includeExternalStacks, filters = {}) {\n var deferred = $q.defer();\n\n SwarmService.swarm()\n .then(function success(data) {\n var swarm = data;\n filters = { SwarmID: swarm.Id, ...filters };\n\n return $q.all({\n stacks: Stack.query({ filters: filters }).$promise,\n externalStacks: includeExternalStacks ? service.externalSwarmStacks() : [],\n });\n })\n .then(function success(data) {\n var stacks = data.stacks.map(function (item) {\n if (item.EndpointId == endpointId) {\n return new StackViewModel(item);\n } else {\n return new OrphanedStackViewModel(item);\n }\n });\n\n var externalStacks = data.externalStacks;\n const result = service.unionStacks(stacks, externalStacks);\n deferred.resolve(result);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve stacks', err: err });\n });\n\n return deferred.promise;\n };\n\n service.remove = function (stack, external, endpointId) {\n var deferred = $q.defer();\n\n Stack.remove({ id: stack.Id ? stack.Id : stack.Name, external: external, endpointId: endpointId })\n .$promise.then(function success() {\n deferred.resolve();\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to remove the stack', err: err });\n });\n\n return deferred.promise;\n };\n\n service.associate = function (stack, endpointId, orphanedRunning) {\n var deferred = $q.defer();\n\n if (stack.Type == 1) {\n SwarmService.swarm()\n .then(function success(data) {\n const swarm = data;\n return Stack.associate({ id: stack.Id, endpointId: endpointId, swarmId: swarm.Id, orphanedRunning }).$promise;\n })\n .then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to associate the stack', err: err });\n });\n } else {\n Stack.associate({ id: stack.Id, endpointId: endpointId, orphanedRunning })\n .$promise.then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to associate the stack', err: err });\n });\n }\n\n return deferred.promise;\n };\n\n service.updateStack = function (stack, stackFile, env, prune, pullImage) {\n return Stack.update(\n { endpointId: stack.EndpointId },\n {\n id: stack.Id,\n StackFileContent: stackFile,\n Env: env,\n Prune: prune,\n PullImage: pullImage,\n }\n ).$promise;\n };\n\n service.updateKubeStack = function (stack, { stackFile, gitConfig, webhookId }) {\n let payload = {};\n\n if (stackFile) {\n payload = {\n StackFileContent: stackFile,\n };\n } else {\n payload = {\n AutoUpdate: transformAutoUpdateViewModel(gitConfig.AutoUpdate, webhookId),\n RepositoryReferenceName: gitConfig.RefName,\n RepositoryAuthentication: gitConfig.RepositoryAuthentication,\n RepositoryUsername: gitConfig.RepositoryUsername,\n RepositoryPassword: gitConfig.RepositoryPassword,\n TLSSkipVerify: gitConfig.TLSSkipVerify,\n };\n }\n\n return Stack.update({ id: stack.Id, endpointId: stack.EndpointId }, payload).$promise;\n };\n\n service.createComposeStackFromFileUpload = function (name, stackFile, env, endpointId) {\n return FileUploadService.createComposeStack(name, stackFile, env, endpointId);\n };\n\n service.createSwarmStackFromFileUpload = function (name, stackFile, env, endpointId) {\n var deferred = $q.defer();\n\n SwarmService.swarm()\n .then(function success(data) {\n var swarm = data;\n return FileUploadService.createSwarmStack(name, swarm.Id, stackFile, env, endpointId);\n })\n .then(function success(data) {\n deferred.resolve(data.data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create the stack', err: err });\n });\n\n return deferred.promise;\n };\n service.createComposeStackFromFileContent = function (name, stackFileContent, env, endpointId) {\n var payload = {\n Name: name,\n StackFileContent: stackFileContent,\n Env: env,\n };\n return Stack.create({ endpointId: endpointId }, { method: 'string', type: 'standalone', ...payload }).$promise;\n };\n\n service.createSwarmStackFromFileContent = function (name, stackFileContent, env, endpointId) {\n var deferred = $q.defer();\n\n SwarmService.swarm(endpointId)\n .then(function success(swarm) {\n var payload = {\n Name: name,\n SwarmID: swarm.Id,\n StackFileContent: stackFileContent,\n Env: env,\n };\n return Stack.create({ endpointId: endpointId }, { method: 'string', type: 'swarm', ...payload }).$promise;\n })\n .then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create the stack', err: err });\n });\n\n return deferred.promise;\n };\n\n service.createComposeStackFromGitRepository = function (name, repositoryOptions, env, endpointId) {\n var payload = {\n Name: name,\n RepositoryURL: repositoryOptions.RepositoryURL,\n RepositoryReferenceName: repositoryOptions.RepositoryReferenceName,\n ComposeFile: repositoryOptions.ComposeFilePathInRepository,\n AdditionalFiles: repositoryOptions.AdditionalFiles,\n RepositoryAuthentication: repositoryOptions.RepositoryAuthentication,\n RepositoryUsername: repositoryOptions.RepositoryUsername,\n RepositoryPassword: repositoryOptions.RepositoryPassword,\n Env: env,\n FromAppTemplate: repositoryOptions.FromAppTemplate,\n TLSSkipVerify: repositoryOptions.TLSSkipVerify,\n };\n\n if (repositoryOptions.AutoUpdate) {\n payload.AutoUpdate = repositoryOptions.AutoUpdate;\n }\n\n return Stack.create({ endpointId: endpointId }, { method: 'repository', type: 'standalone', ...payload }).$promise;\n };\n\n service.createSwarmStackFromGitRepository = function (name, repositoryOptions, env, endpointId) {\n var deferred = $q.defer();\n\n SwarmService.swarm()\n .then(function success(data) {\n var swarm = data;\n var payload = {\n Name: name,\n SwarmID: swarm.Id,\n RepositoryURL: repositoryOptions.RepositoryURL,\n RepositoryReferenceName: repositoryOptions.RepositoryReferenceName,\n ComposeFile: repositoryOptions.ComposeFilePathInRepository,\n AdditionalFiles: repositoryOptions.AdditionalFiles,\n RepositoryAuthentication: repositoryOptions.RepositoryAuthentication,\n RepositoryUsername: repositoryOptions.RepositoryUsername,\n RepositoryPassword: repositoryOptions.RepositoryPassword,\n Env: env,\n FromAppTemplate: repositoryOptions.FromAppTemplate,\n TLSSkipVerify: repositoryOptions.TLSSkipVerify,\n };\n\n if (repositoryOptions.AutoUpdate) {\n payload.AutoUpdate = repositoryOptions.AutoUpdate;\n }\n\n return Stack.create({ endpointId: endpointId }, { method: 'repository', type: 'swarm', ...payload }).$promise;\n })\n .then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create the stack', err: err });\n });\n\n return deferred.promise;\n };\n\n service.duplicateStack = function duplicateStack(name, stackFileContent, env, endpointId, type) {\n var action = type === 1 ? service.createSwarmStackFromFileContent : service.createComposeStackFromFileContent;\n return action(name, stackFileContent, env, endpointId);\n };\n\n async function kubernetesDeployAsync(endpointId, method, payload) {\n try {\n await Stack.create({ endpointId: endpointId }, { method, type: 'kubernetes', ...payload }).$promise;\n } catch (err) {\n throw { err: err };\n }\n }\n\n service.kubernetesDeploy = function (endpointId, method, payload) {\n return $async(kubernetesDeployAsync, endpointId, method, payload);\n };\n\n service.start = start;\n function start(endpointId, id) {\n return Stack.start({ id, endpointId }).$promise;\n }\n\n service.stop = stop;\n function stop(endpointId, id) {\n return Stack.stop({ endpointId, id }).$promise;\n }\n\n function updateGit(id, endpointId, env, prune, gitConfig, pullImage) {\n return Stack.updateGit(\n { endpointId, id },\n {\n env,\n prune,\n RepositoryReferenceName: gitConfig.RefName,\n RepositoryAuthentication: gitConfig.RepositoryAuthentication,\n RepositoryUsername: gitConfig.RepositoryUsername,\n RepositoryPassword: gitConfig.RepositoryPassword,\n PullImage: pullImage,\n }\n ).$promise;\n }\n\n function updateKubeGit(id, endpointId, namespace, gitConfig) {\n return Stack.updateGit(\n { endpointId, id },\n {\n Namespace: namespace,\n RepositoryReferenceName: gitConfig.RefName,\n RepositoryAuthentication: gitConfig.RepositoryAuthentication,\n RepositoryUsername: gitConfig.RepositoryUsername,\n RepositoryPassword: gitConfig.RepositoryPassword,\n }\n ).$promise;\n }\n\n service.updateGitStackSettings = function (id, endpointId, env, gitConfig, webhookId) {\n return Stack.updateGitStackSettings(\n { endpointId, id },\n {\n AutoUpdate: transformAutoUpdateViewModel(gitConfig.AutoUpdate, webhookId),\n Env: env,\n RepositoryReferenceName: gitConfig.RefName,\n RepositoryAuthentication: gitConfig.RepositoryAuthentication,\n RepositoryUsername: gitConfig.RepositoryUsername,\n RepositoryPassword: gitConfig.RepositoryPassword,\n Prune: gitConfig.Option.Prune,\n TLSSkipVerify: gitConfig.TLSSkipVerify,\n }\n ).$promise;\n };\n\n return service;\n },\n]);\n","import { getSystemStatus } from '@/react/portainer/system/useSystemStatus';\nimport { StatusViewModel } from '../../models/status';\n\nangular.module('portainer.app').factory('StatusService', StatusServiceFactory);\n\n/* @ngInject */\nfunction StatusServiceFactory($q) {\n 'use strict';\n var service = {};\n\n service.status = function () {\n var deferred = $q.defer();\n\n getSystemStatus()\n .then(function success(data) {\n var status = new StatusViewModel(data);\n deferred.resolve(status);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve application status', err: err });\n });\n\n return deferred.promise;\n };\n\n return service;\n}\n","angular.module('portainer.app').factory('SupportService', [\n '$q',\n 'Support',\n function SupportServiceFactory($q, Support) {\n 'use strict';\n var service = {};\n\n service.supportProducts = function () {\n var deferred = $q.defer();\n\n Support.get()\n .$promise.then(function success(data) {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve support options', err: err });\n });\n\n return deferred.promise;\n };\n\n return service;\n },\n]);\n","import { TagViewModel } from '../../models/tag';\n\nangular.module('portainer.app').factory('TagService', [\n '$q',\n '$async',\n 'Tags',\n function TagServiceFactory($q, $async, Tags) {\n 'use strict';\n var service = {};\n\n service.tags = function () {\n var deferred = $q.defer();\n Tags.query()\n .$promise.then(function success(data) {\n var tags = data.map(function (item) {\n return new TagViewModel(item);\n });\n deferred.resolve(tags);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve tags', err: err });\n });\n return deferred.promise;\n };\n\n service.tagNames = function () {\n var deferred = $q.defer();\n Tags.query()\n .$promise.then(function success(data) {\n var tags = data.map(function (item) {\n return item.Name;\n });\n deferred.resolve(tags);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve tags', err: err });\n });\n return deferred.promise;\n };\n\n async function createTagAsync(name) {\n var payload = {\n Name: name,\n };\n try {\n const tag = await Tags.create({}, payload).$promise;\n return new TagViewModel(tag);\n } catch (err) {\n throw { msg: 'Unable to create tag', err };\n }\n }\n\n function createTag(name) {\n return $async(createTagAsync, name);\n }\n service.createTag = createTag;\n\n service.deleteTag = function (id) {\n return Tags.remove({ id: id }).$promise;\n };\n\n return service;\n },\n]);\n","import { TeamMembershipModel } from '../../models/teamMembership';\n\nangular.module('portainer.app').factory('TeamMembershipService', [\n '$q',\n 'TeamMemberships',\n function TeamMembershipFactory($q, TeamMemberships) {\n 'use strict';\n var service = {};\n\n service.memberships = function () {\n var deferred = $q.defer();\n TeamMemberships.query()\n .$promise.then(function success(data) {\n var memberships = data.map(function (item) {\n return new TeamMembershipModel(item);\n });\n deferred.resolve(memberships);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve team memberships', err: err });\n });\n return deferred.promise;\n };\n\n service.createMembership = function (userId, teamId, role) {\n var payload = {\n UserID: userId,\n TeamID: teamId,\n Role: role,\n };\n return TeamMemberships.create({}, payload).$promise;\n };\n\n service.deleteMembership = function (id) {\n return TeamMemberships.remove({ id: id }).$promise;\n };\n\n service.updateMembership = function (id, userId, teamId, role) {\n var payload = {\n UserID: userId,\n TeamID: teamId,\n Role: role,\n };\n return TeamMemberships.update({ id: id }, payload).$promise;\n };\n\n return service;\n },\n]);\n","import { TeamViewModel } from '../../models/team';\nimport { TeamMembershipModel } from '../../models/teamMembership';\n\nangular.module('portainer.app').factory('TeamService', [\n '$q',\n 'Teams',\n function TeamServiceFactory($q, Teams) {\n 'use strict';\n var service = {};\n\n service.teams = function (environmentId) {\n var deferred = $q.defer();\n Teams.query({ environmentId: environmentId })\n .$promise.then(function success(data) {\n var teams = data.map(function (item) {\n return new TeamViewModel(item);\n });\n deferred.resolve(teams);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve teams', err: err });\n });\n return deferred.promise;\n };\n\n service.team = function (id) {\n var deferred = $q.defer();\n Teams.get({ id: id })\n .$promise.then(function success(data) {\n var team = new TeamViewModel(data);\n deferred.resolve(team);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve team details', err: err });\n });\n return deferred.promise;\n };\n\n service.createTeam = function (name, leaderIds) {\n var deferred = $q.defer();\n var payload = {\n Name: name,\n TeamLeaders: leaderIds,\n };\n Teams.create({}, payload)\n .$promise.then(function success() {\n deferred.resolve();\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create team', err: err });\n });\n return deferred.promise;\n };\n\n service.deleteTeam = function (id) {\n return Teams.remove({ id: id }).$promise;\n };\n\n service.userMemberships = function (id) {\n var deferred = $q.defer();\n Teams.queryMemberships({ id: id })\n .$promise.then(function success(data) {\n var memberships = data.map(function (item) {\n return new TeamMembershipModel(item);\n });\n deferred.resolve(memberships);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve user memberships for the team', err: err });\n });\n return deferred.promise;\n };\n\n return service;\n },\n]);\n","import { DockerHubViewModel } from 'Portainer/models/dockerhub';\nimport { TemplateViewModel } from '../../models/template';\n\nangular.module('portainer.app').factory('TemplateService', TemplateServiceFactory);\n\n/* @ngInject */\nfunction TemplateServiceFactory($q, Templates, TemplateHelper, ImageHelper, ContainerHelper, EndpointService) {\n var service = {\n templates,\n };\n\n function templates(endpointId) {\n const deferred = $q.defer();\n\n $q.all({\n templates: Templates.query().$promise,\n registries: EndpointService.registries(endpointId),\n })\n .then(function success({ templates, registries }) {\n const version = templates.version;\n deferred.resolve(\n templates.templates.map((item) => {\n try {\n const template = new TemplateViewModel(item, version);\n const registryURL = template.RegistryModel.Registry.URL;\n const registry = registryURL ? registries.find((reg) => reg.URL === registryURL) : new DockerHubViewModel();\n template.RegistryModel.Registry = registry;\n return template;\n } catch (err) {\n deferred.reject({ msg: 'Unable to retrieve templates', err: err });\n }\n })\n );\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve templates', err: err });\n });\n\n return deferred.promise;\n }\n\n service.templateFile = templateFile;\n function templateFile(repositoryUrl, composeFilePathInRepository) {\n return Templates.file({ repositoryUrl, composeFilePathInRepository }).$promise;\n }\n\n service.createTemplateConfiguration = function (template, containerName, network) {\n var imageConfiguration = ImageHelper.createImageConfigForContainer(template.RegistryModel);\n var containerConfiguration = createContainerConfiguration(template, containerName, network);\n containerConfiguration.Image = imageConfiguration.fromImage;\n return containerConfiguration;\n };\n\n function createContainerConfiguration(template, containerName, network) {\n var configuration = TemplateHelper.getDefaultContainerConfiguration();\n configuration.HostConfig.NetworkMode = network.Name;\n configuration.HostConfig.Privileged = template.Privileged;\n configuration.HostConfig.RestartPolicy = { Name: template.RestartPolicy };\n configuration.HostConfig.ExtraHosts = template.Hosts ? template.Hosts : [];\n configuration.name = containerName;\n configuration.Hostname = template.Hostname;\n configuration.Env = TemplateHelper.EnvToStringArray(template.Env);\n configuration.Cmd = ContainerHelper.commandStringToArray(template.Command);\n var portConfiguration = TemplateHelper.portArrayToPortConfiguration(template.Ports);\n configuration.HostConfig.PortBindings = portConfiguration.bindings;\n configuration.ExposedPorts = portConfiguration.exposedPorts;\n var consoleConfiguration = TemplateHelper.getConsoleConfiguration(template.Interactive);\n configuration.OpenStdin = consoleConfiguration.openStdin;\n configuration.Tty = consoleConfiguration.tty;\n configuration.Labels = TemplateHelper.updateContainerConfigurationWithLabels(template.Labels);\n return configuration;\n }\n\n service.updateContainerConfigurationWithVolumes = function (configuration, template, generatedVolumesPile) {\n var volumes = template.Volumes;\n TemplateHelper.createVolumeBindings(volumes, generatedVolumesPile);\n volumes.forEach(function (volume) {\n if (volume.binding) {\n configuration.Volumes[volume.container] = {};\n configuration.HostConfig.Binds.push(volume.binding);\n }\n });\n };\n\n return service;\n}\n","import _ from 'lodash-es';\n\nimport { UserTokenModel, UserViewModel } from '@/portainer/models/user';\nimport { getUsers } from '@/portainer/users/user.service';\nimport { getUser } from '@/portainer/users/queries/useUser';\n\nimport { TeamMembershipModel } from '../../models/teamMembership';\n\n/* @ngInject */\nexport function UserService($q, Users, TeamService, TeamMembershipService) {\n 'use strict';\n var service = {};\n\n service.users = async function (includeAdministrators, environmentId) {\n const users = await getUsers(includeAdministrators, environmentId);\n\n return users.map((u) => new UserViewModel(u));\n };\n\n service.user = async function (userId) {\n const user = await getUser(userId);\n\n return new UserViewModel(user);\n };\n\n service.createUser = function (username, password, role, teamIds) {\n var deferred = $q.defer();\n\n var payload = {\n username: username,\n password: password,\n role: role,\n };\n\n Users.create({}, payload)\n .$promise.then(function success(data) {\n var userId = data.Id;\n var teamMembershipQueries = [];\n angular.forEach(teamIds, function (teamId) {\n teamMembershipQueries.push(TeamMembershipService.createMembership(userId, teamId, 2));\n });\n $q.all(teamMembershipQueries).then(function success() {\n deferred.resolve();\n });\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create user', err: err });\n });\n\n return deferred.promise;\n };\n\n service.deleteUser = function (id) {\n return Users.remove({ id: id }).$promise;\n };\n\n service.updateUser = function (id, { newPassword, role, username }) {\n return Users.update({ id }, { newPassword, role, username }).$promise;\n };\n\n service.updateUserPassword = function (id, currentPassword, newPassword) {\n var payload = {\n Password: currentPassword,\n NewPassword: newPassword,\n };\n\n return Users.updatePassword({ id: id }, payload).$promise;\n };\n\n service.updateUserTheme = function (id, theme) {\n return Users.updateTheme({ id }, { theme }).$promise;\n };\n\n service.userMemberships = function (id) {\n var deferred = $q.defer();\n\n Users.queryMemberships({ id: id })\n .$promise.then(function success(data) {\n var memberships = data.map(function (item) {\n return new TeamMembershipModel(item);\n });\n deferred.resolve(memberships);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve user memberships', err: err });\n });\n\n return deferred.promise;\n };\n\n service.userLeadingTeams = function (id) {\n var deferred = $q.defer();\n\n $q.all({\n teams: TeamService.teams(),\n memberships: service.userMemberships(id),\n })\n .then(function success(data) {\n var memberships = data.memberships;\n var teams = data.teams.filter(function (team) {\n var membership = _.find(memberships, { TeamId: team.Id });\n if (membership && membership.Role === 1) {\n return team;\n }\n });\n deferred.resolve(teams);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve user teams', err: err });\n });\n\n return deferred.promise;\n };\n\n service.createAccessToken = function (id, description) {\n const deferred = $q.defer();\n const payload = { description };\n Users.createAccessToken({ id }, payload)\n .$promise.then((data) => {\n deferred.resolve(data);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to create user', err: err });\n });\n return deferred.promise;\n };\n\n service.getAccessTokens = function (id) {\n var deferred = $q.defer();\n\n Users.getAccessTokens({ id: id })\n .$promise.then(function success(data) {\n var userTokens = data.map(function (item) {\n return new UserTokenModel(item);\n });\n deferred.resolve(userTokens);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve user tokens', err: err });\n });\n\n return deferred.promise;\n };\n\n service.deleteAccessToken = function (id, tokenId) {\n return Users.deleteAccessToken({ id: id, tokenId: tokenId }).$promise;\n };\n\n service.initAdministrator = function (username, password) {\n return Users.initAdminUser({ Username: username, Password: password }).$promise;\n };\n\n service.administratorExists = function () {\n var deferred = $q.defer();\n\n Users.checkAdminUser({})\n .$promise.then(function success() {\n deferred.resolve(true);\n })\n .catch(function error(err) {\n if (err.status === 404) {\n deferred.resolve(false);\n }\n deferred.reject({ msg: 'Unable to verify administrator account existence', err: err });\n });\n\n return deferred.promise;\n };\n\n return service;\n}\n","import { WebhookViewModel } from '../../models/webhook';\n\nangular.module('portainer.app').factory('WebhookService', [\n '$q',\n 'Webhooks',\n function WebhookServiceFactory($q, Webhooks) {\n 'use strict';\n var service = {};\n\n service.webhooks = function (serviceID, endpointID) {\n var deferred = $q.defer();\n var filters = { ResourceID: serviceID, EndpointID: endpointID };\n\n Webhooks.query({ filters: filters })\n .$promise.then(function success(data) {\n var webhooks = data.map(function (item) {\n return new WebhookViewModel(item);\n });\n deferred.resolve(webhooks);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve webhooks', err: err });\n });\n\n return deferred.promise;\n };\n\n service.createServiceWebhook = function (serviceID, endpointID, registryID) {\n return Webhooks.create({ ResourceID: serviceID, EndpointID: endpointID, WebhookType: 1, registryID }).$promise;\n };\n\n service.updateServiceWebhook = function (id, registryID) {\n return Webhooks.update({ id, registryID }).$promise;\n };\n\n service.deleteWebhook = function (id) {\n return Webhooks.remove({ id: id }).$promise;\n };\n\n return service;\n },\n]);\n","/**\n * Look a the following PR for how to use the wrapper\n * and documentation about it\n * https://github.com/portainer/portainer/pull/2945\n */\n\nangular.module('portainer').factory('$async', [\n '$q',\n function ($q) {\n return function (asyncFunc, ...args) {\n const def = $q.defer();\n const wrapper = function (params) {\n const deferred = $q.defer();\n asyncFunc(...params)\n .then(deferred.resolve)\n .catch(deferred.reject);\n return deferred.promise;\n };\n\n wrapper(args).then(def.resolve).catch(def.reject);\n return def.promise;\n };\n },\n]);\n","import { clear as clearSessionStorage } from './session-storage';\n\nconst DEFAULT_USER = 'admin';\nconst DEFAULT_PASSWORD = 'K7yJPP5qNK4hf1QsRnfV';\n\nangular.module('portainer.app').factory('Authentication', [\n '$async',\n 'Auth',\n 'OAuth',\n 'jwtHelper',\n 'LocalStorage',\n 'StateManager',\n 'EndpointProvider',\n 'UserService',\n 'ThemeManager',\n function AuthenticationFactory($async, Auth, OAuth, jwtHelper, LocalStorage, StateManager, EndpointProvider, UserService, ThemeManager) {\n 'use strict';\n\n var service = {};\n var user = {};\n\n service.init = init;\n service.OAuthLogin = OAuthLogin;\n service.login = login;\n service.logout = logout;\n service.isAuthenticated = isAuthenticated;\n service.getUserDetails = getUserDetails;\n service.isAdmin = isAdmin;\n\n async function initAsync() {\n try {\n const jwt = LocalStorage.getJWT();\n if (!jwt || jwtHelper.isTokenExpired(jwt)) {\n return tryAutoLoginExtension();\n }\n await setUser(jwt);\n return true;\n } catch (error) {\n return tryAutoLoginExtension();\n }\n }\n\n async function logoutAsync() {\n if (isAuthenticated()) {\n await Auth.logout().$promise;\n }\n\n clearSessionStorage();\n StateManager.clean();\n EndpointProvider.clean();\n LocalStorage.cleanAuthData();\n LocalStorage.storeLoginStateUUID('');\n tryAutoLoginExtension();\n }\n\n function logout() {\n return $async(logoutAsync);\n }\n\n function init() {\n return $async(initAsync);\n }\n\n async function OAuthLoginAsync(code) {\n const response = await OAuth.validate({ code: code }).$promise;\n const jwt = setJWTFromResponse(response);\n await setUser(jwt);\n }\n\n function setJWTFromResponse(response) {\n const jwt = response.jwt;\n LocalStorage.storeJWT(jwt);\n\n return response.jwt;\n }\n\n function OAuthLogin(code) {\n return $async(OAuthLoginAsync, code);\n }\n\n async function loginAsync(username, password) {\n const response = await Auth.login({ username: username, password: password }).$promise;\n const jwt = setJWTFromResponse(response);\n await setUser(jwt);\n }\n\n function login(username, password) {\n return $async(loginAsync, username, password);\n }\n\n function isAuthenticated() {\n var jwt = LocalStorage.getJWT();\n return !!jwt && !jwtHelper.isTokenExpired(jwt);\n }\n\n function getUserDetails() {\n return user;\n }\n\n async function setUserTheme() {\n const data = await UserService.user(user.ID);\n\n // Initialize user theme base on UserTheme from database\n const userTheme = data.ThemeSettings ? data.ThemeSettings.color : 'auto';\n if (userTheme === 'auto' || !userTheme) {\n ThemeManager.autoTheme();\n } else {\n ThemeManager.setTheme(userTheme);\n }\n }\n\n async function setUser(jwt) {\n var tokenPayload = jwtHelper.decodeToken(jwt);\n user.username = tokenPayload.username;\n user.ID = tokenPayload.id;\n user.role = tokenPayload.role;\n user.forceChangePassword = tokenPayload.forceChangePassword;\n await setUserTheme();\n }\n\n function tryAutoLoginExtension() {\n if (!window.ddExtension) {\n return false;\n }\n\n return login(DEFAULT_USER, DEFAULT_PASSWORD);\n }\n\n function isAdmin() {\n return !!user && user.role === 1;\n }\n\n if (process.env.NODE_ENV === 'development') {\n window.login = loginAsync;\n }\n\n return service;\n },\n]);\n","import Chart from 'chart.js';\nimport filesize from 'filesize';\n\nangular.module('portainer.app').factory('ChartService', [\n function ChartService() {\n 'use strict';\n\n // Max. number of items to display on a chart\n var CHART_LIMIT = 600;\n\n var service = {};\n\n function defaultChartOptions(pos, tooltipCallback, scalesCallback, isStacked) {\n return {\n animation: { duration: 0 },\n responsiveAnimationDuration: 0,\n responsive: true,\n tooltips: {\n mode: 'index',\n intersect: false,\n position: pos,\n callbacks: {\n label: function (tooltipItem, data) {\n var datasetLabel = data.datasets[tooltipItem.datasetIndex].label;\n return tooltipCallback(datasetLabel, tooltipItem.yLabel);\n },\n },\n },\n layout: {\n padding: {\n left: 15,\n },\n },\n hover: { animationDuration: 0 },\n scales: {\n yAxes: [\n {\n stacked: isStacked,\n ticks: {\n beginAtZero: true,\n callback: scalesCallback,\n precision: 0,\n },\n },\n ],\n },\n };\n }\n\n function CreateChart(context, label, tooltipCallback, scalesCallback) {\n return new Chart(context, {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n label: label,\n data: [],\n fill: true,\n backgroundColor: 'rgba(151,187,205,0.4)',\n borderColor: 'rgba(151,187,205,0.6)',\n pointBackgroundColor: 'rgba(151,187,205,1)',\n pointBorderColor: 'rgba(151,187,205,1)',\n pointRadius: 2,\n borderWidth: 2,\n },\n ],\n },\n options: defaultChartOptions('nearest', tooltipCallback, scalesCallback),\n });\n }\n\n function CreateMemoryChart(context, tooltipCallback, scalesCallback) {\n return new Chart(context, {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n label: 'Memory',\n data: [],\n fill: true,\n backgroundColor: 'rgba(151,187,205,0.4)',\n borderColor: 'rgba(151,187,205,0.6)',\n pointBackgroundColor: 'rgba(151,187,205,1)',\n pointBorderColor: 'rgba(151,187,205,1)',\n pointRadius: 2,\n borderWidth: 2,\n },\n {\n label: 'Cache',\n data: [],\n fill: true,\n backgroundColor: 'rgba(255,180,174,0.4)',\n borderColor: 'rgba(255,180,174,0.6)',\n pointBackgroundColor: 'rgba(255,180,174,1)',\n pointBorderColor: 'rgba(255,180,174,1)',\n pointRadius: 2,\n borderWidth: 2,\n },\n ],\n },\n options: defaultChartOptions('nearest', tooltipCallback, scalesCallback, true),\n });\n }\n\n function CreateIOChart(context, tooltipCallback, scalesCallback) {\n return new Chart(context, {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n label: 'Read (Aggregate)',\n data: [],\n fill: true,\n backgroundColor: 'rgba(151,187,205,0.4)',\n borderColor: 'rgba(151,187,205,0.6)',\n pointBackgroundColor: 'rgba(151,187,205,1)',\n pointBorderColor: 'rgba(151,187,205,1)',\n pointRadius: 2,\n borderWidth: 2,\n },\n {\n label: 'Write (Aggregate)',\n data: [],\n fill: true,\n backgroundColor: 'rgba(255,180,174,0.4)',\n borderColor: 'rgba(255,180,174,0.6)',\n pointBackgroundColor: 'rgba(255,180,174,1)',\n pointBorderColor: 'rgba(255,180,174,1)',\n pointRadius: 2,\n borderWidth: 2,\n },\n ],\n },\n options: defaultChartOptions('nearest', tooltipCallback, scalesCallback, true),\n });\n }\n\n service.CreateCPUChart = function (context) {\n return CreateChart(context, 'CPU', percentageBasedTooltipLabel, percentageBasedAxisLabel);\n };\n\n service.CreateIOChart = function (context) {\n return CreateIOChart(context, byteBasedTooltipLabel, byteBasedAxisLabel);\n };\n\n service.CreateMemoryChart = function (context) {\n return CreateMemoryChart(context, byteBasedTooltipLabel, byteBasedAxisLabel);\n };\n\n service.CreateNetworkChart = function (context) {\n return new Chart(context, {\n type: 'line',\n data: {\n labels: [],\n datasets: [\n {\n label: 'RX on eth0',\n data: [],\n fill: false,\n backgroundColor: 'rgba(151,187,205,0.4)',\n borderColor: 'rgba(151,187,205,0.6)',\n pointBackgroundColor: 'rgba(151,187,205,1)',\n pointBorderColor: 'rgba(151,187,205,1)',\n pointRadius: 2,\n borderWidth: 2,\n },\n {\n label: 'TX on eth0',\n data: [],\n fill: false,\n backgroundColor: 'rgba(255,180,174,0.4)',\n borderColor: 'rgba(255,180,174,0.6)',\n pointBackgroundColor: 'rgba(255,180,174,1)',\n pointBorderColor: 'rgba(255,180,174,1)',\n pointRadius: 2,\n borderWidth: 2,\n },\n ],\n },\n options: defaultChartOptions('average', byteBasedTooltipLabel, byteBasedAxisLabel),\n });\n };\n\n function LimitChartItems(chart, CHART_LIMIT) {\n if (chart.data.datasets[0].data.length > CHART_LIMIT) {\n chart.data.labels.pop();\n chart.data.datasets[0].data.pop();\n chart.data.datasets[1].data.pop();\n }\n }\n\n function UpdateChart(label, value, chart) {\n chart.data.labels.push(label);\n chart.data.datasets[0].data.push(value);\n\n if (chart.data.datasets[0].data.length > CHART_LIMIT) {\n chart.data.labels.pop();\n chart.data.datasets[0].data.pop();\n }\n\n chart.update(0);\n }\n\n service.UpdateMemoryChart = function UpdateChart(label, memoryValue, cacheValue, chart) {\n chart.data.labels.push(label);\n chart.data.datasets[0].data.push(memoryValue);\n\n if (cacheValue) {\n chart.data.datasets[1].data.push(cacheValue);\n } else {\n // cache values are not available for Windows\n chart.data.datasets.splice(1, 1);\n }\n\n LimitChartItems(chart);\n\n chart.update(0);\n };\n service.UpdateCPUChart = UpdateChart;\n service.UpdateIOChart = function (label, read, write, chart) {\n chart.data.labels.push(label);\n chart.data.datasets[0].data.push(read);\n chart.data.datasets[1].data.push(write);\n LimitChartItems(chart);\n chart.update(0);\n };\n\n service.UpdateNetworkChart = function (label, rx, tx, chart) {\n chart.data.labels.push(label);\n chart.data.datasets[0].data.push(rx);\n chart.data.datasets[1].data.push(tx);\n\n LimitChartItems(chart);\n\n chart.update(0);\n };\n\n function byteBasedTooltipLabel(label, value) {\n var processedValue = 0;\n if (value > 5) {\n processedValue = filesize(value, { base: 10, round: 1 });\n } else {\n processedValue = value.toFixed(1) + 'B';\n }\n return label + ': ' + processedValue;\n }\n\n function byteBasedAxisLabel(value) {\n if (value > 5) {\n return filesize(value, { base: 10, round: 1 });\n }\n return value.toFixed(1) + 'B';\n }\n\n function percentageBasedAxisLabel(value) {\n if (value > 1) {\n return Math.round(value) + '%';\n }\n return value.toFixed(1) + '%';\n }\n\n function percentageBasedTooltipLabel(label, value) {\n var processedValue = 0;\n if (value > 1) {\n processedValue = Math.round(value);\n } else {\n processedValue = value.toFixed(1);\n }\n return label + ': ' + processedValue + '%';\n }\n\n return service;\n },\n]);\n","import angular from 'angular';\n\nimport * as sessionStorage from './session-storage';\n\nangular.module('portainer.app').factory('DatatableService', DatatableServiceFactory);\n\nconst DATATABLE_PREFIX = 'datatable_';\nconst TEXT_FILTER_KEY_PREFIX = `${DATATABLE_PREFIX}text_filter_`;\n\n/* @ngInject */\nfunction DatatableServiceFactory(LocalStorage) {\n return {\n setDataTableSettings,\n getDataTableSettings,\n setDataTableTextFilters,\n getDataTableTextFilters,\n setDataTableFilters,\n getDataTableFilters,\n getDataTableOrder,\n setDataTableOrder,\n setDataTableExpandedItems,\n setColumnVisibilitySettings,\n getDataTableExpandedItems,\n setDataTableSelectedItems,\n getDataTableSelectedItems,\n getColumnVisibilitySettings,\n };\n\n function setDataTableSettings(key, settings) {\n LocalStorage.storeDataTableSettings(key, settings);\n }\n\n function getDataTableSettings(key) {\n return LocalStorage.getDataTableSettings(key);\n }\n\n function setDataTableTextFilters(key, filters) {\n sessionStorage.save(TEXT_FILTER_KEY_PREFIX + key, filters);\n }\n\n function getDataTableTextFilters(key) {\n return sessionStorage.get(TEXT_FILTER_KEY_PREFIX + key);\n }\n\n function setDataTableFilters(key, filters) {\n LocalStorage.storeDataTableFilters(key, filters);\n }\n\n function getDataTableFilters(key) {\n return LocalStorage.getDataTableFilters(key);\n }\n\n function getDataTableOrder(key) {\n return LocalStorage.getDataTableOrder(key);\n }\n\n function setDataTableOrder(key, orderBy, reverse) {\n var filter = {\n orderBy: orderBy,\n reverse: reverse,\n };\n LocalStorage.storeDataTableOrder(key, filter);\n }\n\n function setDataTableExpandedItems(key, expandedItems) {\n LocalStorage.storeDataTableExpandedItems(key, expandedItems);\n }\n\n function setColumnVisibilitySettings(key, columnVisibility) {\n LocalStorage.storeColumnVisibilitySettings(key, columnVisibility);\n }\n\n function getDataTableExpandedItems(key) {\n return LocalStorage.getDataTableExpandedItems(key);\n }\n\n function setDataTableSelectedItems(key, selectedItems) {\n LocalStorage.storeDataTableSelectedItems(key, selectedItems);\n }\n\n function getDataTableSelectedItems(key) {\n return LocalStorage.getDataTableSelectedItems(key);\n }\n\n function getColumnVisibilitySettings(key) {\n return LocalStorage.getColumnVisibilitySettings(key);\n }\n}\n","import { PortainerEndpointCreationTypes } from 'Portainer/models/endpoint/models';\nimport { genericHandler, jsonObjectsToArrayHandler } from '../../docker/rest/response/handlers';\n\nangular.module('portainer.app').factory('FileUploadService', [\n '$q',\n 'Upload',\n 'EndpointProvider',\n function FileUploadFactory($q, Upload, EndpointProvider) {\n 'use strict';\n\n var service = {};\n\n function uploadFile(url, file) {\n return Upload.upload({ url: url, data: { file: file } });\n }\n\n service.buildImage = function (endpointID, names, file, path) {\n return Upload.http({\n url: `api/endpoints/${endpointID}/docker/build`,\n headers: {\n 'Content-Type': file.type,\n },\n data: file,\n params: {\n t: names,\n dockerfile: path,\n },\n ignoreLoadingBar: true,\n transformResponse: function (data) {\n return jsonObjectsToArrayHandler(data);\n },\n });\n };\n\n service.buildImageFromFiles = function (endpointID, names, files) {\n return Upload.upload({\n url: `api/endpoints/${endpointID}/docker/build`,\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n data: { file: files },\n params: {\n t: names,\n },\n transformResponse: function (data) {\n return jsonObjectsToArrayHandler(data);\n },\n });\n };\n\n service.loadImages = function (file) {\n var endpointID = EndpointProvider.endpointID();\n return Upload.http({\n url: 'api/endpoints/' + endpointID + '/docker/images/load',\n headers: {\n 'Content-Type': file.type,\n },\n data: file,\n ignoreLoadingBar: true,\n transformResponse: genericHandler,\n });\n };\n\n service.createSchedule = function (payload) {\n return Upload.upload({\n url: 'api/edge_jobs/create/file',\n data: {\n file: payload.File,\n Name: payload.Name,\n CronExpression: payload.CronExpression,\n Image: payload.Image,\n Endpoints: Upload.json(payload.Endpoints),\n RetryCount: payload.RetryCount,\n RetryInterval: payload.RetryInterval,\n },\n });\n };\n\n service.uploadBackup = function (file, password) {\n return Upload.upload({\n url: 'api/restore',\n data: {\n file,\n password,\n },\n });\n };\n\n service.createSwarmStack = function (stackName, swarmId, file, env, endpointId) {\n return Upload.upload({\n url: `api/stacks/create/swarm/file?endpointId=${endpointId}`,\n data: {\n file: file,\n Name: stackName,\n SwarmID: swarmId,\n Env: Upload.json(env),\n },\n ignoreLoadingBar: true,\n });\n };\n\n service.createComposeStack = function (stackName, file, env, endpointId) {\n return Upload.upload({\n url: `api/stacks/create/standalone/file?endpointId=${endpointId}`,\n data: {\n file: file,\n Name: stackName,\n Env: Upload.json(env),\n },\n ignoreLoadingBar: true,\n });\n };\n\n service.createEdgeStack = function createEdgeStack({ EdgeGroups, envVars, ...payload }, file) {\n return Upload.upload({\n url: `api/edge_stacks/create/file`,\n data: {\n file,\n EdgeGroups: Upload.json(EdgeGroups),\n EnvVars: Upload.json(envVars),\n ...payload,\n },\n ignoreLoadingBar: true,\n });\n };\n\n service.createCustomTemplate = function createCustomTemplate(data) {\n return Upload.upload({\n url: 'api/custom_templates/create/file',\n data,\n ignoreLoadingBar: true,\n });\n };\n\n service.configureRegistry = function (registryId, registryManagementConfigurationModel) {\n return Upload.upload({\n url: 'api/registries/' + registryId + '/configure',\n data: registryManagementConfigurationModel,\n });\n };\n\n service.createEndpoint = function (\n name,\n creationType,\n URL,\n PublicURL,\n groupID,\n tagIds,\n TLS,\n TLSSkipVerify,\n TLSSkipClientVerify,\n TLSCAFile,\n TLSCertFile,\n TLSKeyFile,\n checkinInterval\n ) {\n return Upload.upload({\n url: 'api/endpoints',\n data: {\n Name: name,\n EndpointCreationType: creationType,\n URL: URL,\n PublicURL: PublicURL,\n GroupID: groupID,\n TagIds: Upload.json(tagIds),\n TLS: TLS,\n TLSSkipVerify: TLSSkipVerify,\n TLSSkipClientVerify: TLSSkipClientVerify,\n TLSCACertFile: TLSCAFile,\n TLSCertFile: TLSCertFile,\n TLSKeyFile: TLSKeyFile,\n CheckinInterval: checkinInterval,\n },\n ignoreLoadingBar: true,\n });\n };\n\n service.createAzureEndpoint = function (name, applicationId, tenantId, authenticationKey, groupId, tagIds) {\n return Upload.upload({\n url: 'api/endpoints',\n data: {\n Name: name,\n EndpointCreationType: PortainerEndpointCreationTypes.AzureEnvironment,\n GroupID: groupId,\n TagIds: Upload.json(tagIds),\n AzureApplicationID: applicationId,\n AzureTenantID: tenantId,\n AzureAuthenticationKey: authenticationKey,\n },\n ignoreLoadingBar: true,\n });\n };\n\n service.uploadLDAPTLSFiles = function (TLSCAFile, TLSCertFile, TLSKeyFile) {\n var queue = [];\n\n if (TLSCAFile) {\n queue.push(uploadFile('api/upload/tls/ca?folder=ldap', TLSCAFile));\n }\n if (TLSCertFile) {\n queue.push(uploadFile('api/upload/tls/cert?folder=ldap', TLSCertFile));\n }\n if (TLSKeyFile) {\n queue.push(uploadFile('api/upload/tls/key?folder=ldap', TLSKeyFile));\n }\n\n return $q.all(queue);\n };\n\n service.uploadTLSFilesForEndpoint = function (endpointID, TLSCAFile, TLSCertFile, TLSKeyFile) {\n var queue = [];\n\n if (TLSCAFile) {\n queue.push(uploadFile('api/upload/tls/ca?folder=' + endpointID, TLSCAFile));\n }\n if (TLSCertFile) {\n queue.push(uploadFile('api/upload/tls/cert?folder=' + endpointID, TLSCertFile));\n }\n if (TLSKeyFile) {\n queue.push(uploadFile('api/upload/tls/key?folder=' + endpointID, TLSKeyFile));\n }\n\n return $q.all(queue);\n };\n\n service.uploadOwnershipVoucher = function (voucherFile) {\n return Upload.upload({\n url: 'api/fdo/register',\n data: {\n voucher: voucherFile,\n },\n ignoreLoadingBar: true,\n });\n };\n\n return service;\n },\n]);\n","import { ResourceControlOwnership as RCO } from '@/react/portainer/access-control/types';\n\nangular.module('portainer.app').factory('FormValidator', [\n function FormValidatorFactory() {\n 'use strict';\n\n var validator = {};\n\n validator.validateAccessControl = function (accessControlData, isAdmin) {\n if (!accessControlData.AccessControlEnabled) {\n return '';\n }\n\n if (isAdmin && accessControlData.Ownership === RCO.RESTRICTED && accessControlData.AuthorizedUsers.length === 0 && accessControlData.AuthorizedTeams.length === 0) {\n return 'You must specify at least one team or user.';\n } else if (!isAdmin && accessControlData.Ownership === RCO.RESTRICTED && accessControlData.AuthorizedTeams.length === 0) {\n return 'You must specify at least a team.';\n }\n return '';\n };\n\n return validator;\n },\n]);\n","angular.module('portainer.app').factory('LocalStorage', [\n 'localStorageService',\n function LocalStorageFactory(localStorageService) {\n return {\n storeLoginStateUUID: function (uuid) {\n localStorageService.set('LOGIN_STATE_UUID', uuid);\n },\n getLoginStateUUID: function () {\n return localStorageService.get('LOGIN_STATE_UUID');\n },\n storeEndpointState: function (state) {\n localStorageService.set('ENDPOINT_STATE', state);\n },\n getEndpointState: function () {\n return localStorageService.get('ENDPOINT_STATE');\n },\n cleanEndpointState() {\n localStorageService.remove('ENDPOINT_STATE');\n },\n storeApplicationState: function (state) {\n localStorageService.set('APPLICATION_STATE', state);\n },\n getApplicationState: function () {\n return localStorageService.get('APPLICATION_STATE');\n },\n storeUIState: function (state) {\n localStorageService.set('UI_STATE', state);\n },\n getUIState: function () {\n return localStorageService.get('UI_STATE');\n },\n storeJWT: function (jwt) {\n localStorageService.set('JWT', jwt);\n },\n getJWT: function () {\n return localStorageService.get('JWT');\n },\n deleteJWT: function () {\n localStorageService.remove('JWT');\n },\n storePaginationLimit: function (key, count) {\n localStorageService.set('datatable_pagination_' + key, count);\n },\n getPaginationLimit: function (key) {\n return localStorageService.get('datatable_pagination_' + key);\n },\n getDataTableOrder: function (key) {\n return localStorageService.get('datatable_order_' + key);\n },\n storeDataTableOrder: function (key, data) {\n localStorageService.set('datatable_order_' + key, data);\n },\n getDataTableTextFilters: function (key) {\n return localStorageService.get('datatable_text_filter_' + key);\n },\n storeDataTableTextFilters: function (key, data) {\n localStorageService.set('datatable_text_filter_' + key, data);\n },\n getDataTableFilters: function (key) {\n return localStorageService.get('datatable_filters_' + key);\n },\n storeDataTableFilters: function (key, data) {\n localStorageService.set('datatable_filters_' + key, data);\n },\n getDataTableSettings: function (key) {\n return localStorageService.get('datatable_settings_' + key);\n },\n storeDataTableSettings: function (key, data) {\n localStorageService.set('datatable_settings_' + key, data);\n },\n getDataTableExpandedItems: function (key) {\n return localStorageService.get('datatable_expandeditems_' + key);\n },\n storeDataTableExpandedItems: function (key, data) {\n localStorageService.set('datatable_expandeditems_' + key, data);\n },\n getDataTableSelectedItems: function (key) {\n return localStorageService.get('datatable_selecteditems_' + key);\n },\n storeDataTableSelectedItems: function (key, data) {\n localStorageService.set('datatable_selecteditems_' + key, data);\n },\n storeSwarmVisualizerSettings: function (key, data) {\n localStorageService.set('swarmvisualizer_' + key, data);\n },\n getSwarmVisualizerSettings: function (key) {\n return localStorageService.get('swarmvisualizer_' + key);\n },\n storeColumnVisibilitySettings: function (key, data) {\n localStorageService.set('col_visibility_' + key, data);\n },\n getColumnVisibilitySettings: function (key) {\n return localStorageService.get('col_visibility_' + key);\n },\n storeJobImage: function (data) {\n localStorageService.set('job_image', data);\n },\n getJobImage: function () {\n return localStorageService.get('job_image');\n },\n storeActiveTab: function (key, index) {\n return localStorageService.set('active_tab_' + key, index);\n },\n getActiveTab: function (key) {\n const activeTab = localStorageService.get('active_tab_' + key);\n return activeTab === null ? 0 : activeTab;\n },\n storeNamespaceFilter: function (environmentId, userID, data) {\n // store one filter per environment\n localStorageService.set(`kubernetes_namespace_filter_${environmentId}_${userID}`, data);\n },\n getNamespaceFilter: function (environmentId, userID) {\n return localStorageService.get(`kubernetes_namespace_filter_${environmentId}_${userID}`);\n },\n storeLogoutReason: (reason) => localStorageService.set('logout_reason', reason),\n getLogoutReason: () => localStorageService.get('logout_reason'),\n cleanLogoutReason: () => localStorageService.remove('logout_reason'),\n clean: function () {\n localStorageService.clearAll();\n },\n cleanAuthData() {\n localStorageService.remove('JWT', 'APPLICATION_STATE', 'LOGIN_STATE_UUID', 'ALLOWED_NAMESPACES');\n },\n storeKubernetesSummaryToggle(value) {\n localStorageService.set('kubernetes_summary_expanded', value);\n },\n getKubernetesSummaryToggle() {\n return localStorageService.get('kubernetes_summary_expanded');\n },\n };\n },\n]);\n","import angular from 'angular';\nimport { getEnvironments } from '@/react/portainer/environments/environment.service';\n\nangular.module('portainer.app').factory('NameValidator', NameValidatorFactory);\n/* @ngInject */\nfunction NameValidatorFactory(Notifications) {\n return {\n validateEnvironmentName,\n };\n\n async function validateEnvironmentName(name) {\n try {\n const endpoints = await getEnvironments({ limit: 1, name });\n return endpoints.value.length > 0;\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to retrieve environment details');\n }\n }\n}\n","angular.module('portainer.app').factory('PaginationService', [\n 'LocalStorage',\n 'PAGINATION_MAX_ITEMS',\n function PaginationServiceFactory(LocalStorage, PAGINATION_MAX_ITEMS) {\n 'use strict';\n\n var service = {};\n\n service.getPaginationLimit = function (key) {\n var paginationLimit = PAGINATION_MAX_ITEMS;\n\n var storedLimit = LocalStorage.getPaginationLimit(key);\n if (storedLimit !== null) {\n paginationLimit = storedLimit;\n }\n return '' + paginationLimit;\n };\n\n service.setPaginationLimit = function (key, limit) {\n LocalStorage.storePaginationLimit(key, limit);\n };\n\n return service;\n },\n]);\n","import _ from 'lodash-es';\nimport { RegistryGitlabProject } from '../models/gitlabRegistry';\nimport { RegistryRepositoryGitlabViewModel } from '../models/registryRepository';\n\nangular.module('portainer.app').factory('RegistryGitlabService', [\n '$async',\n 'Gitlab',\n function RegistryGitlabServiceFactory($async, Gitlab) {\n 'use strict';\n var service = {};\n\n /**\n * PROJECTS\n */\n\n async function _getProjectsPage(env, params, projects) {\n const response = await Gitlab(env).projects(params).$promise;\n projects = _.concat(projects, response.data);\n if (response.next) {\n params.page = response.next;\n projects = await _getProjectsPage(env, params, projects);\n }\n return projects;\n }\n\n async function projectsAsync(url, token) {\n try {\n const data = await _getProjectsPage({ url: url, token: token }, { page: 1 }, []);\n return _.map(data, (project) => new RegistryGitlabProject(project));\n } catch (error) {\n throw { msg: 'Unable to retrieve projects', err: error };\n }\n }\n\n /**\n * END PROJECTS\n */\n\n /**\n * REPOSITORIES\n */\n\n async function _getRepositoriesPage(params, repositories) {\n const response = await Gitlab().repositories(params).$promise;\n repositories = _.concat(repositories, response.data);\n if (response.next) {\n params.page = response.next;\n repositories = await _getRepositoriesPage(params, repositories);\n }\n return repositories;\n }\n\n async function repositoriesAsync(registry, endpointId) {\n try {\n const params = {\n id: registry.Id,\n endpointId: endpointId,\n projectId: registry.Gitlab.ProjectId,\n page: 1,\n };\n const data = await _getRepositoriesPage(params, []);\n return _.map(data, (r) => new RegistryRepositoryGitlabViewModel(r));\n } catch (error) {\n throw { msg: 'Unable to retrieve repositories', err: error };\n }\n }\n\n /**\n * END REPOSITORIES\n */\n\n /**\n * SERVICE FUNCTIONS DECLARATION\n */\n\n function projects(url, token) {\n return $async(projectsAsync, url, token);\n }\n\n function repositories(registry, endpointId) {\n return $async(repositoriesAsync, registry, endpointId);\n }\n\n service.projects = projects;\n service.repositories = repositories;\n return service;\n },\n]);\n","import { useState } from 'react';\n\nimport { Registry } from '@/react/portainer/registries/types';\n\nimport { Modal, OnSubmit, openModal } from '@@/modals';\nimport { Button } from '@@/buttons';\nimport { PortainerSelect } from '@@/form-components/PortainerSelect';\n\ninterface Props {\n registries: Registry[];\n onSubmit: OnSubmit<Registry['Id']>;\n defaultValue: Registry['Id'];\n}\n\nfunction RegistrySelectPrompt({ onSubmit, defaultValue, registries }: Props) {\n const title = 'Which registry do you want to use?';\n const [registryId, setRegistryId] = useState(defaultValue);\n const options = registries2Options(registries);\n\n return (\n <Modal onDismiss={() => onSubmit()} aria-label={title}>\n <Modal.Header title={title} />\n\n <Modal.Body>\n <PortainerSelect\n onChange={setRegistryId}\n value={registryId}\n options={options}\n />\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => onSubmit()} color=\"default\">\n Cancel\n </Button>\n <Button onClick={() => onSubmit(registryId)} color=\"primary\">\n Update\n </Button>\n </Modal.Footer>\n </Modal>\n );\n}\n\nexport function selectRegistry(\n registries: Registry[],\n defaultValue: Registry['Id']\n) {\n return openModal(RegistrySelectPrompt, {\n registries,\n defaultValue,\n });\n}\n\nfunction registries2Options(registries: Registry[]) {\n return registries.map((r) => ({\n label: r.Name,\n value: r.Id,\n }));\n}\n","import _ from 'lodash';\nimport { selectRegistry } from '@/react/docker/images/ItemView/RegistrySelectPrompt';\n\nangular.module('portainer.app').factory('RegistryModalService', RegistryModalService);\n\nfunction RegistryModalService(RegistryService) {\n const service = {};\n\n service.registryModal = async function (repository, registries) {\n const registryModel = RegistryService.retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries);\n const defaultValue = _.get(registryModel, 'Registry.Id', 0);\n\n const registryId = await selectRegistry(registries, defaultValue);\n if (registryId === undefined) {\n return null;\n }\n\n return RegistryService.retrievePorRegistryModelFromRepositoryWithRegistries(repository, registries, registryId);\n };\n\n return service;\n}\n","/**\n * clears the sessionStorage\n */\nexport function clear() {\n sessionStorage.clear();\n}\n\n/**\n * stores `value` as string in `sessionStorage[key]`\n *\n * @param {string} key the key to store value at\n * @param {any} value the value to store - will be stringified using JSON.stringify\n *\n */\nexport function save(key, value) {\n sessionStorage.setItem(key, JSON.stringify(value));\n}\n\n/**\n * get parses the value stored in sessionStorage[key], if it's not available returns undefined\n *\n * @param {string} key\n */\nexport function get(key) {\n try {\n const value = sessionStorage.getItem(key);\n return JSON.parse(value);\n } catch (e) {\n return;\n }\n}\n","import moment from 'moment';\n\nangular.module('portainer.app').factory('StateManager', StateManagerFactory);\n\n/* @ngInject */\nfunction StateManagerFactory(\n $async,\n $q,\n SystemService,\n InfoHelper,\n LocalStorage,\n SettingsService,\n StatusService,\n APPLICATION_CACHE_VALIDITY,\n AgentPingService,\n $analytics,\n EndpointProvider\n) {\n var manager = {};\n\n var state = {\n loading: true,\n application: {},\n endpoint: {},\n UI: {\n dismissedInfoPanels: {},\n dismissedInfoHash: '',\n timesPasswordChangeSkipped: {},\n dismissedUpdateVersion: '',\n },\n };\n\n manager.dismissInformationPanel = function (id) {\n state.UI.dismissedInfoPanels[id] = true;\n LocalStorage.storeUIState(state.UI);\n };\n\n manager.dismissImportantInformation = function (hash) {\n state.UI.dismissedInfoHash = hash;\n LocalStorage.storeUIState(state.UI);\n };\n\n manager.setRequiredPasswordLength = function (length) {\n state.UI.requiredPasswordLength = length;\n LocalStorage.storeUIState(state.UI);\n };\n\n manager.setPasswordChangeSkipped = function (userID) {\n state.UI.instanceId = state.UI.instanceId || state.application.instanceId;\n state.UI.timesPasswordChangeSkipped[userID] = state.UI.timesPasswordChangeSkipped[userID] + 1 || 1;\n LocalStorage.storeUIState(state.UI);\n };\n\n manager.resetPasswordChangeSkips = function (userID) {\n if (!state.UI.timesPasswordChangeSkipped) {\n return;\n }\n if (state.UI.timesPasswordChangeSkipped[userID]) state.UI.timesPasswordChangeSkipped[userID] = 0;\n LocalStorage.storeUIState(state.UI);\n };\n\n manager.clearPasswordChangeSkips = function () {\n state.UI.timesPasswordChangeSkipped = {};\n LocalStorage.storeUIState(state.UI);\n };\n\n manager.getState = function () {\n return state;\n };\n\n manager.clean = function () {\n manager.cleanEndpoint();\n state.application = {};\n };\n\n manager.cleanEndpoint = function () {\n state.endpoint = {};\n EndpointProvider.clean();\n LocalStorage.cleanEndpointState();\n };\n\n manager.updateLogo = function (logoURL) {\n state.application.logo = logoURL;\n LocalStorage.storeApplicationState(state.application);\n };\n\n manager.updateTheme = function (theme) {\n state.application.theme = theme;\n LocalStorage.storeApplicationState(state.application);\n };\n\n manager.updateSnapshotInterval = function (interval) {\n state.application.snapshotInterval = interval;\n LocalStorage.storeApplicationState(state.application);\n };\n\n manager.updateEnableEdgeComputeFeatures = function updateEnableEdgeComputeFeatures(enableEdgeComputeFeatures) {\n state.application.enableEdgeComputeFeatures = enableEdgeComputeFeatures;\n LocalStorage.storeApplicationState(state.application);\n };\n\n manager.updateEnableTelemetry = function updateEnableTelemetry(enableTelemetry) {\n state.application.enableTelemetry = enableTelemetry;\n $analytics.setOptOut(!enableTelemetry);\n LocalStorage.storeApplicationState(state.application);\n };\n\n function assignStateFromStatusAndSettings(status, settings) {\n state.application.version = status.Version;\n state.application.edition = status.Edition;\n state.application.instanceId = status.InstanceID;\n state.application.demoEnvironment = status.DemoEnvironment;\n\n state.application.enableTelemetry = settings.EnableTelemetry;\n state.application.logo = settings.LogoURL;\n state.application.snapshotInterval = settings.SnapshotInterval;\n state.application.enableEdgeComputeFeatures = settings.EnableEdgeComputeFeatures;\n state.application.validity = moment().unix();\n }\n\n function loadApplicationState() {\n var deferred = $q.defer();\n\n $q.all({\n settings: SettingsService.publicSettings(),\n status: StatusService.status(),\n })\n .then(function success(data) {\n var status = data.status;\n var settings = data.settings;\n assignStateFromStatusAndSettings(status, settings);\n LocalStorage.storeApplicationState(state.application);\n deferred.resolve(state);\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to retrieve server settings and status', err: err });\n });\n\n return deferred.promise;\n }\n\n manager.initialize = initialize;\n async function initialize() {\n return $async(async () => {\n const endpointState = LocalStorage.getEndpointState();\n if (endpointState) {\n state.endpoint = endpointState;\n }\n\n const applicationState = LocalStorage.getApplicationState();\n if (isAppStateValid(applicationState)) {\n state.application = applicationState;\n } else {\n await loadApplicationState();\n }\n\n const UIState = LocalStorage.getUIState();\n if (UIState) {\n state.UI = UIState;\n if (state.UI.instanceId && state.UI.instanceId !== state.application.instanceId) {\n state.UI.instanceId = state.application.instanceId;\n state.UI.timesPasswordChangeSkipped = {};\n LocalStorage.storeUIState(state.UI);\n }\n }\n\n state.loading = false;\n $analytics.setPortainerStatus(state.application.instanceId, state.application.version);\n $analytics.setOptOut(!state.application.enableTelemetry);\n return state;\n });\n }\n\n function isAppStateValid(appState) {\n if (!appState || !appState.validity) {\n return false;\n }\n const now = moment().unix();\n const cacheValidity = now - appState.validity;\n return cacheValidity < APPLICATION_CACHE_VALIDITY;\n }\n\n manager.updateEndpointState = function (endpoint) {\n var deferred = $q.defer();\n\n if (endpoint.Type === 3) {\n state.endpoint.name = endpoint.Name;\n state.endpoint.mode = { provider: 'AZURE' };\n LocalStorage.storeEndpointState(state.endpoint);\n deferred.resolve();\n return deferred.promise;\n } else if (endpoint.Type === 5 || endpoint.Type === 6 || endpoint.Type === 7) {\n state.endpoint.name = endpoint.Name;\n state.endpoint.mode = { provider: 'KUBERNETES' };\n LocalStorage.storeEndpointState(state.endpoint);\n deferred.resolve();\n return deferred.promise;\n }\n\n $q.all({\n version: SystemService.version(),\n info: SystemService.info(),\n })\n .then(function success(data) {\n var endpointMode = InfoHelper.determineEndpointMode(data.info, endpoint.Type);\n var endpointAPIVersion = parseFloat(data.version.ApiVersion);\n state.endpoint.mode = endpointMode;\n state.endpoint.name = endpoint.Name;\n state.endpoint.type = endpoint.Type;\n state.endpoint.apiVersion = endpointAPIVersion;\n\n if (endpointMode.agentProxy && endpoint.Status === 1) {\n return AgentPingService.ping(endpoint.Id).then(function onPingSuccess(data) {\n state.endpoint.agentApiVersion = data.version;\n });\n }\n })\n .then(function () {\n LocalStorage.storeEndpointState(state.endpoint);\n deferred.resolve();\n })\n .catch(function error(err) {\n deferred.reject({ msg: 'Unable to connect to the Docker environment', err: err });\n })\n .finally(function final() {\n state.loading = false;\n });\n\n return deferred.promise;\n };\n\n manager.getAgentApiVersion = function getAgentApiVersion() {\n return state.endpoint.agentApiVersion;\n };\n\n return manager;\n}\n","angular.module('portainer.app').service('ThemeManager', ThemeManager);\n\n/* @ngInject */\nexport function ThemeManager(StateManager) {\n return {\n setTheme,\n autoTheme,\n defaultTheme,\n };\n\n function setTheme(theme) {\n if (!theme) {\n document.documentElement.removeAttribute('theme');\n } else {\n document.documentElement.setAttribute('theme', theme);\n StateManager.updateTheme(theme);\n }\n }\n\n function autoTheme() {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : '';\n this.setTheme(systemTheme);\n }\n\n function defaultTheme() {\n document.documentElement.removeAttribute('theme');\n }\n}\n","export const authenticationMethodTypesMap = {\n INTERNAL: 1,\n LDAP: 2,\n OAUTH: 3,\n};\n\nexport const authenticationMethodTypesLabels = {\n [authenticationMethodTypesMap.INTERNAL]: 'Internal',\n [authenticationMethodTypesMap.LDAP]: 'LDAP',\n [authenticationMethodTypesMap.OAUTH]: 'OAuth',\n};\n","export const authenticationActivityTypesMap = {\n AuthSuccess: 1,\n AuthFailure: 2,\n Logout: 3,\n};\n\nexport const authenticationActivityTypesLabels = {\n [authenticationActivityTypesMap.AuthSuccess]: 'Authentication success',\n [authenticationActivityTypesMap.AuthFailure]: 'Authentication failure',\n [authenticationActivityTypesMap.Logout]: 'Logout',\n};\n","const autoNgTemplateLoaderTemplate1 = require('./auto-user-provision-toggle.html');\n\nexport const autoUserProvisionToggle = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n transclude: {\n description: 'fieldDescription',\n },\n bindings: {\n ngModel: '=',\n },\n};\n","import angular from 'angular';\nimport ldapModule from './ldap';\nimport { autoUserProvisionToggle } from './auto-user-provision-toggle';\nimport { saveAuthSettingsButton } from './save-auth-settings-button';\n\nexport default angular\n .module('portainer.settings.authentication', [ldapModule])\n\n .component('saveAuthSettingsButton', saveAuthSettingsButton)\n .component('autoUserProvisionToggle', autoUserProvisionToggle).name;\n","import _ from 'lodash-es';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service';\n\nexport default class AdSettingsController {\n /* @ngInject */\n constructor(LDAPService) {\n this.LDAPService = LDAPService;\n\n this.domainSuffix = '';\n this.limitedFeatureId = FeatureId.HIDE_INTERNAL_AUTH;\n this.onTlscaCertChange = this.onTlscaCertChange.bind(this);\n this.searchUsers = this.searchUsers.bind(this);\n this.searchGroups = this.searchGroups.bind(this);\n this.parseDomainName = this.parseDomainName.bind(this);\n this.onAccountChange = this.onAccountChange.bind(this);\n }\n\n parseDomainName(account) {\n this.domainName = '';\n\n if (!account || !account.includes('@')) {\n return;\n }\n\n const [, domainName] = account.split('@');\n if (!domainName) {\n return;\n }\n\n const parts = _.compact(domainName.split('.'));\n this.domainSuffix = parts.map((part) => `dc=${part}`).join(',');\n }\n\n onAccountChange(account) {\n this.parseDomainName(account);\n }\n\n searchUsers() {\n return this.LDAPService.users(this.settings);\n }\n\n searchGroups() {\n return this.LDAPService.groups(this.settings);\n }\n\n onTlscaCertChange(file) {\n this.tlscaCert = file;\n }\n\n addLDAPUrl() {\n this.settings.URLs.push('');\n }\n\n removeLDAPUrl(index) {\n this.settings.URLs.splice(index, 1);\n }\n\n isSaveSettingButtonDisabled() {\n return isLimitedToBE(this.limitedFeatureId) || !this.isLdapFormValid();\n }\n\n $onInit() {\n this.tlscaCert = this.settings.TLSCACert;\n this.parseDomainName(this.settings.ReaderDN);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ad-settings.html');\n\nimport controller from './ad-settings.controller';\n\nexport const adSettings = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n tlscaCert: '=',\n state: '=',\n connectivityCheck: '<',\n onSaveSettings: '<',\n saveButtonState: '<',\n isLdapFormValid: '&?',\n },\n};\n","import angular from 'angular';\n\nimport { adSettings } from './ad-settings';\nimport { ldapSettings } from './ldap-settings';\nimport { ldapSettingsCustom } from './ldap-settings-custom';\nimport { ldapSettingsOpenLdap } from './ldap-settings-openldap';\n\nimport { ldapConnectivityCheck } from './ldap-connectivity-check';\nimport { ldapGroupsDatatable } from './ldap-groups-datatable';\nimport { ldapGroupSearch } from './ldap-group-search';\nimport { ldapGroupSearchItem } from './ldap-group-search-item';\nimport { ldapUserSearch } from './ldap-user-search';\nimport { ldapUserSearchItem } from './ldap-user-search-item';\nimport { ldapSettingsDnBuilder } from './ldap-settings-dn-builder';\nimport { ldapSettingsGroupDnBuilder } from './ldap-settings-group-dn-builder';\nimport { ldapCustomGroupSearch } from './ldap-custom-group-search';\nimport { ldapCustomAdminGroup } from './ldap-custom-admin-group';\nimport { ldapSettingsSecurity } from './ldap-settings-security';\nimport { ldapSettingsTestLogin } from './ldap-settings-test-login';\nimport { ldapCustomUserSearch } from './ldap-custom-user-search';\nimport { ldapUsersDatatable } from './ldap-users-datatable';\nimport { LDAPService } from './ldap.service';\nimport { LDAP } from './ldap.rest';\n\nexport default angular\n .module('portainer.settings.authentication.ldap', [])\n .service('LDAPService', LDAPService)\n .service('LDAP', LDAP)\n .component('ldapConnectivityCheck', ldapConnectivityCheck)\n .component('ldapGroupsDatatable', ldapGroupsDatatable)\n .component('ldapSettings', ldapSettings)\n .component('adSettings', adSettings)\n .component('ldapGroupSearch', ldapGroupSearch)\n .component('ldapGroupSearchItem', ldapGroupSearchItem)\n .component('ldapUserSearch', ldapUserSearch)\n .component('ldapUserSearchItem', ldapUserSearchItem)\n .component('ldapSettingsCustom', ldapSettingsCustom)\n .component('ldapSettingsDnBuilder', ldapSettingsDnBuilder)\n .component('ldapSettingsGroupDnBuilder', ldapSettingsGroupDnBuilder)\n .component('ldapCustomGroupSearch', ldapCustomGroupSearch)\n .component('ldapCustomAdminGroup', ldapCustomAdminGroup)\n .component('ldapSettingsOpenLdap', ldapSettingsOpenLdap)\n .component('ldapSettingsSecurity', ldapSettingsSecurity)\n .component('ldapSettingsTestLogin', ldapSettingsTestLogin)\n .component('ldapCustomUserSearch', ldapCustomUserSearch)\n .component('ldapUsersDatatable', ldapUsersDatatable).name;\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-connectivity-check.html');\n\nexport const ldapConnectivityCheck = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n settings: '<',\n state: '<',\n connectivityCheck: '<',\n limitedFeatureId: '<',\n },\n};\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-custom-admin-group.html');\n\nimport './ldap-custom-admin-group.css';\nimport controller from './ldap-custom-admin-group.controller';\n\nexport const ldapCustomAdminGroup = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n selectedAdminGroups: '=',\n defaultAdminGroupSearchFilter: '<',\n onSearchClick: '<',\n limitedFeatureId: '<',\n isLimitedFeatureSelfContained: '<',\n },\n};\n","export default class LdapCustomAdminGroupController {\n /* @ngInject */\n constructor($async, $scope, Notifications, LDAPService) {\n Object.assign(this, { $async, $scope, Notifications, LDAPService });\n\n this.groups = null;\n this.groupstest = null;\n this.enableAssignAdminGroup = false;\n\n this.onRemoveClick = this.onRemoveClick.bind(this);\n this.onAddClick = this.onAddClick.bind(this);\n this.search = this.search.bind(this);\n this.onAdminGroupChange = this.onAdminGroupChange.bind(this);\n }\n\n onAddClick() {\n this.settings.AdminGroupSearchSettings.push({ GroupBaseDN: '', GroupAttribute: '', GroupFilter: '' });\n }\n\n onRemoveClick(index) {\n this.settings.AdminGroupSearchSettings.splice(index, 1);\n }\n\n search() {\n return this.$async(async () => {\n try {\n this.groups = null;\n const groups = await this.onSearchClick();\n this.groups = groups.map((group) => ({ label: group.name, value: group.name }));\n this.enableAssignAdminGroup = this.groups && this.groups.length > 0;\n } catch (error) {\n this.Notifications.error('Failure', error, 'Failed to search groups');\n }\n });\n }\n\n onAdminGroupChange(value) {\n return this.$scope.$evalAsync(() => {\n this.selectedAdminGroups = value;\n });\n }\n\n async $onInit() {\n if (this.settings.AdminAutoPopulate && this.settings.AdminGroups && this.settings.AdminGroups.length > 0) {\n await this.search();\n }\n\n if (this.groups && this.groups.length > 0) {\n this.enableAssignAdminGroup = true;\n }\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-custom-group-search.html');\n\nimport controller from './ldap-custom-group-search.controller';\n\nexport const ldapCustomGroupSearch = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n onSearchClick: '<',\n limitedFeatureId: '<',\n },\n};\n","export default class LdapCustomGroupSearchController {\n /* @ngInject */\n constructor($async, Notifications) {\n Object.assign(this, { $async, Notifications });\n\n this.groups = null;\n this.showTable = false;\n\n this.onRemoveClick = this.onRemoveClick.bind(this);\n this.onAddClick = this.onAddClick.bind(this);\n this.search = this.search.bind(this);\n }\n\n onAddClick() {\n this.settings.push({ GroupBaseDN: '', GroupAttribute: '', GroupFilter: '' });\n }\n\n onRemoveClick(index) {\n this.settings.splice(index, 1);\n }\n\n search() {\n return this.$async(async () => {\n try {\n this.groups = null;\n this.showTable = true;\n this.groups = await this.onSearchClick();\n } catch (error) {\n this.showTable = false;\n this.Notifications.error('Failure', error, 'Failed to search users');\n }\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-custom-user-search.html');\n\nimport controller from './ldap-custom-user-search.controller';\n\nexport const ldapCustomUserSearch = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n onSearchClick: '<',\n limitedFeatureId: '<',\n },\n};\n","export default class LdapCustomUserSearchController {\n /* @ngInject */\n constructor($async, Notifications) {\n Object.assign(this, { $async, Notifications });\n\n this.users = null;\n\n this.onRemoveClick = this.onRemoveClick.bind(this);\n this.onAddClick = this.onAddClick.bind(this);\n this.search = this.search.bind(this);\n }\n\n onAddClick() {\n this.settings.push({ BaseDN: '', UserNameAttribute: '', Filter: '' });\n }\n\n onRemoveClick(index) {\n this.settings.splice(index, 1);\n }\n\n search() {\n return this.$async(async () => {\n try {\n this.users = null;\n this.showTable = true;\n this.users = await this.onSearchClick();\n } catch (error) {\n this.showTable = false;\n this.Notifications.error('Failure', error, 'Failed to search users');\n }\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-group-search-item.html');\n\nimport controller from './ldap-group-search-item.controller';\n\nexport const ldapGroupSearchItem = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n config: '=',\n index: '<',\n domainSuffix: '@',\n baseFilter: '@',\n\n onRemoveClick: '<',\n limitedFeatureId: '<',\n },\n};\n","export default class LdapSettingsAdGroupSearchItemController {\n /* @ngInject */\n constructor(Notifications) {\n Object.assign(this, { Notifications });\n\n this.groups = [];\n\n this.onChangeBaseDN = this.onChangeBaseDN.bind(this);\n }\n\n onChangeBaseDN(baseDN) {\n this.config.GroupBaseDN = baseDN;\n }\n\n addGroup() {\n this.groups.push({ type: 'ou', value: '' });\n }\n\n removeGroup($index) {\n this.groups.splice($index, 1);\n this.onGroupsChange();\n }\n\n onGroupsChange() {\n const groupsFilter = this.groups.map(({ type, value }) => `(${type}=${value})`).join('');\n this.onFilterChange(groupsFilter ? `(&${this.baseFilter}(|${groupsFilter}))` : `${this.baseFilter}`);\n }\n\n onFilterChange(filter) {\n this.config.GroupFilter = filter;\n }\n\n parseGroupFilter() {\n const match = this.config.GroupFilter.match(/^\\(&\\(objectClass=(\\w+)\\)\\(\\|((\\(\\w+=.+\\))+)\\)\\)$/);\n if (!match) {\n return;\n }\n\n const [, , groupFilter = ''] = match;\n\n this.groups = groupFilter\n .slice(1, -1)\n .split(')(')\n .map((str) => str.split('='))\n .map(([type, value]) => ({ type, value }));\n }\n\n $onInit() {\n this.parseGroupFilter();\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-group-search.html');\n\nimport controller from './ldap-group-search.controller';\n\nexport const ldapGroupSearch = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n domainSuffix: '@',\n baseFilter: '@',\n\n onSearchClick: '<',\n limitedFeatureId: '<',\n },\n};\n","import _ from 'lodash-es';\n\nexport default class LdapGroupSearchController {\n /* @ngInject */\n constructor($async, Notifications) {\n Object.assign(this, { $async, Notifications });\n\n this.groups = null;\n\n this.onRemoveClick = this.onRemoveClick.bind(this);\n this.onAddClick = this.onAddClick.bind(this);\n this.search = this.search.bind(this);\n }\n\n onAddClick() {\n const lastSetting = _.last(this.settings);\n this.settings.push({ GroupBaseDN: this.domainSuffix, GroupAttribute: lastSetting.GroupAttribute, GroupFilter: this.baseFilter });\n }\n\n onRemoveClick(index) {\n this.settings.splice(index, 1);\n }\n\n search() {\n return this.$async(async () => {\n try {\n this.groups = null;\n this.showTable = true;\n this.groups = await this.onSearchClick();\n } catch (error) {\n this.showTable = false;\n this.Notifications.error('Failure', error, 'Failed to search users');\n }\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-groups-datatable.html');\n\nexport const ldapGroupsDatatable = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n },\n};\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-settings-custom.html');\n\nimport './ldap-settings-custom.css';\nimport controller from './ldap-settings-custom.controller';\n\nexport const ldapSettingsCustom = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n tlscaCert: '=',\n state: '=',\n onTlscaCertChange: '<',\n connectivityCheck: '<',\n onSearchUsersClick: '<',\n onSearchGroupsClick: '<',\n onSaveSettings: '<',\n saveButtonState: '<',\n saveButtonDisabled: '<',\n },\n};\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nexport default class LdapSettingsCustomController {\n constructor() {\n this.limitedFeatureId = FeatureId.EXTERNAL_AUTH_LDAP;\n }\n\n addLDAPUrl() {\n this.settings.URLs.push('');\n }\n\n removeLDAPUrl(index) {\n this.settings.URLs.splice(index, 1);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-settings-dn-builder.html');\n\nimport controller from './ldap-settings-dn-builder.controller';\n\nexport const ldapSettingsDnBuilder = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n // ngModel: string (dc=,cn=,)\n ngModel: '<',\n // onChange(string) => void\n onChange: '<',\n // suffix: string (dc=,dc=,)\n suffix: '@',\n label: '@',\n limitedFeatureId: '<',\n },\n};\n","export default class LdapSettingsBaseDnBuilderController {\n /* @ngInject */\n constructor() {\n this.entries = [];\n }\n\n addEntry() {\n this.entries.push({ type: 'ou', value: '' });\n }\n\n removeEntry($index) {\n this.entries.splice($index, 1);\n this.onEntriesChange();\n }\n\n moveUp($index) {\n if ($index <= 0) {\n return;\n }\n arrayMove(this.entries, $index, $index - 1);\n this.onEntriesChange();\n }\n\n moveDown($index) {\n if ($index >= this.entries.length - 1) {\n return;\n }\n arrayMove(this.entries, $index, $index + 1);\n this.onEntriesChange();\n }\n\n onEntriesChange() {\n const dn = this.entries\n .filter(({ value }) => value)\n .map(({ type, value }) => `${type}=${value}`)\n .concat(this.suffix)\n .filter((value) => value)\n .join(',');\n\n this.onChange(dn);\n }\n\n getOUValues(dn, domainSuffix = '') {\n const regex = /(\\w+)=([a-zA-Z0-9_ ]*),?/;\n let ouValues = [];\n let left = dn;\n let match = left.match(regex);\n while (match && left !== domainSuffix) {\n const [, type, value] = match;\n ouValues.push({ type, value });\n left = left.replace(regex, '');\n match = left.match(regex);\n }\n return ouValues;\n }\n\n parseBaseDN() {\n this.entries = this.getOUValues(this.ngModel, this.suffix);\n }\n\n $onChanges({ suffix, ngModel }) {\n if ((!suffix && !ngModel) || (suffix && suffix.isFirstChange())) {\n return;\n }\n this.onEntriesChange();\n }\n\n $onInit() {\n this.parseBaseDN();\n }\n}\n\nfunction arrayMove(array, fromIndex, toIndex) {\n if (!checkValidIndex(array, fromIndex) || !checkValidIndex(array, toIndex)) {\n throw new Error('index is out of bounds');\n }\n const [item] = array.splice(fromIndex, 1);\n\n array.splice(toIndex, 0, item);\n\n function checkValidIndex(array, index) {\n return index >= 0 && index <= array.length;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-settings-group-dn-builder.html');\n\nimport controller from './ldap-settings-group-dn-builder.controller';\n\nexport const ldapSettingsGroupDnBuilder = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n // ngModel: string (dc=,cn=,)\n ngModel: '<',\n // onChange(string) => void\n onChange: '<',\n // suffix: string (dc=,dc=,)\n suffix: '@',\n // index: int >= 0\n index: '<',\n onRemoveClick: '<',\n limitedFeatureId: '<',\n },\n};\n","export default class LdapSettingsGroupDnBuilderController {\n /* @ngInject */\n constructor() {\n this.groupName = '';\n this.entries = '';\n\n this.onEntriesChange = this.onEntriesChange.bind(this);\n this.onGroupNameChange = this.onGroupNameChange.bind(this);\n this.onGroupChange = this.onGroupChange.bind(this);\n this.removeGroup = this.removeGroup.bind(this);\n }\n\n onEntriesChange(entries) {\n this.onGroupChange(this.groupName, entries);\n }\n\n onGroupNameChange() {\n this.onGroupChange(this.groupName, this.entries);\n }\n\n onGroupChange(groupName, entries) {\n if (!groupName) {\n return;\n }\n const groupNameEntry = `cn=${groupName}`;\n this.onChange(this.index, entries || this.suffix ? `${groupNameEntry},${entries || this.suffix}` : groupNameEntry);\n }\n\n removeGroup() {\n this.onRemoveClick(this.index);\n }\n\n parseEntries(value, suffix) {\n if (value === suffix) {\n this.groupName = '';\n this.entries = suffix;\n return;\n }\n\n const [groupName, entries] = this.ngModel.split(/,(.+)/);\n this.groupName = groupName.replace('cn=', '');\n this.entries = entries || '';\n }\n\n $onChange({ ngModel, suffix }) {\n if ((!suffix || suffix.isFirstChange()) && !ngModel) {\n return;\n }\n this.parseEntries(ngModel.value, suffix.value);\n }\n\n $onInit() {\n this.parseEntries(this.ngModel, this.suffix);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-settings-openldap.html');\n\nimport controller from './ldap-settings-openldap.controller';\n\nexport const ldapSettingsOpenLdap = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n tlscaCert: '=',\n state: '=',\n connectivityCheck: '<',\n onTlscaCertChange: '<',\n onSearchUsersClick: '<',\n onSearchGroupsClick: '<',\n onSaveSettings: '<',\n saveButtonState: '<',\n saveButtonDisabled: '<',\n },\n};\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nexport default class LdapSettingsOpenLDAPController {\n /* @ngInject */\n constructor() {\n this.domainSuffix = '';\n this.limitedFeatureId = FeatureId.EXTERNAL_AUTH_LDAP;\n\n this.findDomainSuffix = this.findDomainSuffix.bind(this);\n this.parseDomainSuffix = this.parseDomainSuffix.bind(this);\n this.onAccountChange = this.onAccountChange.bind(this);\n }\n\n findDomainSuffix() {\n const serviceAccount = this.settings.ReaderDN;\n let domainSuffix = this.parseDomainSuffix(serviceAccount);\n if (!domainSuffix && this.settings.SearchSettings.length > 0) {\n const searchSettings = this.settings.SearchSettings[0];\n domainSuffix = this.parseDomainSuffix(searchSettings.BaseDN);\n }\n\n this.domainSuffix = domainSuffix;\n }\n\n parseDomainSuffix(string = '') {\n const index = string.toLowerCase().indexOf('dc=');\n return index !== -1 ? string.substring(index) : '';\n }\n\n onAccountChange(serviceAccount) {\n this.domainSuffix = this.parseDomainSuffix(serviceAccount);\n }\n\n addLDAPUrl() {\n this.settings.URLs.push('');\n }\n\n removeLDAPUrl(index) {\n this.settings.URLs.splice(index, 1);\n }\n\n $onInit() {\n this.findDomainSuffix();\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-settings-security.html');\n\nexport const ldapSettingsSecurity = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n settings: '=',\n tlscaCert: '<',\n onTlscaCertChange: '<',\n uploadInProgress: '<',\n title: '@',\n limitedFeatureId: '<',\n },\n};\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-settings-test-login.html');\n\nimport './ldap-settings-test-login.css';\nimport controller from './ldap-settings-test-login.controller';\n\nexport const ldapSettingsTestLogin = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n limitedFeatureId: '<',\n showBeIndicatorIfNeeded: '<',\n isLimitedFeatureSelfContained: '<',\n },\n};\n","const TEST_STATUS = {\n LOADING: 'LOADING',\n SUCCESS: 'SUCCESS',\n FAILURE: 'FAILURE',\n};\n\nexport default class LdapSettingsTestLogin {\n /* @ngInject */\n constructor($async, LDAPService, Notifications) {\n Object.assign(this, { $async, LDAPService, Notifications });\n\n this.TEST_STATUS = TEST_STATUS;\n\n this.state = {\n testStatus: '',\n };\n }\n\n async testLogin(username, password) {\n return this.$async(async () => {\n this.state.testStatus = TEST_STATUS.LOADING;\n try {\n const response = await this.LDAPService.testLogin(this.settings, username, password);\n this.state.testStatus = response.valid ? TEST_STATUS.SUCCESS : TEST_STATUS.FAILURE;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to test login');\n this.state.testStatus = TEST_STATUS.FAILURE;\n }\n });\n }\n}\n","export function buildLdapSettingsModel() {\n return {\n AnonymousMode: true,\n ReaderDN: '',\n URLs: [''],\n ServerType: 0,\n TLSConfig: {\n TLS: false,\n TLSSkipVerify: false,\n },\n StartTLS: false,\n SearchSettings: [\n {\n BaseDN: '',\n Filter: '',\n UserNameAttribute: '',\n },\n ],\n GroupSearchSettings: [\n {\n GroupBaseDN: '',\n GroupFilter: '',\n GroupAttribute: '',\n },\n ],\n AdminGroupSearchSettings: [\n {\n GroupBaseDN: '',\n GroupFilter: '',\n GroupAttribute: '',\n },\n ],\n AutoCreateUsers: true,\n };\n}\n\nexport function buildAdSettingsModel() {\n const settings = buildLdapSettingsModel();\n\n settings.ServerType = 2;\n settings.AnonymousMode = false;\n settings.SearchSettings[0].UserNameAttribute = 'sAMAccountName';\n settings.SearchSettings[0].Filter = '(objectClass=user)';\n settings.GroupSearchSettings[0].GroupAttribute = 'member';\n settings.GroupSearchSettings[0].GroupFilter = '(objectClass=group)';\n\n return settings;\n}\n\nexport function buildOpenLDAPSettingsModel() {\n const settings = buildLdapSettingsModel();\n\n settings.ServerType = 1;\n settings.AnonymousMode = false;\n settings.SearchSettings[0].UserNameAttribute = 'uid';\n settings.SearchSettings[0].Filter = '(objectClass=inetOrgPerson)';\n settings.GroupSearchSettings[0].GroupAttribute = 'member';\n settings.GroupSearchSettings[0].GroupFilter = '(objectClass=groupOfNames)';\n\n return settings;\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-settings.html');\n\nimport controller from './ldap-settings.controller';\n\nexport const ldapSettings = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n tlscaCert: '=',\n state: '<',\n connectivityCheck: '<',\n onSaveSettings: '<',\n saveButtonState: '<',\n isLdapFormValid: '<',\n },\n};\n","import { Edit } from 'lucide-react';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport Openldap from '@/assets/ico/vendor/openldap.svg?c';\n\nconst SERVER_TYPES = {\n CUSTOM: 0,\n OPEN_LDAP: 1,\n AD: 2,\n};\n\nexport const options = [\n {\n id: 'ldap_custom',\n icon: Edit,\n iconType: 'badge',\n label: 'Custom',\n value: SERVER_TYPES.CUSTOM,\n },\n {\n id: 'ldap_openldap',\n icon: Openldap,\n label: 'OpenLDAP',\n value: SERVER_TYPES.OPEN_LDAP,\n feature: FeatureId.EXTERNAL_AUTH_LDAP,\n iconType: 'logo',\n },\n];\n","import { buildLdapSettingsModel, buildOpenLDAPSettingsModel } from '@/portainer/settings/authentication/ldap/ldap-settings.model';\nimport { options } from '@/react/portainer/settings/AuthenticationView/ldap-options';\n\nconst SERVER_TYPES = {\n CUSTOM: 0,\n OPEN_LDAP: 1,\n AD: 2,\n};\n\nconst DEFAULT_GROUP_FILTER = '(objectClass=groupOfNames)';\nconst DEFAULT_USER_FILTER = '(objectClass=inetOrgPerson)';\n\nexport default class LdapSettingsController {\n /* @ngInject */\n constructor(LDAPService) {\n Object.assign(this, { LDAPService, SERVER_TYPES });\n\n this.tlscaCert = null;\n this.settingsDrafts = {};\n\n this.boxSelectorOptions = options;\n\n this.onTlscaCertChange = this.onTlscaCertChange.bind(this);\n this.searchUsers = this.searchUsers.bind(this);\n this.searchGroups = this.searchGroups.bind(this);\n this.onChangeServerType = this.onChangeServerType.bind(this);\n }\n\n onTlscaCertChange(file) {\n this.tlscaCert = file;\n }\n\n $onInit() {\n this.tlscaCert = this.settings.TLSConfig.TLSCACert;\n }\n\n onChangeServerType(serverType) {\n this.settingsDrafts[this.settings.ServerType] = this.settings;\n\n if (this.settingsDrafts[serverType]) {\n this.settings = this.settingsDrafts[serverType];\n return;\n }\n\n switch (serverType) {\n case SERVER_TYPES.OPEN_LDAP:\n this.settings = buildOpenLDAPSettingsModel();\n break;\n case SERVER_TYPES.CUSTOM:\n this.settings = buildLdapSettingsModel();\n break;\n }\n }\n\n searchUsers() {\n const settings = {\n ...this.settings,\n SearchSettings: this.settings.SearchSettings.map((search) => ({ ...search, Filter: search.Filter || DEFAULT_USER_FILTER })),\n };\n return this.LDAPService.users(settings);\n }\n\n searchGroups() {\n const settings = {\n ...this.settings,\n GroupSearchSettings: this.settings.GroupSearchSettings.map((search) => ({ ...search, GroupFilter: search.GroupFilter || DEFAULT_GROUP_FILTER })),\n };\n return this.LDAPService.groups(settings);\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-user-search-item.html');\n\nimport controller from './ldap-user-search-item.controller';\n\nexport const ldapUserSearchItem = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n config: '=',\n index: '<',\n showUsernameFormat: '<',\n domainSuffix: '@',\n baseFilter: '@',\n onRemoveClick: '<',\n limitedFeatureId: '<',\n },\n};\n","export default class LdapUserSearchItemController {\n /* @ngInject */\n constructor() {\n this.groups = [];\n\n this.onBaseDNChange = this.onBaseDNChange.bind(this);\n this.onGroupChange = this.onGroupChange.bind(this);\n this.onGroupsChange = this.onGroupsChange.bind(this);\n this.removeGroup = this.removeGroup.bind(this);\n }\n\n onBaseDNChange(baseDN) {\n this.config.BaseDN = baseDN;\n }\n\n onGroupChange(index, group) {\n this.groups[index] = group;\n this.onGroupsChange(this.groups);\n }\n\n onGroupsChange(groups) {\n this.config.Filter = this.generateUserFilter(groups);\n }\n\n removeGroup(index) {\n this.groups.splice(index, 1);\n this.onGroupsChange(this.groups);\n }\n\n addGroup() {\n this.groups.push(this.domainSuffix ? `cn=,${this.domainSuffix}` : 'cn=');\n }\n\n generateUserFilter(groups) {\n const filteredGroups = groups.filter((group) => group !== this.domainSuffix);\n\n if (!filteredGroups.length) {\n return this.baseFilter;\n }\n\n const groupsFilter = filteredGroups.map((group) => `(memberOf=${group})`);\n\n return `(&${this.baseFilter}${groupsFilter.length > 1 ? `(|${groupsFilter.join('')})` : groupsFilter[0]})`;\n }\n\n parseFilter() {\n const filter = this.config.Filter;\n if (filter === this.baseFilter) {\n return;\n }\n\n if (!filter.includes('|')) {\n const index = filter.indexOf('memberOf=');\n if (index > -1) {\n this.groups = [filter.slice(index + 9, -2)];\n }\n return;\n }\n\n const members = filter.slice(filter.indexOf('|') + 2, -3);\n this.groups = members.split(')(').map((member) => member.replace('memberOf=', ''));\n }\n\n $onInit() {\n this.parseFilter();\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-user-search.html');\n\nimport controller from './ldap-user-search.controller';\n\nexport const ldapUserSearch = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n settings: '=',\n domainSuffix: '@',\n showUsernameFormat: '<',\n baseFilter: '@',\n limitedFeatureId: '<',\n\n onSearchClick: '<',\n },\n};\n","import _ from 'lodash';\n\nexport default class LdapUserSearchController {\n /* @ngInject */\n constructor($async, Notifications) {\n Object.assign(this, { $async, Notifications });\n\n this.users = null;\n this.showTable = false;\n\n this.onRemoveClick = this.onRemoveClick.bind(this);\n this.onAddClick = this.onAddClick.bind(this);\n this.search = this.search.bind(this);\n }\n\n onAddClick() {\n const lastSetting = _.last(this.settings);\n this.settings.push({ BaseDN: this.domainSuffix, UserNameAttribute: lastSetting.UserNameAttribute, Filter: this.baseFilter });\n }\n\n onRemoveClick(index) {\n this.settings.splice(index, 1);\n }\n\n search() {\n return this.$async(async () => {\n try {\n this.users = null;\n this.showTable = true;\n const users = await this.onSearchClick();\n this.users = _.compact(users);\n } catch (error) {\n this.Notifications.error('Failure', error, 'Failed to search users');\n this.showTable = false;\n }\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./ldap-users-datatable.html');\n\nexport const ldapUsersDatatable = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'GenericDatatableController',\n bindings: {\n titleText: '@',\n titleIcon: '@',\n dataset: '<',\n tableKey: '@',\n orderBy: '@',\n reverseOrder: '<',\n },\n};\n","const API_ENDPOINT_LDAP = 'api/ldap';\n\n/* @ngInject */\nexport function LDAP($resource) {\n return $resource(\n `${API_ENDPOINT_LDAP}/:action`,\n {},\n {\n check: { method: 'POST', params: { action: 'check' } },\n users: { method: 'POST', isArray: true, params: { action: 'users' } },\n groups: { method: 'POST', isArray: true, params: { action: 'groups' } },\n testLogin: { method: 'POST', params: { action: 'test' } },\n }\n );\n}\n","/* @ngInject */\nexport function LDAPService(LDAP) {\n return { users, groups, check, testLogin };\n\n function users(ldapSettings) {\n return LDAP.users({ ldapSettings }).$promise;\n }\n\n async function groups(ldapSettings) {\n const userGroups = await LDAP.groups({ ldapSettings }).$promise;\n return userGroups.map(({ Name, Groups }) => {\n let name = Name;\n if (Name.includes(',') && Name.includes('=')) {\n const [cnName] = Name.split(',');\n const split = cnName.split('=');\n name = split[1];\n }\n return { Groups, Name: name };\n });\n }\n\n function check(ldapSettings) {\n return LDAP.check({ ldapSettings }).$promise;\n }\n\n function testLogin(ldapSettings, username, password) {\n return LDAP.testLogin({ ldapSettings, username, password }).$promise;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./save-auth-settings-button.html');\n\nexport const saveAuthSettingsButton = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n bindings: {\n onSaveSettings: '<',\n saveButtonDisabled: '<',\n saveButtonState: '<',\n limitedFeatureId: '<',\n limitedFeatureClass: '<',\n className: '<',\n },\n};\n","import angular from 'angular';\n\nexport default angular.module('portainer.settings.general', []).name;\n","import angular from 'angular';\n\nimport authenticationModule from './authentication';\nimport generalModule from './general';\n\nexport default angular.module('portainer.settings', [authenticationModule, generalModule]).name;\n","export default class ActivityLogsDatatableController {\n /* @ngInject */\n constructor($controller, $scope, PaginationService) {\n this.PaginationService = PaginationService;\n\n this.tableKey = 'authLogs';\n\n const $onInit = this.$onInit;\n angular.extend(this, $controller('GenericDatatableController', { $scope }));\n\n this.changeSort = this.changeSort.bind(this);\n this.handleChangeLimit = this.handleChangeLimit.bind(this);\n this.$onInit = $onInit.bind(this);\n }\n\n changeSort(key) {\n let desc = false;\n if (key === this.sort.key) {\n desc = !this.sort.desc;\n }\n\n this.onChangeSort({ key, desc });\n }\n\n handleChangeLimit(limit) {\n this.PaginationService.setPaginationLimit(this.tableKey, limit);\n this.onChangeLimit(limit);\n }\n\n $onInit() {\n this.$onInitGeneric();\n\n const limit = this.PaginationService.getPaginationLimit(this.tableKey);\n if (limit) {\n this.onChangeLimit(+limit);\n }\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./activity-logs-datatable.html');\n\nimport './activity-logs-datatable.css';\n\nimport controller from './activity-logs-datatable.controller.js';\n\nexport const activityLogsDatatable = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n logs: '<',\n keyword: '<',\n sort: '<',\n limit: '<',\n totalItems: '<',\n currentPage: '<',\n feature: '@',\n\n onChangeContextFilter: '<',\n onChangeKeyword: '<',\n onChangeSort: '<',\n\n onChangeLimit: '<',\n onChangePage: '<',\n },\n};\n","import moment from 'moment';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nexport default class ActivityLogsViewController {\n /* @ngInject */\n constructor($async, $scope, Notifications) {\n this.$async = $async;\n this.$scope = $scope;\n this.Notifications = Notifications;\n\n this.limitedFeature = FeatureId.ACTIVITY_AUDIT;\n\n this.state = {\n keyword: '',\n date: {\n from: 0,\n to: 0,\n },\n sort: {\n key: 'Timestamp',\n desc: true,\n },\n page: 1,\n limit: 10,\n totalItems: 0,\n logs: null,\n };\n\n this.today = moment().endOf('day');\n this.minValidDate = moment().subtract(7, 'd').startOf('day');\n\n this.onChangeDate = this.onChangeDate.bind(this);\n this.onChangeKeyword = this.onChangeKeyword.bind(this);\n this.onChangeSort = this.onChangeSort.bind(this);\n this.loadLogs = this.loadLogs.bind(this);\n this.onChangePage = this.onChangePage.bind(this);\n this.onChangeLimit = this.onChangeLimit.bind(this);\n }\n\n onChangePage(page) {\n this.state.page = page;\n this.loadLogs();\n }\n\n onChangeLimit(limit) {\n this.state.page = 1;\n this.state.limit = limit;\n this.loadLogs();\n }\n\n onChangeSort(sort) {\n this.state.page = 1;\n this.state.sort = sort;\n this.loadLogs();\n }\n\n onChangeKeyword(keyword) {\n return this.$scope.$evalAsync(() => {\n this.state.page = 1;\n this.state.keyword = keyword;\n this.loadLogs();\n });\n }\n\n onChangeDate({ startDate, endDate }) {\n this.state.page = 1;\n this.state.date = { to: endDate, from: startDate };\n this.loadLogs();\n }\n\n async loadLogs() {\n return this.$async(async () => {\n this.state.logs = null;\n try {\n const { logs, totalCount } = { logs: [{}, {}, {}, {}, {}], totalCount: 5 };\n this.state.logs = logs;\n this.state.totalItems = totalCount;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed loading user activity logs');\n }\n });\n }\n\n $onInit() {\n return this.$async(async () => {\n this.loadLogs();\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./activity-logs-view.html');\n\nimport controller from './activity-logs-view.controller.js';\n\nexport const activityLogsView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","import angular from 'angular';\n\nimport { activityLogsView } from './activity-logs-view';\nimport { activityLogsDatatable } from './activity-logs-datatable';\n\nexport default angular\n .module('portainer.app.user-activity.activity-logs-view', [])\n .component('activityLogsDatatable', activityLogsDatatable)\n .component('activityLogsView', activityLogsView).name;\n","import { authenticationMethodTypesMap, authenticationMethodTypesLabels } from '@/portainer/settings/authentication/auth-method-constants';\nimport { authenticationActivityTypesMap, authenticationActivityTypesLabels } from '@/portainer/settings/authentication/auth-type-constants';\n\nclass ActivityLogsDatatableController {\n /* @ngInject */\n constructor($controller, $scope, PaginationService) {\n this.PaginationService = PaginationService;\n\n this.tableKey = 'authLogs';\n\n this.contextFilterLabels = Object.values(authenticationMethodTypesMap).map((value) => ({ value, label: authenticationMethodTypesLabels[value] }));\n this.typeFilterLabels = Object.values(authenticationActivityTypesMap).map((value) => ({ value, label: authenticationActivityTypesLabels[value] }));\n\n const $onInit = this.$onInit;\n angular.extend(this, $controller('GenericDatatableController', { $scope }));\n this.$onInit = $onInit.bind(this);\n\n this.changeSort = this.changeSort.bind(this);\n this.handleChangeLimit = this.handleChangeLimit.bind(this);\n }\n\n changeSort(key) {\n let desc = false;\n if (key === this.sort.key) {\n desc = !this.sort.desc;\n }\n\n this.onChangeSort({ key, desc });\n }\n\n contextType(context) {\n if (!(context in authenticationMethodTypesLabels)) {\n return '';\n }\n return authenticationMethodTypesLabels[context];\n }\n\n activityType(type) {\n if (!(type in authenticationActivityTypesLabels)) {\n return '';\n }\n return authenticationActivityTypesLabels[type];\n }\n\n isAuthSuccess(type) {\n return type === authenticationActivityTypesMap.AuthSuccess;\n }\n\n isAuthFailure(type) {\n return type === authenticationActivityTypesMap.AuthFailure;\n }\n\n handleChangeLimit(limit) {\n this.PaginationService.setPaginationLimit(this.tableKey, limit);\n this.onChangeLimit(limit);\n }\n\n $onInit() {\n this.$onInitGeneric();\n\n const limit = this.PaginationService.getPaginationLimit(this.tableKey);\n if (limit) {\n this.handleChangeLimit(+limit);\n }\n }\n}\n\nexport default ActivityLogsDatatableController;\n","const autoNgTemplateLoaderTemplate1 = require('./auth-logs-datatable.html');\n\nimport controller from './auth-logs-datatable.controller';\n\nexport const authLogsDatatable = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n logs: '<',\n keyword: '<',\n sort: '<',\n limit: '<',\n totalItems: '<',\n currentPage: '<',\n contextFilter: '<',\n typeFilter: '<',\n feature: '@',\n\n onChangeContextFilter: '<',\n onChangeTypeFilter: '<',\n onChangeKeyword: '<',\n onChangeSort: '<',\n\n onChangeLimit: '<',\n onChangePage: '<',\n },\n};\n","import moment from 'moment';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nexport default class AuthLogsViewController {\n /* @ngInject */\n constructor($async, Notifications) {\n this.$async = $async;\n this.Notifications = Notifications;\n\n this.limitedFeature = FeatureId.ACTIVITY_AUDIT;\n this.state = {\n keyword: 'f',\n date: {\n from: 0,\n to: 0,\n },\n sort: {\n key: 'Timestamp',\n desc: true,\n },\n contextFilter: [1, 2, 3],\n typeFilter: [1, 2, 3],\n page: 1,\n limit: 10,\n totalItems: 0,\n logs: null,\n };\n\n this.today = moment().endOf('day');\n this.minValidDate = moment().subtract(7, 'd').startOf('day');\n\n this.onChangeDate = this.onChangeDate.bind(this);\n this.onChangeKeyword = this.onChangeKeyword.bind(this);\n this.onChangeSort = this.onChangeSort.bind(this);\n this.onChangeContextFilter = this.onChangeContextFilter.bind(this);\n this.onChangeTypeFilter = this.onChangeTypeFilter.bind(this);\n this.loadLogs = this.loadLogs.bind(this);\n this.onChangePage = this.onChangePage.bind(this);\n this.onChangeLimit = this.onChangeLimit.bind(this);\n }\n\n onChangePage(page) {\n this.state.page = page;\n this.loadLogs();\n }\n\n onChangeLimit(limit) {\n this.state.page = 1;\n this.state.limit = limit;\n this.loadLogs();\n }\n\n onChangeSort(sort) {\n this.state.page = 1;\n this.state.sort = sort;\n this.loadLogs();\n }\n\n onChangeContextFilter(filterKey, filterState) {\n this.state.contextFilter = filterState;\n this.loadLogs();\n }\n\n onChangeTypeFilter(filterKey, filterState) {\n this.state.typeFilter = filterState;\n this.loadLogs();\n }\n\n onChangeKeyword(keyword) {\n return this.$scope.$evalAsync(() => {\n this.state.page = 1;\n this.state.keyword = keyword;\n this.loadLogs();\n });\n }\n\n onChangeDate({ startDate, endDate }) {\n this.state.page = 1;\n this.state.date = { to: endDate, from: startDate };\n this.loadLogs();\n }\n\n async loadLogs() {\n return this.$async(async () => {\n this.state.logs = null;\n try {\n const { logs, totalCount } = { logs: [{}, {}, {}, {}, {}], totalCount: 5 };\n this.state.logs = decorateLogs(logs);\n this.state.totalItems = totalCount;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed loading auth activity logs');\n }\n });\n }\n\n $onInit() {\n return this.$async(async () => {\n this.loadLogs();\n });\n }\n}\n\nfunction decorateLogs(logs) {\n return logs;\n}\n","const autoNgTemplateLoaderTemplate1 = require('./auth-logs-view.html');\n\nimport controller from './auth-logs-view.controller.js';\n\nexport const authLogsView = {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n};\n","import angular from 'angular';\n\nimport { authLogsView } from './auth-logs-view';\nimport { authLogsDatatable } from './auth-logs-datatable';\n\nexport default angular.module('portainer.app.user-activity.auth-logs-view', []).component('authLogsView', authLogsView).component('authLogsDatatable', authLogsDatatable).name;\n","import { createColumnHelper } from '@tanstack/react-table';\n\nimport { ToastNotification } from '../types';\n\nexport const columnHelper = createColumnHelper<ToastNotification>();\n","import _ from 'lodash';\n\nimport { columnHelper } from './helper';\n\nexport const type = columnHelper.accessor('type', {\n header: 'Type',\n id: 'type',\n cell: ({ getValue }) => {\n const value = getValue();\n\n return _.capitalize(value);\n },\n});\n","import { columnHelper } from './helper';\n\nexport const title = columnHelper.accessor('title', {\n header: 'Title',\n id: 'title',\n});\n","import { columnHelper } from './helper';\n\nexport const details = columnHelper.accessor('details', {\n header: 'Details',\n id: 'details',\n cell: ({ getValue }) => {\n const value = getValue();\n\n return <div className=\"whitespace-normal\">{value}</div>;\n },\n});\n","import { type } from './type';\nimport { title } from './title';\nimport { details } from './details';\nimport { time } from './time';\n\nexport const columns = [type, title, details, time];\n","import { isoDate } from '@/portainer/filters/filters';\n\nimport { columnHelper } from './helper';\n\nexport const time = columnHelper.accessor('timeStamp', {\n header: 'Time',\n id: 'time',\n cell: ({ getValue }) => {\n const value = getValue();\n\n return value ? isoDate(value) : '-';\n },\n});\n","import { Bell, Trash2 } from 'lucide-react';\nimport { useStore } from 'zustand';\nimport { useCurrentStateAndParams } from '@uirouter/react';\n\nimport { withCurrentUser } from '@/react-tools/withCurrentUser';\nimport { react2angular } from '@/react-tools/react2angular';\nimport { useUser } from '@/react/hooks/useUser';\nimport { withUIRouter } from '@/react-tools/withUIRouter';\nimport { withReactQuery } from '@/react-tools/withReactQuery';\n\nimport { PageHeader } from '@@/PageHeader';\nimport { Datatable } from '@@/datatables';\nimport { Button } from '@@/buttons';\nimport { createPersistedStore } from '@@/datatables/types';\nimport { useTableState } from '@@/datatables/useTableState';\n\nimport { notificationsStore } from './notifications-store';\nimport { ToastNotification } from './types';\nimport { columns } from './columns';\n\nconst storageKey = 'notifications-list';\nconst settingsStore = createPersistedStore(storageKey, {\n id: 'time',\n desc: true,\n});\n\nexport function NotificationsView() {\n const { user } = useUser();\n\n const userNotifications: ToastNotification[] =\n useStore(notificationsStore, (state) => state.userNotifications[user.Id]) ||\n [];\n\n const breadcrumbs = 'Notifications';\n const tableState = useTableState(settingsStore, storageKey);\n\n const {\n params: { id: activeItemId },\n } = useCurrentStateAndParams();\n\n return (\n <>\n <PageHeader title=\"Notifications\" breadcrumbs={breadcrumbs} reload />\n <Datatable\n columns={columns}\n title=\"Notifications\"\n titleIcon={Bell}\n dataset={userNotifications}\n settingsManager={tableState}\n emptyContentLabel=\"No notifications found\"\n renderTableActions={(selectedRows) => (\n <TableActions selectedRows={selectedRows} />\n )}\n getRowId={(row) => row.id}\n highlightedItemId={activeItemId}\n />\n </>\n );\n}\n\nfunction TableActions({ selectedRows }: { selectedRows: ToastNotification[] }) {\n const { user } = useUser();\n const notificationsStoreState = useStore(notificationsStore);\n return (\n <Button\n icon={Trash2}\n color=\"dangerlight\"\n onClick={() => handleRemove()}\n disabled={selectedRows.length === 0}\n >\n Remove\n </Button>\n );\n\n function handleRemove() {\n const { removeNotifications } = notificationsStoreState;\n const ids = selectedRows.map((row) => row.id);\n removeNotifications(user.Id, ids);\n }\n}\n\nexport const NotificationsViewAngular = react2angular(\n withUIRouter(withReactQuery(withCurrentUser(NotificationsView))),\n []\n);\n","import angular from 'angular';\n\nimport { NotificationsViewAngular } from '@/react/portainer/notifications/NotificationsView';\nimport authLogsViewModule from './auth-logs-view';\nimport activityLogsViewModule from './activity-logs-view';\n\nexport default angular.module('portainer.app.user-activity', [authLogsViewModule, activityLogsViewModule]).component('notifications', NotificationsViewAngular).config(config).name;\n\n/* @ngInject */\nfunction config($stateRegistryProvider) {\n $stateRegistryProvider.register({\n name: 'portainer.authLogs',\n url: '/auth-logs',\n views: {\n 'content@': {\n component: 'authLogsView',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'portainer.activityLogs',\n url: '/activity-logs',\n views: {\n 'content@': {\n component: 'activityLogsView',\n },\n },\n });\n\n $stateRegistryProvider.register({\n name: 'portainer.notifications',\n url: '/notifications',\n views: {\n 'content@': {\n component: 'notifications',\n },\n },\n params: {\n id: '',\n },\n });\n}\n","import { confirmChangePassword, confirmDelete } from '@@/modals/confirm';\nimport { openDialog } from '@@/modals/Dialog';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nangular.module('portainer.app').controller('AccountController', [\n '$scope',\n '$state',\n 'Authentication',\n 'UserService',\n 'Notifications',\n 'SettingsService',\n 'StateManager',\n function ($scope, $state, Authentication, UserService, Notifications, SettingsService, StateManager) {\n $scope.formValues = {\n currentPassword: '',\n newPassword: '',\n confirmPassword: '',\n };\n\n $scope.updatePassword = async function () {\n const confirmed = await confirmChangePassword();\n if (confirmed) {\n try {\n await UserService.updateUserPassword($scope.userID, $scope.formValues.currentPassword, $scope.formValues.newPassword);\n Notifications.success('Success', 'Password successfully updated');\n StateManager.resetPasswordChangeSkips($scope.userID.toString());\n $scope.forceChangePassword = false;\n $state.go('portainer.logout');\n } catch (err) {\n Notifications.error('Failure', err, err.msg);\n }\n }\n };\n\n $scope.skipPasswordChange = async function () {\n try {\n if ($scope.userCanSkip()) {\n StateManager.setPasswordChangeSkipped($scope.userID.toString());\n $scope.forceChangePassword = false;\n $state.go('portainer.home');\n }\n } catch (err) {\n Notifications.error('Failure', err, err.msg);\n }\n };\n\n $scope.userCanSkip = function () {\n return $scope.timesPasswordChangeSkipped < 2;\n };\n\n this.uiCanExit = (newTransition) => {\n if (newTransition) {\n if ($scope.userRole === 1 && newTransition.to().name === 'portainer.settings.authentication') {\n return true;\n }\n if (newTransition.to().name === 'portainer.logout') {\n return true;\n }\n }\n\n if ($scope.forceChangePassword) {\n confirmForceChangePassword();\n }\n return !$scope.forceChangePassword;\n };\n\n $scope.uiCanExit = () => {\n return this.uiCanExit();\n };\n\n $scope.removeAction = (selectedTokens) => {\n const msg = 'Do you want to remove the selected access token(s)? Any script or application using these tokens will no longer be able to invoke the Portainer API.';\n\n confirmDelete(msg).then((confirmed) => {\n if (!confirmed) {\n return;\n }\n let actionCount = selectedTokens.length;\n selectedTokens.forEach((token) => {\n UserService.deleteAccessToken($scope.userID, token.id)\n .then(() => {\n Notifications.success('Success', 'Token successfully removed');\n var index = $scope.tokens.indexOf(token);\n $scope.tokens.splice(index, 1);\n })\n .catch((err) => {\n Notifications.error('Failure', err, 'Unable to remove token');\n })\n .finally(() => {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n });\n };\n\n async function initView() {\n const state = StateManager.getState();\n const userDetails = Authentication.getUserDetails();\n $scope.userID = userDetails.ID;\n $scope.userRole = Authentication.getUserDetails().role;\n $scope.forceChangePassword = userDetails.forceChangePassword;\n $scope.isInitialAdmin = userDetails.ID === 1;\n\n if (state.application.demoEnvironment.enabled) {\n $scope.isDemoUser = state.application.demoEnvironment.users.includes($scope.userID);\n }\n\n SettingsService.publicSettings()\n .then(function success(data) {\n $scope.AuthenticationMethod = data.AuthenticationMethod;\n\n if (state.UI.requiredPasswordLength && state.UI.requiredPasswordLength !== data.RequiredPasswordLength) {\n StateManager.clearPasswordChangeSkips();\n }\n\n $scope.timesPasswordChangeSkipped =\n state.UI.timesPasswordChangeSkipped && state.UI.timesPasswordChangeSkipped[$scope.userID.toString()]\n ? state.UI.timesPasswordChangeSkipped[$scope.userID.toString()]\n : 0;\n\n $scope.requiredPasswordLength = data.RequiredPasswordLength;\n StateManager.setRequiredPasswordLength(data.RequiredPasswordLength);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve application settings');\n });\n\n UserService.getAccessTokens($scope.userID)\n .then(function success(data) {\n $scope.tokens = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve user tokens');\n });\n }\n\n initView();\n },\n]);\n\nfunction confirmForceChangePassword() {\n return openDialog({\n message: 'Please update your password to a stronger password to continue using Portainer',\n buttons: [buildConfirmButton('OK')],\n });\n}\n","export default class CreateUserAccessTokenController {\n /* @ngInject */\n constructor($async, $analytics, Authentication, UserService, Notifications) {\n this.$async = $async;\n this.$analytics = $analytics;\n this.Authentication = Authentication;\n this.UserService = UserService;\n this.Notifications = Notifications;\n\n this.onSubmit = this.onSubmit.bind(this);\n this.onError = this.onError.bind(this);\n }\n\n async onSubmit(description) {\n const accessToken = await this.UserService.createAccessToken(this.state.userId, description);\n // Dispatch analytics event upon success accessToken generation\n this.$analytics.eventTrack('portainer-account-access-token-create', { category: 'portainer' });\n return accessToken;\n }\n\n onError(heading, error, message) {\n this.Notifications.error(heading, error, message);\n }\n\n $onInit() {\n return this.$async(async () => {\n const userId = this.Authentication.getUserDetails().ID;\n this.state = {\n userId,\n };\n });\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./create-user-access-token.html');\n\nimport angular from 'angular';\nimport controller from './create-user-access-token.controller';\n\nangular.module('portainer.app').component('createUserAccessToken', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n});\n","import angular from 'angular';\nimport uuidv4 from 'uuid/v4';\nimport { getEnvironments } from '@/react/portainer/environments/environment.service';\n\nclass AuthenticationController {\n /* @ngInject */\n constructor(\n $async,\n $analytics,\n $scope,\n $state,\n $stateParams,\n $window,\n Authentication,\n UserService,\n StateManager,\n Notifications,\n SettingsService,\n URLHelper,\n LocalStorage,\n StatusService\n ) {\n this.$async = $async;\n this.$analytics = $analytics;\n this.$scope = $scope;\n this.$state = $state;\n this.$stateParams = $stateParams;\n this.$window = $window;\n this.Authentication = Authentication;\n this.UserService = UserService;\n this.StateManager = StateManager;\n this.Notifications = Notifications;\n this.SettingsService = SettingsService;\n this.URLHelper = URLHelper;\n this.LocalStorage = LocalStorage;\n this.StatusService = StatusService;\n\n this.logo = this.StateManager.getState().application.logo;\n this.formValues = {\n Username: '',\n Password: '',\n };\n this.state = {\n passwordInputType: 'password',\n showOAuthLogin: false,\n showStandardLogin: false,\n AuthenticationError: '',\n loginInProgress: true,\n OAuthProvider: '',\n };\n\n this.checkForEndpointsAsync = this.checkForEndpointsAsync.bind(this);\n this.postLoginSteps = this.postLoginSteps.bind(this);\n\n this.oAuthLoginAsync = this.oAuthLoginAsync.bind(this);\n this.internalLoginAsync = this.internalLoginAsync.bind(this);\n\n this.authenticateUserAsync = this.authenticateUserAsync.bind(this);\n\n this.manageOauthCodeReturn = this.manageOauthCodeReturn.bind(this);\n this.authEnabledFlowAsync = this.authEnabledFlowAsync.bind(this);\n this.onInit = this.onInit.bind(this);\n }\n\n /**\n * UTILS FUNCTIONS SECTION\n */\n\n toggleShowPassword() {\n this.state.passwordInputType = this.state.passwordInputType === 'text' ? 'password' : 'text';\n }\n\n // set the password input type to password, so that browser autofills don't treat the input as text\n setPasswordInputType(inputType) {\n this.state.passwordInputType = inputType;\n document.getElementById('password').setAttribute('type', inputType);\n }\n\n logout(error) {\n this.Authentication.logout();\n this.state.loginInProgress = false;\n this.generateOAuthLoginURI();\n this.LocalStorage.storeLogoutReason(error);\n this.$window.location.reload();\n }\n\n error(err, message) {\n this.state.AuthenticationError = message;\n if (!err) {\n err = {};\n }\n this.Notifications.error('Failure', err, message);\n this.state.loginInProgress = false;\n }\n\n determineOauthProvider(LoginURI) {\n if (LoginURI.indexOf('login.microsoftonline.com') !== -1) {\n return 'Microsoft';\n } else if (LoginURI.indexOf('accounts.google.com') !== -1) {\n return 'Google';\n } else if (LoginURI.indexOf('github.com') !== -1) {\n return 'Github';\n }\n return 'OAuth';\n }\n\n generateState() {\n const uuid = uuidv4();\n this.LocalStorage.storeLoginStateUUID(uuid);\n return '&state=' + uuid;\n }\n\n generateOAuthLoginURI() {\n this.OAuthLoginURI = this.state.OAuthLoginURI + this.generateState();\n }\n\n hasValidState(state) {\n const savedUUID = this.LocalStorage.getLoginStateUUID();\n return savedUUID && state && savedUUID === state;\n }\n\n /**\n * END UTILS FUNCTIONS SECTION\n */\n\n /**\n * POST LOGIN STEPS SECTION\n */\n\n async checkForEndpointsAsync() {\n try {\n const isAdmin = this.Authentication.isAdmin();\n const endpoints = await getEnvironments({ limit: 1, query: { excludeSnapshots: true } });\n\n if (this.Authentication.getUserDetails().forceChangePassword) {\n return this.$state.go('portainer.account');\n }\n\n if (endpoints.value.length === 0 && isAdmin) {\n return this.$state.go('portainer.wizard');\n } else {\n return this.$state.go('portainer.home');\n }\n } catch (err) {\n this.error(err, 'Unable to retrieve environments');\n }\n }\n\n async postLoginSteps() {\n await this.StateManager.initialize();\n\n const isAdmin = this.Authentication.isAdmin();\n this.$analytics.setUserRole(isAdmin ? 'admin' : 'standard-user');\n\n await this.checkForEndpointsAsync();\n }\n /**\n * END POST LOGIN STEPS SECTION\n */\n\n /**\n * LOGIN METHODS SECTION\n */\n\n async oAuthLoginAsync(code) {\n try {\n await this.Authentication.OAuthLogin(code);\n this.URLHelper.cleanParameters();\n } catch (err) {\n this.error(err, 'Unable to login via OAuth');\n }\n }\n\n async internalLoginAsync(username, password) {\n await this.Authentication.login(username, password);\n await this.postLoginSteps();\n }\n\n /**\n * END LOGIN METHODS SECTION\n */\n\n /**\n * AUTHENTICATE USER SECTION\n */\n\n async authenticateUserAsync() {\n try {\n var username = this.formValues.Username;\n var password = this.formValues.Password;\n this.state.loginInProgress = true;\n await this.internalLoginAsync(username, password);\n } catch (err) {\n this.error(err, 'Unable to login');\n }\n }\n\n authenticateUser() {\n this.setPasswordInputType('password');\n return this.$async(this.authenticateUserAsync);\n }\n\n /**\n * END AUTHENTICATE USER SECTION\n */\n\n /**\n * ON INIT SECTION\n */\n async manageOauthCodeReturn(code, state) {\n if (this.hasValidState(state)) {\n await this.oAuthLoginAsync(code);\n } else {\n this.error(null, 'Invalid OAuth state, try again.');\n }\n }\n\n async authEnabledFlowAsync() {\n try {\n const exists = await this.UserService.administratorExists();\n if (!exists) {\n this.$state.go('portainer.init.admin');\n }\n } catch (err) {\n this.error(err, 'Unable to verify administrator account existence');\n }\n }\n\n toggleStandardLogin() {\n this.state.showStandardLogin = !this.state.showStandardLogin;\n }\n\n async onInit() {\n try {\n const settings = await this.SettingsService.publicSettings();\n this.state.showOAuthLogin = settings.AuthenticationMethod === 3;\n this.state.showStandardLogin = !this.state.showOAuthLogin;\n this.state.OAuthLoginURI = settings.OAuthLoginURI;\n this.state.OAuthProvider = this.determineOauthProvider(settings.OAuthLoginURI);\n\n const code = this.URLHelper.getParameter('code');\n const state = this.URLHelper.getParameter('state');\n if (code && state) {\n await this.manageOauthCodeReturn(code, state);\n this.generateOAuthLoginURI();\n return;\n }\n if (!this.logo) {\n await this.StateManager.initialize();\n this.logo = this.StateManager.getState().application.logo;\n }\n this.generateOAuthLoginURI();\n\n if (this.$stateParams.logout || this.$stateParams.error) {\n this.logout(this.$stateParams.error);\n return;\n }\n const error = this.LocalStorage.getLogoutReason();\n if (error) {\n this.state.AuthenticationError = error;\n this.LocalStorage.cleanLogoutReason();\n }\n\n if (this.Authentication.isAuthenticated()) {\n await this.postLoginSteps();\n }\n this.state.loginInProgress = false;\n\n await this.authEnabledFlowAsync();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve public settings');\n }\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n /**\n * END ON INIT SECTION\n */\n}\n\nexport default AuthenticationController;\nangular.module('portainer.app').controller('AuthenticationController', AuthenticationController);\n","import _ from 'lodash';\nimport { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel';\nimport { TEMPLATE_NAME_VALIDATION_REGEX } from '@/constants';\nimport { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { editor, upload, git } from '@@/BoxSelector/common-options/build-methods';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\n\nclass CreateCustomTemplateViewController {\n /* @ngInject */\n constructor($async, $state, $scope, $window, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService, StackService, StateManager) {\n Object.assign(this, {\n $async,\n $state,\n $window,\n $scope,\n Authentication,\n CustomTemplateService,\n FormValidator,\n Notifications,\n ResourceControlService,\n StackService,\n StateManager,\n });\n\n this.buildMethods = [editor, upload, git];\n\n this.isTemplateVariablesEnabled = isBE;\n\n this.formValues = {\n Title: '',\n FileContent: '',\n File: null,\n RepositoryURL: '',\n RepositoryReferenceName: '',\n RepositoryAuthentication: false,\n RepositoryUsername: '',\n RepositoryPassword: '',\n ComposeFilePathInRepository: 'docker-compose.yml',\n Description: '',\n Note: '',\n Logo: '',\n Platform: 1,\n Type: 1,\n AccessControlData: new AccessControlFormData(),\n Variables: [],\n TLSSkipVerify: false,\n };\n\n this.state = {\n Method: 'editor',\n formValidationError: '',\n actionInProgress: false,\n fromStack: false,\n loading: true,\n isEditorDirty: false,\n templateNameRegex: TEMPLATE_NAME_VALIDATION_REGEX,\n isTemplateValid: true,\n };\n\n this.templates = [];\n\n this.createCustomTemplate = this.createCustomTemplate.bind(this);\n this.createCustomTemplateAsync = this.createCustomTemplateAsync.bind(this);\n this.validateForm = this.validateForm.bind(this);\n this.createCustomTemplateByMethod = this.createCustomTemplateByMethod.bind(this);\n this.createCustomTemplateFromFileContent = this.createCustomTemplateFromFileContent.bind(this);\n this.createCustomTemplateFromFileUpload = this.createCustomTemplateFromFileUpload.bind(this);\n this.createCustomTemplateFromGitRepository = this.createCustomTemplateFromGitRepository.bind(this);\n this.editorUpdate = this.editorUpdate.bind(this);\n this.onChangeMethod = this.onChangeMethod.bind(this);\n this.onVariablesChange = this.onVariablesChange.bind(this);\n this.handleChange = this.handleChange.bind(this);\n }\n\n onVariablesChange(value) {\n this.handleChange({ Variables: value });\n }\n\n handleChange(values) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n });\n }\n\n createCustomTemplate() {\n return this.$async(this.createCustomTemplateAsync);\n }\n\n onChangeMethod(method) {\n return this.$scope.$evalAsync(() => {\n this.formValues.FileContent = '';\n this.formValues.Variables = [];\n this.selectedTemplate = null;\n this.state.Method = method;\n });\n }\n\n async createCustomTemplateAsync() {\n let method = this.state.Method;\n\n if (method === 'template') {\n method = 'editor';\n }\n\n if (!this.validateForm(method)) {\n return;\n }\n\n this.state.actionInProgress = true;\n try {\n const customTemplate = await this.createCustomTemplateByMethod(method);\n\n const accessControlData = this.formValues.AccessControlData;\n const userDetails = this.Authentication.getUserDetails();\n const userId = userDetails.ID;\n await this.ResourceControlService.applyResourceControl(userId, accessControlData, customTemplate.ResourceControl);\n\n this.Notifications.success('Success', 'Custom template successfully created');\n this.state.isEditorDirty = false;\n this.$state.go('docker.templates.custom');\n } catch (err) {\n this.Notifications.error('Failure', err, 'A template with the same name already exists');\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n validateForm(method) {\n this.state.formValidationError = '';\n\n if (method === 'editor' && this.formValues.FileContent === '') {\n this.state.formValidationError = 'Template file content must not be empty';\n return false;\n }\n\n const title = this.formValues.Title;\n const isNotUnique = _.some(this.templates, (template) => template.Title === title);\n if (isNotUnique) {\n this.state.formValidationError = 'A template with the same name already exists';\n return false;\n }\n\n const isAdmin = this.Authentication.isAdmin();\n const accessControlData = this.formValues.AccessControlData;\n const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n this.state.formValidationError = error;\n return false;\n }\n\n return true;\n }\n\n createCustomTemplateByMethod(method) {\n switch (method) {\n case 'editor':\n return this.createCustomTemplateFromFileContent();\n case 'upload':\n return this.createCustomTemplateFromFileUpload();\n case 'repository':\n return this.createCustomTemplateFromGitRepository();\n }\n }\n\n createCustomTemplateFromFileContent() {\n return this.CustomTemplateService.createCustomTemplateFromFileContent(this.formValues);\n }\n\n createCustomTemplateFromFileUpload() {\n return this.CustomTemplateService.createCustomTemplateFromFileUpload(this.formValues);\n }\n\n createCustomTemplateFromGitRepository() {\n return this.CustomTemplateService.createCustomTemplateFromGitRepository(this.formValues);\n }\n\n editorUpdate(value) {\n this.formValues.FileContent = value;\n this.state.isEditorDirty = true;\n this.parseTemplate(value);\n }\n\n parseTemplate(templateStr) {\n if (!this.isTemplateVariablesEnabled) {\n return;\n }\n\n const variables = getTemplateVariables(templateStr);\n\n const isValid = !!variables;\n\n this.state.isTemplateValid = isValid;\n\n if (isValid) {\n this.onVariablesChange(intersectVariables(this.formValues.Variables, variables));\n }\n }\n\n async $onInit() {\n const applicationState = this.StateManager.getState();\n\n this.state.endpointMode = applicationState.endpoint.mode;\n let stackType = 0;\n if (this.state.endpointMode.provider === 'DOCKER_STANDALONE') {\n this.isDockerStandalone = true;\n stackType = 2;\n } else if (this.state.endpointMode.provider === 'DOCKER_SWARM_MODE') {\n stackType = 1;\n }\n this.formValues.Type = stackType;\n\n const { fileContent, type } = this.$state.params;\n\n this.formValues.FileContent = fileContent;\n if (type) {\n this.formValues.Type = +type;\n }\n\n try {\n this.templates = await this.CustomTemplateService.customTemplates([1, 2]);\n } catch (err) {\n this.Notifications.error('Failure loading', err, 'Failed loading custom templates');\n }\n\n this.state.loading = false;\n\n this.$window.onbeforeunload = () => {\n if (this.state.Method === 'editor' && this.formValues.FileContent && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n\n async uiCanExit() {\n if (this.state.Method === 'editor' && this.formValues.FileContent && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n}\n\nexport default CreateCustomTemplateViewController;\n","const autoNgTemplateLoaderTemplate1 = require('./createCustomTemplateView.html');\n\nimport CreateCustomTemplateViewController from './createCustomTemplateViewController.js';\n\nangular.module('portainer.app').component('createCustomTemplateView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: CreateCustomTemplateViewController,\n});\n","import _ from 'lodash-es';\nimport { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel';\nimport { TEMPLATE_NAME_VALIDATION_REGEX } from '@/constants';\nimport { renderTemplate } from '@/react/portainer/custom-templates/components/utils';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { confirmDelete } from '@@/modals/confirm';\n\nclass CustomTemplatesViewController {\n /* @ngInject */\n constructor(\n $anchorScroll,\n $async,\n $rootScope,\n $state,\n Authentication,\n CustomTemplateService,\n FormValidator,\n NetworkService,\n Notifications,\n ResourceControlService,\n StackService,\n StateManager\n ) {\n this.$anchorScroll = $anchorScroll;\n this.$async = $async;\n this.$rootScope = $rootScope;\n this.$state = $state;\n this.Authentication = Authentication;\n this.CustomTemplateService = CustomTemplateService;\n this.FormValidator = FormValidator;\n this.NetworkService = NetworkService;\n this.Notifications = Notifications;\n this.ResourceControlService = ResourceControlService;\n this.StateManager = StateManager;\n this.StackService = StackService;\n\n this.isTemplateVariablesEnabled = isBE;\n\n this.DOCKER_STANDALONE = 'DOCKER_STANDALONE';\n this.DOCKER_SWARM_MODE = 'DOCKER_SWARM_MODE';\n\n this.state = {\n selectedTemplate: null,\n showAdvancedOptions: false,\n formValidationError: '',\n actionInProgress: false,\n deployable: false,\n templateNameRegex: TEMPLATE_NAME_VALIDATION_REGEX,\n templateContent: '',\n templateLoadFailed: false,\n };\n\n this.currentUser = {\n isAdmin: false,\n id: null,\n };\n\n this.formValues = {\n network: '',\n name: '',\n fileContent: '',\n AccessControlData: new AccessControlFormData(),\n variables: [],\n };\n\n this.getTemplates = this.getTemplates.bind(this);\n this.getTemplatesAsync = this.getTemplatesAsync.bind(this);\n this.removeTemplates = this.removeTemplates.bind(this);\n this.removeTemplatesAsync = this.removeTemplatesAsync.bind(this);\n this.validateForm = this.validateForm.bind(this);\n this.createStack = this.createStack.bind(this);\n this.createStackAsync = this.createStackAsync.bind(this);\n this.selectTemplate = this.selectTemplate.bind(this);\n this.selectTemplateAsync = this.selectTemplateAsync.bind(this);\n this.unselectTemplate = this.unselectTemplate.bind(this);\n this.unselectTemplateAsync = this.unselectTemplateAsync.bind(this);\n this.getNetworks = this.getNetworks.bind(this);\n this.getNetworksAsync = this.getNetworksAsync.bind(this);\n this.confirmDelete = this.confirmDelete.bind(this);\n this.confirmDeleteAsync = this.confirmDeleteAsync.bind(this);\n this.editorUpdate = this.editorUpdate.bind(this);\n this.isEditAllowed = this.isEditAllowed.bind(this);\n this.onChangeFormValues = this.onChangeFormValues.bind(this);\n this.onChangeTemplateVariables = this.onChangeTemplateVariables.bind(this);\n }\n\n isEditAllowed(template) {\n return this.currentUser.isAdmin || this.currentUser.id === template.CreatedByUserId;\n }\n\n getTemplates() {\n return this.$async(this.getTemplatesAsync);\n }\n async getTemplatesAsync() {\n try {\n this.templates = await this.CustomTemplateService.customTemplates([1, 2]);\n } catch (err) {\n this.Notifications.error('Failed loading templates', err, 'Unable to load custom templates');\n }\n }\n\n removeTemplates(templates) {\n return this.$async(this.removeTemplatesAsync, templates);\n }\n async removeTemplatesAsync(templates) {\n for (let template of templates) {\n try {\n await this.CustomTemplateService.remove(template.id);\n this.Notifications.success('Success', 'Removed template successfully');\n _.remove(this.templates, template);\n } catch (err) {\n this.Notifications.error('Failed removing template', err, 'Unable to remove custom template');\n }\n }\n }\n\n onChangeTemplateVariables(variables) {\n this.onChangeFormValues({ variables });\n\n this.renderTemplate();\n }\n\n renderTemplate() {\n if (!this.isTemplateVariablesEnabled) {\n return;\n }\n\n const fileContent = renderTemplate(this.state.templateContent, this.formValues.variables, this.state.selectedTemplate.Variables);\n this.onChangeFormValues({ fileContent });\n }\n\n onChangeFormValues(values) {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n }\n\n validateForm(accessControlData, isAdmin) {\n this.state.formValidationError = '';\n const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n this.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n createStack() {\n return this.$async(this.createStackAsync);\n }\n async createStackAsync() {\n const userId = this.currentUser.id;\n const accessControlData = this.formValues.AccessControlData;\n\n if (!this.validateForm(accessControlData, this.currentUser.isAdmin)) {\n return;\n }\n const stackName = this.formValues.name;\n\n const endpointId = this.endpoint.Id;\n\n this.state.actionInProgress = true;\n\n try {\n const file = this.formValues.fileContent;\n const createAction = this.state.selectedTemplate.Type === 1 ? this.StackService.createSwarmStackFromFileContent : this.StackService.createComposeStackFromFileContent;\n const { ResourceControl: resourceControl } = await createAction(stackName, file, [], endpointId);\n await this.ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n this.Notifications.success('Success', 'Stack successfully deployed');\n this.$state.go('docker.stacks');\n } catch (err) {\n this.Notifications.error('Deployment error', err, 'Failed to deploy stack');\n } finally {\n this.state.actionInProgress = false;\n }\n }\n\n unselectTemplate(template) {\n // wrapping unselect with async to make a digest cycle run between unselect to select\n return this.$async(this.unselectTemplateAsync, template);\n }\n async unselectTemplateAsync(template) {\n template.Selected = false;\n this.state.selectedTemplate = null;\n\n this.formValues = {\n network: '',\n name: '',\n fileContent: '',\n AccessControlData: new AccessControlFormData(),\n variables: [],\n };\n }\n\n selectTemplate(template) {\n return this.$async(this.selectTemplateAsync, template);\n }\n async selectTemplateAsync(template) {\n if (this.state.selectedTemplate) {\n await this.unselectTemplate(this.state.selectedTemplate);\n }\n\n template.Selected = true;\n\n try {\n this.state.templateContent = this.formValues.fileContent = await this.CustomTemplateService.customTemplateFile(template.Id, template.GitConfig !== null);\n } catch (err) {\n this.state.templateLoadFailed = true;\n this.Notifications.error('Failure', err, 'Unable to retrieve custom template data');\n }\n\n this.formValues.network = _.find(this.availableNetworks, function (o) {\n return o.Name === 'bridge';\n });\n\n this.formValues.name = template.Title ? template.Title : '';\n this.state.selectedTemplate = template;\n this.$anchorScroll('view-top');\n const applicationState = this.StateManager.getState();\n this.state.deployable = this.isDeployable(applicationState.endpoint, template.Type);\n\n if (template.Variables && template.Variables.length > 0) {\n const variables = Object.fromEntries(template.Variables.map((variable) => [variable.name, '']));\n this.onChangeTemplateVariables(variables);\n }\n }\n\n getNetworks(provider, apiVersion) {\n return this.$async(this.getNetworksAsync, provider, apiVersion);\n }\n async getNetworksAsync(provider, apiVersion) {\n try {\n const networks = await this.NetworkService.networks(\n provider === 'DOCKER_STANDALONE' || provider === 'DOCKER_SWARM_MODE',\n false,\n provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25\n );\n this.availableNetworks = networks;\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed to load networks.');\n }\n }\n\n confirmDelete(templateId) {\n return this.$async(this.confirmDeleteAsync, templateId);\n }\n async confirmDeleteAsync(templateId) {\n const confirmed = await confirmDelete('Are you sure that you want to delete this template?');\n if (!confirmed) {\n return;\n }\n\n try {\n var template = _.find(this.templates, { Id: templateId });\n await this.CustomTemplateService.remove(templateId);\n this.Notifications.success('Template successfully deleted', template && template.Title);\n _.remove(this.templates, { Id: templateId });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Failed to delete template');\n }\n }\n\n editorUpdate(value) {\n this.formValues.fileContent = value;\n }\n\n isDeployable(endpoint, templateType) {\n let deployable = false;\n switch (templateType) {\n case 1:\n deployable = endpoint.mode.provider === this.DOCKER_SWARM_MODE;\n break;\n case 2:\n deployable = endpoint.mode.provider === this.DOCKER_STANDALONE;\n break;\n }\n\n return deployable;\n }\n\n $onInit() {\n const applicationState = this.StateManager.getState();\n\n const {\n endpoint: { mode: endpointMode },\n apiVersion,\n } = applicationState;\n\n this.getTemplates();\n this.getNetworks(endpointMode.provider, apiVersion);\n\n this.currentUser.isAdmin = this.Authentication.isAdmin();\n const user = this.Authentication.getUserDetails();\n this.currentUser.id = user.ID;\n }\n}\n\nexport default CustomTemplatesViewController;\n","const autoNgTemplateLoaderTemplate1 = require('./customTemplatesView.html');\n\nimport CustomTemplatesViewController from './customTemplatesViewController.js';\n\nangular.module('portainer.app').component('customTemplatesView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: CustomTemplatesViewController,\n bindings: {\n endpoint: '<',\n },\n});\n","import _ from 'lodash';\nimport { getFilePreview } from '@/react/portainer/gitops/gitops.service';\nimport { ResourceControlViewModel } from '@/react/portainer/access-control/models/ResourceControlViewModel';\nimport { TEMPLATE_NAME_VALIDATION_REGEX } from '@/constants';\n\nimport { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel';\nimport { getTemplateVariables, intersectVariables } from '@/react/portainer/custom-templates/components/utils';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\n\nclass EditCustomTemplateViewController {\n /* @ngInject */\n constructor($async, $state, $window, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService) {\n Object.assign(this, { $async, $state, $window, Authentication, CustomTemplateService, FormValidator, Notifications, ResourceControlService });\n\n this.isTemplateVariablesEnabled = isBE;\n\n this.formValues = {\n Variables: [],\n TLSSkipVerify: false,\n };\n this.state = {\n formValidationError: '',\n isEditorDirty: false,\n isTemplateValid: true,\n isEditorReadOnly: false,\n templateLoadFailed: false,\n templatePreviewFailed: false,\n templatePreviewError: '',\n templateNameRegex: TEMPLATE_NAME_VALIDATION_REGEX,\n };\n this.templates = [];\n\n this.getTemplate = this.getTemplate.bind(this);\n this.getTemplateAsync = this.getTemplateAsync.bind(this);\n this.submitAction = this.submitAction.bind(this);\n this.submitActionAsync = this.submitActionAsync.bind(this);\n this.editorUpdate = this.editorUpdate.bind(this);\n this.onVariablesChange = this.onVariablesChange.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.previewFileFromGitRepository = this.previewFileFromGitRepository.bind(this);\n }\n\n getTemplate() {\n return this.$async(this.getTemplateAsync);\n }\n async getTemplateAsync() {\n try {\n const template = await this.CustomTemplateService.customTemplate(this.$state.params.id);\n\n if (template.GitConfig !== null) {\n this.state.isEditorReadOnly = true;\n }\n\n try {\n template.FileContent = await this.CustomTemplateService.customTemplateFile(this.$state.params.id, template.GitConfig !== null);\n } catch (err) {\n this.state.templateLoadFailed = true;\n throw err;\n }\n\n template.Variables = template.Variables || [];\n\n this.formValues = { ...this.formValues, ...template };\n\n this.parseTemplate(template.FileContent);\n this.parseGitConfig(template.GitConfig);\n\n this.oldFileContent = this.formValues.FileContent;\n if (template.ResourceControl) {\n this.formValues.ResourceControl = new ResourceControlViewModel(template.ResourceControl);\n }\n this.formValues.AccessControlData = new AccessControlFormData();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve custom template data');\n }\n }\n\n onVariablesChange(value) {\n this.handleChange({ Variables: value });\n }\n\n handleChange(values) {\n return this.$async(async () => {\n this.formValues = {\n ...this.formValues,\n ...values,\n };\n });\n }\n\n validateForm() {\n this.state.formValidationError = '';\n\n if (!this.formValues.FileContent) {\n this.state.formValidationError = 'Template file content must not be empty';\n return false;\n }\n\n const title = this.formValues.Title;\n const id = this.$state.params.id;\n const isNotUnique = _.some(this.templates, (template) => template.Title === title && template.Id != id);\n if (isNotUnique) {\n this.state.formValidationError = `A template with the name ${title} already exists`;\n return false;\n }\n\n const isAdmin = this.Authentication.isAdmin();\n const accessControlData = this.formValues.AccessControlData;\n const error = this.FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n this.state.formValidationError = error;\n return false;\n }\n\n return true;\n }\n\n submitAction() {\n return this.$async(this.submitActionAsync);\n }\n async submitActionAsync() {\n if (!this.validateForm()) {\n return;\n }\n\n this.actionInProgress = true;\n try {\n await this.CustomTemplateService.updateCustomTemplate(this.formValues.Id, this.formValues);\n\n const userDetails = this.Authentication.getUserDetails();\n const userId = userDetails.ID;\n await this.ResourceControlService.applyResourceControl(userId, this.formValues.AccessControlData, this.formValues.ResourceControl);\n\n this.Notifications.success('Success', 'Custom template successfully updated');\n this.state.isEditorDirty = false;\n this.$state.go('docker.templates.custom');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to update custom template');\n } finally {\n this.actionInProgress = false;\n }\n }\n\n editorUpdate(value) {\n if (this.formValues.FileContent.replace(/(\\r\\n|\\n|\\r)/gm, '') !== value.replace(/(\\r\\n|\\n|\\r)/gm, '')) {\n this.formValues.FileContent = value;\n this.parseTemplate(value);\n this.state.isEditorDirty = true;\n }\n }\n\n parseTemplate(templateStr) {\n if (!this.isTemplateVariablesEnabled) {\n return;\n }\n\n const variables = getTemplateVariables(templateStr);\n\n const isValid = !!variables;\n\n this.state.isTemplateValid = isValid;\n\n if (isValid) {\n this.onVariablesChange(intersectVariables(this.formValues.Variables, variables));\n }\n }\n\n parseGitConfig(config) {\n if (config === null) {\n return;\n }\n\n let flatConfig = {\n RepositoryURL: config.URL,\n RepositoryReferenceName: config.ReferenceName,\n ComposeFilePathInRepository: config.ConfigFilePath,\n RepositoryAuthentication: config.Authentication !== null,\n TLSSkipVerify: config.TLSSkipVerify,\n };\n\n if (config.Authentication) {\n flatConfig = {\n ...flatConfig,\n RepositoryUsername: config.Authentication.Username,\n RepositoryPassword: config.Authentication.Password,\n };\n }\n\n this.formValues = { ...this.formValues, ...flatConfig };\n }\n\n previewFileFromGitRepository() {\n this.state.templatePreviewFailed = false;\n this.state.templatePreviewError = '';\n\n let creds = {};\n if (this.formValues.RepositoryAuthentication) {\n creds = {\n username: this.formValues.RepositoryUsername,\n password: this.formValues.RepositoryPassword,\n };\n }\n const payload = {\n repository: this.formValues.RepositoryURL,\n targetFile: this.formValues.ComposeFilePathInRepository,\n tlsSkipVerify: this.formValues.TLSSkipVerify,\n ...creds,\n };\n\n this.$async(async () => {\n try {\n this.formValues.FileContent = await getFilePreview(payload);\n this.state.isEditorDirty = true;\n\n // check if the template contains mustache template symbol\n this.parseTemplate(this.formValues.FileContent);\n } catch (err) {\n this.state.templatePreviewError = err.message;\n this.state.templatePreviewFailed = true;\n }\n });\n }\n\n async uiCanExit() {\n if (this.formValues.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n }\n\n async $onInit() {\n this.getTemplate();\n\n try {\n this.templates = await this.CustomTemplateService.customTemplates([1, 2]);\n } catch (err) {\n this.Notifications.error('Failure loading', err, 'Failed loading custom templates');\n }\n\n this.$window.onbeforeunload = () => {\n if (this.formValues.FileContent !== this.oldFileContent && this.state.isEditorDirty) {\n return '';\n }\n };\n }\n\n $onDestroy() {\n this.state.isEditorDirty = false;\n }\n}\n\nexport default EditCustomTemplateViewController;\n","const autoNgTemplateLoaderTemplate1 = require('./editCustomTemplateView.html');\n\nimport EditCustomTemplateViewController from './editCustomTemplateViewController.js';\n\nangular.module('portainer.app').component('editCustomTemplateView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: EditCustomTemplateViewController,\n});\n","import uuidv4 from 'uuid/v4';\n\nimport { PortainerEndpointCreationTypes } from 'Portainer/models/endpoint/models';\nimport { configureDevice, getProfiles } from 'Portainer/hostmanagement/fdo/fdo.service';\n\nangular\n .module('portainer.app')\n .controller(\n 'ImportDeviceController',\n function ImportDeviceController($async, $q, $scope, $state, EndpointService, GroupService, TagService, Notifications, Authentication, FileUploadService) {\n $scope.state = {\n actionInProgress: false,\n vouchersUploading: false,\n vouchersUploaded: false,\n deviceIDs: [],\n allowCreateTag: Authentication.isAdmin(),\n };\n\n $scope.formValues = {\n DeviceName: '',\n DeviceProfile: '',\n GroupId: 1,\n TagIds: [],\n VoucherFiles: [],\n PortainerURL: '',\n Suffix: 1,\n };\n\n $scope.profiles = [];\n\n $scope.onChangeTags = function onChangeTags(value) {\n return $scope.$evalAsync(() => {\n $scope.formValues.TagIds = value;\n });\n };\n\n $scope.onVoucherFilesChange = function () {\n if ($scope.formValues.VoucherFiles.length < 1) {\n return;\n }\n\n $scope.state.vouchersUploading = true;\n\n let uploads = $scope.formValues.VoucherFiles.map((f) => FileUploadService.uploadOwnershipVoucher(f));\n\n $q.all(uploads)\n .then(function success(responses) {\n $scope.state.vouchersUploading = false;\n $scope.state.vouchersUploaded = true;\n $scope.state.deviceIDs = responses.map((r) => r.data.guid);\n })\n .catch(function error(err) {\n $scope.state.vouchersUploading = false;\n if ($scope.formValues.VoucherFiles.length === 1) {\n Notifications.error('Failure', err, 'Unable to upload the Ownership Voucher');\n } else {\n Notifications.error('Failure', null, 'Unable to upload the Ownership Vouchers, please check the logs');\n }\n });\n };\n\n $scope.createEndpointAndConfigureDevice = function () {\n return $async(async () => {\n $scope.state.actionInProgress = true;\n\n let suffix = $scope.formValues.Suffix;\n\n for (const deviceID of $scope.state.deviceIDs) {\n let deviceName = $scope.formValues.DeviceName + suffix;\n\n try {\n var endpoint = await EndpointService.createRemoteEndpoint(\n deviceName,\n PortainerEndpointCreationTypes.EdgeAgentEnvironment,\n $scope.formValues.PortainerURL,\n '',\n $scope.formValues.GroupId,\n $scope.formValues.TagIds,\n false,\n false,\n false,\n null,\n null,\n null,\n null\n );\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to create the environment');\n $scope.state.actionInProgress = false;\n return;\n }\n\n suffix++;\n\n const config = {\n edgeID: endpoint.EdgeID || uuidv4(),\n edgeKey: endpoint.EdgeKey,\n name: deviceName,\n profile: $scope.formValues.DeviceProfile,\n };\n\n try {\n await configureDevice(deviceID, config);\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to import device');\n return;\n } finally {\n $scope.state.actionInProgress = false;\n }\n }\n\n Notifications.success('Success', 'Device(s) successfully imported');\n $state.go('edge.devices');\n });\n };\n\n async function initView() {\n try {\n $scope.profiles = await getProfiles();\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to load profiles');\n return;\n }\n\n $q.all({\n groups: GroupService.groups(),\n })\n .then(function success(data) {\n $scope.groups = data.groups;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to load groups');\n });\n }\n\n initView();\n }\n );\n","import angular from 'angular';\nimport { editor } from '@@/BoxSelector/common-options/build-methods';\n\nimport { createProfile } from 'Portainer/hostmanagement/fdo/fdo.service';\n\nangular.module('portainer.app').controller('AddProfileController', AddProfileController);\n\n/* @ngInject */\nexport default function AddProfileController($scope, $async, $state, $window, Notifications) {\n $scope.buildMethods = [editor];\n\n $scope.formValues = {\n name: '',\n profileFileContent: '',\n };\n\n $scope.state = {\n method: 'editor',\n actionInProgress: false,\n isEditorDirty: false,\n };\n\n $window.onbeforeunload = () => {\n if ($scope.state.method === 'editor' && $scope.formValues.profileFileContent && $scope.state.isEditorDirty) {\n return '';\n }\n };\n\n $scope.$on('$destroy', function () {\n $scope.state.isEditorDirty = false;\n });\n\n $scope.onChangeFormValues = onChangeFormValues;\n\n $scope.createProfileAsync = function () {\n return $async(async () => {\n const method = $scope.state.method;\n\n const name = $scope.formValues.name;\n const fileContent = $scope.formValues.profileFileContent;\n\n if (method !== 'editor' && fileContent === '') {\n $scope.state.formValidationError = 'Profile file content must not be empty';\n return;\n }\n\n $scope.state.actionInProgress = true;\n\n try {\n await createProfile(name, method, fileContent);\n Notifications.success('Success', 'Profile successfully created');\n $scope.state.isEditorDirty = false;\n $state.go('portainer.settings.edgeCompute');\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to create Profile');\n } finally {\n $scope.state.actionInProgress = false;\n }\n });\n };\n\n $scope.onChangeFileContent = function onChangeFileContent(value) {\n $scope.formValues.profileFileContent = value;\n $scope.state.isEditorDirty = true;\n };\n\n function onChangeFormValues(newValues) {\n $scope.formValues = newValues;\n }\n}\n","const autoNgTemplateLoaderTemplate1 = require('./addProfile.html');\n\nimport angular from 'angular';\n\nimport controller from './addProfileController';\n\nangular.module('portainer.app').component('addProfileView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n});\n","import angular from 'angular';\nimport { editor } from '@@/BoxSelector/common-options/build-methods';\nimport { getProfile, updateProfile } from 'Portainer/hostmanagement/fdo/fdo.service';\n\nangular.module('portainer.app').controller('EditProfileController', EditProfileController);\n\n/* @ngInject */\nexport default function EditProfileController($scope, $async, $state, $window, Notifications) {\n $scope.buildMethods = [editor];\n\n $scope.formValues = {\n name: '',\n profileFileContent: '',\n };\n\n $scope.state = {\n profileID: $state.params.id,\n method: 'editor',\n actionInProgress: false,\n isEditorDirty: false,\n };\n\n $window.onbeforeunload = () => {\n if ($scope.state.method === 'editor' && $scope.formValues.profileFileContent && $scope.state.isEditorDirty) {\n return '';\n }\n };\n\n $scope.$on('$destroy', function () {\n $scope.state.isEditorDirty = false;\n });\n\n $scope.onChangeFormValues = onChangeFormValues;\n\n $scope.updateProfileAsync = function () {\n return $async(async () => {\n const method = $scope.state.method;\n\n const name = $scope.formValues.name;\n const fileContent = $scope.formValues.profileFileContent;\n\n if (method !== 'editor' && fileContent === '') {\n $scope.state.formValidationError = 'Profile file content must not be empty';\n return;\n }\n\n $scope.state.actionInProgress = true;\n\n try {\n await updateProfile($scope.state.profileID, name, fileContent);\n Notifications.success('Success', 'Profile successfully updated');\n $scope.state.isEditorDirty = false;\n $state.go('portainer.settings.edgeCompute');\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to update Profile');\n } finally {\n $scope.state.actionInProgress = false;\n }\n });\n };\n\n $scope.onChangeFileContent = function onChangeFileContent(value) {\n $scope.formValues.profileFileContent = value;\n $scope.state.isEditorDirty = true;\n };\n\n function onChangeFormValues(newValues) {\n $scope.formValues = newValues;\n }\n\n async function initView() {\n return $async(async () => {\n try {\n const profile = await getProfile($scope.state.profileID);\n\n $scope.formValues = {\n name: profile.name,\n profileFileContent: profile.fileContent,\n };\n $scope.state.isEditorDirty = false;\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to retrieve profile details');\n }\n });\n }\n\n initView();\n}\n","const autoNgTemplateLoaderTemplate1 = require('./editProfile.html');\n\nimport angular from 'angular';\n\nimport controller from './editProfileController';\n\nangular.module('portainer.app').component('editProfileView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n});\n","const autoNgTemplateLoaderTemplate1 = require('./registries.html');\n\nangular.module('portainer.app').component('endpointRegistriesView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: 'EndpointRegistriesController',\n bindings: {\n endpoint: '<',\n },\n});\n","import _ from 'lodash-es';\nimport { RegistryTypes } from 'Portainer/models/registryTypes';\n\nclass EndpointRegistriesController {\n /* @ngInject */\n constructor($async, Notifications, EndpointService, Authentication) {\n this.$async = $async;\n this.Notifications = Notifications;\n this.EndpointService = EndpointService;\n this.Authentication = Authentication;\n\n this.canManageAccess = this.canManageAccess.bind(this);\n this.canBrowse = this.canBrowse.bind(this);\n }\n\n canManageAccess(item) {\n return item.Type !== RegistryTypes.ANONYMOUS && this.Authentication.isAdmin();\n }\n\n canBrowse(item) {\n return !_.includes([RegistryTypes.ANONYMOUS, RegistryTypes.DOCKERHUB, RegistryTypes.QUAY], item.Type);\n }\n\n getRegistries() {\n return this.$async(async () => {\n try {\n this.registries = await this.EndpointService.registries(this.endpointId);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registries');\n }\n });\n }\n\n $onInit() {\n return this.$async(async () => {\n this.state = {\n viewReady: false,\n };\n\n try {\n this.endpointType = this.endpoint.Type;\n this.endpointId = this.endpoint.Id;\n await this.getRegistries();\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registries');\n } finally {\n this.state.viewReady = true;\n }\n });\n }\n}\n\nexport default EndpointRegistriesController;\nangular.module('portainer.app').controller('EndpointRegistriesController', EndpointRegistriesController);\n","import angular from 'angular';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nclass EndpointAccessController {\n /* @ngInject */\n constructor($state, $transition$, Notifications, EndpointService, GroupService, $async) {\n this.$state = $state;\n this.$transition$ = $transition$;\n this.Notifications = Notifications;\n this.EndpointService = EndpointService;\n this.GroupService = GroupService;\n this.$async = $async;\n\n this.limitedFeature = FeatureId.RBAC_ROLES;\n\n this.updateAccess = this.updateAccess.bind(this);\n this.updateAccessAsync = this.updateAccessAsync.bind(this);\n }\n\n async $onInit() {\n this.state = { actionInProgress: false };\n try {\n this.endpoint = await this.EndpointService.endpoint(this.$transition$.params().id);\n this.group = await this.GroupService.group(this.endpoint.GroupId);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve environment information');\n }\n }\n\n updateAccess() {\n return this.$async(this.updateAccessAsync);\n }\n\n async updateAccessAsync() {\n try {\n this.state.actionInProgress = true;\n await this.EndpointService.updateEndpoint(this.$transition$.params().id, this.endpoint);\n this.Notifications.success('Success', 'Access successfully updated');\n this.$state.reload(this.$state.current);\n } catch (err) {\n this.state.actionInProgress = false;\n this.Notifications.error('Failure', err, 'Unable to update accesses');\n }\n }\n}\n\nexport default EndpointAccessController;\nangular.module('portainer.app').controller('EndpointAccessController', EndpointAccessController);\n","import _ from 'lodash-es';\nimport uuidv4 from 'uuid/v4';\n\nimport { PortainerEndpointTypes } from '@/portainer/models/endpoint/models';\nimport EndpointHelper from '@/portainer/helpers/endpointHelper';\nimport { getAMTInfo } from 'Portainer/hostmanagement/open-amt/open-amt.service';\nimport { confirmDestructive } from '@@/modals/confirm';\nimport { isEdgeEnvironment, isDockerAPIEnvironment } from '@/react/portainer/environments/utils';\n\nimport { commandsTabs } from '@/react/edge/components/EdgeScriptForm/scripts';\nimport { confirmDisassociate } from '@/react/portainer/environments/ItemView/ConfirmDisassociateModel';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { getInfo } from '@/docker/services/system.service';\n\nangular.module('portainer.app').controller('EndpointController', EndpointController);\n\n/* @ngInject */\nfunction EndpointController(\n $async,\n $scope,\n $state,\n $transition$,\n $filter,\n clipboard,\n EndpointService,\n GroupService,\n\n Notifications,\n Authentication,\n SettingsService\n) {\n $scope.onChangeCheckInInterval = onChangeCheckInInterval;\n $scope.setFieldValue = setFieldValue;\n $scope.onChangeTags = onChangeTags;\n $scope.onChangeTLSConfigFormValues = onChangeTLSConfigFormValues;\n\n const isBE = process.env.PORTAINER_EDITION === 'BE';\n\n $scope.state = {\n selectAll: false,\n // displayTextFilter: false,\n get selectedItemCount() {\n return $scope.state.selectedItems.length || 0;\n },\n selectedItems: [],\n uploadInProgress: false,\n actionInProgress: false,\n azureEndpoint: false,\n kubernetesEndpoint: false,\n agentEndpoint: false,\n edgeEndpoint: false,\n edgeAssociated: false,\n allowCreate: Authentication.isAdmin(),\n allowSelfSignedCerts: true,\n showAMTInfo: false,\n showNomad: isBE,\n showTLSConfig: false,\n edgeScriptCommands: {\n linux: _.compact([commandsTabs.k8sLinux, commandsTabs.swarmLinux, commandsTabs.standaloneLinux, isBE && commandsTabs.nomadLinux]),\n win: [commandsTabs.swarmWindows, commandsTabs.standaloneWindow],\n },\n };\n\n $scope.selectAll = function () {\n $scope.state.firstClickedItem = null;\n for (var i = 0; i < $scope.state.filteredDataSet.length; i++) {\n var item = $scope.state.filteredDataSet[i];\n if (item.Checked !== $scope.state.selectAll) {\n // if ($scope.allowSelection(item) && item.Checked !== $scope.state.selectAll) {\n item.Checked = $scope.state.selectAll;\n $scope.selectItem(item);\n }\n }\n };\n\n function isBetween(value, a, b) {\n return (value >= a && value <= b) || (value >= b && value <= a);\n }\n\n $scope.selectItem = function (item, event) {\n // Handle range select using shift\n if (event && event.originalEvent.shiftKey && $scope.state.firstClickedItem) {\n const firstItemIndex = $scope.state.filteredDataSet.indexOf($scope.state.firstClickedItem);\n const lastItemIndex = $scope.state.filteredDataSet.indexOf(item);\n const itemsInRange = _.filter($scope.state.filteredDataSet, (item, index) => {\n return isBetween(index, firstItemIndex, lastItemIndex);\n });\n const value = $scope.state.firstClickedItem.Checked;\n\n _.forEach(itemsInRange, (i) => {\n i.Checked = value;\n });\n $scope.state.firstClickedItem = item;\n } else if (event) {\n item.Checked = !item.Checked;\n $scope.state.firstClickedItem = item;\n }\n $scope.state.selectedItems = _.uniq(_.concat($scope.state.selectedItems, $scope.state.filteredDataSet)).filter((i) => i.Checked);\n if (event && $scope.state.selectAll && $scope.state.selectedItems.length !== $scope.state.filteredDataSet.length) {\n $scope.state.selectAll = false;\n }\n };\n\n $scope.formValues = {\n tlsConfig: {\n tls: false,\n skipVerify: false,\n skipClientVerify: false,\n caCertFile: null,\n certFile: null,\n keyFile: null,\n },\n };\n\n $scope.onDisassociateEndpoint = async function () {\n confirmDisassociate().then((confirmed) => {\n if (confirmed) {\n disassociateEndpoint();\n }\n });\n };\n\n async function disassociateEndpoint() {\n var endpoint = $scope.endpoint;\n\n try {\n $scope.state.actionInProgress = true;\n await EndpointService.disassociateEndpoint(endpoint.Id);\n Notifications.success('Environment disassociated', $scope.endpoint.Name);\n $state.reload();\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to disassociate environment');\n } finally {\n $scope.state.actionInProgress = false;\n }\n }\n\n function onChangeCheckInInterval(value) {\n setFieldValue('EdgeCheckinInterval', value);\n }\n\n function onChangeTags(value) {\n setFieldValue('TagIds', value);\n }\n\n function onChangeTLSConfigFormValues(newValues) {\n return this.$async(async () => {\n $scope.formValues.tlsConfig = {\n ...$scope.formValues.tlsConfig,\n ...newValues,\n };\n });\n }\n\n function setFieldValue(name, value) {\n return $scope.$evalAsync(() => {\n $scope.endpoint = {\n ...$scope.endpoint,\n [name]: value,\n };\n });\n }\n\n Array.prototype.indexOf = function (val) {\n for (var i = 0; i < this.length; i++) {\n if (this[i] == val) return i;\n }\n return -1;\n };\n Array.prototype.remove = function (val) {\n var index = this.indexOf(val);\n if (index > -1) {\n this.splice(index, 1);\n }\n };\n\n $scope.updateEndpoint = async function () {\n var endpoint = $scope.endpoint;\n\n if (isEdgeEnvironment(endpoint.Type) && _.difference($scope.initialTagIds, endpoint.TagIds).length > 0) {\n let confirmed = await confirmDestructive({\n title: 'Confirm action',\n message: 'Removing tags from this environment will remove the corresponding edge stacks when dynamic grouping is being used',\n confirmButton: buildConfirmButton(),\n });\n\n if (!confirmed) {\n return;\n }\n }\n\n var payload = {\n Name: endpoint.Name,\n PublicURL: endpoint.PublicURL,\n Gpus: endpoint.Gpus,\n GroupID: endpoint.GroupId,\n TagIds: endpoint.TagIds,\n AzureApplicationID: endpoint.AzureCredentials.ApplicationID,\n AzureTenantID: endpoint.AzureCredentials.TenantID,\n AzureAuthenticationKey: endpoint.AzureCredentials.AuthenticationKey,\n EdgeCheckinInterval: endpoint.EdgeCheckinInterval,\n };\n\n if (\n $scope.endpointType !== 'local' &&\n endpoint.Type !== PortainerEndpointTypes.AzureEnvironment &&\n endpoint.Type !== PortainerEndpointTypes.KubernetesLocalEnvironment &&\n endpoint.Type !== PortainerEndpointTypes.AgentOnKubernetesEnvironment\n ) {\n payload.URL = 'tcp://' + endpoint.URL;\n\n if (endpoint.Type === PortainerEndpointTypes.DockerEnvironment) {\n var tlsConfig = $scope.formValues.tlsConfig;\n payload.TLS = tlsConfig.tls;\n payload.TLSSkipVerify = tlsConfig.skipVerify;\n if (tlsConfig.tls && !tlsConfig.skipVerify) {\n payload.TLSSkipClientVerify = tlsConfig.skipClientVerify;\n payload.TLSCACert = tlsConfig.caCertFile;\n payload.TLSCert = tlsConfig.certFile;\n payload.TLSKey = tlsConfig.keyFile;\n }\n }\n }\n\n if (endpoint.Type === PortainerEndpointTypes.AgentOnKubernetesEnvironment) {\n payload.URL = endpoint.URL;\n }\n\n if (endpoint.Type === PortainerEndpointTypes.KubernetesLocalEnvironment) {\n payload.URL = 'https://' + endpoint.URL;\n }\n\n $scope.state.actionInProgress = true;\n EndpointService.updateEndpoint(endpoint.Id, payload).then(\n function success() {\n Notifications.success('Environment updated', $scope.endpoint.Name);\n $state.go($state.params.redirectTo || 'portainer.endpoints', {}, { reload: true });\n },\n function error(err) {\n Notifications.error('Failure', err, 'Unable to update environment');\n $scope.state.actionInProgress = false;\n },\n function update(evt) {\n if (evt.upload) {\n $scope.state.uploadInProgress = evt.upload;\n }\n }\n );\n };\n\n function decodeEdgeKey(key) {\n let keyInformation = {};\n\n if (key === '') {\n return keyInformation;\n }\n\n let decodedKey = _.split(atob(key), '|');\n keyInformation.instanceURL = decodedKey[0];\n keyInformation.tunnelServerAddr = decodedKey[1];\n\n return keyInformation;\n }\n\n function configureState() {\n if (\n $scope.endpoint.Type === PortainerEndpointTypes.KubernetesLocalEnvironment ||\n $scope.endpoint.Type === PortainerEndpointTypes.AgentOnKubernetesEnvironment ||\n $scope.endpoint.Type === PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment\n ) {\n $scope.state.kubernetesEndpoint = true;\n }\n if ($scope.endpoint.Type === PortainerEndpointTypes.EdgeAgentOnDockerEnvironment || $scope.endpoint.Type === PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n $scope.state.edgeEndpoint = true;\n }\n if ($scope.endpoint.Type === PortainerEndpointTypes.AzureEnvironment) {\n $scope.state.azureEndpoint = true;\n }\n if (\n $scope.endpoint.Type === PortainerEndpointTypes.AgentOnDockerEnvironment ||\n $scope.endpoint.Type === PortainerEndpointTypes.EdgeAgentOnDockerEnvironment ||\n $scope.endpoint.Type === PortainerEndpointTypes.AgentOnKubernetesEnvironment ||\n $scope.endpoint.Type === PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment\n ) {\n $scope.state.agentEndpoint = true;\n }\n }\n\n function configureTLS(endpoint) {\n $scope.formValues = {\n tlsConfig: {\n tls: endpoint.TLSConfig.TLS || false,\n skipVerify: endpoint.TLSConfig.TLSSkipVerify || false,\n skipClientVerify: endpoint.TLSConfig.TLSSkipClientVerify || false,\n },\n };\n }\n\n async function initView() {\n return $async(async () => {\n try {\n const [endpoint, groups, settings] = await Promise.all([EndpointService.endpoint($transition$.params().id), GroupService.groups(), SettingsService.settings()]);\n\n if (isDockerAPIEnvironment(endpoint)) {\n $scope.state.showTLSConfig = true;\n }\n\n // Check if the environment is docker standalone, to decide whether to show the GPU insights box\n const isDockerEnvironment = endpoint.Type === PortainerEndpointTypes.DockerEnvironment;\n if (isDockerEnvironment) {\n try {\n const dockerInfo = await getInfo(endpoint.Id);\n const isDockerSwarmEnv = dockerInfo.Swarm && dockerInfo.Swarm.NodeID;\n $scope.isDockerStandaloneEnv = !isDockerSwarmEnv;\n } catch (err) {\n // $scope.isDockerStandaloneEnv is only used to show the \"GPU insights box\", so fail quietly on error\n }\n }\n\n if (endpoint.URL.indexOf('unix://') === 0 || endpoint.URL.indexOf('npipe://') === 0) {\n $scope.endpointType = 'local';\n } else {\n $scope.endpointType = 'remote';\n }\n\n endpoint.URL = $filter('stripprotocol')(endpoint.URL);\n\n if (endpoint.Type === PortainerEndpointTypes.EdgeAgentOnDockerEnvironment || endpoint.Type === PortainerEndpointTypes.EdgeAgentOnKubernetesEnvironment) {\n $scope.edgeKeyDetails = decodeEdgeKey(endpoint.EdgeKey);\n\n $scope.state.edgeAssociated = !!endpoint.EdgeID;\n endpoint.EdgeID = endpoint.EdgeID || uuidv4();\n }\n\n $scope.endpoint = endpoint;\n $scope.initialTagIds = endpoint.TagIds.slice();\n $scope.groups = groups;\n\n configureState();\n\n configureTLS(endpoint);\n\n if (EndpointHelper.isDockerEndpoint(endpoint) && $scope.state.edgeAssociated) {\n $scope.state.showAMTInfo = settings && settings.openAMTConfiguration && settings.openAMTConfiguration.enabled;\n }\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to retrieve environment details');\n }\n\n if ($scope.state.showAMTInfo) {\n try {\n $scope.endpoint.ManagementInfo = {};\n const amtInfo = await getAMTInfo($state.params.id);\n try {\n $scope.endpoint.ManagementInfo = JSON.parse(amtInfo.RawOutput);\n } catch (err) {\n clearAMTManagementInfo(amtInfo.RawOutput);\n }\n } catch (err) {\n clearAMTManagementInfo('Unable to retrieve AMT environment details');\n }\n }\n });\n }\n\n function clearAMTManagementInfo(versionValue) {\n $scope.endpoint.ManagementInfo['AMT'] = versionValue;\n $scope.endpoint.ManagementInfo['UUID'] = '-';\n $scope.endpoint.ManagementInfo['Control Mode'] = '-';\n $scope.endpoint.ManagementInfo['Build Number'] = '-';\n $scope.endpoint.ManagementInfo['DNS Suffix'] = '-';\n }\n\n initView();\n}\n","import { confirm } from '@@/modals/confirm';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nexport function confirmDisassociate() {\n const message = (\n <>\n <p>\n Disassociating this Edge environment will mark it as non associated and\n will clear the registered Edge ID.\n </p>\n <p>\n Any agent started with the Edge key associated to this environment will\n be able to re-associate with this environment.\n </p>\n <p>\n You can re-use the Edge ID and Edge key that you used to deploy the\n existing Edge agent to associate a new Edge device to this environment.\n </p>\n </>\n );\n\n return confirm({\n title: 'About disassociating',\n modalType: ModalType.Warn,\n message,\n confirmButton: buildConfirmButton('Disassociate'),\n });\n}\n","export function getAgentShortVersion(agentVersion) {\n const numbers = agentVersion.split('.');\n return numbers[0] + '-' + numbers[1];\n}\n","import angular from 'angular';\n\nimport { enableDeviceFeatures } from 'Portainer/hostmanagement/open-amt/open-amt.service';\n\nclass EndpointKVMController {\n /* @ngInject */\n constructor($state, $scope, $async, $transition$, EndpointService, Notifications) {\n this.$state = $state;\n this.$scope = $scope;\n this.$async = $async;\n this.$transition$ = $transition$;\n this.Notifications = Notifications;\n this.EndpointService = EndpointService;\n\n this.$state.maximized = false;\n this.$state.endpointId = $transition$.params().id;\n this.$state.deviceId = $transition$.params().deviceId;\n this.$state.deviceName = $transition$.params().deviceName;\n\n $scope.maximize = function () {\n this.$state.maximized = true;\n };\n\n $scope.minimize = function () {\n this.$state.maximized = false;\n };\n }\n\n async $onInit() {\n this.$async(async () => {\n try {\n this.$state.endpoint = await this.EndpointService.endpoint(this.$state.endpointId);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve environment information');\n }\n\n try {\n const features = {\n ider: true,\n kvm: true,\n sol: true,\n redirection: true,\n userConsent: 'none',\n };\n const mpsAuthorization = await enableDeviceFeatures(this.$state.endpointId, this.$state.deviceId, features);\n\n this.$state.mpsServer = mpsAuthorization.Server;\n this.$state.mpsToken = mpsAuthorization.Token;\n } catch (e) {\n this.Notifications.error('Failure', e, `Failed to load kvm for device`);\n }\n });\n }\n}\n\nexport default EndpointKVMController;\nangular.module('portainer.app').controller('EndpointKVMController', EndpointKVMController);\n","import { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nangular.module('portainer.app').controller('GroupAccessController', [\n '$scope',\n '$state',\n '$transition$',\n 'GroupService',\n 'Notifications',\n function ($scope, $state, $transition$, GroupService, Notifications) {\n $scope.limitedFeature = FeatureId.RBAC_ROLES;\n\n $scope.updateAccess = function () {\n $scope.state.actionInProgress = true;\n GroupService.updateGroup($scope.group, $scope.group.AssociatedEndpoints)\n .then(() => {\n Notifications.success('Success', 'Access successfully updated');\n $state.reload();\n })\n .catch((err) => {\n $scope.state.actionInProgress = false;\n Notifications.error('Failure', err, 'Unable to update accesses');\n });\n };\n\n function initView() {\n var groupId = $transition$.params().id;\n\n $scope.state = { actionInProgress: false };\n GroupService.group(groupId)\n .then(function success(data) {\n $scope.group = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to load view');\n });\n }\n\n initView();\n },\n]);\n","import { EndpointGroupDefaultModel } from '../../../models/group';\n\nangular.module('portainer.app').controller('CreateGroupController', function CreateGroupController($async, $scope, $state, GroupService, Notifications) {\n $scope.state = {\n actionInProgress: false,\n };\n\n $scope.onChangeEnvironments = onChangeEnvironments;\n\n $scope.create = function () {\n var model = $scope.model;\n\n $scope.state.actionInProgress = true;\n GroupService.createGroup(model, $scope.associatedEndpoints)\n .then(function success() {\n Notifications.success('Success', 'Group successfully created');\n $state.go('portainer.groups', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to create group');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n\n function initView() {\n $scope.associatedEndpoints = [];\n $scope.model = new EndpointGroupDefaultModel();\n $scope.loaded = true;\n }\n\n function onChangeEnvironments(value) {\n return $scope.$evalAsync(() => {\n $scope.associatedEndpoints = value;\n });\n }\n\n initView();\n});\n","import { getEnvironments } from '@/react/portainer/environments/environment.service';\nimport { notifyError, notifySuccess } from '@/portainer/services/notifications';\n\nangular.module('portainer.app').controller('GroupController', function GroupController($async, $q, $scope, $state, $transition$, GroupService, Notifications) {\n $scope.state = {\n actionInProgress: false,\n };\n $scope.onChangeEnvironments = onChangeEnvironments;\n $scope.associatedEndpoints = [];\n\n $scope.update = function () {\n var model = $scope.group;\n\n $scope.state.actionInProgress = true;\n GroupService.updateGroup(model)\n .then(function success() {\n Notifications.success('Success', 'Group successfully updated');\n $state.go('portainer.groups', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to update group');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n\n function onChangeEnvironments(value, meta) {\n return $async(async () => {\n let success = false;\n if (meta.type === 'add') {\n success = await onAssociate(meta.value);\n } else if (meta.type === 'remove') {\n success = await onDisassociate(meta.value);\n }\n\n if (success) {\n $scope.associatedEndpoints = value;\n }\n });\n }\n\n async function onAssociate(endpointId) {\n try {\n await GroupService.addEndpoint($scope.group.Id, endpointId);\n\n notifySuccess('Success', `Environment successfully added to group`);\n return true;\n } catch (err) {\n notifyError('Failure', err, `Unable to add environment to group`);\n }\n }\n\n async function onDisassociate(endpointId) {\n try {\n await GroupService.removeEndpoint($scope.group.Id, endpointId);\n\n notifySuccess('Success', `Environment successfully removed to group`);\n return true;\n } catch (err) {\n notifyError('Failure', err, `Unable to remove environment to group`);\n }\n }\n\n function initView() {\n var groupId = $transition$.params().id;\n\n $q.all({\n group: GroupService.group(groupId),\n endpoints: getEnvironments({ query: { groupIds: [groupId] } }),\n })\n .then(function success(data) {\n $scope.group = data.group;\n $scope.associatedEndpoints = data.endpoints.value.map((endpoint) => endpoint.Id);\n $scope.loaded = true;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to load group details');\n });\n }\n\n initView();\n});\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport { confirmDestructive } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nangular.module('portainer.app').controller('GroupsController', GroupsController);\n\nfunction GroupsController($scope, $state, $async, GroupService, Notifications) {\n $scope.removeAction = removeAction;\n\n function removeAction(selectedItems) {\n return $async(removeActionAsync, selectedItems);\n }\n\n async function removeActionAsync(selectedItems) {\n const confirmed = await confirmDestructive({\n title: 'Are you sure?',\n message: 'Are you sure you want to remove the selected environment group(s)?',\n confirmButton: buildConfirmButton('Remove', 'danger'),\n });\n\n if (!confirmed) {\n return;\n }\n\n for (let group of selectedItems) {\n try {\n await GroupService.deleteGroup(group.Id);\n\n Notifications.success('Environment group successfully removed', group.Name);\n _.remove($scope.groups, group);\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to remove group');\n }\n }\n\n $state.reload();\n }\n\n function initView() {\n GroupService.groups()\n .then(function success(data) {\n $scope.groups = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve environment groups');\n $scope.groups = [];\n });\n }\n\n initView();\n}\n","import { Download, Upload } from 'lucide-react';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\n\nimport { BoxSelectorOption } from '@@/BoxSelector';\n\nexport const restoreOptions: ReadonlyArray<BoxSelectorOption<string>> = [\n {\n id: 'restore_file',\n value: 'file',\n icon: Upload,\n iconType: 'badge',\n label: 'Upload backup file',\n },\n {\n id: 'restore_s3',\n value: 's3',\n icon: Download,\n iconType: 'badge',\n label: 'Retrieve from S3',\n feature: FeatureId.S3_RESTORE,\n },\n] as const;\n","import { getEnvironments } from '@/react/portainer/environments/environment.service';\nimport { restoreOptions } from '@/react/portainer/init/InitAdminView/restore-options';\n\nangular.module('portainer.app').controller('InitAdminController', [\n '$scope',\n '$state',\n 'Notifications',\n 'Authentication',\n 'StateManager',\n 'SettingsService',\n 'UserService',\n 'BackupService',\n 'StatusService',\n function ($scope, $state, Notifications, Authentication, StateManager, SettingsService, UserService, BackupService, StatusService) {\n $scope.restoreOptions = restoreOptions;\n\n $scope.uploadBackup = uploadBackup;\n\n $scope.logo = StateManager.getState().application.logo;\n\n $scope.formValues = {\n Username: 'admin',\n Password: '',\n ConfirmPassword: '',\n enableTelemetry: process.env.NODE_ENV === 'production',\n };\n\n $scope.state = {\n actionInProgress: false,\n showInitPassword: true,\n showRestorePortainer: false,\n };\n\n createAdministratorFlow();\n\n $scope.togglePanel = function () {\n $scope.state.showInitPassword = !$scope.state.showInitPassword;\n $scope.state.showRestorePortainer = !$scope.state.showRestorePortainer;\n };\n\n $scope.onChangeRestoreType = onChangeRestoreType;\n function onChangeRestoreType(value) {\n $scope.$evalAsync(() => {\n $scope.formValues.restoreFormType = value;\n });\n }\n\n $scope.createAdminUser = function () {\n var username = $scope.formValues.Username;\n var password = $scope.formValues.Password;\n\n $scope.state.actionInProgress = true;\n UserService.initAdministrator(username, password)\n .then(function success() {\n return Authentication.login(username, password);\n })\n .then(function success() {\n return SettingsService.update({ enableTelemetry: $scope.formValues.enableTelemetry });\n })\n .then(() => {\n return StateManager.initialize();\n })\n .then(function () {\n return getEnvironments({ limit: 100 });\n })\n .then(function success(data) {\n if (data.value.length === 0) {\n $state.go('portainer.wizard');\n } else {\n $state.go('portainer.home');\n }\n })\n .catch(function error(err) {\n handleError(err);\n Notifications.error('Failure', err, 'Unable to create administrator user');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n\n function handleError(err) {\n if (err.status === 303) {\n const headers = err.headers();\n const REDIRECT_REASON_TIMEOUT = 'AdminInitTimeout';\n if (headers && headers['redirect-reason'] === REDIRECT_REASON_TIMEOUT) {\n window.location.href = '/timeout.html';\n }\n }\n }\n\n function createAdministratorFlow() {\n SettingsService.publicSettings()\n .then(function success(data) {\n $scope.requiredPasswordLength = data.RequiredPasswordLength;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve application settings');\n });\n\n UserService.administratorExists()\n .then(function success(exists) {\n if (exists) {\n $state.go('portainer.wizard');\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to verify administrator account existence');\n });\n }\n\n async function uploadBackup() {\n $scope.state.backupInProgress = true;\n\n const file = $scope.formValues.BackupFile;\n const password = $scope.formValues.Password;\n\n restoreAndRefresh(() => BackupService.uploadBackup(file, password));\n }\n\n async function restoreAndRefresh(restoreAsyncFn) {\n $scope.state.backupInProgress = true;\n\n try {\n await restoreAsyncFn();\n } catch (err) {\n handleError(err);\n Notifications.error('Failure', err, 'Unable to restore the backup');\n $scope.state.backupInProgress = false;\n\n return;\n }\n\n try {\n await waitPortainerRestart();\n Notifications.success('Success', 'The backup has successfully been restored');\n $state.go('portainer.auth');\n } catch (err) {\n handleError(err);\n Notifications.error('Failure', err, 'Unable to check for status');\n await wait(2);\n location.reload();\n }\n\n $scope.state.backupInProgress = false;\n }\n\n async function waitPortainerRestart() {\n for (let i = 0; i < 10; i++) {\n await wait(5);\n try {\n const status = await StatusService.status();\n if (status && status.Version) {\n return;\n }\n } catch (e) {\n // pass\n }\n }\n throw new Error('Timeout to wait for Portainer restarting');\n }\n },\n]);\n\nfunction wait(seconds = 0) {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1000));\n}\n","import angular from 'angular';\n\nclass LogoutController {\n /* @ngInject */\n constructor($async, $state, $transition$, $window, Authentication, StateManager, Notifications, LocalStorage, SettingsService) {\n this.$async = $async;\n this.$state = $state;\n this.$transition$ = $transition$;\n this.$window = $window;\n\n this.Authentication = Authentication;\n this.StateManager = StateManager;\n this.Notifications = Notifications;\n this.LocalStorage = LocalStorage;\n this.SettingsService = SettingsService;\n\n this.logo = this.StateManager.getState().application.logo;\n this.logoutAsync = this.logoutAsync.bind(this);\n\n this.onInit = this.onInit.bind(this);\n }\n\n /**\n * UTILS FUNCTIONS SECTION\n */\n async logoutAsync() {\n const error = this.$transition$.params().error;\n const settings = await this.SettingsService.publicSettings();\n\n try {\n await this.Authentication.logout();\n } finally {\n this.LocalStorage.storeLogoutReason(error);\n if (settings.OAuthLogoutURI && this.Authentication.getUserDetails().ID !== 1) {\n this.$window.location.href = settings.OAuthLogoutURI;\n } else {\n this.$state.go('portainer.auth', { reload: true });\n }\n }\n }\n\n logout() {\n return this.$async(this.logoutAsync);\n }\n\n /**\n * END UTILS FUNCTIONS SECTION\n */\n\n async onInit() {\n try {\n await this.logout();\n } catch (err) {\n this.Notifications.error('Failure', err, 'An error occurred during logout');\n }\n }\n\n $onInit() {\n return this.$async(this.onInit);\n }\n\n /**\n * END ON INIT SECTION\n */\n}\n\nexport default LogoutController;\nangular.module('portainer.app').controller('LogoutController', LogoutController);\n","angular.module('portainer.app').controller('MainController', MainController);\n\n/* @ngInject */\nfunction MainController($scope, StateManager, ThemeManager, SidebarService) {\n /**\n * Sidebar Toggle & Cookie Control\n */\n\n $scope.applicationState = StateManager.getState();\n\n $scope.isSidebarOpen = SidebarService.isSidebarOpen;\n\n ThemeManager.autoTheme();\n}\n","const autoNgTemplateLoaderTemplate1 = require('./createRegistry.html');\n\nimport angular from 'angular';\nimport CreateRegistryController from './createRegistryController';\n\nangular.module('portainer.app').component('createRegistry', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller: CreateRegistryController,\n bindings: {\n $transition$: '<',\n },\n});\n","import { Edit } from 'lucide-react';\n\nimport Docker from '@/assets/ico/vendor/docker.svg?c';\nimport Ecr from '@/assets/ico/vendor/ecr.svg?c';\nimport Quay from '@/assets/ico/vendor/quay.svg?c';\nimport Proget from '@/assets/ico/vendor/proget.svg?c';\nimport Azure from '@/assets/ico/vendor/azure.svg?c';\nimport Gitlab from '@/assets/ico/vendor/gitlab.svg?c';\n\nimport { BadgeIcon } from '@@/BadgeIcon';\n\nexport const options = [\n {\n id: 'registry_dockerhub',\n icon: Docker,\n label: 'DockerHub',\n description: 'DockerHub authenticated account',\n value: '6',\n },\n {\n id: 'registry_aws_ecr',\n icon: Ecr,\n label: 'AWS ECR',\n description: 'Amazon elastic container registry',\n value: '7',\n },\n {\n id: 'registry_quay',\n icon: Quay,\n label: 'Quay.io',\n description: 'Quay container registry',\n value: '1',\n },\n {\n id: 'registry_proget',\n icon: Proget,\n label: 'ProGet',\n description: 'ProGet container registry',\n value: '5',\n },\n {\n id: 'registry_azure',\n icon: Azure,\n label: 'Azure',\n description: 'Azure container registry',\n value: '2',\n },\n {\n id: 'registry_gitlab',\n icon: Gitlab,\n label: 'GitLab',\n description: 'GitLab container registry',\n value: '4',\n },\n {\n id: 'registry_custom',\n icon: <BadgeIcon icon={Edit} />,\n label: 'Custom registry',\n description: 'Define your own registry',\n value: '3',\n },\n];\n","import _ from 'lodash';\nimport { RegistryTypes } from 'Portainer/models/registryTypes';\nimport { RegistryCreateFormValues } from 'Portainer/models/registry';\nimport { options } from '@/react/portainer/registries/CreateView/options';\n\nclass CreateRegistryController {\n /* @ngInject */\n constructor($async, $state, Notifications, RegistryService, RegistryGitlabService) {\n Object.assign(this, { $async, $state, Notifications, RegistryService, RegistryGitlabService });\n\n this.RegistryTypes = RegistryTypes;\n this.state = {\n actionInProgress: false,\n overrideConfiguration: false,\n gitlab: {\n get selectedItemCount() {\n return this.selectedItems.length || 0;\n },\n selectedItems: [],\n },\n originViewReference: 'portainer.registries',\n originalEndpointId: null,\n };\n\n this.createRegistry = this.createRegistry.bind(this);\n this.getRegistries = this.getRegistries.bind(this);\n this.nameIsUsed = this.nameIsUsed.bind(this);\n this.retrieveGitlabRegistries = this.retrieveGitlabRegistries.bind(this);\n this.createGitlabRegistries = this.createGitlabRegistries.bind(this);\n\n this.selectDockerHub = this.selectDockerHub.bind(this);\n this.selectEcr = this.selectEcr.bind(this);\n this.selectQuayRegistry = this.selectQuayRegistry.bind(this);\n this.selectProGetRegistry = this.selectProGetRegistry.bind(this);\n this.selectAzureRegistry = this.selectAzureRegistry.bind(this);\n this.selectGitlabRegistry = this.selectGitlabRegistry.bind(this);\n this.selectCustomRegistry = this.selectCustomRegistry.bind(this);\n\n this.setRegistry = this.setRegistry.bind(this);\n }\n\n useDefaultQuayConfiguration() {\n this.model.Quay.useOrganisation = false;\n this.model.Quay.organisationName = '';\n }\n\n selectQuayRegistry() {\n this.model.Name = 'Quay';\n this.model.URL = 'quay.io';\n this.model.Authentication = true;\n this.model.Quay = {};\n this.useDefaultQuayConfiguration();\n this.model.Type = RegistryTypes.QUAY;\n }\n\n useDefaultGitlabConfiguration() {\n this.model.URL = 'https://registry.gitlab.com';\n this.model.Gitlab.InstanceURL = 'https://gitlab.com';\n }\n\n selectGitlabRegistry() {\n this.model.Name = '';\n this.model.Authentication = true;\n this.model.Gitlab = {};\n this.useDefaultGitlabConfiguration();\n this.model.Type = RegistryTypes.GITLAB;\n }\n\n selectAzureRegistry() {\n this.model.Name = '';\n this.model.URL = '';\n this.model.Authentication = true;\n this.model.Type = RegistryTypes.AZURE;\n }\n\n selectProGetRegistry() {\n this.model.Name = '';\n this.model.URL = '';\n this.model.BaseURL = '';\n this.model.Authentication = true;\n this.model.Type = RegistryTypes.PROGET;\n }\n\n selectCustomRegistry() {\n this.model.Name = '';\n this.model.URL = '';\n this.model.Authentication = false;\n this.model.Type = RegistryTypes.CUSTOM;\n }\n\n selectDockerHub() {\n this.model.Name = '';\n this.model.URL = 'docker.io';\n this.model.Authentication = true;\n this.model.Type = RegistryTypes.DOCKERHUB;\n }\n\n useDefaultEcrConfiguration() {\n this.model.Ecr.Region = '';\n }\n\n selectEcr() {\n this.model.Name = '';\n this.model.URL = '';\n this.model.Authentication = false;\n this.model.Ecr = {};\n this.useDefaultEcrConfiguration();\n this.model.Type = RegistryTypes.ECR;\n }\n\n retrieveGitlabRegistries() {\n return this.$async(async () => {\n this.state.actionInProgress = true;\n try {\n this.gitlabProjects = await this.RegistryGitlabService.projects(this.model.Gitlab.InstanceURL, this.model.Token);\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve projects');\n } finally {\n this.state.actionInProgress = false;\n }\n });\n }\n\n createGitlabRegistries() {\n return this.$async(async () => {\n try {\n this.state.actionInProgress = true;\n await this.RegistryService.createGitlabRegistries(this.model, this.state.gitlab.selectedItems);\n this.Notifications.success('Success', 'Registries successfully created');\n this.$state.go(this.state.originViewReference, { endpointId: this.state.originalEndpointId });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create registries');\n this.state.actionInProgress = false;\n }\n });\n }\n\n createRegistry() {\n return this.$async(async () => {\n try {\n this.state.actionInProgress = true;\n await this.RegistryService.createRegistry(this.model);\n this.Notifications.success('Success', 'Registry successfully created');\n this.$state.go(this.state.originViewReference, { endpointId: this.state.originalEndpointId });\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to create registry');\n this.state.actionInProgress = false;\n }\n });\n }\n\n nameIsUsed(name) {\n return _.includes(this.registriesNames, name);\n }\n\n getRegistries() {\n return this.$async(async () => {\n try {\n const registries = await this.RegistryService.registries();\n this.registriesNames = _.map(registries, 'Name');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to fetch existing registries');\n }\n });\n }\n\n setRegistry(registry) {\n this.state.registryValue = registry;\n\n switch (registry) {\n case '6':\n this.selectDockerHub();\n break;\n case '7':\n this.selectEcr();\n break;\n case '1':\n this.selectQuayRegistry();\n break;\n case '5':\n this.selectProGetRegistry();\n break;\n case '2':\n this.selectAzureRegistry();\n break;\n case '4':\n this.selectGitlabRegistry();\n break;\n case '3':\n this.selectCustomRegistry();\n break;\n }\n }\n\n $onInit() {\n return this.$async(async () => {\n this.model = new RegistryCreateFormValues();\n this.model.Type = RegistryTypes.DOCKERHUB;\n this.selectDockerHub();\n this.state.availableRegistry = options;\n // Default registryValue is DockerHub, which is 6\n this.state.registryValue = '6';\n\n const from = this.$transition$.from();\n const params = this.$transition$.params('from');\n\n if (from.name && /^[a-z]+\\.registries$/.test(from.name)) {\n this.state.originViewReference = from;\n this.state.originalEndpointId = params.endpointId || null;\n }\n await this.getRegistries();\n });\n }\n}\n\nexport default CreateRegistryController;\n","const autoNgTemplateLoaderTemplate1 = require('./registry.html');\n\nimport angular from 'angular';\nimport controller from './registryController';\n\nangular.module('portainer.app').component('editRegistry', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n bindings: {\n $transition$: '<',\n },\n});\n","import _ from 'lodash';\nimport { RegistryTypes } from '@/portainer/models/registryTypes';\n\nexport default class RegistryController {\n /* @ngInject */\n constructor($scope, $async, $state, RegistryService, Notifications) {\n this.$scope = $scope;\n Object.assign(this, { $async, $state, RegistryService, Notifications });\n\n this.RegistryTypes = RegistryTypes;\n\n this.state = {\n actionInProgress: false,\n loading: false,\n };\n\n this.Password = '';\n\n this.toggleAuthentication = this.toggleAuthentication.bind(this);\n this.toggleQuayUseOrganisation = this.toggleQuayUseOrganisation.bind(this);\n }\n\n toggleAuthentication(newValue) {\n this.$scope.$evalAsync(() => {\n this.registry.Authentication = newValue;\n });\n }\n\n toggleQuayUseOrganisation(newValue) {\n this.$scope.$evalAsync(() => {\n this.registry.Quay.UseOrganisation = newValue;\n });\n }\n\n passwordLabel() {\n const type = this.registry.Type;\n switch (type) {\n case RegistryTypes.ECR:\n return 'AWS Secret Access Key';\n case RegistryTypes.DOCKERHUB:\n return 'Access token';\n case RegistryTypes.GITLAB:\n return 'Personal Access Token';\n default:\n return 'Password';\n }\n }\n\n updateRegistry() {\n return this.$async(async () => {\n try {\n this.state.actionInProgress = true;\n const registry = this.registry;\n registry.Password = this.Password;\n\n await this.RegistryService.updateRegistry(registry);\n this.Notifications.success('Success', 'Registry successfully updated');\n this.$state.go('portainer.registries');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to update registry');\n } finally {\n this.state.actionInProgress = false;\n }\n });\n }\n\n onChangeName() {\n this.state.nameAlreadyExists = _.includes(this.registriesNames, this.registry.Name);\n }\n\n isUpdateButtonDisabled() {\n return (\n this.state.actionInProgress ||\n this.state.nameAlreadyExists ||\n !this.registry.Name ||\n !this.registry.URL ||\n (this.registry.Type == this.RegistryTypes.QUAY && this.registry.Quay.UseOrganisation && !this.registry.Quay.OrganisationName)\n );\n }\n\n getRegistryProvider(registryType) {\n switch (registryType) {\n case RegistryTypes.QUAY:\n return 'Quay.io';\n case RegistryTypes.AZURE:\n return 'Azure';\n case RegistryTypes.CUSTOM:\n return 'Custom';\n case RegistryTypes.GITLAB:\n return 'Gitlab';\n case RegistryTypes.PROGET:\n return 'ProGet';\n case RegistryTypes.DOCKERHUB:\n return 'Docker Hub';\n case RegistryTypes.ECR:\n return 'AWS ECR';\n default:\n return '';\n }\n }\n async $onInit() {\n try {\n this.state.loading = true;\n\n const registryId = this.$state.params.id;\n const registry = await this.RegistryService.registry(registryId);\n this.registry = registry;\n this.provider = this.getRegistryProvider(registry.Type);\n\n const registries = await this.RegistryService.registries();\n _.pullAllBy(registries, [registry], 'Id');\n this.registriesNames = _.map(registries, 'Name');\n } catch (err) {\n this.Notifications.error('Failure', err, 'Unable to retrieve registry details');\n } finally {\n this.state.loading = false;\n }\n }\n}\n","import _ from 'lodash-es';\nimport { confirmDelete } from '@@/modals/confirm';\nimport { RegistryTypes } from 'Portainer/models/registryTypes';\n\nangular.module('portainer.app').controller('RegistriesController', [\n '$q',\n '$scope',\n '$state',\n 'RegistryService',\n 'Notifications',\n function ($q, $scope, $state, RegistryService, Notifications) {\n $scope.state = {\n actionInProgress: false,\n };\n\n const nonBrowsableTypes = [RegistryTypes.ANONYMOUS, RegistryTypes.DOCKERHUB, RegistryTypes.QUAY];\n\n $scope.canBrowse = function (item) {\n return !_.includes(nonBrowsableTypes, item.Type);\n };\n\n $scope.removeAction = function (selectedItems) {\n const regAttrMsg = selectedItems.length > 1 ? 'hese' : 'his';\n const registriesMsg = selectedItems.length > 1 ? 'registries' : 'registry';\n const msg = `T${regAttrMsg} ${registriesMsg} might be used by applications inside one or more environments. Removing the ${registriesMsg} could lead to a service interruption for the applications using t${regAttrMsg} ${registriesMsg}. Do you want to remove the selected ${registriesMsg}?`;\n\n confirmDelete(msg).then((confirmed) => {\n if (!confirmed) {\n return;\n }\n deleteSelectedRegistries(selectedItems);\n });\n };\n\n function deleteSelectedRegistries(selectedItems) {\n var actionCount = selectedItems.length;\n angular.forEach(selectedItems, function (registry) {\n RegistryService.deleteRegistry(registry.Id)\n .then(function success() {\n Notifications.success('Registry successfully removed', registry.Name);\n var index = $scope.registries.indexOf(registry);\n $scope.registries.splice(index, 1);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove registry');\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n }\n\n function initView() {\n $q.all({\n registries: RegistryService.registries(),\n })\n .then(function success(data) {\n $scope.registries = data.registries;\n })\n .catch(function error(err) {\n $scope.registries = [];\n Notifications.error('Failure', err, 'Unable to retrieve registries');\n });\n }\n\n initView();\n },\n]);\n","var _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgOauth = function SvgOauth(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n fill: \"none\",\n viewBox: \"0 0 36 40\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#F4552A\",\n d: \"m22.975 15.318-2.522-7.789H3.773l-2.522 7.789s-2.98 7.886 3.98 12.735c6.34 4.42 6.882 4.956 6.882 4.956s.542-.538 6.882-4.956c6.96-4.849 3.98-12.735 3.98-12.735Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"m12.115 7.605 2.688 7.678 8.185.166-6.524 4.91 2.371 7.78-6.72-4.642-6.72 4.642 2.371-7.78-6.524-4.91 8.185-.166 2.688-7.678Z\"\n })));\n};\nexport default SvgOauth;","import { ArrowDownCircle } from 'lucide-react';\n\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport Microsoft from '@/assets/ico/vendor/microsoft.svg?c';\nimport Ldap from '@/assets/ico/ldap.svg?c';\nimport OAuth from '@/assets/ico/oauth.svg?c';\n\nexport const options = [\n {\n id: 'auth_internal',\n icon: ArrowDownCircle,\n iconType: 'badge',\n label: 'Internal',\n description: 'Internal authentication mechanism',\n value: 1,\n },\n {\n id: 'auth_ldap',\n icon: Ldap,\n label: 'LDAP',\n description: 'LDAP authentication',\n iconType: 'logo',\n value: 2,\n },\n {\n id: 'auth_ad',\n icon: Microsoft,\n label: 'Microsoft Active Directory',\n description: 'AD authentication',\n iconType: 'logo',\n value: 4,\n feature: FeatureId.HIDE_INTERNAL_AUTH,\n },\n {\n id: 'auth_oauth',\n icon: OAuth,\n label: 'OAuth',\n description: 'OAuth authentication',\n iconType: 'logo',\n value: 3,\n },\n];\n","import angular from 'angular';\nimport _ from 'lodash-es';\n\nimport { buildLdapSettingsModel, buildAdSettingsModel } from '@/portainer/settings/authentication/ldap/ldap-settings.model';\nimport { options } from '@/react/portainer/settings/AuthenticationView/InternalAuth/options';\n\nangular.module('portainer.app').controller('SettingsAuthenticationController', SettingsAuthenticationController);\n\nfunction SettingsAuthenticationController($q, $scope, $state, Notifications, SettingsService, FileUploadService, TeamService, LDAPService) {\n $scope.authMethod = 1;\n\n $scope.state = {\n uploadInProgress: false,\n actionInProgress: false,\n availableUserSessionTimeoutOptions: [\n {\n key: '1 hour',\n value: '1h',\n },\n {\n key: '4 hours',\n value: '4h',\n },\n {\n key: '8 hours',\n value: '8h',\n },\n {\n key: '24 hours',\n value: '24h',\n },\n { key: '1 week', value: `${24 * 7}h` },\n { key: '1 month', value: `${24 * 30}h` },\n { key: '6 months', value: `${24 * 30 * 6}h` },\n { key: '1 year', value: `${24 * 30 * 12}h` },\n ],\n };\n\n $scope.formValues = {\n UserSessionTimeout: $scope.state.availableUserSessionTimeoutOptions[0],\n TLSCACert: '',\n ldap: {\n serverType: 0,\n adSettings: buildAdSettingsModel(),\n ldapSettings: buildLdapSettingsModel(),\n },\n };\n\n $scope.authOptions = options;\n\n $scope.onChangeAuthMethod = function onChangeAuthMethod(value) {\n $scope.authMethod = value;\n\n if (value === 4) {\n $scope.settings.AuthenticationMethod = 2;\n $scope.formValues.ldap.serverType = 2;\n return;\n }\n\n if (value === 2) {\n $scope.settings.AuthenticationMethod = 2;\n $scope.formValues.ldap.serverType = $scope.formValues.ldap.ldapSettings.ServerType;\n return;\n }\n\n $scope.settings.AuthenticationMethod = value;\n };\n\n $scope.onChangePasswordLength = function onChangePasswordLength(value) {\n $scope.$evalAsync(() => {\n $scope.settings.InternalAuthSettings = { RequiredPasswordLength: value };\n });\n };\n\n $scope.authenticationMethodSelected = function authenticationMethodSelected(value) {\n if (!$scope.settings) {\n return false;\n }\n\n if (value === 4) {\n return $scope.settings.AuthenticationMethod === 2 && $scope.formValues.ldap.serverType === 2;\n }\n\n if (value === 2) {\n return $scope.settings.AuthenticationMethod === 2 && $scope.formValues.ldap.serverType !== 2;\n }\n\n return $scope.settings.AuthenticationMethod === value;\n };\n\n $scope.isOauthEnabled = function isOauthEnabled() {\n return $scope.settings && $scope.settings.AuthenticationMethod === 3;\n };\n\n $scope.LDAPConnectivityCheck = LDAPConnectivityCheck;\n function LDAPConnectivityCheck() {\n const settings = angular.copy($scope.settings);\n\n const { settings: ldapSettings, uploadRequired, tlscaFile } = prepareLDAPSettings();\n settings.LDAPSettings = ldapSettings;\n $scope.state.uploadInProgress = uploadRequired;\n\n $scope.state.connectivityCheckInProgress = true;\n\n $q.when(!uploadRequired || FileUploadService.uploadLDAPTLSFiles(tlscaFile, null, null))\n .then(function success() {\n return LDAPService.check(settings.LDAPSettings);\n })\n .then(function success() {\n $scope.state.failedConnectivityCheck = false;\n $scope.state.successfulConnectivityCheck = true;\n Notifications.success('Success', 'Connection to LDAP successful');\n })\n .catch(function error(err) {\n $scope.state.failedConnectivityCheck = true;\n $scope.state.successfulConnectivityCheck = false;\n Notifications.error('Failure', err, 'Connection to LDAP failed');\n })\n .finally(function final() {\n $scope.state.uploadInProgress = false;\n $scope.state.connectivityCheckInProgress = false;\n });\n }\n\n $scope.saveSettings = function () {\n const settings = angular.copy($scope.settings);\n\n const { settings: ldapSettings, uploadRequired, tlscaFile } = prepareLDAPSettings();\n settings.LDAPSettings = ldapSettings;\n $scope.state.uploadInProgress = uploadRequired;\n\n $scope.state.actionInProgress = true;\n\n $q.when(!uploadRequired || FileUploadService.uploadLDAPTLSFiles(tlscaFile, null, null))\n .then(function success() {\n return SettingsService.update(settings);\n })\n .then(function success() {\n Notifications.success('Success', 'Authentication settings updated');\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to update authentication settings');\n })\n .finally(function final() {\n $scope.state.uploadInProgress = false;\n $scope.state.actionInProgress = false;\n });\n };\n\n function prepareLDAPSettings() {\n const tlscaCert = $scope.formValues.TLSCACert;\n\n const tlscaFile = tlscaCert !== $scope.settings.LDAPSettings.TLSConfig.TLSCACert ? tlscaCert : null;\n\n const isADServer = $scope.formValues.ldap.serverType === 2;\n\n const settings = isADServer ? $scope.formValues.ldap.adSettings : $scope.formValues.ldap.ldapSettings;\n\n if (settings.AnonymousMode && !isADServer) {\n settings.ReaderDN = '';\n settings.Password = '';\n }\n\n if (isADServer) {\n settings.AnonymousMode = false;\n }\n\n settings.URLs = settings.URLs.map((url) => {\n if (url === undefined || url === '') {\n return;\n }\n\n if (url.includes(':')) {\n return url;\n }\n return url + (settings.TLSConfig.TLS ? ':636' : ':389');\n });\n\n const uploadRequired = (settings.TLSConfig.TLS || settings.StartTLS) && !settings.TLSConfig.TLSSkipVerify;\n\n settings.URL = settings.URLs[0];\n\n return { settings, uploadRequired, tlscaFile };\n }\n\n $scope.isLDAPFormValid = isLDAPFormValid;\n function isLDAPFormValid() {\n const ldapSettings = $scope.formValues.ldap.serverType === 2 ? $scope.formValues.ldap.adSettings : $scope.formValues.ldap.ldapSettings;\n const isTLSMode = ldapSettings.TLSConfig.TLS || ldapSettings.StartTLS;\n\n return (\n _.compact(ldapSettings.URLs).length &&\n (ldapSettings.AnonymousMode || (ldapSettings.ReaderDN && ldapSettings.Password)) &&\n (!isTLSMode || (isTLSMode && $scope.formValues.TLSCACert) || ldapSettings.TLSConfig.TLSSkipVerify) &&\n (!$scope.settings.LDAPSettings.AdminAutoPopulate || ($scope.settings.LDAPSettings.AdminAutoPopulate && $scope.formValues.selectedAdminGroups.length > 0))\n );\n }\n\n $scope.isOAuthTeamMembershipFormValid = isOAuthTeamMembershipFormValid;\n function isOAuthTeamMembershipFormValid() {\n if ($scope.settings && $scope.settings.OAuthSettings.OAuthAutoMapTeamMemberships && $scope.settings.OAuthSettings.TeamMemberships) {\n if (!$scope.settings.OAuthSettings.TeamMemberships.OAuthClaimName) {\n return false;\n }\n\n const hasInvalidMapping = $scope.settings.OAuthSettings.TeamMemberships.OAuthClaimMappings.some((m) => !(m.ClaimValRegex && m.Team));\n if (hasInvalidMapping) {\n return false;\n }\n }\n return true;\n }\n\n function initView() {\n $q.all({\n settings: SettingsService.settings(),\n teams: TeamService.teams(),\n })\n .then(function success(data) {\n var settings = data.settings;\n $scope.teams = data.teams;\n $scope.settings = settings;\n\n $scope.OAuthSettings = settings.OAuthSettings;\n $scope.authMethod = settings.AuthenticationMethod;\n if (settings.AuthenticationMethod === 2 && settings.LDAPSettings.ServerType === 2) {\n $scope.authMethod = 4;\n }\n\n if (settings.LDAPSettings.URL) {\n settings.LDAPSettings.URLs = [settings.LDAPSettings.URL];\n }\n if (!settings.LDAPSettings.URLs) {\n settings.LDAPSettings.URLs = [];\n }\n if (!settings.LDAPSettings.URLs.length) {\n settings.LDAPSettings.URLs.push('');\n }\n if (!settings.LDAPSettings.ServerType) {\n settings.LDAPSettings.ServerType = 0;\n }\n\n $scope.formValues.ldap.serverType = settings.LDAPSettings.ServerType;\n if (settings.LDAPSettings.ServerType === 2) {\n $scope.formValues.ldap.adSettings = settings.LDAPSettings;\n } else {\n $scope.formValues.ldap.ldapSettings = Object.assign($scope.formValues.ldap.ldapSettings, settings.LDAPSettings);\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve application settings');\n });\n }\n\n initView();\n}\n","const autoNgTemplateLoaderTemplate1 = require('./settingsEdgeCompute.html');\n\nimport angular from 'angular';\nimport controller from './settingsEdgeComputeController';\n\nangular.module('portainer.app').component('settingsEdgeComputeView', {\n templateUrl: autoNgTemplateLoaderTemplate1,\n controller,\n});\n","import angular from 'angular';\n\nimport { configureFDO } from '@/portainer/hostmanagement/fdo/fdo.service';\nimport { configureAMT } from 'Portainer/hostmanagement/open-amt/open-amt.service';\n\nangular.module('portainer.app').controller('SettingsEdgeComputeController', SettingsEdgeComputeController);\n\n/* @ngInject */\nexport default function SettingsEdgeComputeController($q, $async, $state, Notifications, SettingsService, StateManager) {\n var ctrl = this;\n\n this.onSubmitEdgeCompute = async function (settings) {\n try {\n await SettingsService.update(settings);\n Notifications.success('Success', 'Settings updated');\n StateManager.updateEnableEdgeComputeFeatures(settings.EnableEdgeComputeFeatures);\n $state.reload();\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to update settings');\n }\n };\n\n this.onSubmitOpenAMT = async function (formValues) {\n try {\n await configureAMT(formValues);\n Notifications.success('Success', `OpenAMT successfully ${formValues.enabled ? 'enabled' : 'disabled'}`);\n $state.reload();\n } catch (err) {\n Notifications.error('Failure', err, 'Failed applying changes');\n }\n };\n\n this.onSubmitFDO = async function (formValues) {\n try {\n await configureFDO(formValues);\n Notifications.success('Success', `FDO successfully ${formValues.enabled ? 'enabled' : 'disabled'}`);\n $state.reload();\n } catch (err) {\n Notifications.error('Failure', err, 'Failed applying changes');\n }\n };\n\n function initView() {\n $async(async () => {\n try {\n ctrl.settings = await SettingsService.settings();\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to retrieve application settings');\n }\n });\n }\n\n initView();\n}\n","import angular from 'angular';\n\nimport { AccessControlFormData } from '@/portainer/components/accessControlForm/porAccessControlFormModel';\nimport { STACK_NAME_VALIDATION_REGEX } from '@/react/constants';\nimport { RepositoryMechanismTypes } from '@/kubernetes/models/deploy';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { isBE } from '@/react/portainer/feature-flags/feature-flags.service';\nimport { renderTemplate } from '@/react/portainer/custom-templates/components/utils';\nimport { editor, upload, git, customTemplate } from '@@/BoxSelector/common-options/build-methods';\nimport { confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { parseAutoUpdateResponse, transformAutoUpdateViewModel } from '@/react/portainer/gitops/AutoUpdateFieldset/utils';\nimport { baseStackWebhookUrl, createWebhookId } from '@/portainer/helpers/webhookHelper';\n\nangular\n .module('portainer.app')\n .controller(\n 'CreateStackController',\n function (\n $scope,\n $state,\n $async,\n $window,\n StackService,\n Authentication,\n Notifications,\n FormValidator,\n ResourceControlService,\n FormHelper,\n StackHelper,\n ContainerHelper,\n CustomTemplateService,\n ContainerService,\n endpoint\n ) {\n $scope.onChangeTemplateId = onChangeTemplateId;\n $scope.onChangeTemplateVariables = onChangeTemplateVariables;\n $scope.isTemplateVariablesEnabled = isBE;\n $scope.buildAnalyticsProperties = buildAnalyticsProperties;\n $scope.stackWebhookFeature = FeatureId.STACK_WEBHOOK;\n $scope.buildMethods = [editor, upload, git, customTemplate];\n $scope.STACK_NAME_VALIDATION_REGEX = STACK_NAME_VALIDATION_REGEX;\n\n $scope.formValues = {\n Name: '',\n StackFileContent: '',\n StackFile: null,\n RepositoryURL: '',\n RepositoryReferenceName: '',\n RepositoryAuthentication: false,\n RepositoryUsername: '',\n RepositoryPassword: '',\n Env: [],\n AdditionalFiles: [],\n ComposeFilePathInRepository: 'docker-compose.yml',\n AccessControlData: new AccessControlFormData(),\n EnableWebhook: false,\n Variables: {},\n AutoUpdate: parseAutoUpdateResponse(),\n TLSSkipVerify: false,\n };\n\n $scope.state = {\n Method: 'editor',\n formValidationError: '',\n actionInProgress: false,\n StackType: null,\n editorYamlValidationError: '',\n uploadYamlValidationError: '',\n isEditorDirty: false,\n selectedTemplate: null,\n selectedTemplateId: null,\n baseWebhookUrl: baseStackWebhookUrl(),\n webhookId: createWebhookId(),\n templateLoadFailed: false,\n isEditorReadOnly: false,\n };\n\n $scope.currentUser = {\n isAdmin: false,\n id: null,\n };\n\n $window.onbeforeunload = () => {\n if ($scope.state.Method === 'editor' && $scope.formValues.StackFileContent && $scope.state.isEditorDirty) {\n return '';\n }\n };\n\n $scope.$on('$destroy', function () {\n $scope.state.isEditorDirty = false;\n });\n\n $scope.onChangeFormValues = onChangeFormValues;\n $scope.onBuildMethodChange = onBuildMethodChange;\n\n function onBuildMethodChange(value) {\n $scope.$evalAsync(() => {\n $scope.state.Method = value;\n });\n }\n\n $scope.onEnableWebhookChange = function (enable) {\n $scope.$evalAsync(() => {\n $scope.formValues.EnableWebhook = enable;\n });\n };\n\n function buildAnalyticsProperties() {\n const metadata = { type: methodLabel($scope.state.Method) };\n\n if ($scope.state.Method === 'repository') {\n metadata.automaticUpdates = 'off';\n if ($scope.formValues.RepositoryAutomaticUpdates) {\n metadata.automaticUpdates = autoSyncLabel($scope.formValues.RepositoryMechanism);\n }\n metadata.auth = $scope.formValues.RepositoryAuthentication;\n }\n\n if ($scope.state.Method === 'template') {\n metadata.templateName = $scope.state.selectedTemplate.Title;\n }\n\n return { metadata };\n\n function methodLabel(method) {\n switch (method) {\n case 'editor':\n return 'web-editor';\n case 'repository':\n return 'git';\n case 'upload':\n return 'file-upload';\n case 'template':\n return 'custom-template';\n }\n }\n\n function autoSyncLabel(type) {\n switch (type) {\n case RepositoryMechanismTypes.INTERVAL:\n return 'polling';\n case RepositoryMechanismTypes.WEBHOOK:\n return 'webhook';\n }\n return 'off';\n }\n }\n\n function validateForm(accessControlData, isAdmin) {\n $scope.state.formValidationError = '';\n var error = '';\n error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n $scope.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n function createSwarmStack(name, method) {\n var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env);\n const endpointId = +$state.params.endpointId;\n\n if (method === 'template' || method === 'editor') {\n var stackFileContent = $scope.formValues.StackFileContent;\n return StackService.createSwarmStackFromFileContent(name, stackFileContent, env, endpointId);\n }\n\n if (method === 'upload') {\n var stackFile = $scope.formValues.StackFile;\n return StackService.createSwarmStackFromFileUpload(name, stackFile, env, endpointId);\n }\n\n if (method === 'repository') {\n var repositoryOptions = {\n AdditionalFiles: $scope.formValues.AdditionalFiles,\n RepositoryURL: $scope.formValues.RepositoryURL,\n RepositoryReferenceName: $scope.formValues.RepositoryReferenceName,\n ComposeFilePathInRepository: $scope.formValues.ComposeFilePathInRepository,\n RepositoryAuthentication: $scope.formValues.RepositoryAuthentication,\n RepositoryUsername: $scope.formValues.RepositoryUsername,\n RepositoryPassword: $scope.formValues.RepositoryPassword,\n AutoUpdate: transformAutoUpdateViewModel($scope.formValues.AutoUpdate, $scope.state.webhookId),\n TLSSkipVerify: $scope.formValues.TLSSkipVerify,\n };\n\n return StackService.createSwarmStackFromGitRepository(name, repositoryOptions, env, endpointId);\n }\n }\n\n function createComposeStack(name, method) {\n var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env);\n const endpointId = +$state.params.endpointId;\n\n if (method === 'editor' || method === 'template') {\n var stackFileContent = $scope.formValues.StackFileContent;\n return StackService.createComposeStackFromFileContent(name, stackFileContent, env, endpointId);\n } else if (method === 'upload') {\n var stackFile = $scope.formValues.StackFile;\n return StackService.createComposeStackFromFileUpload(name, stackFile, env, endpointId);\n } else if (method === 'repository') {\n var repositoryOptions = {\n AdditionalFiles: $scope.formValues.AdditionalFiles,\n RepositoryURL: $scope.formValues.RepositoryURL,\n RepositoryReferenceName: $scope.formValues.RepositoryReferenceName,\n ComposeFilePathInRepository: $scope.formValues.ComposeFilePathInRepository,\n RepositoryAuthentication: $scope.formValues.RepositoryAuthentication,\n RepositoryUsername: $scope.formValues.RepositoryUsername,\n RepositoryPassword: $scope.formValues.RepositoryPassword,\n AutoUpdate: transformAutoUpdateViewModel($scope.formValues.AutoUpdate, $scope.state.webhookId),\n TLSSkipVerify: $scope.formValues.TLSSkipVerify,\n };\n\n return StackService.createComposeStackFromGitRepository(name, repositoryOptions, env, endpointId);\n }\n }\n\n $scope.handleEnvVarChange = handleEnvVarChange;\n function handleEnvVarChange(value) {\n $scope.formValues.Env = value;\n }\n\n $scope.deployStack = function () {\n var name = $scope.formValues.Name;\n var method = $scope.state.Method;\n\n var accessControlData = $scope.formValues.AccessControlData;\n var userDetails = Authentication.getUserDetails();\n var isAdmin = Authentication.isAdmin();\n\n if (method === 'editor' && $scope.formValues.StackFileContent === '') {\n $scope.state.formValidationError = 'Stack file content must not be empty';\n return;\n }\n\n if (!validateForm(accessControlData, isAdmin)) {\n return;\n }\n\n var type = $scope.state.StackType;\n var action = createSwarmStack;\n if (type === 2) {\n action = createComposeStack;\n }\n $scope.state.actionInProgress = true;\n action(name, method)\n .then(function success(data) {\n if (data.data) {\n data = data.data;\n }\n const userId = userDetails.ID;\n const resourceControl = data.ResourceControl;\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n })\n .then(function success() {\n Notifications.success('Success', 'Stack successfully deployed');\n $scope.state.isEditorDirty = false;\n $state.go('docker.stacks');\n })\n .catch(function error(err) {\n Notifications.error('Deployment error', err, 'Unable to deploy stack');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n\n $scope.onChangeFileContent = onChangeFileContent;\n function onChangeFileContent(value) {\n $scope.formValues.StackFileContent = value;\n $scope.state.editorYamlValidationError = StackHelper.validateYAML($scope.formValues.StackFileContent, $scope.containerNames);\n $scope.state.isEditorDirty = true;\n }\n\n async function onFileLoadAsync(event) {\n $scope.state.uploadYamlValidationError = StackHelper.validateYAML(event.target.result, $scope.containerNames);\n }\n\n function onFileLoad(event) {\n return $async(onFileLoadAsync, event);\n }\n\n $scope.uploadFile = function (file) {\n $scope.formValues.StackFile = file;\n\n if (file) {\n const temporaryFileReader = new FileReader();\n temporaryFileReader.fileName = file.name;\n temporaryFileReader.onload = onFileLoad;\n temporaryFileReader.readAsText(file);\n }\n };\n\n function onChangeTemplateId(templateId, template) {\n return $async(async () => {\n if (!template || ($scope.state.selectedTemplateId === templateId && $scope.state.selectedTemplate === template)) {\n return;\n }\n\n try {\n $scope.state.selectedTemplateId = templateId;\n $scope.state.selectedTemplate = template;\n\n try {\n $scope.state.templateContent = await this.CustomTemplateService.customTemplateFile(templateId, template.GitConfig !== null);\n onChangeFileContent($scope.state.templateContent);\n\n $scope.state.isEditorReadOnly = true;\n } catch (err) {\n $scope.state.templateLoadFailed = true;\n throw err;\n }\n\n if (template.Variables && template.Variables.length > 0) {\n const variables = Object.fromEntries(template.Variables.map((variable) => [variable.name, '']));\n onChangeTemplateVariables(variables);\n }\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to retrieve Custom Template file');\n }\n });\n }\n\n function onChangeTemplateVariables(value) {\n onChangeFormValues({ Variables: value });\n\n if (!$scope.isTemplateVariablesEnabled) {\n return;\n }\n const rendered = renderTemplate($scope.state.templateContent, $scope.formValues.Variables, $scope.state.selectedTemplate.Variables);\n onChangeFormValues({ StackFileContent: rendered });\n }\n\n async function initView() {\n $scope.currentUser.isAdmin = Authentication.isAdmin();\n $scope.currentUser.id = Authentication.getUserDetails().ID;\n\n var endpointMode = $scope.applicationState.endpoint.mode;\n $scope.state.StackType = 2;\n $scope.isDockerStandalone = endpointMode.provider === 'DOCKER_STANDALONE';\n if (endpointMode.provider === 'DOCKER_SWARM_MODE' && endpointMode.role === 'MANAGER') {\n $scope.state.StackType = 1;\n }\n\n $scope.composeSyntaxMaxVersion = endpoint.ComposeSyntaxMaxVersion;\n try {\n const containers = await ContainerService.containers(true);\n $scope.containerNames = ContainerHelper.getContainerNames(containers);\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to retrieve Containers');\n }\n }\n\n this.uiCanExit = async function () {\n if ($scope.state.Method === 'editor' && $scope.formValues.StackFileContent && $scope.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n };\n\n initView();\n\n function onChangeFormValues(newValues) {\n return $async(async () => {\n $scope.formValues = {\n ...$scope.formValues,\n ...newValues,\n };\n });\n }\n }\n );\n","export type StackId = number;\n\nexport enum StackType {\n /**\n * Represents a stack managed via docker stack\n */\n DockerSwarm = 1,\n /**\n * Represents a stack managed via docker-compose\n */\n DockerCompose,\n /**\n * Represents a stack managed via kubectl\n */\n Kubernetes,\n /**\n * Represents a stack managed via Nomad\n */\n Nomad,\n}\n\nexport enum StackStatus {\n Active = 1,\n Inactive,\n}\n\nexport type StackFile = {\n StackFileContent: string;\n};\n","import { ResourceControlType } from '@/react/portainer/access-control/types';\nimport { AccessControlFormData } from 'Portainer/components/accessControlForm/porAccessControlFormModel';\nimport { FeatureId } from '@/react/portainer/feature-flags/enums';\nimport { getEnvironments } from '@/react/portainer/environments/environment.service';\nimport { StackStatus, StackType } from '@/react/common/stacks/types';\nimport { extractContainerNames } from '@/portainer/helpers/stackHelper';\nimport { confirmStackUpdate } from '@/react/common/stacks/common/confirm-stack-update';\nimport { confirm, confirmDelete, confirmWebEditorDiscard } from '@@/modals/confirm';\nimport { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nangular.module('portainer.app').controller('StackController', [\n '$async',\n '$q',\n '$scope',\n '$state',\n '$window',\n '$transition$',\n 'StackService',\n 'NodeService',\n 'ServiceService',\n 'TaskService',\n 'ContainerService',\n 'ServiceHelper',\n 'TaskHelper',\n 'Notifications',\n 'FormHelper',\n 'GroupService',\n 'StackHelper',\n 'ResourceControlService',\n 'Authentication',\n 'ContainerHelper',\n 'endpoint',\n function (\n $async,\n $q,\n $scope,\n $state,\n $window,\n $transition$,\n StackService,\n NodeService,\n ServiceService,\n TaskService,\n ContainerService,\n ServiceHelper,\n TaskHelper,\n Notifications,\n FormHelper,\n GroupService,\n StackHelper,\n ResourceControlService,\n Authentication,\n ContainerHelper,\n endpoint\n ) {\n $scope.STACK_TYPES = StackType;\n\n $scope.resourceType = ResourceControlType.Stack;\n\n $scope.onUpdateResourceControlSuccess = function () {\n $state.reload();\n };\n\n $scope.endpoint = endpoint;\n $scope.isAdmin = Authentication.isAdmin();\n $scope.stackWebhookFeature = FeatureId.STACK_WEBHOOK;\n $scope.stackPullImageFeature = FeatureId.STACK_PULL_IMAGE;\n $scope.state = {\n actionInProgress: false,\n migrationInProgress: false,\n showEditorTab: false,\n yamlError: false,\n isEditorDirty: false,\n };\n\n $scope.formValues = {\n Prune: false,\n Endpoint: null,\n AccessControlData: new AccessControlFormData(),\n Env: [],\n };\n\n $window.onbeforeunload = () => {\n if ($scope.stackFileContent && $scope.state.isEditorDirty) {\n return '';\n }\n };\n\n $scope.$on('$destroy', function () {\n $scope.state.isEditorDirty = false;\n });\n\n $scope.handleEnvVarChange = handleEnvVarChange;\n function handleEnvVarChange(value) {\n $scope.formValues.Env = value;\n }\n\n $scope.onEnableWebhookChange = function (enable) {\n $scope.$evalAsync(() => {\n $scope.formValues.EnableWebhook = enable;\n });\n };\n\n $scope.onPruneChange = function (enable) {\n $scope.$evalAsync(() => {\n $scope.formValues.Prune = enable;\n });\n };\n\n $scope.duplicateStack = function duplicateStack(name, targetEndpointId) {\n var stack = $scope.stack;\n var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env);\n\n return StackService.duplicateStack(name, $scope.stackFileContent, env, targetEndpointId, stack.Type).then(onDuplicationSuccess).catch(notifyOnError);\n\n function onDuplicationSuccess() {\n Notifications.success('Success', 'Stack successfully duplicated');\n $state.go('docker.stacks', {}, { reload: true });\n }\n\n function notifyOnError(err) {\n Notifications.error('Failure', err, 'Unable to duplicate stack');\n }\n };\n\n $scope.showEditor = function () {\n $scope.state.showEditorTab = true;\n };\n\n $scope.migrateStack = function (name, endpointId) {\n return $q(async function (resolve) {\n const confirmed = await confirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n message:\n 'This action will deploy a new instance of this stack on the target environment, please note that this does NOT relocate the content of any persistent volumes that may be attached to this stack.',\n confirmButton: buildConfirmButton('Migrate', 'danger'),\n });\n\n if (!confirmed) {\n return resolve();\n }\n return resolve(migrateStack(name, endpointId));\n });\n };\n\n $scope.removeStack = function () {\n confirmDelete('Do you want to remove the stack? Associated services will be removed as well').then((confirmed) => {\n if (!confirmed) {\n return;\n }\n deleteStack();\n });\n };\n\n $scope.detachStackFromGit = function () {\n confirmDetachment().then(function onConfirm(confirmed) {\n if (!confirmed) {\n return;\n }\n\n $scope.deployStack();\n });\n };\n\n function migrateStack(name, targetEndpointId) {\n const stack = $scope.stack;\n\n let migrateRequest = StackService.migrateSwarmStack;\n if (stack.Type === 2) {\n migrateRequest = StackService.migrateComposeStack;\n }\n\n // TODO: this is a work-around for stacks created with Portainer version >= 1.17.1\n // The EndpointID property is not available for these stacks, we can pass\n // the current endpoint identifier as a part of the migrate request. It will be used if\n // the EndpointID property is not defined on the stack.\n if (stack.EndpointId === 0) {\n stack.EndpointId = endpoint.Id;\n }\n\n $scope.state.migrationInProgress = true;\n return migrateRequest(stack, targetEndpointId, name)\n .then(function success() {\n Notifications.success('Stack successfully migrated', stack.Name);\n $state.go('docker.stacks', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to migrate stack');\n })\n .finally(function final() {\n $scope.state.migrationInProgress = false;\n });\n }\n\n function deleteStack() {\n var endpointId = +$state.params.endpointId;\n var stack = $scope.stack;\n\n StackService.remove(stack, $transition$.params().external, endpointId)\n .then(function success() {\n Notifications.success('Stack successfully removed', stack.Name);\n $state.go('docker.stacks');\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove stack ' + stack.Name);\n });\n }\n\n $scope.associateStack = function () {\n var endpointId = +$state.params.endpointId;\n var stack = $scope.stack;\n var accessControlData = $scope.formValues.AccessControlData;\n $scope.state.actionInProgress = true;\n\n StackService.associate(stack, endpointId, $scope.orphanedRunning)\n .then(function success(data) {\n const resourceControl = data.ResourceControl;\n const userDetails = Authentication.getUserDetails();\n const userId = userDetails.ID;\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n })\n .then(function success() {\n Notifications.success('Stack successfully associated', stack.Name);\n $state.go('docker.stacks');\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to associate stack ' + stack.Name);\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n\n $scope.deployStack = function () {\n const stack = $scope.stack;\n const isSwarmStack = stack.Type === 1;\n confirmStackUpdate('Do you want to force an update of the stack?', isSwarmStack).then(function (result) {\n if (!result) {\n return;\n }\n var stackFile = $scope.stackFileContent;\n var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env);\n var prune = $scope.formValues.Prune;\n\n // TODO: this is a work-around for stacks created with Portainer version >= 1.17.1\n // The EndpointID property is not available for these stacks, we can pass\n // the current endpoint identifier as a part of the update request. It will be used if\n // the EndpointID property is not defined on the stack.\n if (stack.EndpointId === 0) {\n stack.EndpointId = endpoint.Id;\n }\n\n $scope.state.actionInProgress = true;\n StackService.updateStack(stack, stackFile, env, prune, result.pullImage)\n .then(function success() {\n Notifications.success('Success', 'Stack successfully deployed');\n $scope.state.isEditorDirty = false;\n $state.reload();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to create stack');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n });\n };\n\n $scope.editorUpdate = function (value) {\n if ($scope.stackFileContent.replace(/(\\r\\n|\\n|\\r)/gm, '') !== value.replace(/(\\r\\n|\\n|\\r)/gm, '')) {\n $scope.state.isEditorDirty = true;\n $scope.stackFileContent = value;\n $scope.state.yamlError = StackHelper.validateYAML($scope.stackFileContent, $scope.containerNames, $scope.state.originalContainerNames);\n }\n };\n\n $scope.stopStack = stopStack;\n function stopStack() {\n return $async(stopStackAsync);\n }\n async function stopStackAsync() {\n const confirmed = await confirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n message: 'Are you sure you want to stop this stack?',\n confirmButton: buildConfirmButton('Stop', 'danger'),\n });\n if (!confirmed) {\n return;\n }\n\n $scope.state.actionInProgress = true;\n try {\n await StackService.stop(endpoint.Id, $scope.stack.Id);\n $state.reload();\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to stop stack');\n }\n $scope.state.actionInProgress = false;\n }\n\n $scope.startStack = startStack;\n function startStack() {\n return $async(startStackAsync);\n }\n async function startStackAsync() {\n $scope.state.actionInProgress = true;\n const id = $scope.stack.Id;\n try {\n await StackService.start(endpoint.Id, id);\n $state.reload();\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to start stack');\n }\n $scope.state.actionInProgress = false;\n }\n\n function loadStack(id) {\n return $async(async () => {\n var agentProxy = $scope.applicationState.endpoint.mode.agentProxy;\n\n getEnvironments()\n .then(function success(data) {\n $scope.endpoints = data.value;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve environments');\n });\n\n $q.all({\n stack: StackService.stack(id),\n groups: GroupService.groups(),\n containers: ContainerService.containers(true),\n })\n .then(function success(data) {\n var stack = data.stack;\n $scope.groups = data.groups;\n $scope.stack = stack;\n $scope.containerNames = ContainerHelper.getContainerNames(data.containers);\n\n $scope.formValues.Env = $scope.stack.Env;\n\n let resourcesPromise = Promise.resolve({});\n if (!stack.Status || stack.Status === 1) {\n resourcesPromise = stack.Type === 1 ? retrieveSwarmStackResources(stack.Name, agentProxy) : retrieveComposeStackResources(stack.Name);\n }\n\n return $q.all({\n stackFile: StackService.getStackFile(id),\n resources: resourcesPromise,\n });\n })\n .then(function success(data) {\n const isSwarm = $scope.stack.Type === StackType.DockerSwarm;\n $scope.stackFileContent = data.stackFile;\n // workaround for missing status, if stack has resources, set the status to 1 (active), otherwise to 2 (inactive) (https://github.com/portainer/portainer/issues/4422)\n if (!$scope.stack.Status) {\n $scope.stack.Status = data.resources && ((isSwarm && data.resources.services.length) || data.resources.containers.length) ? 1 : 2;\n }\n\n if (isSwarm && $scope.stack.Status === StackStatus.Active) {\n assignSwarmStackResources(data.resources, agentProxy);\n }\n $scope.state.originalContainerNames = extractContainerNames($scope.stackFileContent);\n\n $scope.state.yamlError = StackHelper.validateYAML($scope.stackFileContent, $scope.containerNames, $scope.state.originalContainerNames);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve stack details');\n });\n });\n }\n\n function retrieveSwarmStackResources(stackName, agentProxy) {\n var stackFilter = {\n label: ['com.docker.stack.namespace=' + stackName],\n };\n\n return $q.all({\n services: ServiceService.services(stackFilter),\n tasks: TaskService.tasks(stackFilter),\n containers: agentProxy ? ContainerService.containers(1) : [],\n nodes: NodeService.nodes(),\n });\n }\n\n function assignSwarmStackResources(resources, agentProxy) {\n var services = resources.services;\n var tasks = resources.tasks;\n\n if (agentProxy) {\n var containers = resources.containers;\n for (var j = 0; j < tasks.length; j++) {\n var task = tasks[j];\n TaskHelper.associateContainerToTask(task, containers);\n }\n }\n\n for (var i = 0; i < services.length; i++) {\n var service = services[i];\n ServiceHelper.associateTasksToService(service, tasks);\n }\n\n $scope.nodes = resources.nodes;\n $scope.tasks = tasks;\n $scope.services = services;\n }\n\n function retrieveComposeStackResources(stackName) {\n var stackFilter = {\n label: ['com.docker.compose.project=' + stackName],\n };\n\n return $q.all({\n containers: ContainerService.containers(1, stackFilter),\n });\n }\n\n function loadExternalStack(name) {\n const stackType = $scope.stackType;\n if (!stackType || (stackType !== StackType.DockerSwarm && stackType !== StackType.DockerCompose)) {\n Notifications.error('Failure', null, 'Invalid type URL parameter.');\n return;\n }\n\n if (stackType === StackType.DockerSwarm) {\n loadExternalSwarmStack(name);\n }\n }\n\n function loadExternalSwarmStack(name) {\n var agentProxy = $scope.applicationState.endpoint.mode.agentProxy;\n\n retrieveSwarmStackResources(name, agentProxy)\n .then(function success(data) {\n assignSwarmStackResources(data, agentProxy);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve stack details');\n });\n }\n\n this.uiCanExit = async function () {\n if ($scope.stackFileContent && $scope.state.isEditorDirty) {\n return confirmWebEditorDiscard();\n }\n };\n\n async function canManageStacks() {\n return endpoint.SecuritySettings.allowStackManagementForRegularUsers || Authentication.isAdmin();\n }\n\n async function initView() {\n // if the user is not an admin, and stack management is disabled for non admins, then take the user to the dashboard\n $scope.createEnabled = await canManageStacks();\n if (!$scope.createEnabled) {\n $state.go('docker.dashboard');\n }\n\n var stackName = $transition$.params().name;\n $scope.stackName = stackName;\n\n const regular = $transition$.params().regular == 'true';\n $scope.regular = regular;\n\n var external = $transition$.params().external == 'true';\n $scope.external = external;\n\n const orphaned = $transition$.params().orphaned == 'true';\n $scope.orphaned = orphaned;\n\n const orphanedRunning = $transition$.params().orphanedRunning == 'true';\n $scope.orphanedRunning = orphanedRunning;\n\n $scope.stackType = parseInt($transition$.params().type, 10);\n\n if (external || (orphaned && orphanedRunning)) {\n loadExternalStack(stackName);\n }\n\n if (regular || orphaned) {\n const stackId = $transition$.params().id;\n loadStack(stackId);\n }\n\n $scope.composeSyntaxMaxVersion = endpoint.ComposeSyntaxMaxVersion;\n }\n\n initView();\n },\n]);\n\nfunction confirmDetachment() {\n return confirm({\n modalType: ModalType.Warn,\n title: 'Are you sure?',\n message: 'Do you want to detach the stack from Git?',\n confirmButton: buildConfirmButton('Detach', 'danger'),\n });\n}\n","import { confirmDelete } from '@@/modals/confirm';\n\nangular.module('portainer.app').controller('StacksController', StacksController);\n\n/* @ngInject */\nfunction StacksController($scope, $state, Notifications, StackService, Authentication, endpoint) {\n $scope.removeAction = function (selectedItems) {\n confirmDelete('Do you want to remove the selected stack(s)? Associated services will be removed as well.').then((confirmed) => {\n if (!confirmed) {\n return;\n }\n deleteSelectedStacks(selectedItems);\n });\n };\n\n function deleteSelectedStacks(stacks) {\n const endpointId = endpoint.Id;\n let actionCount = stacks.length;\n angular.forEach(stacks, function (stack) {\n StackService.remove(stack, stack.External, endpointId)\n .then(function success() {\n Notifications.success('Stack successfully removed', stack.Name);\n var index = $scope.stacks.indexOf(stack);\n $scope.stacks.splice(index, 1);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove stack ' + stack.Name);\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n }\n\n $scope.createEnabled = false;\n\n $scope.getStacks = getStacks;\n\n function getStacks() {\n const endpointMode = $scope.applicationState.endpoint.mode;\n const endpointId = endpoint.Id;\n\n const includeOrphanedStacks = Authentication.isAdmin();\n StackService.stacks(true, endpointMode.provider === 'DOCKER_SWARM_MODE' && endpointMode.role === 'MANAGER', endpointId, includeOrphanedStacks)\n .then(function success(stacks) {\n $scope.stacks = stacks;\n })\n .catch(function error(err) {\n $scope.stacks = [];\n Notifications.error('Failure', err, 'Unable to retrieve stacks');\n });\n }\n\n async function canManageStacks() {\n return endpoint.SecuritySettings.allowStackManagementForRegularUsers || Authentication.isAdmin();\n }\n\n async function initView() {\n // if the user is not an admin, and stack management is disabled for non admins, then take the user to the dashboard\n $scope.createEnabled = await canManageStacks();\n if (!$scope.createEnabled) {\n $state.go('docker.dashboard');\n }\n getStacks();\n }\n\n initView();\n}\n","import angular from 'angular';\nimport _ from 'lodash-es';\nimport { confirmDestructive } from '@@/modals/confirm';\nimport { buildConfirmButton } from '@@/modals/utils';\n\nangular.module('portainer.app').controller('TagsController', TagsController);\n\nfunction TagsController($scope, $state, $async, TagService, Notifications) {\n $scope.state = {\n actionInProgress: false,\n };\n\n $scope.formValues = {\n Name: '',\n };\n\n $scope.checkNameValidity = function (form) {\n var valid = true;\n for (var i = 0; i < $scope.tags.length; i++) {\n if ($scope.formValues.Name === $scope.tags[i].Name) {\n valid = false;\n break;\n }\n }\n form.name.$setValidity('validName', valid);\n };\n\n $scope.removeAction = removeAction;\n\n function removeAction(tags) {\n return $async(removeActionAsync, tags);\n }\n\n async function removeActionAsync(tags) {\n const confirmed = await confirmDestructive({\n title: 'Are you sure?',\n message: 'Are you sure you want to remove the selected tag(s)?',\n confirmButton: buildConfirmButton('Remove', 'danger'),\n });\n\n if (!confirmed) {\n return;\n }\n\n for (let tag of tags) {\n try {\n await TagService.deleteTag(tag.Id);\n\n Notifications.success('Tag successfully removed', tag.Name);\n _.remove($scope.tags, tag);\n } catch (err) {\n Notifications.error('Failure', err, 'Unable to remove tag');\n }\n }\n\n $state.reload();\n }\n\n $scope.createTag = function () {\n var tagName = $scope.formValues.Name;\n TagService.createTag(tagName)\n .then(function success() {\n Notifications.success('Tag successfully created', tagName);\n $state.reload();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to create tag');\n });\n };\n\n function initView() {\n TagService.tags()\n .then(function success(data) {\n $scope.tags = data;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve tags');\n $scope.tags = [];\n });\n }\n\n initView();\n}\n","import _ from 'lodash-es';\nimport { AccessControlFormData } from '../../components/accessControlForm/porAccessControlFormModel';\n\nangular.module('portainer.app').controller('TemplatesController', [\n '$scope',\n '$q',\n '$state',\n '$anchorScroll',\n 'ContainerService',\n 'ImageService',\n 'NetworkService',\n 'TemplateService',\n 'TemplateHelper',\n 'VolumeService',\n 'Notifications',\n 'ResourceControlService',\n 'Authentication',\n 'FormValidator',\n 'StackService',\n 'endpoint',\n function (\n $scope,\n $q,\n $state,\n $anchorScroll,\n ContainerService,\n ImageService,\n NetworkService,\n TemplateService,\n TemplateHelper,\n VolumeService,\n Notifications,\n ResourceControlService,\n Authentication,\n FormValidator,\n StackService,\n endpoint\n ) {\n const DOCKER_STANDALONE = 'DOCKER_STANDALONE';\n const DOCKER_SWARM_MODE = 'DOCKER_SWARM_MODE';\n\n $scope.state = {\n selectedTemplate: null,\n showAdvancedOptions: false,\n formValidationError: '',\n actionInProgress: false,\n };\n\n $scope.formValues = {\n network: '',\n name: '',\n AccessControlData: new AccessControlFormData(),\n };\n\n $scope.addVolume = function () {\n $scope.state.selectedTemplate.Volumes.push({ containerPath: '', bind: '', readonly: false, type: 'auto' });\n };\n\n $scope.removeVolume = function (index) {\n $scope.state.selectedTemplate.Volumes.splice(index, 1);\n };\n\n $scope.addPortBinding = function () {\n $scope.state.selectedTemplate.Ports.push({ hostPort: '', containerPort: '', protocol: 'tcp' });\n };\n\n $scope.removePortBinding = function (index) {\n $scope.state.selectedTemplate.Ports.splice(index, 1);\n };\n\n $scope.addExtraHost = function () {\n $scope.state.selectedTemplate.Hosts.push('');\n };\n\n $scope.removeExtraHost = function (index) {\n $scope.state.selectedTemplate.Hosts.splice(index, 1);\n };\n\n $scope.addLabel = function () {\n $scope.state.selectedTemplate.Labels.push({ name: '', value: '' });\n };\n\n $scope.removeLabel = function (index) {\n $scope.state.selectedTemplate.Labels.splice(index, 1);\n };\n\n function validateForm(accessControlData, isAdmin) {\n $scope.state.formValidationError = '';\n var error = '';\n error = FormValidator.validateAccessControl(accessControlData, isAdmin);\n\n if (error) {\n $scope.state.formValidationError = error;\n return false;\n }\n return true;\n }\n\n function createContainerFromTemplate(template, userId, accessControlData) {\n var templateConfiguration = createTemplateConfiguration(template);\n var generatedVolumeCount = TemplateHelper.determineRequiredGeneratedVolumeCount(template.Volumes);\n var generatedVolumeIds = [];\n VolumeService.createXAutoGeneratedLocalVolumes(generatedVolumeCount)\n .then(function success(data) {\n angular.forEach(data, function (volume) {\n var volumeId = volume.Id;\n generatedVolumeIds.push(volumeId);\n });\n TemplateService.updateContainerConfigurationWithVolumes(templateConfiguration, template, data);\n return ImageService.pullImage(template.RegistryModel, true);\n })\n .then(function success() {\n return ContainerService.createAndStartContainer(templateConfiguration);\n })\n .then(function success(data) {\n const resourceControl = data.Portainer.ResourceControl;\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl, generatedVolumeIds);\n })\n .then(function success() {\n Notifications.success('Success', 'Container successfully created');\n $state.go('docker.containers', {}, { reload: true });\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, err.msg);\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n }\n\n function createComposeStackFromTemplate(template, userId, accessControlData) {\n var stackName = $scope.formValues.name;\n\n for (var i = 0; i < template.Env.length; i++) {\n var envvar = template.Env[i];\n if (envvar.preset) {\n envvar.value = envvar.default;\n }\n }\n\n var repositoryOptions = {\n RepositoryURL: template.Repository.url,\n ComposeFilePathInRepository: template.Repository.stackfile,\n FromAppTemplate: true,\n };\n\n const endpointId = +$state.params.endpointId;\n StackService.createComposeStackFromGitRepository(stackName, repositoryOptions, template.Env, endpointId)\n .then(function success(data) {\n const resourceControl = data.ResourceControl;\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n })\n .then(function success() {\n Notifications.success('Success', 'Stack successfully deployed');\n $state.go('docker.stacks');\n })\n .catch(function error(err) {\n Notifications.error('Deployment error', err);\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n }\n\n function createStackFromTemplate(template, userId, accessControlData) {\n var stackName = $scope.formValues.name;\n var env = _.filter(\n _.map(template.Env, function transformEnvVar(envvar) {\n return {\n name: envvar.name,\n value: envvar.preset || !envvar.value ? envvar.default : envvar.value,\n };\n }),\n function removeUndefinedVars(envvar) {\n return envvar.value && envvar.name;\n }\n );\n\n var repositoryOptions = {\n RepositoryURL: template.Repository.url,\n ComposeFilePathInRepository: template.Repository.stackfile,\n FromAppTemplate: true,\n };\n\n const endpointId = +$state.params.endpointId;\n\n StackService.createSwarmStackFromGitRepository(stackName, repositoryOptions, env, endpointId)\n .then(function success(data) {\n const resourceControl = data.ResourceControl;\n return ResourceControlService.applyResourceControl(userId, accessControlData, resourceControl);\n })\n .then(function success() {\n Notifications.success('Success', 'Stack successfully deployed');\n $state.go('docker.stacks');\n })\n .catch(function error(err) {\n Notifications.error('Deployment error', err);\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n }\n\n $scope.createTemplate = function () {\n var userDetails = Authentication.getUserDetails();\n var userId = userDetails.ID;\n var accessControlData = $scope.formValues.AccessControlData;\n\n if (!validateForm(accessControlData, $scope.isAdmin)) {\n return;\n }\n\n var template = $scope.state.selectedTemplate;\n\n $scope.state.actionInProgress = true;\n if (template.Type === 2) {\n createStackFromTemplate(template, userId, accessControlData);\n } else if (template.Type === 3) {\n createComposeStackFromTemplate(template, userId, accessControlData);\n } else {\n createContainerFromTemplate(template, userId, accessControlData);\n }\n };\n\n $scope.unselectTemplate = function (template) {\n template.Selected = false;\n $scope.state.selectedTemplate = null;\n };\n\n $scope.selectTemplate = function (template) {\n if ($scope.state.selectedTemplate) {\n $scope.unselectTemplate($scope.state.selectedTemplate);\n }\n\n template.Selected = true;\n if (template.Network) {\n $scope.formValues.network = _.find($scope.availableNetworks, function (o) {\n return o.Name === template.Network;\n });\n } else {\n $scope.formValues.network = _.find($scope.availableNetworks, function (o) {\n return o.Name === 'bridge';\n });\n }\n\n $scope.formValues.name = template.Name ? template.Name : '';\n $scope.state.selectedTemplate = template;\n $scope.state.deployable = isDeployable($scope.applicationState.endpoint, template.Type);\n $anchorScroll('view-top');\n };\n\n function isDeployable(endpoint, templateType) {\n let deployable = false;\n switch (templateType) {\n case 1:\n deployable = endpoint.mode.provider === DOCKER_SWARM_MODE || endpoint.mode.provider === DOCKER_STANDALONE;\n break;\n case 2:\n deployable = endpoint.mode.provider === DOCKER_SWARM_MODE;\n break;\n case 3:\n deployable = endpoint.mode.provider === DOCKER_SWARM_MODE || endpoint.mode.provider === DOCKER_STANDALONE;\n break;\n }\n return deployable;\n }\n\n function createTemplateConfiguration(template) {\n var network = $scope.formValues.network;\n var name = $scope.formValues.name;\n return TemplateService.createTemplateConfiguration(template, name, network);\n }\n\n function initView() {\n $scope.isAdmin = Authentication.isAdmin();\n\n var endpointMode = $scope.applicationState.endpoint.mode;\n var apiVersion = $scope.applicationState.endpoint.apiVersion;\n const endpointId = +$state.params.endpointId;\n\n $q.all({\n templates: TemplateService.templates(endpointId),\n volumes: VolumeService.getVolumes(),\n networks: NetworkService.networks(\n endpointMode.provider === 'DOCKER_STANDALONE' || endpointMode.provider === 'DOCKER_SWARM_MODE',\n false,\n endpointMode.provider === 'DOCKER_SWARM_MODE' && apiVersion >= 1.25\n ),\n })\n .then(function success(data) {\n var templates = data.templates;\n $scope.templates = templates;\n $scope.availableVolumes = _.orderBy(data.volumes.Volumes, [(volume) => volume.Name.toLowerCase()], ['asc']);\n var networks = data.networks;\n $scope.availableNetworks = networks;\n $scope.allowBindMounts = endpoint.SecuritySettings.allowBindMountsForRegularUsers;\n })\n .catch(function error(err) {\n $scope.templates = [];\n Notifications.error('Failure', err, 'An error occurred during apps initialization.');\n });\n }\n\n initView();\n },\n]);\n","import { ModalType } from '@@/modals';\nimport { buildConfirmButton } from '@@/modals/utils';\nimport { confirm, confirmChangePassword, confirmDelete } from '@@/modals/confirm';\n\nangular.module('portainer.app').controller('UserController', [\n '$q',\n '$scope',\n '$state',\n '$transition$',\n 'UserService',\n 'Notifications',\n 'SettingsService',\n 'Authentication',\n function ($q, $scope, $state, $transition$, UserService, Notifications, SettingsService, Authentication) {\n $scope.state = {\n updatePasswordError: '',\n };\n\n $scope.formValues = {\n username: '',\n newPassword: '',\n confirmPassword: '',\n Administrator: false,\n };\n\n $scope.handleAdministratorChange = function (checked) {\n return $scope.$evalAsync(() => {\n $scope.formValues.Administrator = checked;\n });\n };\n\n $scope.deleteUser = function () {\n confirmDelete('Do you want to remove this user? This user will not be able to login into Portainer anymore.').then((confirmed) => {\n if (!confirmed) {\n return;\n }\n deleteUser();\n });\n };\n\n $scope.updateUser = async function () {\n const role = $scope.formValues.Administrator ? 1 : 2;\n const oldUsername = $scope.user.Username;\n const username = $scope.formValues.username;\n\n if (username != oldUsername) {\n const confirmed = await confirm({\n title: 'Are you sure?',\n modalType: ModalType.Warn,\n message: `Are you sure you want to rename the user ${oldUsername} to ${username}?`,\n confirmButton: buildConfirmButton('Update'),\n });\n\n if (!confirmed) {\n return;\n }\n }\n\n UserService.updateUser($scope.user.Id, { role, username })\n .then(function success() {\n Notifications.success('Success', 'User successfully updated');\n $state.reload();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to update user permissions');\n });\n };\n\n $scope.updatePassword = async function () {\n const isCurrentUser = Authentication.getUserDetails().ID === $scope.user.Id;\n const confirmed = !isCurrentUser || (await confirmChangePassword());\n if (!confirmed) {\n return;\n }\n UserService.updateUser($scope.user.Id, { newPassword: $scope.formValues.newPassword })\n .then(function success() {\n Notifications.success('Success', 'Password successfully updated');\n\n if (isCurrentUser) {\n $state.go('portainer.logout');\n } else {\n $state.reload();\n }\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to update user password');\n });\n };\n\n function deleteUser() {\n UserService.deleteUser($scope.user.Id)\n .then(function success() {\n Notifications.success('User successfully deleted', $scope.user.Username);\n $state.go('portainer.users');\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove user');\n });\n }\n\n $scope.isSubmitEnabled = isSubmitEnabled;\n function isSubmitEnabled() {\n const { user, formValues } = $scope;\n return user && (user.Username !== formValues.username || (formValues.Administrator && user.Role !== 1) || (!formValues.Administrator && user.Role === 1));\n }\n\n $scope.isDeleteDisabled = isDeleteDisabled;\n function isDeleteDisabled() {\n const { user } = $scope;\n return user && user.Id === 1;\n }\n\n function initView() {\n $scope.isAdmin = Authentication.isAdmin();\n\n $q.all({\n user: UserService.user($transition$.params().id),\n settings: SettingsService.publicSettings(),\n })\n .then(function success(data) {\n var user = data.user;\n $scope.user = user;\n $scope.formValues.Administrator = user.Role === 1;\n $scope.formValues.username = user.Username;\n $scope.AuthenticationMethod = data.settings.AuthenticationMethod;\n $scope.requiredPasswordLength = data.settings.RequiredPasswordLength;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve user information');\n });\n }\n\n initView();\n },\n]);\n","import _ from 'lodash-es';\nimport { confirmDelete } from '@@/modals/confirm';\n\nangular.module('portainer.app').controller('UsersController', [\n '$q',\n '$scope',\n '$state',\n 'UserService',\n 'TeamService',\n 'TeamMembershipService',\n 'Notifications',\n 'Authentication',\n 'SettingsService',\n function ($q, $scope, $state, UserService, TeamService, TeamMembershipService, Notifications, Authentication, SettingsService) {\n $scope.state = {\n userCreationError: '',\n validUsername: false,\n actionInProgress: false,\n };\n\n $scope.formValues = {\n Username: '',\n Password: '',\n ConfirmPassword: '',\n Administrator: false,\n TeamIds: [],\n };\n\n $scope.handleAdministratorChange = function (checked) {\n return $scope.$evalAsync(() => {\n $scope.formValues.Administrator = checked;\n });\n };\n\n $scope.onChangeTeamIds = function (teamIds) {\n return $scope.$evalAsync(() => {\n $scope.formValues.TeamIds = teamIds;\n });\n };\n\n $scope.checkUsernameValidity = function () {\n var valid = true;\n for (var i = 0; i < $scope.users.length; i++) {\n if ($scope.formValues.Username.toLocaleLowerCase() === $scope.users[i].Username.toLocaleLowerCase()) {\n valid = false;\n break;\n }\n }\n $scope.state.validUsername = valid;\n $scope.state.userCreationError = valid ? '' : 'Username already taken';\n };\n\n $scope.addUser = function () {\n $scope.state.actionInProgress = true;\n $scope.state.userCreationError = '';\n var username = $scope.formValues.Username;\n var password = $scope.formValues.Password;\n var role = $scope.formValues.Administrator ? 1 : 2;\n UserService.createUser(username, password, role, $scope.formValues.TeamIds)\n .then(function success() {\n Notifications.success('User successfully created', username);\n $state.reload();\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to create user');\n })\n .finally(function final() {\n $scope.state.actionInProgress = false;\n });\n };\n\n function deleteSelectedUsers(selectedItems) {\n var actionCount = selectedItems.length;\n angular.forEach(selectedItems, function (user) {\n UserService.deleteUser(user.Id)\n .then(function success() {\n Notifications.success('User successfully removed', user.Username);\n var index = $scope.users.indexOf(user);\n $scope.users.splice(index, 1);\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to remove user');\n })\n .finally(function final() {\n --actionCount;\n if (actionCount === 0) {\n $state.reload();\n }\n });\n });\n }\n\n $scope.removeAction = function (selectedItems) {\n confirmDelete('Do you want to remove the selected users? They will not be able to login into Portainer anymore.').then((confirmed) => {\n if (!confirmed) {\n return;\n }\n deleteSelectedUsers(selectedItems);\n });\n };\n\n function assignTeamLeaders(users, memberships) {\n for (var i = 0; i < users.length; i++) {\n var user = users[i];\n user.isTeamLeader = false;\n for (var j = 0; j < memberships.length; j++) {\n var membership = memberships[j];\n if (user.Id === membership.UserId && membership.Role === 1) {\n user.isTeamLeader = true;\n user.RoleName = 'team leader';\n break;\n }\n }\n }\n }\n\n function initView() {\n var userDetails = Authentication.getUserDetails();\n var isAdmin = Authentication.isAdmin();\n $scope.isAdmin = isAdmin;\n $q.all({\n users: UserService.users(true),\n teams: isAdmin ? TeamService.teams() : UserService.userLeadingTeams(userDetails.ID),\n memberships: TeamMembershipService.memberships(),\n settings: SettingsService.publicSettings(),\n })\n .then(function success(data) {\n var users = data.users;\n assignTeamLeaders(users, data.memberships);\n $scope.users = users;\n $scope.teams = _.orderBy(data.teams, 'Name', 'asc');\n $scope.AuthenticationMethod = data.settings.AuthenticationMethod;\n $scope.requiredPasswordLength = data.settings.RequiredPasswordLength;\n $scope.teamSync = data.settings.TeamSync;\n })\n .catch(function error(err) {\n Notifications.error('Failure', err, 'Unable to retrieve users and teams');\n $scope.users = [];\n $scope.teams = [];\n });\n }\n\n initView();\n },\n]);\n","const docURLs = [\n {\n desc: 'Home',\n docURL: 'https://docs.portainer.io/user/home',\n locationRegex: /#!\\/home/,\n exmaples: ['#!/home'],\n },\n {\n desc: 'Docker or Swarm / Dashboard',\n docURL: 'https://docs.portainer.io/user/docker/dashboard',\n locationRegex: /#!\\/\\d+\\/docker\\/dashboard/,\n exmaples: ['#!/10/docker/dashboard'],\n },\n {\n desc: 'Docker or Swarm / Custom Templates',\n docURL: 'https://docs.portainer.io/user/docker/templates/custom',\n locationRegex: /#!\\/\\d+\\/docker\\/templates\\/custom/,\n examples: ['#!/10/docker/templates/custom', '#!/10/docker/templates/custom/new?fileContent=&type=', '#!/10/docker/templates/custom/1'],\n },\n {\n desc: 'Docker or Swarm / App Templates',\n docURL: 'https://docs.portainer.io/user/docker/templates',\n locationRegex: /#!\\/\\d+\\/docker\\/templates/,\n examples: ['#!/10/docker/templates'],\n },\n {\n desc: 'Docker or Swarm / Stacks',\n docURL: 'https://docs.portainer.io/user/docker/stacks',\n locationRegex: /#!\\/\\d+\\/docker\\/stacks/,\n examples: ['#!/10/docker/stacks', '#!/10/docker/stacks/newstack', '#!/10/docker/stacks/s4?id=3&type=1®ular=true&external=false&orphaned=false'],\n },\n {\n desc: 'Swarm / Services',\n docURL: 'https://docs.portainer.io/user/docker/services',\n locationRegex: /#!\\/\\d+\\/docker\\/(services|tasks)/,\n examples: [\n '#!/10/docker/services',\n '#!/10/docker/services/zqp46vzoz5nnf39m6c518nlt8',\n '#!/10/docker/services/zqp46vzoz5nnf39m6c518nlt8/logs',\n '#!/10/docker/tasks/yyll0peo7ack4uaw2wom3nxso',\n '#!/10/docker/tasks/yyll0peo7ack4uaw2wom3nxso/logs',\n ],\n },\n {\n desc: 'Docker or Swarm / Containers',\n docURL: 'https://docs.portainer.io/user/docker/containers',\n locationRegex: /#!\\/\\d+\\/docker\\/containers/,\n examples: [\n '#!/10/docker/containers',\n '#!/10/docker/containers/new',\n '#!/10/docker/containers/new?from=49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1',\n '#!/10/docker/containers/49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1',\n '#!/10/docker/containers/49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1/logs',\n '#!/10/docker/containers/49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1/inspect',\n '#!/10/docker/containers/49ff4ae03d10c57fe375f6968c48a6169a9852a6bfbb5137cd30c615d58188c1/stats',\n ],\n },\n {\n desc: 'Docker or Swarm / Images',\n docURL: 'https://docs.portainer.io/user/docker/images',\n locationRegex: /#!\\/\\d+\\/docker\\/images/,\n examples: ['#!/10/docker/images', '#!/10/docker/images/build', '#!/10/docker/images/sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412'],\n },\n {\n desc: 'Docker or Swarm / Networks',\n docURL: 'https://docs.portainer.io/user/docker/networks',\n locationRegex: /#!\\/\\d+\\/docker\\/networks/,\n examples: ['#!/10/docker/networks', '#!/10/docker/networks/new', '#!/10/docker/networks/db5732ff4a2c6df70a18530dba6abd8625f8e94c5fc5daabbcbab07377ee1044'],\n },\n {\n desc: 'Docker or Swarm / Volumes',\n docURL: 'https://docs.portainer.io/user/docker/volumes',\n locationRegex: /#!\\/\\d+\\/docker\\/volumes/,\n examples: ['#!/10/docker/volumes', '#!/10/docker/volumes/new', '#!/10/docker/volumes/153b46162f5bab9a7c9d2c8e1675115fcedd4c0ccdf5834159400750fa6b794c'],\n },\n {\n desc: 'Swarm / Configs',\n docURL: 'https://docs.portainer.io/user/docker/configs',\n locationRegex: /#!\\/\\d+\\/docker\\/configs/,\n examples: ['#!/10/docker/configs', '#!/10/docker/configs/new', '#!/10/docker/configs/azd0xc805l298jrgnadbnnzyv'],\n },\n {\n desc: 'Swarm / Secrets',\n docURL: 'https://docs.portainer.io/user/docker/secrets',\n locationRegex: /#!\\/\\d+\\/docker\\/secrets/,\n examples: ['#!/10/docker/secrets', '#!/10/docker/secrets/new', '#!/10/docker/secrets/tsoeeh7ln7g54g5qkk67eg4xe'],\n },\n {\n desc: 'Docker or Swarm / Swarm / Cluster visualizer',\n docURL: 'https://docs.portainer.io/user/docker/swarm/cluster-visualizer',\n locationRegex: /#!\\/\\d+\\/docker\\/swarm\\/visualizer/,\n examples: ['#!/10/docker/swarm/visualizer'],\n },\n {\n desc: 'Docker or Swarm / Swarm / Set up',\n docURL: 'https://docs.portainer.io/user/docker/swarm/setup',\n locationRegex: /#!\\/\\d+\\/docker\\/swarm\\/feat-config/,\n examples: ['#!/10/docker/feat-config'],\n },\n {\n desc: 'Swarm / Swarm / Registries',\n docURL: 'https://docs.portainer.io/user/docker/swarm/registries',\n locationRegex: /#!\\/\\d+\\/docker\\/swarm\\/registries/,\n examples: ['#!/10/docker/registries'],\n },\n {\n desc: 'Swarm / Swarm',\n docURL: 'https://docs.portainer.io/user/docker/swarm',\n locationRegex: /#!\\/\\d+\\/docker\\/(swarm|nodes)/,\n examples: ['#!/10/docker/swarm', '#!/10/docker/nodes/nd694yepzgms1j8y7kv3lpcc3'],\n },\n {\n desc: 'Docker / Events',\n docURL: 'https://docs.portainer.io/user/docker/events',\n locationRegex: /#!\\/\\d+\\/docker\\/events/,\n examples: ['#!/10/docker/events'],\n },\n {\n desc: 'Docker / Host / Registries',\n docURL: 'https://docs.portainer.io/user/docker/host/registries',\n locationRegex: /#!\\/\\d+\\/docker\\/host\\/registries/,\n examples: ['#!/10/docker/registries'],\n },\n {\n desc: 'Docker / Host / Setup',\n docURL: 'https://docs.portainer.io/user/docker/host/setup',\n locationRegex: /#!\\/\\d+\\/docker\\/host\\/feat-config/,\n examples: ['#!/10/docker/feat-config'],\n },\n {\n desc: 'Docker / Host',\n docURL: 'https://docs.portainer.io/user/docker/host',\n locationRegex: /#!\\/\\d+\\/docker\\/host/,\n examples: ['#!/10/docker/host'],\n },\n {\n desc: 'Kubernetes / Dashboard',\n docURL: 'https://docs.portainer.io/user/kubernetes/dashboard',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/dashboard/,\n examples: ['#!/1/kubernetes/dashboard'],\n },\n {\n desc: 'Kubernetes / Custom Templates',\n docURL: 'https://docs.portainer.io/user/kubernetes/templates',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/templates\\/custom/,\n examples: ['#!/1/kubernetes/templates/custom', '#!/1/kubernetes/templates/custom/new?fileContent='],\n },\n {\n desc: 'Kubernetes / Namespaces',\n docURL: 'https://docs.portainer.io/user/kubernetes/namespaces',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/pools/,\n examples: ['#!/1/kubernetes/pools', '#!/1/kubernetes/pools/new', '#!/1/kubernetes/deploy?templateId=', '#!/1/kubernetes/pools/default'],\n },\n {\n desc: 'Kubernetes / Helm',\n docURL: 'https://docs.portainer.io/user/kubernetes/helm',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/templates\\/helm/,\n examples: ['#!/1/kubernetes/templates/helm'],\n },\n {\n desc: 'Kubernetes / Applications',\n docURL: 'https://docs.portainer.io/user/kubernetes/applications',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/applications/,\n examples: ['#!/1/kubernetes/applications', '#!/1/kubernetes/applications/new', '#!/1/kubernetes/deploy?templateId=', '#!/1/kubernetes/applications/metallb-system/controller'],\n },\n {\n desc: 'Kubernetes / Services',\n docURL: 'https://docs.portainer.io/user/kubernetes/services',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/services/,\n examples: ['#!/1/kubernetes/services'],\n },\n {\n desc: 'Kubernetes / Ingresses',\n docURL: 'https://docs.portainer.io/user/kubernetes/ingresses',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/ingresses/,\n examples: ['#!/1/kubernetes/ingresses'],\n },\n {\n desc: 'Kubernetes / ConfigMaps & Secrets',\n docURL: 'https://docs.portainer.io/user/kubernetes/configurations',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/configurations/,\n examples: ['#!/1/kubernetes/configurations', '#!/1/kubernetes/configurations/new', '#!/1/kubernetes/configurations/metallb-system/config'],\n },\n {\n desc: 'Kubernetes / Volumes',\n docURL: 'https://docs.portainer.io/user/kubernetes/volumes',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/volumes/,\n examples: ['#!/1/kubernetes/volumes'],\n },\n {\n desc: 'Kubernetes / Cluster / Set up',\n docURL: 'https://docs.portainer.io/user/kubernetes/cluster/setup',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/cluster\\/configure/,\n examples: ['#!/1/kubernetes/cluster/configure'],\n },\n {\n desc: 'Kubernetes / Cluster / Security constraints',\n docURL: 'https://docs.portainer.io/user/kubernetes/cluster/security',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/cluster\\/securityConstraint/,\n examples: ['#!/1/kubernetes/cluster/securityConstraint'],\n },\n {\n desc: 'Kubernetes / Cluster',\n docURL: 'https://docs.portainer.io/user/kubernetes/cluster',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/cluster/,\n examples: ['#!/1/kubernetes/cluster', '#!/1/kubernetes/cluster/ip-10-138-11-102', '#!/1/kubernetes/cluster/ip-10-138-11-102/stats'],\n },\n {\n desc: 'Kubernetes / Cluster / Registries',\n docURL: 'https://docs.portainer.io/user/kubernetes/cluster/registries',\n locationRegex: /#!\\/\\d+\\/kubernetes\\/registries/,\n examples: ['#!/1/kubernetes/registries'],\n },\n {\n desc: 'Azure ACI / Dashboard',\n docURL: 'https://docs.portainer.io/user/aci/dashboard',\n locationRegex: /#!\\/\\d+\\/azure\\/dashboard/,\n examples: ['#!/26/azure/dashboard'],\n },\n {\n desc: 'Azure ACI / Container instances',\n docURL: 'https://docs.portainer.io/user/aci/containers',\n locationRegex: /#!\\/\\d+\\/azure\\/containerinstances/,\n examples: ['#!/26/azure/containerinstances'],\n },\n {\n desc: 'Edge Compute / Edge Devices',\n docURL: 'https://docs.portainer.io/user/edge/devices',\n locationRegex: /#!\\/edge\\/devices/,\n examples: ['#!/edge/devices', '#!/edge/devices/waiting-room'],\n },\n {\n desc: 'Edge Compute / Edge Groups',\n docURL: 'https://docs.portainer.io/user/edge/groups',\n locationRegex: /#!\\/edge\\/groups/,\n examples: ['#!/edge/groups', '#!/edge/groups/new'],\n },\n {\n desc: 'Edge Compute / Edge Stacks ',\n docURL: 'https://docs.portainer.io/user/edge/stacks',\n locationRegex: /#!\\/edge\\/stacks/,\n examples: ['#!/edge/stacks', '#!/edge/stacks/new'],\n },\n {\n desc: 'Edge Compute / Edge Jobs',\n docURL: 'https://docs.portainer.io/user/edge/jobs',\n locationRegex: /#!\\/edge\\/jobs/,\n examples: ['#!/edge/jobs', '#!/edge/jobs/new'],\n },\n {\n desc: 'Edge Compute / Edge Configurations',\n docURL: 'https://docs.portainer.io/user/edge/configurations',\n locationRegex: /#!\\/edge\\/configurations/,\n examples: ['#!/edge/configurations', '#!/edge/configurations/new'],\n },\n {\n desc: 'Nomad / Dashboard',\n docURL: 'https://docs.portainer.io/user/nomad/dashboard',\n locationRegex: /#!\\/\\d+\\/nomad\\/dashboard/,\n examples: ['#!/2/nomad/dashboard'],\n },\n {\n desc: 'Nomad / Nomad Jobs',\n docURL: 'https://docs.portainer.io/user/nomad/jobs',\n locationRegex: /#!\\/\\d+\\/nomad\\/jobs/,\n examples: [\n '#!/2/nomad/jobs',\n '#!/2/nomad/jobs/portainer-agent/tasks/portainer-agent/allocations/acdbf08e-34af-9b8a-cc84-7dc202bf1fcf/events?namespace=default',\n '#!/2/nomad/jobs/portainer-agent/tasks/portainer-agent/allocations/acdbf08e-34af-9b8a-cc84-7dc202bf1fcf/logs?namespace=default',\n ],\n },\n {\n desc: 'Account Settings',\n docURL: 'https://docs.portainer.io/user/account-settings',\n locationRegex: /#!\\/account/,\n examples: ['#!/account', '#!/account/tokens/new'],\n },\n {\n desc: 'Settings / Users',\n docURL: 'https://docs.portainer.io/admin/users',\n locationRegex: /#!\\/users/,\n examples: ['#!/users', '#!/users/1'],\n },\n {\n desc: 'Settings / Users / Teams',\n docURL: 'https://docs.portainer.io/admin/users/teams',\n locationRegex: /#!\\/teams/,\n examples: ['#!/teams', '#!/teams/1'],\n },\n {\n desc: 'Settings / Users / Roles',\n docURL: 'https://docs.portainer.io/admin/users/roles',\n locationRegex: /#!\\/roles/,\n examples: ['#!/roles'],\n },\n {\n desc: 'Settings / Environments',\n docURL: 'https://docs.portainer.io/admin/environments',\n locationRegex: /#!\\/endpoints/,\n examples: ['#!/endpoints', '#!/endpoints/10', '#!/endpoints/10/access'],\n },\n {\n desc: 'Settings / Environments / Groups',\n docURL: 'https://docs.portainer.io/admin/environments/groups',\n locationRegex: /#!\\/groups/,\n examples: ['#!/groups', '#!/groups/new', '#!/groups/3', '#!/groups/3/access'],\n },\n {\n desc: 'Settings / Environments / Tags',\n docURL: 'https://docs.portainer.io/admin/environments/tags',\n locationRegex: /#!\\/tags/,\n examples: ['#!/tags'],\n },\n {\n desc: 'Settings / Registries',\n docURL: 'https://docs.portainer.io/admin/registries',\n locationRegex: /#!\\/registries/,\n examples: [\n '#!/registries',\n '#!/registries/new',\n '#!/registries/1',\n '#!/registries/1/repositories',\n '#!/registries/1/configure',\n '#!/registries/5/portainer.demo~2Fportainerregistrytesting~2Falpine',\n '#!/registries/5/portainer.demo~2Fportainerregistrytesting~2Falpine/jfadelhaye',\n ],\n },\n {\n desc: 'Settings / Licenses',\n docURL: 'https://docs.portainer.io/admin/licenses',\n locationRegex: /#!\\/licenses/,\n examples: ['#!/licenses', '#!/licenses/licenses/new'],\n },\n {\n desc: 'Settings / Authentication logs',\n docURL: 'https://docs.portainer.io/admin/logs',\n locationRegex: /#!\\/auth-logs/,\n examples: ['#!/auth-logs'],\n },\n {\n desc: 'Settings / Authentication logs / Activity logs',\n docURL: 'https://docs.portainer.io/admin/logs/activity',\n locationRegex: /#!\\/activity-logs/,\n examples: ['#!/activity-logs'],\n },\n {\n desc: 'Settings / Settings / Authentication',\n docURL: 'https://docs.portainer.io/admin/settings/authentication',\n locationRegex: /#!\\/settings\\/auth/,\n examples: ['#!/settings/auth'],\n },\n {\n desc: 'Settings / Settings / Notifications',\n docURL: 'https://docs.portainer.io/admin/notifications',\n locationRegex: /#!\\/notifications/,\n examples: ['#!/notifications'],\n },\n {\n desc: 'Settings / Settings / Cloud settings',\n docURL: 'https://docs.portainer.io/admin/settings/cloud',\n locationRegex: /#!\\/settings\\/cloud/,\n examples: ['#!/settings/cloud', '#!/settings/cloud/credentials/new', '#!/settings/cloud/credentials/1'],\n },\n {\n desc: 'Settings / Settings / Edge Compute',\n docURL: 'https://docs.portainer.io/admin/settings/edge',\n locationRegex: /#!\\/settings\\/edge/,\n examples: ['#!/settings/edge'],\n },\n {\n desc: 'Settings / Settings',\n docURL: 'https://docs.portainer.io/admin/settings',\n locationRegex: /#!\\/settings/,\n examples: ['#!/settings'],\n },\n];\n\nconst DEFAULT_DOC_URL = 'https://docs.portainer.io';\n\nexport function getDocURL() {\n const hash = window.location.hash;\n for (let i = 0; i < docURLs.length; i += 1) {\n const docURL = docURLs[i];\n if (hash.match(docURL.locationRegex)) {\n return docURL.docURL;\n }\n }\n return DEFAULT_DOC_URL;\n}\n","import 'regenerator-runtime/runtime';\n\nexport default function setupTests() {\n // pass\n}\n","import angular from 'angular';\nimport 'moment';\nimport 'angular-sanitize';\nimport 'ng-file-upload';\nimport 'angular-messages';\nimport 'angular-resource';\nimport 'angular-utils-pagination';\nimport 'angular-local-storage';\nimport 'angular-jwt';\nimport 'angular-json-tree';\nimport 'angular-loading-bar';\nimport 'angular-clipboard';\nimport 'angular-file-saver';\nimport 'angularjs-scroll-glue';\nimport 'angularjs-slider';\nimport 'bootstrap/dist/js/bootstrap.js';\nimport 'js-yaml/dist/js-yaml.js';\nimport 'angular-ui-bootstrap';\nimport 'angular-moment-picker';\nimport 'angulartics/dist/angulartics.min.js';\n\nwindow.angular = angular;\n","var _module_exports = \"<agent-host-browser-react\\n ng-if=\\\"$ctrl.files\\\"\\n dataset=\\\"$ctrl.files\\\"\\n is-root=\\\"$ctrl.isRoot()\\\"\\n on-go-to-parent=\\\"($ctrl.goToParent)\\\"\\n relative-path=\\\"$ctrl.getRelativePath()\\\"\\n on-browse=\\\"($ctrl.browse)\\\"\\n on-rename=\\\"($ctrl.renameFile)\\\"\\n on-download=\\\"($ctrl.downloadFile)\\\"\\n on-delete=\\\"($ctrl.confirmDeleteFile)\\\"\\n on-file-selected-for-upload=\\\"($ctrl.onFileSelectedForUpload)\\\"\\n></agent-host-browser-react>\\n\";;\nvar path = 'app/agent/components/host-browser/hostBrowser.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"form-group\\\">\\n <label for=\\\"target_node\\\" class=\\\"col-sm-1 control-label text-left\\\">Node</label>\\n <div class=\\\"col-sm-11\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.model\\\" ng-options=\\\"agent.NodeName as agent.NodeName for agent in $ctrl.agents\\\"></select>\\n </div>\\n</div>\\n\";;\nvar path = 'app/agent/components/node-selector/nodeSelector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<agent-volume-browser-react\\n ng-if=\\\"$ctrl.files\\\"\\n dataset=\\\"$ctrl.files\\\"\\n is-root=\\\"$ctrl.state.path === '/'\\\"\\n on-go-to-parent=\\\"($ctrl.up)\\\"\\n on-browse=\\\"($ctrl.browse)\\\"\\n on-rename=\\\"($ctrl.rename)\\\"\\n on-download=\\\"($ctrl.download)\\\"\\n on-delete=\\\"($ctrl.confirmDelete)\\\"\\n is-upload-allowed=\\\"$ctrl.isUploadEnabled\\\"\\n on-file-selected-for-upload=\\\"($ctrl.onFileSelectedForUpload)\\\"\\n relative-path=\\\"$ctrl.state.path\\\"\\n></agent-volume-browser-react>\\n\";;\nvar path = 'app/agent/components/volume-browser/volumeBrowser.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Container capabilities </div>\\n <div class=\\\"form-group flex flex-wrap gap-y-2 px-5\\\">\\n <div ng-repeat=\\\"cap in $ctrl.capabilities\\\" class=\\\"w-1/3 text-center\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-6'\\\"\\n tooltip=\\\"cap.description\\\"\\n checked=\\\"cap.allowed\\\"\\n label=\\\"cap.capability\\\"\\n name=\\\"'capability'\\\"\\n on-change=\\\"($ctrl.capabilitiesOnChange[cap.capability])\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n</form>\\n\";;\nvar path = 'app/docker/components/container-capabilities/containerCapabilities.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <table class=\\\"table-bordered table-condensed table\\\">\\n <tr>\\n <td class=\\\"col-md-3\\\">\\n <span>Name</span>\\n </td>\\n <td>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.editModel.name\\\" disable-authorization=\\\"DockerContainerUpdate\\\">\\n <option value=\\\"no\\\">None</option>\\n <option value=\\\"on-failure\\\">On Failure</option>\\n <option value=\\\"always\\\">Always</option>\\n <option value=\\\"unless-stopped\\\">Unless Stopped</option>\\n </select>\\n </td>\\n <td class=\\\"col-md-2\\\" authorization=\\\"DockerContainerUpdate\\\">\\n <button class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"$ctrl.save()\\\">Update</button>\\n </td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.editModel.name === 'on-failure'\\\">\\n <td class=\\\"col-md-3\\\">Maximum Retry Count</td>\\n <td colspan=\\\"2\\\">\\n <input type=\\\"number\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.editModel.maximumRetryCount\\\" />\\n </td>\\n </tr>\\n </table>\\n</div>\\n\";;\nvar path = 'app/docker/components/container-restart-policy/container-restart-policy.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<rd-widget>\\n <rd-widget-header icon=\\\"gauge\\\" title-text=\\\"Cluster information\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"!px-5 !py-0\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Nodes in the cluster</td>\\n <td>{{ $ctrl.agentCount }}</td>\\n </tr>\\n <tr>\\n <td colspan=\\\"2\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n <a ui-sref=\\\"docker.swarm.visualizer\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'trello'\\\" class-name=\\\"'icon'\\\"></pr-icon>Go to cluster visualizer</a>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n</rd-widget>\\n\";;\nvar path = 'app/docker/components/dashboard-cluster-agent-info/dashboardClusterAgentInfo.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"{{ $ctrl.titleIcon }}\\\" title-text=\\\"{{ $ctrl.titleText }}\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"actionBar\\\">\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"row\\\" authorization=\\\"DockerNetworkConnect\\\">\\n <label for=\\\"container_network\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Join a network</label>\\n <div class=\\\"col-sm-5 col-lg-4\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.selectedNetwork\\\" id=\\\"container_network\\\">\\n <option selected disabled hidden value=\\\"\\\">Select a network</option>\\n <option ng-repeat=\\\"net in $ctrl.availableNetworks | orderBy: 'Name'\\\" ng-value=\\\"net.Id\\\">{{ net.Name }}</option>\\n </select>\\n </div>\\n <div class=\\\"col-sm-1\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.joinNetworkActionInProgress || !$ctrl.selectedNetwork\\\"\\n ng-click=\\\"$ctrl.joinNetworkAction($ctrl.container, $ctrl.selectedNetwork)\\\"\\n button-spinner=\\\"$ctrl.joinNetworkActionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.joinNetworkActionInProgress\\\">Join network</span>\\n <span ng-show=\\\"$ctrl.joinNetworkActionInProgress\\\">Joining network...</span>\\n </button>\\n </div>\\n </div>\\n </form>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>Network</th>\\n <th>\\n IP Address\\n <a ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </a>\\n </th>\\n <th>Gateway</th>\\n <th>MAC Address</th>\\n <th authorization=\\\"DockerNetworkDisconnect\\\">Actions</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate-start=\\\"(key, value) in $ctrl.dataset | itemsPerPage: $ctrl.state.paginatedItemLimit\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n ng-click=\\\"$ctrl.expandItem(value, !value.Expanded)\\\"\\n >\\n <td>\\n <button class=\\\"btn btn-none\\\" ng-if=\\\"$ctrl.itemCanExpand(value)\\\" type=\\\"button\\\">\\n <pr-icon ng-if=\\\"value.Expanded\\\" icon=\\\"'chevron-down'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!value.Expanded\\\" icon=\\\"'chevron-right'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n </button>\\n <a ui-sref=\\\"docker.networks.network({ id: key, nodeName: $ctrl.nodeName })\\\">{{ key }}</a>\\n </td>\\n <td>{{ value.IPAddress || '-' }}</td>\\n <td>{{ value.Gateway || '-' }}</td>\\n <td>{{ value.MacAddress || '-' }}</td>\\n <td authorization=\\\"DockerNetworkDisconnect\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-xs btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n ng-disabled=\\\"$ctrl.leaveNetworkActionInProgress || $ctrl.container.IsPortainer\\\"\\n button-spinner=\\\"$ctrl.leaveNetworkActionInProgress\\\"\\n ng-click=\\\"$ctrl.leaveNetworkAction($ctrl.container, key)\\\"\\n >\\n <span ng-if=\\\"!$ctrl.leaveNetworkActionInProgress\\\" class=\\\"vertical-center !ml-0\\\"> <pr-icon icon=\\\"'trash-2'\\\"></pr-icon> Leave network</span>\\n <span ng-if=\\\"$ctrl.leaveNetworkActionInProgress\\\">Leaving network...</span>\\n </button>\\n </td>\\n </tr>\\n <tr\\n dir-paginate-end\\n ng-show=\\\"$ctrl.itemCanExpand(value) && value.Expanded\\\"\\n ng-class=\\\"{ 'datatable-highlighted': value.Highlighted, 'datatable-unhighlighted': !value.Highlighted }\\\"\\n >\\n <td colspan=\\\"1\\\"></td>\\n <td colspan=\\\"1\\\">\\n {{ value.GlobalIPv6Address }}\\n </td>\\n <td colspan=\\\"3\\\">\\n {{ value.IPv6Gateway || '-' }}\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.dataset.length === 0\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No network available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector vertical-center\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/container-networks-datatable/containerNetworksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a process...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"process-searchInput\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th ng-repeat=\\\"header in $ctrl.headerset\\\">\\n {{ header }}\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr dir-paginate=\\\"item in ($ctrl.state.filteredProcesses = ($ctrl.dataset | filter:$ctrl.state.textFilter | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\">\\n <td ng-repeat=\\\"info in item track by $index\\\">{{ info }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"{{ $ctrl.headerset.length }}\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredProcesses.length === 0\\\">\\n <td colspan=\\\"{{ $ctrl.headerset.length }}\\\" class=\\\"text-muted text-center\\\">No process available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/container-processes-datatable/containerProcessesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'hard-drive'\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a macvlan...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Hostname'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Hostname' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Hostname')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Role'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Role'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Role' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Role')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Engine'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'EngineVersion'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'EngineVersion' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('EngineVersion')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-if=\\\"$ctrl.showIpAddressColumn\\\">\\n <table-column-header\\n col-title=\\\"'IP Address'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Addr'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Addr' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Addr')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Status'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"docker.nodes.node({id: item.Id})\\\" ng-if=\\\"$ctrl.accessToNodeDetails\\\">{{ item.Hostname }}</a>\\n <span ng-if=\\\"!$ctrl.accessToNodeDetails\\\">{{ item.Hostname }}</span>\\n </td>\\n <td>{{ item.Role }}</td>\\n <td>{{ item.EngineVersion }}</td>\\n <td ng-if=\\\"$ctrl.showIpAddressColumn\\\">{{ item.Addr }}</td>\\n <td>\\n <span class=\\\"label label-{{ item.Status | nodestatusbadge }}\\\">{{ item.Status }}</span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"7\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"7\\\" class=\\\"text-muted text-center\\\">No node available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/macvlan-nodes-datatable/macvlanNodesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<td ng-if=\\\"allowCheckbox\\\">\\n <span class=\\\"md-checkbox\\\" authorization=\\\"DockerNetworkDelete, DockerNetworkCreate\\\">\\n <input\\n id=\\\"select_{{ $index }}\\\"\\n type=\\\"checkbox\\\"\\n ng-model=\\\"item.Checked\\\"\\n ng-click=\\\"parentCtrl.selectItem(item, $event); $event.stopPropagation()\\\"\\n ng-disabled=\\\"parentCtrl.disableRemove(item)\\\"\\n />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ng-if=\\\"parentCtrl.itemCanExpand(item)\\\">\\n <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n </a>\\n</td>\\n<td ng-if=\\\"!allowCheckbox\\\"></td>\\n<td>\\n <a ui-sref=\\\"docker.networks.network({ id: item.Id, nodeName: item.NodeName })\\\" title=\\\"{{ item.Name }}\\\">{{ item.Name | truncate : 40 }}</a>\\n <span style=\\\"margin-left: 10px\\\" class=\\\"label label-info image-tag space-left\\\" ng-if=\\\"item.ResourceControl.System\\\">System</span>\\n</td>\\n<td>{{ item.StackName ? item.StackName : '-' }}</td>\\n<td>{{ item.Driver }}</td>\\n<td>{{ item.Attachable }}</td>\\n<td>{{ item.IPAM.Driver }}</td>\\n<td>{{ item.IPAM.IPV4Configs[0].Subnet ? item.IPAM.IPV4Configs[0].Subnet : '-' }}</td>\\n<td>{{ item.IPAM.IPV4Configs[0].Gateway ? item.IPAM.IPV4Configs[0].Gateway : '-' }}</td>\\n<td>{{ item.IPAM.IPV6Configs[0].Subnet ? item.IPAM.IPV6Configs[0].Subnet : '-' }}</td>\\n<td>{{ item.IPAM.IPV6Configs[0].Gateway ? item.IPAM.IPV6Configs[0].Gateway : '-' }}</td>\\n<td ng-if=\\\"parentCtrl.showHostColumn\\\">{{ item.NodeName ? item.NodeName : '-' }}</td>\\n<td>\\n <span>\\n <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = RCO.ADMINISTRATORS }}\\n </span>\\n</td>\\n\";;\nvar path = 'app/docker/components/datatables/networks-datatable/network-row-content/networkRowContent.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a network...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"network-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !gap-3\\\" authorization=\\\"DockerNetworkDelete, DockerNetworkCreate\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n authorization=\\\"DockerNetworkDelete\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"network-removeNetworkButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary vertical-center !ml-0 h-fit\\\"\\n ui-sref=\\\"docker.networks.new\\\"\\n authorization=\\\"DockerNetworkCreate\\\"\\n data-cy=\\\"network-addNetworkButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>Add network\\n </button>\\n </div>\\n <div class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th style=\\\"width: 55px\\\">\\n <span class=\\\"md-checkbox\\\" authorization=\\\"DockerNetworkDelete, DockerNetworkCreate\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <a ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </a>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Stack'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Driver'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Driver'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Driver' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Driver')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Attachable'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Attachable'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Attachable' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Attachable')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'IPAM Driver'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.Driver'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.Driver' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('IPAM.Driver')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'IPV4 IPAM Subnet'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.IPV4Configs[0].Subnet'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.IPV4Configs[0].Subnet' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('IPAM.IPV4Configs[0].Subnet')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'IPV4 IPAM Gateway'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.IPV4Configs[0].Gateway'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.IPV4Configs[0].Gateway' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('IPAM.IPV4Configs[0].Gateway')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'IPV6 IPAM Subnet'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.IPV6Configs[0].Subnet'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.IPV6Configs[0].Subnet' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('IPAM.IPV6Configs[0].Subnet')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'IPV6 IPAM Gateway'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'IPAM.IPV6Configs[0].Gateway'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAM.IPV6Configs[0].Gateway' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('IPAM.IPV6Configs[0].Gateway')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-if=\\\"$ctrl.showHostColumn\\\">\\n <table-column-header\\n col-title=\\\"'Host'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'NodeName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('NodeName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Ownership'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n network-row-content\\n item=\\\"item\\\"\\n parent-ctrl=\\\"$ctrl\\\"\\n ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n allow-checkbox=\\\"true\\\"\\n >\\n </tr>\\n <tr dir-paginate-end ng-show=\\\"item.Expanded\\\" ng-repeat=\\\"it in item.Subs\\\" class=\\\"datatable-highlighted\\\" network-row-content item=\\\"it\\\" parent-ctrl=\\\"$ctrl\\\"> </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"9\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"9\\\" class=\\\"text-muted text-center\\\">No network available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/networks-datatable/networksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Id'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Id'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Id' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Id')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Status'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Slot'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Slot'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Slot' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Slot')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Image'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Spec.ContainerSpec.Image'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Spec.ContainerSpec.Image' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Spec.ContainerSpec.Image')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Last Update'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Updated'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Updated' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Updated')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td\\n ><a ui-sref=\\\"docker.tasks.task({id: item.Id})\\\" class=\\\"monospaced\\\">{{ item.Id }}</a></td\\n >\\n <td\\n ><span class=\\\"label label-{{ item.Status.State | taskstatusbadge }}\\\">{{ item.Status.State }}</span></td\\n >\\n <td>{{ item.Slot ? item.Slot : '-' }}</td>\\n <td>{{ item.Spec.ContainerSpec.Image | hideshasum }}</td>\\n <td>{{ item.Updated | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No task available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/node-tasks-datatable/nodeTasksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a node...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"node-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Hostname'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Hostname' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Hostname')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Role'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Role'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Role' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Role')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'CPU'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CPUs'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CPUs' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CPUs')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Memory'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Memory'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Memory' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Memory')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Engine'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'EngineVersion'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'EngineVersion' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('EngineVersion')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-if=\\\"$ctrl.showIpAddressColumn\\\">\\n <table-column-header\\n col-title=\\\"'IP Address'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Addr'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Addr' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Addr')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Status'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Availability'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Availability'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Availability' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Availability')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <a ui-sref=\\\"docker.nodes.node({id: item.Id})\\\" ng-if=\\\"$ctrl.accessToNodeDetails\\\">{{ item.Name || item.Hostname }}</a>\\n <span ng-if=\\\"!$ctrl.accessToNodeDetails\\\">{{ item.Name || item.Hostname }}</span>\\n </td>\\n <td>{{ item.Role }}</td>\\n <td>{{ item.CPUs / 1000000000 }}</td>\\n <td>{{ item.Memory | humansize }}</td>\\n <td>{{ item.EngineVersion }}</td>\\n <td ng-if=\\\"$ctrl.showIpAddressColumn\\\">{{ item.Addr }}</td>\\n <td\\n ><span class=\\\"label label-{{ item.Status | nodestatusbadge }}\\\">{{ item.Status }}</span></td\\n >\\n <td\\n ><span class=\\\"label label-{{ item.Availability | dockerNodeAvailabilityBadge }}\\\">{{ item.Availability }}</span></td\\n >\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"7\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"7\\\" class=\\\"text-muted text-center\\\">No node available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/nodes-datatable/nodesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a secret...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"secret-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !gap-3\\\" authorization=\\\"DockerSecretDelete, DockerSecretCreate\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n authorization=\\\"DockerSecretDelete\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"secret-removeSecretButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary vertical-center !ml-0 h-fit\\\"\\n ui-sref=\\\"docker.secrets.new\\\"\\n authorization=\\\"DockerSecretCreate\\\"\\n data-cy=\\\"secret-addSecretButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>Add secret\\n </button>\\n </div>\\n <div class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"flex flex-nowrap items-center\\\">\\n <span class=\\\"md-checkbox vertical-center\\\" authorization=\\\"DockerSecretDelete, DockerSecretCreate\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Creation Date'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CreatedAt'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreatedAt' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CreatedAt')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Ownership'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\" authorization=\\\"DockerSecretDelete, DockerSecretCreate\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"docker.secrets.secret({id: item.Id})\\\">{{ item.Name }}</a>\\n </td>\\n <td>{{ item.CreatedAt | getisodate }}</td>\\n <td>\\n <span>\\n <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n </span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">No secret available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/secrets-datatable/secretsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"inner-datatable\\\">\\n <table class=\\\"table-condensed table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.filters.state.open\\\" class=\\\"w-[10%]\\\">\\n <div class=\\\"flex\\\">\\n <table-column-header\\n col-title=\\\"'Status'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Status.State'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status.State' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Status.State')\\\"\\n ></table-column-header>\\n <span class=\\\"space-left\\\">\\n <span uib-dropdown-toggle class=\\\"table-filter\\\" ng-if=\\\"!$ctrl.filters.state.enabled\\\"\\n >Filter\\n <pr-icon icon=\\\"'filter'\\\"></pr-icon>\\n </span>\\n <span uib-dropdown-toggle class=\\\"table-filter filter-active\\\" ng-if=\\\"$ctrl.filters.state.enabled\\\"\\n >Filter\\n <pr-icon icon=\\\"'check'\\\"></pr-icon>\\n </span>\\n </span>\\n <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Filter by state </div>\\n <div class=\\\"menuContent\\\">\\n <div class=\\\"md-checkbox\\\" ng-repeat=\\\"filter in $ctrl.filters.state.values track by $index\\\">\\n <input id=\\\"filter_state_{{ $ctrl.serviceId }}_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"filter.display\\\" ng-change=\\\"$ctrl.onStateFilterChange()\\\" />\\n <label for=\\\"filter_state_{{ $ctrl.serviceId }}_{{ $index }}\\\">{{ filter.label }}</label>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </div>\\n </th>\\n <th style=\\\"width: 22%\\\">Task</th>\\n <th>Actions</th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Slot'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Slot'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Slot' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Slot')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Node'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'NodeId'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeId' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('NodeId')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Last Update'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Updated'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Updated' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Updated')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n ng-repeat=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder))\\\"\\n >\\n <td class=\\\"text-center\\\">\\n <span class=\\\"label label-{{ item.Status.State | taskstatusbadge }} space-right\\\">{{ item.Status.State }}</span>\\n </td>\\n <td>\\n <a ng-if=\\\"!$ctrl.agentProxy || !item.Container\\\" ui-sref=\\\"docker.tasks.task({id: item.Id})\\\" class=\\\"monospaced\\\">{{ item.Id }}</a>\\n <a ng-if=\\\"$ctrl.agentProxy && item.Container\\\" ui-sref=\\\"docker.containers.container({ id: item.Container.Id, nodeName: item.Container.NodeName })\\\" class=\\\"monospaced\\\">{{\\n item.Id\\n }}</a>\\n </td>\\n <td>\\n <container-quick-actions\\n ng-if=\\\"!$ctrl.agentProxy || !item.Container\\\"\\n container-id=\\\"item.ContainerId\\\"\\n task-id=\\\"item.Id\\\"\\n status=\\\"item.Status.State\\\"\\n state=\\\"$ctrl.state\\\"\\n ></container-quick-actions>\\n <container-quick-actions\\n ng-if=\\\"$ctrl.agentProxy && item.Container\\\"\\n container-id=\\\"item.Container.Id\\\"\\n node-name=\\\"item.Container.NodeName\\\"\\n status=\\\"item.Status.State\\\"\\n state=\\\"$ctrl.state\\\"\\n ></container-quick-actions>\\n </td>\\n <td>{{ item.Slot ? item.Slot : '-' }}</td>\\n <td>{{ item.NodeId | tasknodename : $ctrl.nodes }}</td>\\n <td>{{ item.Updated | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No task matching filter.</td>\\n </tr>\\n </tbody>\\n </table>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/service-tasks-datatable/serviceTasksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"actionBar !gap-3\\\" authorization=\\\"DockerServiceUpdate, DockerServiceDelete, DockerServiceCreate\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n <button\\n ng-if=\\\"$ctrl.showUpdateAction\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-light h-fit\\\"\\n authorization=\\\"DockerServiceUpdate\\\"\\n ng-disabled=\\\"$ctrl.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.updateAction($ctrl.selectedItems)\\\"\\n data-cy=\\\"service-updateServiceButton\\\"\\n >\\n <pr-icon icon=\\\"'refresh-cw'\\\"></pr-icon>Update\\n </button>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight h-fit\\\"\\n authorization=\\\"DockerServiceDelete\\\"\\n ng-disabled=\\\"$ctrl.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.selectedItems)\\\"\\n data-cy=\\\"service-removeServiceButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n </div>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-sref=\\\"docker.services.new\\\" ng-if=\\\"$ctrl.showAddAction\\\" authorization=\\\"DockerServiceCreate\\\">\\n <pr-icon icon=\\\"'plus'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n Add service\\n </button>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/services-datatable/actions/servicesDatatableActions.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n ng-if=\\\"!$ctrl.notAutoFocus\\\"\\n auto-focus\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a service...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"service-searchInput\\\"\\n />\\n <input\\n ng-if=\\\"$ctrl.notAutoFocus\\\"\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a service...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"service-searchInput\\\"\\n />\\n </div>\\n <services-datatable-actions\\n selected-items=\\\"$ctrl.state.selectedItems\\\"\\n selected-item-count=\\\"$ctrl.state.selectedItemCount\\\"\\n show-add-action=\\\"$ctrl.showAddAction\\\"\\n show-update-action=\\\"$ctrl.showUpdateAction\\\"\\n endpoint-id=\\\"$ctrl.endpointId\\\"\\n ></services-datatable-actions>\\n <div class=\\\"settings\\\">\\n <datatable-columns-visibility columns=\\\"$ctrl.columnVisibility.columns\\\" on-change=\\\"($ctrl.onColumnVisibilityChange)\\\"></datatable-columns-visibility>\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th style=\\\"width: 55px\\\">\\n <span class=\\\"md-checkbox\\\" authorization=\\\"DockerServiceUpdate, DockerServiceDelete, DockerServiceCreate\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <a ng-click=\\\"$ctrl.expandAll()\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </a>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-if=\\\"$ctrl.showStackColumn\\\">\\n <table-column-header\\n col-title=\\\"'Stack'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-show=\\\"$ctrl.columnVisibility.columns.image.display\\\">\\n <table-column-header\\n col-title=\\\"'Image'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Scheduling Mode'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Mode'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Mode' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Mode')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-show=\\\"$ctrl.columnVisibility.columns.ports.display\\\">\\n <table-column-header\\n col-title=\\\"'Published Ports'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Ports'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Ports' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Ports')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-show=\\\"$ctrl.columnVisibility.columns.updated.display\\\">\\n <table-column-header\\n col-title=\\\"'Last Update'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'UpdatedAt'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'UpdatedAt' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('UpdatedAt')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-show=\\\"$ctrl.columnVisibility.columns.ownership.display\\\">\\n <table-column-header\\n col-title=\\\"'Ownership'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n class=\\\"interactive\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\" authorization=\\\"DockerServiceUpdate, DockerServiceDelete, DockerServiceCreate\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event); $event.stopPropagation()\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n </td>\\n <td>\\n <button type=\\\"button\\\" class=\\\"btn btn-link !ml-0 p-0 hover:no-underline\\\" ui-sref=\\\"docker.services.service({id: item.Id})\\\" ng-click=\\\"$event.stopPropagation()\\\">{{\\n item.Name\\n }}</button>\\n </td>\\n <td ng-if=\\\"$ctrl.showStackColumn\\\">{{ item.StackName ? item.StackName : '-' }}</td>\\n <td ng-show=\\\"$ctrl.columnVisibility.columns.image.display\\\">{{ item.Image | hideshasum }}</td>\\n <td ng-controller=\\\"ServicesDatatableActionsController as actionCtrl\\\">\\n {{ item.Mode }}\\n <code>{{ item.Tasks | runningtaskscount }}</code> / <code>{{ item.Mode === 'replicated' ? item.Replicas : ($ctrl.nodes | availablenodecount : item) }}</code>\\n <span ng-if=\\\"item.Mode === 'replicated' && !item.Scale\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"interactive vertical-center\\\" ng-click=\\\"item.Scale = true; item.ReplicaCount = item.Replicas; $event.stopPropagation();\\\">\\n <pr-icon icon=\\\"'minimize-2'\\\"></pr-icon>\\n Scale\\n </a>\\n </span>\\n <span ng-if=\\\"item.Mode === 'replicated' && item.Scale\\\">\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"number\\\"\\n min=\\\"0\\\"\\n step=\\\"1\\\"\\n ng-model=\\\"item.Replicas\\\"\\n on-enter-key=\\\"actionCtrl.scaleAction(item)\\\"\\n auto-focus\\n ng-click=\\\"$event.stopPropagation();\\\"\\n />\\n <a class=\\\"interactive vertical-center\\\" ng-click=\\\"item.Scale = false; $event.stopPropagation();\\\">\\n <pr-icon icon=\\\"'x'\\\"></pr-icon>\\n </a>\\n <a class=\\\"interactive vertical-center\\\" ng-click=\\\"actionCtrl.scaleAction(item); $event.stopPropagation();\\\">\\n <pr-icon icon=\\\"'check-square'\\\"></pr-icon>\\n </a>\\n </span>\\n </td>\\n <td ng-show=\\\"$ctrl.columnVisibility.columns.ports.display\\\">\\n <a\\n ng-if=\\\"item.Ports && item.Ports.length > 0 && p.PublishedPort\\\"\\n ng-repeat=\\\"p in item.Ports\\\"\\n class=\\\"image-tag vertical-center\\\"\\n ng-href=\\\"http://{{ $ctrl.endpointPublicUrl }}:{{ p.PublishedPort }}\\\"\\n target=\\\"_blank\\\"\\n ng-click=\\\"$event.stopPropagation();\\\"\\n >\\n <pr-icon icon=\\\"'external-link'\\\"></pr-icon>\\n {{ p.PublishedPort }}:{{ p.TargetPort }}\\n </a>\\n <span ng-if=\\\"!item.Ports || item.Ports.length === 0\\\">-</span>\\n </td>\\n <td ng-show=\\\"$ctrl.columnVisibility.columns.updated.display\\\">{{ item.UpdatedAt | getisodate }}</td>\\n <td ng-show=\\\"$ctrl.columnVisibility.columns.ownership.display\\\">\\n <span>\\n <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n </span>\\n </td>\\n </tr>\\n <tr dir-paginate-end ng-show=\\\"item.Expanded\\\">\\n <td></td>\\n <td colspan=\\\"8\\\">\\n <service-tasks-datatable\\n dataset=\\\"item.Tasks\\\"\\n service-id=\\\"item.Id\\\"\\n table-key=\\\"service-tasks\\\"\\n order-by=\\\"Status.State\\\"\\n nodes=\\\"$ctrl.nodes\\\"\\n agent-proxy=\\\"$ctrl.agentProxy\\\"\\n show-task-logs-button=\\\"$ctrl.showTaskLogsButton\\\"\\n text-filter=\\\"$ctrl.state.textFilter\\\"\\n ></service-tasks-datatable>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"8\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"8\\\" class=\\\"text-muted text-center\\\">No service available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/services-datatable/servicesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a task...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Status'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Id'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Id'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Id' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Id')\\\"\\n ></table-column-header>\\n </th>\\n <th>Actions</th>\\n <th ng-if=\\\"$ctrl.showSlotColumn\\\">\\n <table-column-header\\n col-title=\\\"'Slot'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Slot'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Slot' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Slot')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Node'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'NodeId'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeId' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('NodeId')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Last Update'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Updated'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Updated' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Updated')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td\\n ><span class=\\\"label label-{{ item.Status.State | taskstatusbadge }}\\\">{{ item.Status.State }}</span></td\\n >\\n <td>\\n <a ng-if=\\\"!$ctrl.agentProxy || !item.Container\\\" ui-sref=\\\"docker.tasks.task({id: item.Id})\\\" class=\\\"monospaced\\\"\\n >{{ item.ServiceName }}{{ item.Slot ? '.' + item.Slot : '' }}{{ '.' + item.Id }}</a\\n >\\n <a ng-if=\\\"$ctrl.agentProxy && item.Container\\\" ui-sref=\\\"docker.containers.container({ id: item.Container.Id, nodeName: item.Container.NodeName })\\\" class=\\\"monospaced\\\"\\n >{{ item.ServiceName }}{{ item.Slot ? '.' + item.Slot : '' }}{{ '.' + item.Id }}</a\\n >\\n </td>\\n <td>\\n <container-quick-actions\\n ng-if=\\\"!$ctrl.agentProxy || !item.Container\\\"\\n container-id=\\\"item.ContainerId\\\"\\n task-id=\\\"item.Id\\\"\\n status=\\\"item.Status.State\\\"\\n state=\\\"$ctrl.state\\\"\\n ></container-quick-actions>\\n <container-quick-actions\\n ng-if=\\\"$ctrl.agentProxy && item.Container\\\"\\n container-id=\\\"item.Container.Id\\\"\\n node-name=\\\"item.Container.NodeName\\\"\\n status=\\\"item.Status.State\\\"\\n state=\\\"$ctrl.state\\\"\\n ></container-quick-actions>\\n </td>\\n <td ng-if=\\\"$ctrl.showSlotColumn\\\">{{ item.Slot ? item.Slot : '-' }}</td>\\n <td>{{ item.NodeId | tasknodename : $ctrl.nodes }}</td>\\n <td>{{ item.Updated | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">No task available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/tasks-datatable/tasksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a volume...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"volume-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !gap-3\\\" authorization=\\\"DockerVolumeDelete, DockerVolumeCreate\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n authorization=\\\"DockerVolumeDelete\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"volume-removeVolumeButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" class=\\\"leading-none\\\"></pr-icon>Remove\\n </button>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary vertical-center !ml-0 h-fit\\\"\\n ui-sref=\\\"docker.volumes.new\\\"\\n authorization=\\\"DockerVolumeCreate\\\"\\n data-cy=\\\"volume-addVolumeButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" class=\\\"leading-none\\\"></pr-icon>Add volume\\n </button>\\n </div>\\n <div class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span class=\\\"inline-block w-3\\\">\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" style=\\\"display: none\\\" mode=\\\"'success'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover table-filters nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.filters.state.open\\\" class=\\\"flex gap-1\\\">\\n <span class=\\\"md-checkbox\\\" authorization=\\\"DockerVolumeDelete, DockerVolumeCreate\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Id'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Id' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Id')\\\"\\n ></table-column-header>\\n <span uib-dropdown-toggle class=\\\"table-filter flex gap-1 self-end\\\" ng-if=\\\"!$ctrl.filters.state.enabled\\\">Filter <pr-icon icon=\\\"'filter'\\\"></pr-icon></span>\\n <span uib-dropdown-toggle class=\\\"table-filter filter-active flex gap-1 self-end\\\" ng-if=\\\"$ctrl.filters.state.enabled\\\"\\n >Filter <pr-icon icon=\\\"'check'\\\"></pr-icon\\n ></span>\\n <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Filter by usage </div>\\n <div class=\\\"menuContent\\\">\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"filter_usage_usedImages\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showUsedVolumes\\\" ng-change=\\\"$ctrl.onstateFilterChange()\\\" />\\n <label for=\\\"filter_usage_usedImages\\\">Used volumes</label>\\n </div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"filter_usage_unusedImages\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showUnusedVolumes\\\" ng-change=\\\"$ctrl.onstateFilterChange()\\\" />\\n <label for=\\\"filter_usage_unusedImages\\\">Unused volumes</label>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Stack'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Driver'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Driver'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Driver' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Driver')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Mount point'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Mountpoint'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Mountpoint' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Mountpoint')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Created'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CreatedAt'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreatedAt' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CreatedAt')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-if=\\\"$ctrl.showHostColumn\\\">\\n <table-column-header\\n col-title=\\\"'Host'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'NodeName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'NodeName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('NodeName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Ownership'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\" authorization=\\\"DockerVolumeDelete, DockerVolumeCreate\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"docker.volumes.volume({ id: item.Id, nodeName: item.NodeName })\\\" class=\\\"monospaced\\\" title=\\\"{{ item.Id }}\\\">{{ item.Id | truncate : 40 }}</a>\\n\\n <button\\n ng-if=\\\"$ctrl.showBrowseAction\\\"\\n type=\\\"button\\\"\\n ui-sref=\\\"docker.volumes.volume.browse({ id: item.Id, nodeName: item.NodeName })\\\"\\n class=\\\"btn btn-xs btn-primary space-left\\\"\\n authorization=\\\"DockerAgentBrowseList\\\"\\n >\\n <pr-icon icon=\\\"'search'\\\"></pr-icon> browse\\n </button>\\n\\n <span style=\\\"margin-left: 10px\\\" class=\\\"label label-warning image-tag space-left\\\" ng-if=\\\"item.dangling\\\">Unused</span>\\n </td>\\n <td>{{ item.StackName ? item.StackName : '-' }}</td>\\n <td>{{ item.Driver }}</td>\\n <td>{{ item.Mountpoint | truncatelr }}</td>\\n <td>{{ item.CreatedAt | getisodate }}</td>\\n <td ng-if=\\\"$ctrl.showHostColumn\\\">{{ item.NodeName ? item.NodeName : '-' }}</td>\\n <td>\\n <span>\\n <i ng-class=\\\"item.ResourceControl.Ownership | ownershipicon\\\" aria-hidden=\\\"true\\\"></i>\\n {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n </span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">No volume available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/components/datatables/volumes-datatable/volumesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Host overview'\\\" breadcrumbs=\\\"['Docker']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<host-details-panel\\n host=\\\"$ctrl.hostDetails\\\"\\n is-browse-enabled=\\\"$ctrl.isAgent && $ctrl.agentApiVersion > 1 && $ctrl.hostFeaturesEnabled\\\"\\n browse-url=\\\"{{ $ctrl.browseUrl }}\\\"\\n></host-details-panel>\\n\\n<engine-details-panel engine=\\\"$ctrl.engineDetails\\\"></engine-details-panel>\\n\\n<devices-panel ng-if=\\\"$ctrl.isAgent && $ctrl.agentApiVersion > 1 && $ctrl.hostFeaturesEnabled\\\" devices=\\\"$ctrl.devices\\\"></devices-panel>\\n<disks-panel ng-if=\\\"$ctrl.isAgent && $ctrl.agentApiVersion > 1 && $ctrl.hostFeaturesEnabled\\\" disks=\\\"$ctrl.disks\\\"></disks-panel>\\n\\n<ng-transclude></ng-transclude>\\n\";;\nvar path = 'app/docker/components/host-overview/host-overview.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"code\\\" title-text=\\\"PCI Devices\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Name</th>\\n <th>Vendor</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-if=\\\"$ctrl.devices && $ctrl.devices.length\\\" ng-repeat=\\\"device in $ctrl.devices\\\">\\n <td>{{ device.Name }}</td>\\n <td>{{ device.Vendor }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.devices\\\">\\n <td colspan=\\\"2\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.devices.length === 0\\\">\\n <td colspan=\\\"2\\\" class=\\\"text-muted text-center\\\"> No device available. </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/devices-panel/devices-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"code\\\" title-text=\\\"Physical Disks\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Vendor</th>\\n <th>Size</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-if=\\\"$ctrl.disks\\\" ng-repeat=\\\"disk in $ctrl.disks\\\">\\n <td>{{ disk.Vendor }}</td>\\n <td>{{ disk.Size | humansize }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.disks\\\">\\n <td colspan=\\\"2\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.disks.length === 0\\\">\\n <td colspan=\\\"2\\\" class=\\\"text-muted text-center\\\"> No disks available. </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/disks-panel/disks-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"code\\\" title-text=\\\"Engine Details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Version</td>\\n <td\\n >{{ $ctrl.engine.releaseVersion }} <span ng-if=\\\"$ctrl.engine.apiVersion\\\">(API: {{ $ctrl.engine.apiVersion }})</span></td\\n >\\n </tr>\\n <tr ng-if=\\\"$ctrl.engine.rootDirectory\\\">\\n <td>Root directory</td>\\n <td>{{ $ctrl.engine.rootDirectory }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.engine.storageDriver\\\">\\n <td>Storage Driver</td>\\n <td>{{ $ctrl.engine.storageDriver }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.engine.loggingDriver\\\">\\n <td>Logging Driver</td>\\n <td>{{ $ctrl.engine.loggingDriver }}</td>\\n </tr>\\n <tr>\\n <td>Volume Plugins</td>\\n <td>{{ $ctrl.engine.volumePlugins | arraytostr : ', ' }}</td>\\n </tr>\\n <tr>\\n <td>Network Plugins</td>\\n <td>{{ $ctrl.engine.networkPlugins | arraytostr : ', ' }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.engine.engineLabels.length\\\">\\n <td>Engine Labels</td>\\n <td>{{ $ctrl.engine.engineLabels | labelsToStr : ', ' }}</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/engine-details-panel/engine-details-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"code\\\" title-text=\\\"Host Details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Hostname</td>\\n <td>{{ $ctrl.host.name }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.host.os\\\">\\n <td>OS Information</td>\\n <td>{{ $ctrl.host.os.type }} {{ $ctrl.host.os.arch }} {{ $ctrl.host.os.name }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.host.kernelVersion\\\">\\n <td>Kernel Version</td>\\n <td>{{ $ctrl.host.kernelVersion }}</td>\\n </tr>\\n <tr>\\n <td>Total CPU</td>\\n <td>{{ $ctrl.host.totalCPU }}</td>\\n </tr>\\n <tr>\\n <td>Total memory</td>\\n <td>{{ $ctrl.host.totalMemory | humansize }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.isBrowseEnabled\\\">\\n <td colspan=\\\"2\\\">\\n <button class=\\\"btn btn-primary btn-sm\\\" title=\\\"Browse\\\" ui-sref=\\\"{{ $ctrl.browseUrl }}\\\"> Browse </button>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/host-details-panel/host-details-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"input-group input-group-sm\\\">\\n <select name=\\\"nodeAvailability\\\" class=\\\"selectpicker form-control\\\" ng-model=\\\"$ctrl.availability\\\" ng-change=\\\"$ctrl.onChange()\\\">\\n <option value=\\\"active\\\">Active</option>\\n <option value=\\\"pause\\\">Pause</option>\\n <option value=\\\"drain\\\">Drain</option>\\n </select>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/node-availability-select/node-availability-select.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div ng-if=\\\"!$ctrl.labels.length\\\"> There are no labels for this node. </div>\\n\\n<div class=\\\"col-sm-12 form-inline !p-0\\\" ng-if=\\\"$ctrl.labels.length\\\">\\n <div ng-repeat=\\\"label in $ctrl.labels\\\" class=\\\"mt-1\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"e.g. com.example.foo\\\" ng-change=\\\"$ctrl.updateLabel(label)\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"e.g. bar\\\" ng-change=\\\"$ctrl.updateLabel(label)\\\" />\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.removeLabel($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/node-labels-table/node-labels-table.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-sm-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"code\\\" title-text=\\\"Node Details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr ng-if=\\\"$ctrl.details.name\\\">\\n <td>Node name</td>\\n <td>{{ $ctrl.details.name }}</td>\\n </tr>\\n <tr>\\n <td>Role</td>\\n <td>{{ $ctrl.details.role }} {{ $ctrl.state.managerAddress }}</td>\\n </tr>\\n <tr>\\n <td>Availability</td>\\n <td>\\n <node-availability-select\\n on-save=\\\"$ctrl.updateNodeAvailability(availability)\\\"\\n availability=\\\"$ctrl.details.availability\\\"\\n original-value=\\\"$ctrl.details.availability\\\"\\n >\\n </node-availability-select>\\n </td>\\n </tr>\\n <tr>\\n <td>Status</td>\\n <td\\n ><span class=\\\"label label-{{ $ctrl.details.status | nodestatusbadge }}\\\">{{ $ctrl.details.status }}</span></td\\n >\\n </tr>\\n <tr>\\n <td>\\n <div class=\\\"nopadding\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"$ctrl.addLabel(node)\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> label </a>\\n </div>\\n Node Labels\\n </td>\\n <td></td>\\n </tr>\\n <tr>\\n <td colspan=\\\"2\\\">\\n <node-labels-table labels=\\\"$ctrl.details.nodeLabels\\\" on-changed-labels=\\\"$ctrl.updateNodeLabels(labels)\\\"></node-labels-table>\\n </td>\\n </tr>\\n <tr>\\n <td colspan=\\\"2\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!$ctrl.state.hasChanges\\\" ng-click=\\\"$ctrl.saveChanges()\\\"> Apply changes </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"$ctrl.cancelChanges()\\\">Reset changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/host-view-panels/swarm-node-details-panel/swarm-node-details-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"form-group\\\" ng-if=\\\"$ctrl.pullRateLimits\\\">\\n <div class=\\\"col-sm-12 small\\\">\\n <div ng-if=\\\"$ctrl.pullRateLimits.remaining > 0\\\" class=\\\"text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span ng-if=\\\"$ctrl.isAuthenticated\\\">\\n You are currently using a free account to pull images from DockerHub and will be limited to 200 pulls every 6 hours. Remaining pulls:\\n <span style=\\\"font-weight: bold\\\">{{ $ctrl.pullRateLimits.remaining }}/{{ $ctrl.pullRateLimits.limit }}</span>\\n </span>\\n <span ng-if=\\\"!$ctrl.isAuthenticated\\\">\\n <span ng-if=\\\"$ctrl.isAdmin\\\">\\n You are currently using an anonymous account to pull images from DockerHub and will be limited to 100 pulls every 6 hours. You can configure DockerHub authentication in\\n the\\n <a ui-sref=\\\"portainer.registries\\\">Registries View</a>. Remaining pulls:\\n <span style=\\\"font-weight: bold\\\">{{ $ctrl.pullRateLimits.remaining }}/{{ $ctrl.pullRateLimits.limit }}</span>\\n </span>\\n <span ng-if=\\\"!$ctrl.isAdmin\\\">\\n You are currently using an anonymous account to pull images from DockerHub and will be limited to 100 pulls every 6 hours. Contact your administrator to configure\\n DockerHub authentication. Remaining pulls: <span style=\\\"font-weight: bold\\\">{{ $ctrl.pullRateLimits.remaining }}/{{ $ctrl.pullRateLimits.limit }}</span>\\n </span>\\n </span>\\n </div>\\n <div ng-if=\\\"$ctrl.pullRateLimits.remaining <= 0\\\" class=\\\"text-warning vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span ng-if=\\\"$ctrl.isAuthenticated\\\">\\n Your authorized pull count quota as a free user is now exceeded.\\n <span ng-transclude=\\\"rateLimitExceeded\\\">You will not be able to pull any image from the DockerHub registry.</span>\\n </span>\\n <span ng-if=\\\"!$ctrl.isAuthenticated\\\">\\n Your authorized pull count quota as an anonymous user is now exceeded.\\n <span ng-transclude=\\\"rateLimitExceeded\\\">You will not be able to pull any image from the DockerHub registry.</span>\\n </span>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/imageRegistry/por-image-registry-rate-limits.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<!-- use registry -->\\n<div class=\\\"row\\\">\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.UseRegistry\\\">\\n <label for=\\\"image_registry\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\" ng-class=\\\"$ctrl.labelClass\\\"> Registry </label>\\n <div ng-class=\\\"$ctrl.inputClass\\\" class=\\\"col-sm-8\\\">\\n <select\\n ng-options=\\\"registry as registry.Name for registry in $ctrl.registries track by registry.Id\\\"\\n ng-model=\\\"$ctrl.model.Registry\\\"\\n id=\\\"image_registry\\\"\\n class=\\\"form-control\\\"\\n data-cy=\\\"component-registrySelect\\\"\\n ></select>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.UseRegistry\\\">\\n <label for=\\\"image_name\\\" ng-class=\\\"$ctrl.labelClass\\\" class=\\\"control-label col-sm-3 col-lg-2 required text-left\\\">Image</label>\\n <div ng-class=\\\"$ctrl.inputClass\\\" class=\\\"col-sm-8\\\">\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-addon\\\" id=\\\"registry-name\\\">{{ $ctrl.displayedRegistryURL() }}</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n aria-describedby=\\\"registry-name\\\"\\n uib-typeahead=\\\"image for image in $ctrl.availableImages | filter:$viewValue | limitTo:5\\\"\\n ng-model=\\\"$ctrl.model.Image\\\"\\n name=\\\"image_name\\\"\\n placeholder=\\\"e.g. my-image:my-tag\\\"\\n ng-change=\\\"$ctrl.onImageChange()\\\"\\n required\\n data-cy=\\\"component-imageInput\\\"\\n />\\n <span ng-if=\\\"$ctrl.isDockerHubRegistry()\\\" class=\\\"input-group-btn\\\">\\n <a\\n href=\\\"https://hub.docker.com/search?type=image&q={{ $ctrl.model.Image | trimshasum | trimversiontag }}\\\"\\n class=\\\"btn btn-default vertical-center\\\"\\n title=\\\"Search image on Docker Hub\\\"\\n target=\\\"_blank\\\"\\n >\\n <pr-icon icon=\\\"'svg-docker'\\\" size=\\\"'md'\\\"></pr-icon> Search\\n </a>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- ! use registry -->\\n <!-- don't use registry -->\\n <div ng-if=\\\"!$ctrl.model.UseRegistry\\\">\\n <div class=\\\"form-group\\\">\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted ml-4\\\"> When using advanced mode, image and repository <b>must be</b> publicly available. </p>\\n </span>\\n <label for=\\\"image_name\\\" ng-class=\\\"$ctrl.labelClass\\\" class=\\\"control-label col-sm-3 col-lg-2 required text-left\\\">Image </label>\\n <div ng-class=\\\"$ctrl.inputClass\\\" class=\\\"col-sm-8\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.model.Image\\\" name=\\\"image_name\\\" placeholder=\\\"e.g. registry:port/my-image:my-tag\\\" required />\\n </div>\\n </div>\\n </div>\\n <!-- ! don't use registry -->\\n <!-- info message -->\\n <div class=\\\"form-group\\\" ng-show=\\\"$ctrl.form.image_name.$invalid\\\">\\n <div class=\\\"small\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8\\\" ng-messages=\\\"$ctrl.form.image_name.$error\\\">\\n <p class=\\\"text-warning vertical-center\\\" ng-message=\\\"required\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon> Image name is required.\\n <span ng-if=\\\"$ctrl.canPull\\\">Tag must be specified otherwise Portainer will pull all tags associated to the image.</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- ! info message -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm vertical-center !ml-0 p-0 hover:no-underline\\\" ng-if=\\\"!$ctrl.model.UseRegistry\\\" ng-click=\\\"$ctrl.model.UseRegistry = true;\\\">\\n <pr-icon icon=\\\"'database'\\\"> </pr-icon> Simple mode\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm vertical-center !ml-0 p-0 hover:no-underline\\\" ng-if=\\\"$ctrl.model.UseRegistry\\\" ng-click=\\\"$ctrl.model.UseRegistry = false;\\\">\\n <pr-icon icon=\\\"'globe'\\\"> </pr-icon> Advanced mode\\n </button>\\n </div>\\n </div>\\n\\n <div ng-transclude></div>\\n\\n <por-image-registry-rate-limits\\n ng-if=\\\"$ctrl.checkRateLimits && $ctrl.isDockerHubRegistry()\\\"\\n endpoint=\\\"$ctrl.endpoint\\\"\\n registry=\\\"$ctrl.model.Registry\\\"\\n set-validity=\\\"$ctrl.setValidity\\\"\\n is-authenticated=\\\"$ctrl.model.Registry.Authentication\\\"\\n is-admin=\\\"$ctrl.isAdmin\\\"\\n registry-id=\\\"$ctrl.model.Registry.Id\\\"\\n >\\n </por-image-registry-rate-limits>\\n</div>\\n\";;\nvar path = 'app/docker/components/imageRegistry/por-image-registry.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"file\\\" title-text=\\\"Log viewer settings\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"$ctrl.state.logCollection\\\"\\n label=\\\"'Auto-refresh logs'\\\"\\n tooltip=\\\"'Disabling this option allows you to pause the log collection process and the auto-scrolling.'\\\"\\n on-change=\\\"($ctrl.handleLogsCollectionChange)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field label-class=\\\"'col-sm-2'\\\" checked=\\\"$ctrl.state.wrapLines\\\" label=\\\"'Wrap lines'\\\" on-change=\\\"($ctrl.handleLogsWrapLinesChange)\\\"></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"$ctrl.displayTimestamps\\\"\\n label=\\\"'Display timestamps'\\\"\\n on-change=\\\"($ctrl.handleDisplayTimestampsChange)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"logs_since\\\" class=\\\"col-sm-2 control-label text-left\\\"> Fetch </label>\\n <div class=\\\"col-sm-2\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.sinceTimestamp\\\" id=\\\"logs_since\\\">\\n <option selected value=\\\"\\\">All logs</option>\\n <option ng-repeat=\\\"dt in $ctrl.state.availableSinceDatetime\\\" ng-value=\\\"dt.value\\\" title=\\\"{{ dt.value }}\\\">{{ dt.desc }}</option>\\n </select>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"logs_search\\\" class=\\\"col-sm-2 control-label text-left\\\"> Search </label>\\n <div class=\\\"col-sm-8\\\">\\n <input class=\\\"form-control\\\" type=\\\"text\\\" name=\\\"logs_search\\\" ng-model=\\\"$ctrl.state.search\\\" ng-change=\\\"$ctrl.state.selectedLines.length = 0;\\\" placeholder=\\\"Filter...\\\" />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"lines_count\\\" class=\\\"col-sm-2 control-label text-left\\\"> Lines </label>\\n <div class=\\\"col-sm-8\\\">\\n <input class=\\\"form-control\\\" type=\\\"number\\\" name=\\\"lines_count\\\" ng-model=\\\"$ctrl.lineCount\\\" placeholder=\\\"Enter no of lines...\\\" />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.copySupported\\\">\\n <label class=\\\"col-sm-2 control-label text-left\\\"> Actions </label>\\n <div class=\\\"col-sm-10\\\">\\n <button class=\\\"btn btn-primary btn-sm\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.downloadLogs()\\\" style=\\\"margin-left: 0\\\"\\n ><pr-icon icon=\\\"'download'\\\"></pr-icon> Download logs</button\\n >\\n <button\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-click=\\\"$ctrl.copy()\\\"\\n ng-disabled=\\\"($ctrl.state.filteredLogs.length === 1 && !$ctrl.state.filteredLogs[0].line) || !$ctrl.state.filteredLogs.length\\\"\\n ><pr-icon icon=\\\"'copy'\\\" class-name=\\\"'space-right'\\\"></pr-icon>Copy</button\\n >\\n <button\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-click=\\\"$ctrl.copySelection()\\\"\\n ng-disabled=\\\"($ctrl.state.filteredLogs.length === 1 && !$ctrl.state.filteredLogs[0].line) || !$ctrl.state.filteredLogs.length || !$ctrl.state.selectedLines.length\\\"\\n ><pr-icon icon=\\\"'copy'\\\" class-name=\\\"'space-right'\\\"></pr-icon>Copy selected lines</button\\n >\\n <button class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"$ctrl.clearSelection()\\\" ng-disabled=\\\"$ctrl.state.selectedLines.length === 0\\\"\\n ><pr-icon icon=\\\"'x'\\\" class-name=\\\"'space-right'\\\"></pr-icon>Unselect</button\\n >\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\" style=\\\"height: 54%\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"height: 100%\\\">\\n <pre ng-class=\\\"{ wrap_lines: $ctrl.state.wrapLines }\\\" class=\\\"log_viewer\\\" scroll-glue=\\\"$ctrl.state.autoScroll\\\" force-glue>\\n <div ng-repeat=\\\"log in $ctrl.state.filteredLogs = ($ctrl.data | filter:{ 'line': $ctrl.state.search }) track by $index\\\" class=\\\"line\\\" ng-if=\\\"log.line\\\"><p class=\\\"inner_line\\\" ng-click=\\\"$ctrl.selectLine(log.line)\\\" ng-class=\\\"{ 'line_selected': $ctrl.state.selectedLines.indexOf(log.line) > -1 }\\\"><span ng-repeat=\\\"span in log.spans track by $index\\\" ng-style=\\\"{ 'color': span.fgColor, 'background-color': span.bgColor, 'font-weight': span.fontWeight }\\\">{{ span.text }}</span></p></div>\\n <div ng-if=\\\"!$ctrl.state.filteredLogs.length\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No log line matching the '{{ $ctrl.state.search }}' filter</p></div>\\n <div ng-if=\\\"$ctrl.state.filteredLogs.length === 1 && !$ctrl.state.filteredLogs[0].line\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No logs available</p></div>\\n </pre>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/components/log-viewer/logViewer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Macvlan configuration </div>\\n\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n To create a MACVLAN network you need to create a configuration, then create the network from this configuration.\\n </span>\\n </div>\\n\\n <box-selector slim=\\\"true\\\" options=\\\"$ctrl.options\\\" value=\\\"$ctrl.data.Scope\\\" on-change=\\\"($ctrl.onChangeScope)\\\"></box-selector>\\n\\n <ng-form name=\\\"macvlanConfigurationForm\\\">\\n <!-- configuration-inputs -->\\n <div ng-show=\\\"$ctrl.data.Scope === 'local'\\\">\\n <!-- network-card-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"network_card\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Parent network card</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"network_card\\\"\\n ng-model=\\\"$ctrl.data.ParentNetworkCard\\\"\\n placeholder=\\\"e.g. eth0 or ens160 ...\\\"\\n ng-required=\\\"$ctrl.data.Scope === 'local' && !$ctrl.data.ParentNetworkCard\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"macvlanConfigurationForm.network_card.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"macvlanConfigurationForm.network_card.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Parent network card must be specified.</p>\\n </div>\\n </div>\\n </div>\\n <!-- network-card-input -->\\n <!-- nodes-selector -->\\n <div ng-if=\\\"$ctrl.applicationState.endpoint.mode.agentProxy && $ctrl.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <macvlan-nodes-datatable\\n title-text=\\\"Select the nodes where you want to deploy the local configuration\\\"\\n title-icon=\\\"hard-drive\\\"\\n dataset=\\\"$ctrl.nodes\\\"\\n table-key=\\\"nodes\\\"\\n state=\\\"$ctrl.data.DatatableState\\\"\\n order-by=\\\"Hostname\\\"\\n show-ip-address-column=\\\"$ctrl.applicationState.endpoint.apiVersion >= 1.25\\\"\\n access-to-node-details=\\\"$ctrl.isAdmin\\\"\\n name=\\\"node_selector\\\"\\n ng-model=\\\"tmp\\\"\\n ng-required=\\\"$ctrl.requiredNodeSelection()\\\"\\n ></macvlan-nodes-datatable>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"macvlanConfigurationForm.node_selector.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"macvlanConfigurationForm.node_selector.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> At least one node must be selected.</p>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !nodes-selector -->\\n </div>\\n <!-- configuration-inputs -->\\n <!-- deploy-inputs -->\\n <div ng-show=\\\"$ctrl.data.Scope === 'swarm'\\\">\\n <!-- configuration-selector -->\\n <!-- network-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"config_network\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Configuration</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <select\\n class=\\\"form-control\\\"\\n ng-options=\\\"net.Name for net in $ctrl.availableNetworks\\\"\\n ng-model=\\\"$ctrl.data.SelectedNetworkConfig\\\"\\n name=\\\"config_network\\\"\\n ng-required=\\\"$ctrl.requiredConfigSelection()\\\"\\n >\\n <option selected disabled hidden value=\\\"\\\">Select a network</option>\\n </select>\\n </div>\\n </div>\\n <!-- !network-input -->\\n <div class=\\\"form-group\\\" ng-show=\\\"macvlanConfigurationForm.config_network.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"macvlanConfigurationForm.config_network.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Select a configuration network.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !configuration-selector -->\\n </div>\\n <!-- deploy-inputs -->\\n </ng-form>\\n</div>\\n\";;\nvar path = 'app/docker/components/network-macvlan-form/networkMacvlanForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<!-- CIFS-settings -->\\n<div ng-show=\\\"$ctrl.data.useCIFS\\\">\\n <ng-form class=\\\"form-horizontal\\\" name=\\\"cifsInformationForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> CIFS Settings </div>\\n <!-- address-input -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"cifs_address\\\" class=\\\"col-sm-2 col-md-1 control-label required text-left\\\">Address</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.serverAddress\\\" name=\\\"cifs_address\\\" placeholder=\\\"e.g. my.cifs-server.com OR xxx.xxx.xxx.xxx\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.cifs_address.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"cifsInformationForm.cifs_address.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !address-input -->\\n <!-- mount-point-input -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"cifs_share\\\" class=\\\"col-sm-2 col-md-1 control-label required text-left\\\">Share</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.share\\\" name=\\\"cifs_share\\\" placeholder=\\\"e.g. /myshare\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.cifs_share.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"cifsInformationForm.cifs_share.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !mount-point-input -->\\n <!-- version-input -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"cifs_version\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">CIFS Version</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.version\\\" name=\\\"cifs_version\\\" ng-options=\\\"version for version in $ctrl.data.versions\\\" required></select>\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.cifs_version.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"cifsInformationForm.cifs_version.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !version-input -->\\n <!-- username -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"cifs_username\\\" class=\\\"col-sm-2 col-md-1 control-label required text-left\\\">Username</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.username\\\" name=\\\"cifs_username\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.cifs_username.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"cifsInformationForm.cifs_username.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !username -->\\n <!-- password -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"cifs_password\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">Password</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.password\\\" name=\\\"cifs_password\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"cifsInformationForm.password.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"cifsInformationForm.cifs_password.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !password -->\\n </ng-form>\\n</div>\\n<!-- !CIFS-settings -->\\n\";;\nvar path = 'app/docker/components/volumesCIFSForm/volumesCifsForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<!-- NFS-settings -->\\n<div ng-show=\\\"$ctrl.data.useNFS\\\">\\n <ng-form class=\\\"form-horizontal\\\" name=\\\"nfsInformationForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> NFS Settings </div>\\n <!-- address-input -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"nfs_address\\\" class=\\\"col-sm-2 col-md-1 control-label required text-left\\\">Address</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.serverAddress\\\" name=\\\"nfs_address\\\" placeholder=\\\"e.g. my.nfs-server.com OR xxx.xxx.xxx.xxx\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"nfsInformationForm.nfs_address.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"nfsInformationForm.nfs_address.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !address-input -->\\n <!-- version-input -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"nfs_version\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">NFS Version</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.version\\\" name=\\\"nfs_version\\\" ng-options=\\\"version for version in $ctrl.data.versions\\\" required></select>\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"nfsInformationForm.nfs_version.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"nfsInformationForm.nfs_version.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !version-input -->\\n <!-- mount-point-input -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"nfs_mountpoint\\\" class=\\\"col-sm-2 col-md-1 control-label required text-left\\\">Mount point</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.data.mountPoint\\\"\\n name=\\\"nfs_mountpoint\\\"\\n placeholder=\\\"e.g. /export/share, :/export/share, /share or :/share\\\"\\n required\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"nfsInformationForm.nfs_mountpoint.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"nfsInformationForm.nfs_mountpoint.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !mount-point-input -->\\n <!-- options-input -->\\n <div class=\\\"form-group col-md-12\\\">\\n <label for=\\\"nfs_options\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\"\\n >Options\\n <portainer-tooltip message=\\\"'Comma separated list of options'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.data.options\\\" name=\\\"nfs_options\\\" placeholder=\\\"e.g. rw,noatime,tcp ...\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group col-md-12\\\" ng-show=\\\"nfsInformationForm.nfs_options.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"nfsInformationForm.nfs_options.$error\\\">\\n <p ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n </div>\\n </div>\\n <!-- !options-input -->\\n </ng-form>\\n</div>\\n<!-- !NFS-settings -->\\n\";;\nvar path = 'app/docker/components/volumesNFSForm/volumesnfsForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Configs list'\\\" breadcrumbs=\\\"['Configs']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<docker-configs-datatable dataset=\\\"ctrl.configs\\\" on-remove-click=\\\"(ctrl.removeAction)\\\" on-refresh=\\\"(ctrl.getConfigs)\\\"></docker-configs-datatable>\\n\";;\nvar path = 'app/docker/views/configs/configs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create config'\\\" breadcrumbs=\\\"[{label:'Configs', link:'docker.configs'}, 'Add config']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"config_name\\\" class=\\\"col-sm-1 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"ctrl.formValues.Name\\\" id=\\\"config_name\\\" placeholder=\\\"e.g. myConfig\\\" />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- config-data -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"ctrl.formValues.displayCodeEditor\\\">\\n <web-editor-form\\n identifier=\\\"config-creation-editor\\\"\\n placeholder=\\\"Define or paste the content of your config here\\\"\\n yml=\\\"false\\\"\\n on-change=\\\"(ctrl.editorUpdate)\\\"\\n value=\\\"ctrl.formValues.ConfigContent\\\"\\n ></web-editor-form>\\n </div>\\n </div>\\n <!-- !config-data -->\\n <!-- labels -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 mt-1\\\">\\n <label class=\\\"control-label space-right text-left\\\">Labels</label>\\n <span class=\\\"label label-default interactive vertical-center space-left\\\" ng-click=\\\"ctrl.addLabel()\\\"> <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add label </span>\\n </div>\\n <!-- labels-input-list -->\\n <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n <div ng-repeat=\\\"label in ctrl.formValues.Labels\\\" class=\\\"mt-1\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.name\\\" placeholder=\\\"e.g. com.example.foo\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-6 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"e.g. bar\\\" />\\n <span class=\\\"input-group-btn\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"ctrl.removeLabel($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !labels-input-list -->\\n </div>\\n <!-- !labels-->\\n <!-- access-control -->\\n <por-access-control-form form-data=\\\"ctrl.formValues.AccessControlData\\\"></por-access-control-form>\\n <!-- !access-control -->\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!ctrl.formValues.Name\\\" ng-click=\\\"ctrl.create()\\\">Create config</button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"ctrl.state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ ctrl.state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/configs/create/createconfig.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Config details'\\\" breadcrumbs=\\\"[{label:'Configs', link:'docker.configs'}, config.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"clipboard\\\" title-text=\\\"Config details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Name</td>\\n <td>{{ config.Name }}</td>\\n </tr>\\n <tr>\\n <td>ID</td>\\n <td>\\n {{ config.Id }}\\n <button authorization=\\\"DockerConfigDelete\\\" class=\\\"btn btn-xs btn-dangerlight\\\" ng-click=\\\"removeConfig(config.Id)\\\"\\n ><pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Delete this config</button\\n >\\n <button authorization=\\\"DockerConfigCreate\\\" class=\\\"btn btn-xs btn-secondary\\\" ui-sref=\\\"docker.configs.new({id: config.Id})\\\"\\n ><pr-icon icon=\\\"'copy'\\\"></pr-icon>Clone config</button\\n >\\n </td>\\n </tr>\\n <tr>\\n <td>Created</td>\\n <td>{{ config.CreatedAt | getisodate }}</td>\\n </tr>\\n <tr>\\n <td>Last updated</td>\\n <td>{{ config.UpdatedAt | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"!(config.Labels | emptyobject)\\\">\\n <td>Labels</td>\\n <td>\\n <table class=\\\"table-bordered table-condensed table\\\">\\n <tr ng-repeat=\\\"(k, v) in config.Labels\\\">\\n <td>{{ k }}</td>\\n <td>{{ v }}</td>\\n </tr>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n ng-if=\\\"config\\\"\\n resource-id=\\\"config.Id\\\"\\n resource-control=\\\"config.ResourceControl\\\"\\n resource-type=\\\"resourceType\\\"\\n on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\\n<div class=\\\"row\\\" ng-if=\\\"config\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"code\\\" title-text=\\\"Config content\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <code-editor identifier=\\\"config-editor\\\" yml=\\\"false\\\" read-only=\\\"true\\\" value=\\\"config.Data\\\"></code-editor>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/configs/edit/config.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Container console'\\\"\\n breadcrumbs=\\\"[\\n { label:'Containers', link:'docker.containers' },\\n {\\n label:(container.Name | trimcontainername),\\n link: 'docker.containers.container',\\n linkParams: { id: container.Id },\\n }, 'Console']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-init=\\\"autoconnectAttachView()\\\" ng-show=\\\"loaded\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"terminal\\\" title-text=\\\"Attach\\\"></rd-widget-header>\\n <rd-widget-body>\\n <div class=\\\"small text-warning\\\" ng-if=\\\"!container.Config.OpenStdin\\\">\\n <p>\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n The interactive-flag is not set. You might not be able to use the console properly.\\n </p>\\n </div>\\n\\n <div class=\\\"small text-warning\\\" ng-if=\\\"!container.Config.Tty\\\">\\n <p>\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n The TTY-flag is not set. You might not be able to use the console properly.\\n </p>\\n </div>\\n\\n <div class=\\\"small text-warning\\\" ng-hide=\\\"container.State.Running\\\">\\n <p>\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n The container is not running.\\n </p>\\n </div>\\n\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary\\\"\\n ng-disabled=\\\"state === states.connecting || !container.State.Running\\\"\\n ng-click=\\\"state == states.disconnected ? connectAttach() : disconnect()\\\"\\n >\\n <span ng-show=\\\"state === states.disconnected\\\">Attach to Container</span>\\n <span ng-show=\\\"state === states.connected\\\">Detach</span>\\n <span ng-show=\\\"state === states.connecting\\\">Attaching...</span>\\n </button>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <div id=\\\"terminal-container\\\" class=\\\"terminal-container\\\"></div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/console/attach.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Container console'\\\"\\n breadcrumbs=\\\"[\\n { label:'Containers', link:'docker.containers' },\\n {\\n label:(container.Name | trimcontainername),\\n link: 'docker.containers.container',\\n linkParams: { id: container.Id },\\n }, 'Console']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-init=\\\"initView()\\\" ng-show=\\\"loaded\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"terminal\\\" title-text=\\\"Execute\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div ng-if=\\\"state === states.disconnected\\\">\\n <!-- command-list -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"command\\\" class=\\\"col-lg-1 col-sm-2 control-label text-left\\\">Command</label>\\n <div class=\\\"col-lg-11 col-sm-10\\\">\\n <div class=\\\"input-group\\\" ng-if=\\\"!formValues.isCustomCommand\\\">\\n <span class=\\\"input-group-addon\\\">\\n <pr-icon ng-if=\\\"imageOS == 'linux'\\\" icon=\\\"'svg-linux'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"imageOS == 'windows'\\\" icon=\\\"'layout-grid'\\\"></pr-icon>\\n </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"formValues.command\\\" id=\\\"command\\\">\\n <option value=\\\"ash\\\" ng-if=\\\"imageOS == 'linux'\\\">/bin/ash</option>\\n <option value=\\\"bash\\\" ng-if=\\\"imageOS == 'linux'\\\">/bin/bash</option>\\n <option value=\\\"sh\\\" ng-if=\\\"imageOS == 'linux'\\\">/bin/sh</option>\\n <option value=\\\"powershell\\\" ng-if=\\\"imageOS == 'windows'\\\">powershell</option>\\n <option value=\\\"cmd.exe\\\" ng-if=\\\"imageOS == 'windows'\\\">cmd.exe</option>\\n <option ng-repeat=\\\"command in containerCommands\\\" value=\\\"{{ command.command }}\\\">{{ command.title }}: {{ command.command }}</option>\\n </select>\\n </div>\\n <input class=\\\"form-control\\\" ng-if=\\\"formValues.isCustomCommand\\\" type=\\\"text\\\" name=\\\"custom-command\\\" ng-model=\\\"formValues.customCommand\\\" placeholder=\\\"e.g. ps aux\\\" />\\n </div>\\n </div>\\n <!-- !command-list -->\\n <div class=\\\"form-group col-lg-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-1'\\\"\\n checked=\\\"formValues.isCustomCommand\\\"\\n label=\\\"'Use custom command'\\\"\\n on-change=\\\"(handleIsCustomCommandChange)\\\"\\n ></por-switch-field>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-lg-1 col-sm-2 control-label text-left\\\">\\n User\\n <portainer-tooltip message=\\\"'Format is one of: user, user:group, uid or uid:gid'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-lg-11 col-sm-10\\\">\\n <input class=\\\"form-control\\\" type=\\\"text\\\" ng-model=\\\"formValues.user\\\" placeholder=\\\"root\\\" />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-disabled=\\\"!container.State.Running\\\" ng-click=\\\"connectExec()\\\">\\n <span>Connect</span>\\n </button>\\n <span class=\\\"small text-danger vertical-center\\\" ng-hide=\\\"container.State.Running\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n The container is not running.\\n </span>\\n </div>\\n </div>\\n </div>\\n <div ng-if=\\\"state !== states.disconnected\\\">\\n <label\\n >Exec into container as <code>{{ ::formValues.user || 'default user' }}</code> using command\\n <code>{{ formValues.isCustomCommand ? formValues.customCommand : formValues.command }}</code></label\\n >\\n <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-click=\\\"disconnect()\\\">\\n <span ng-show=\\\"state === states.connected\\\">Disconnect</span>\\n <span ng-show=\\\"state === states.connecting\\\">Connecting...</span>\\n </button>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <div id=\\\"terminal-container\\\" class=\\\"terminal-container\\\"></div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/console/exec.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create container'\\\" breadcrumbs=\\\"[{label:'Containers', link:'docker.containers'}, 'Add container']\\\"> </page-header>\\n\\n<information-panel title-text=\\\"Caution\\\" ng-if=\\\"state.mode == 'duplicate'\\\">\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n The new container may fail to start if the image is changed, and settings from the previous container aren't compatible. Common causes include entrypoint, cmd or\\n <a href=\\\"https://docs.portainer.io/user/docker/containers/advanced\\\" target=\\\"_blank\\\">other settings</a> set by an image.\\n </p>\\n </span>\\n</information-panel>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.name\\\" id=\\\"container_name\\\" placeholder=\\\"e.g. myContainer\\\" />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Image configuration </div>\\n <div ng-if=\\\"!formValues.RegistryModel.Registry && fromContainer\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span class=\\\"small text-danger\\\" style=\\\"margin-left: 5px\\\">\\n The Docker registry for the <code>{{ config.Image }}</code> image is not registered inside Portainer, you will not be able to create a container. Please register that\\n registry first.\\n </span>\\n </div>\\n <div ng-if=\\\"formValues.RegistryModel.Registry || !fromContainer\\\">\\n <!-- image-and-registry -->\\n <por-image-registry\\n model=\\\"formValues.RegistryModel\\\"\\n ng-if=\\\"formValues.RegistryModel.Registry\\\"\\n auto-complete=\\\"true\\\"\\n endpoint=\\\"endpoint\\\"\\n is-admin=\\\"isAdmin\\\"\\n check-rate-limits=\\\"formValues.alwaysPull\\\"\\n on-image-change=\\\"onImageNameChange()\\\"\\n set-validity=\\\"setPullImageValidity\\\"\\n >\\n <!-- always-pull -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n name=\\\"'alwaysPull'\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"formValues.alwaysPull\\\"\\n disabled=\\\"!state.pullImageValidity\\\"\\n label=\\\"'Always pull the image'\\\"\\n on-change=\\\"(onAlwaysPullChange)\\\"\\n tooltip=\\\"'When enabled, Portainer will automatically try to pull the specified image before creating the container.'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !always-pull -->\\n </por-image-registry>\\n <!-- !image-and-registry -->\\n </div>\\n\\n <!-- create-webhook -->\\n <div ng-if=\\\"isAdmin && applicationState.endpoint.type !== 4\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Webhooks </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n feature-id=\\\"'container-webhook'\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n label=\\\"'Create a container webhook'\\\"\\n tooltip=\\\"'Create a webhook (or callback URI) to automate the recreate this container. Sending a POST request to this callback URI (without requiring any authentication) will pull the most up-to-date version of the associated image and recreate this container.'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n </div>\\n <!-- !create-webhook -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Network ports configuration </div>\\n <!-- publish-exposed-ports -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"config.HostConfig.PublishAllPorts\\\"\\n label=\\\"'Publish all exposed network ports to random host ports'\\\"\\n on-change=\\\"(handlePublishAllPortsChange)\\\"\\n tooltip=\\\"'When enabled, Portainer will let Docker automatically map a random port on the host to each one defined in the image Dockerfile.'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !publish-exposed-ports -->\\n <!-- port-mapping -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">\\n Manual network port publishing\\n <portainer-tooltip\\n message=\\\"'When a range of ports on the host and a single port on the container is specified, Docker will randomly choose a single available port in the defined range and forward that to the container port.'\\\"\\n ></portainer-tooltip>\\n </label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addPortBinding()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> publish a new network port\\n </span>\\n </div>\\n <!-- port-mapping-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"portBinding in config.HostConfig.PortBindings\\\" style=\\\"margin-top: 2px\\\">\\n <!-- host-port -->\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">host</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.hostPort\\\" placeholder=\\\"e.g. 80, 80-88, ip:80 or ip:80-88 (optional)\\\" />\\n </div>\\n <!-- !host-port -->\\n <span style=\\\"margin: 0 10px 0 10px\\\">\\n <pr-icon icon=\\\"'arrow-right'\\\"></pr-icon>\\n </span>\\n <!-- container-port -->\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">container</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.containerPort\\\" placeholder=\\\"e.g. 80 or 80-88\\\" />\\n </div>\\n <!-- !container-port -->\\n <!-- protocol-actions -->\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.protocol\\\" uib-btn-radio=\\\"'tcp'\\\">TCP</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.protocol\\\" uib-btn-radio=\\\"'udp'\\\">UDP</label>\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removePortBinding($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- !protocol-actions -->\\n </div>\\n </div>\\n <!-- !port-mapping-input-list -->\\n </div>\\n <!-- !port-mapping -->\\n <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Deployment </div>\\n <!-- node-selection -->\\n <node-selector model=\\\"formValues.NodeName\\\" endpoint-id=\\\"endpoint.Id\\\"> </node-selector>\\n <!-- !node-selection -->\\n </div>\\n <!-- access-control -->\\n <por-access-control-form form-data=\\\"formValues.AccessControlData\\\" resource-control=\\\"fromContainer.ResourceControl\\\" ng-if=\\\"fromContainer\\\"></por-access-control-form>\\n <!-- !access-control -->\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <!-- autoremove -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"config.HostConfig.AutoRemove\\\"\\n label=\\\"'Auto remove'\\\"\\n on-change=\\\"(handleAutoRemoveChange)\\\"\\n tooltip=\\\"'When enabled, Portainer will automatically remove the container when it exits. This is useful when you want to use the container only once.'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !autoremove -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"state.actionInProgress || !formValues.RegistryModel.Image || (!formValues.RegistryModel.Registry && fromContainer)\\n || (fromContainer.IsPortainer && fromContainer.Name === '/' + config.name)\\\"\\n ng-click=\\\"create()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Deploy the container</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Deployment in progress...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"settings\\\" title-text=\\\"Advanced container settings\\\"></rd-widget-header>\\n <rd-widget-body>\\n <ul class=\\\"nav nav-pills nav-justified\\\">\\n <li class=\\\"active interactive\\\"><a data-target=\\\"#command\\\" data-toggle=\\\"tab\\\">Command & logging</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#volumes\\\" data-toggle=\\\"tab\\\">Volumes</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#network\\\" data-toggle=\\\"tab\\\">Network</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#env\\\" data-toggle=\\\"tab\\\">Env</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#labels\\\" data-toggle=\\\"tab\\\">Labels</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#restart-policy\\\" data-toggle=\\\"tab\\\">Restart policy</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#runtime-resources\\\" ng-mouseup=\\\"refreshSlider()\\\" data-toggle=\\\"tab\\\">Runtime & Resources</a></li>\\n <li ng-if=\\\"areContainerCapabilitiesEnabled\\\" class=\\\"interactive\\\"><a data-target=\\\"#container-capabilities\\\" data-toggle=\\\"tab\\\">Capabilities</a></li>\\n </ul>\\n <!-- tab-content -->\\n <div class=\\\"tab-content\\\">\\n <!-- tab-command -->\\n <div class=\\\"tab-pane active\\\" id=\\\"command\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <!-- command-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_command\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Command</label>\\n <div class=\\\"col-sm-9\\\">\\n <div class=\\\"input-group\\\">\\n <div class=\\\"input-group-btn\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.CmdMode\\\" uib-btn-radio=\\\"'default'\\\" style=\\\"margin-left: 0px\\\"> Default</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.CmdMode\\\" uib-btn-radio=\\\"'override'\\\">Override</label>\\n </div>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"config.Cmd\\\"\\n ng-disabled=\\\"formValues.CmdMode === 'default'\\\"\\n id=\\\"container_command\\\"\\n placeholder=\\\"e.g. '-logtostderr' '--housekeeping_interval=5s' or /usr/bin/nginx -t -c /mynginx.conf\\\"\\n />\\n </div>\\n </div>\\n </div>\\n <!-- !command-input -->\\n <!-- entrypoint-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_entrypoint\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">\\n Entrypoint\\n <portainer-tooltip\\n message=\\\"'When container entrypoint is entered as part of the Command field, set Entrypoint to Override mode and leave blank, else it will revert to default.'\\\"\\n ></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9\\\">\\n <div class=\\\"input-group\\\">\\n <div class=\\\"input-group-btn\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.EntrypointMode\\\" uib-btn-radio=\\\"'default'\\\" style=\\\"margin-left: 0px\\\"> Default</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.EntrypointMode\\\" uib-btn-radio=\\\"'override'\\\">Override</label>\\n </div>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"config.Entrypoint\\\"\\n ng-disabled=\\\"formValues.EntrypointMode === 'default'\\\"\\n id=\\\"container_entrypoint\\\"\\n placeholder=\\\"e.g. /bin/sh -c\\\"\\n />\\n </div>\\n </div>\\n </div>\\n <!-- !entrypoint-input -->\\n <!-- workdir-user-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_workingdir\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Working Dir</label>\\n <div class=\\\"col-sm-4\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.WorkingDir\\\" id=\\\"container_workingdir\\\" placeholder=\\\"e.g. /myapp\\\" />\\n </div>\\n <label for=\\\"container_user\\\" class=\\\"col-sm-1 control-label text-left\\\">User</label>\\n <div class=\\\"col-sm-4\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.User\\\" id=\\\"container_user\\\" placeholder=\\\"e.g. nginx\\\" />\\n </div>\\n </div>\\n <!-- !workdir-user-input -->\\n <!-- console -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_console\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Console</label>\\n <div class=\\\"col-sm-10 col-lg-11\\\">\\n <div class=\\\"col-sm-4\\\">\\n <label class=\\\"radio-inline\\\">\\n <input type=\\\"radio\\\" name=\\\"container_console\\\" ng-model=\\\"formValues.Console\\\" value=\\\"both\\\" />\\n Interactive & TTY <span class=\\\"small text-muted\\\">(-i -t)</span>\\n </label>\\n </div>\\n <div class=\\\"col-sm-4\\\">\\n <label class=\\\"radio-inline\\\">\\n <input type=\\\"radio\\\" name=\\\"container_console\\\" ng-model=\\\"formValues.Console\\\" value=\\\"interactive\\\" />\\n Interactive <span class=\\\"small text-muted\\\">(-i)</span>\\n </label>\\n </div>\\n </div>\\n <div class=\\\"col-sm-offset-2 col-sm-10 col-lg-offset-1 col-lg-11\\\">\\n <div class=\\\"col-sm-4\\\">\\n <label class=\\\"radio-inline\\\">\\n <input type=\\\"radio\\\" name=\\\"container_console\\\" ng-model=\\\"formValues.Console\\\" value=\\\"tty\\\" />\\n TTY <span class=\\\"small text-muted\\\">(-t)</span>\\n </label>\\n </div>\\n <div class=\\\"col-sm-4\\\">\\n <label class=\\\"radio-inline\\\">\\n <input type=\\\"radio\\\" name=\\\"container_console\\\" ng-model=\\\"formValues.Console\\\" value=\\\"none\\\" />\\n None\\n </label>\\n </div>\\n </div>\\n </div>\\n <!-- !console -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Logging </div>\\n <!-- logging-driver -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"log-driver\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Driver</label>\\n <div class=\\\"col-sm-4\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"formValues.LogDriverName\\\" id=\\\"log-driver\\\">\\n <option selected value=\\\"\\\">Default logging driver</option>\\n <option ng-repeat=\\\"driver in availableLoggingDrivers\\\" ng-value=\\\"driver\\\">{{ driver }}</option>\\n <option value=\\\"none\\\">none</option>\\n </select>\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\">\\n Logging driver that will override the default docker daemon driver. Select Default logging driver if you don't want to override it. Supported logging drivers\\n can be found <a href=\\\"https://docs.docker.com/engine/admin/logging/overview/#supported-logging-drivers\\\" target=\\\"_blank\\\">in the Docker documentation</a>.\\n </p>\\n </div>\\n </div>\\n <!-- !logging-driver -->\\n <!-- logging-opts -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">\\n Options\\n <portainer-tooltip\\n position=\\\"'top'\\\"\\n message=\\\"'Add button is disabled unless a driver other than none or default is selected. Options are specific to the selected driver, refer to the driver documentation.'\\\"\\n ></portainer-tooltip>\\n </label>\\n <span\\n class=\\\"label label-default interactive\\\"\\n style=\\\"margin-left: 10px\\\"\\n ng-click=\\\"!formValues.LogDriverName || formValues.LogDriverName === 'none' || addLogDriverOpt(formValues.LogDriverName)\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add logging driver option\\n </span>\\n </div>\\n <!-- logging-opts-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"opt in formValues.LogDriverOpts\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">option</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"opt.name\\\" placeholder=\\\"e.g. FOO\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"opt.value\\\" placeholder=\\\"e.g. bar\\\" />\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeLogDriverOpt($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- logging-opts-input-list -->\\n </div>\\n <!-- !logging-opts -->\\n </form>\\n </div>\\n <!-- !tab-command -->\\n <!-- tab-volume -->\\n <div class=\\\"tab-pane\\\" id=\\\"volumes\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <!-- volumes -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Volume mapping</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addVolume()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> map additional volume\\n </span>\\n </div>\\n <!-- volumes-input-list -->\\n <div class=\\\"form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"volume in formValues.Volumes\\\">\\n <!-- volume-line1 -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <!-- container-path -->\\n <div class=\\\"input-group input-group-sm col-sm-6\\\">\\n <span class=\\\"input-group-addon\\\">container</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.containerPath\\\" placeholder=\\\"e.g. /path/in/container\\\" />\\n </div>\\n <!-- !container-path -->\\n <!-- volume-type -->\\n <div class=\\\"input-group col-sm-5\\\" style=\\\"margin-left: 5px\\\">\\n <div class=\\\"btn-group btn-group-sm\\\" ng-if=\\\"allowBindMounts\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'volume'\\\" ng-click=\\\"volume.name = ''\\\">Volume</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'bind'\\\" ng-click=\\\"volume.name = ''\\\">Bind</label>\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeVolume($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- !volume-type -->\\n </div>\\n <!-- !volume-line1 -->\\n <!-- volume-line2 -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 5px\\\">\\n <pr-icon icon=\\\"'arrow-right'\\\"></pr-icon>\\n <!-- volume -->\\n <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.type === 'volume'\\\">\\n <span class=\\\"input-group-addon\\\">volume</span>\\n <select class=\\\"form-control\\\" ng-model=\\\"volume.name\\\">\\n <option selected disabled hidden value=\\\"\\\">Select a volume</option>\\n <option ng-repeat=\\\"vol in availableVolumes\\\" ng-value=\\\"vol.Name\\\">{{ vol.Name | truncate : 30 }} - {{ vol.Driver | truncate : 30 }}</option>\\n </select>\\n </div>\\n <!-- !volume -->\\n <!-- bind -->\\n <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.type === 'bind'\\\">\\n <span class=\\\"input-group-addon\\\">host</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.name\\\" placeholder=\\\"e.g. /path/on/host\\\" />\\n </div>\\n <!-- !bind -->\\n <!-- read-only -->\\n <div class=\\\"input-group input-group-sm col-sm-5\\\" style=\\\"margin-left: 5px\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.readOnly\\\" uib-btn-radio=\\\"false\\\">Writable</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.readOnly\\\" uib-btn-radio=\\\"true\\\">Read-only</label>\\n </div>\\n </div>\\n <!-- !read-only -->\\n </div>\\n <!-- !volume-line2 -->\\n </div>\\n </div>\\n <!-- !volumes-input-list -->\\n </div>\\n </form>\\n <!-- !volumes -->\\n </div>\\n <!-- !tab-volume -->\\n <!-- tab-network -->\\n <div class=\\\"tab-pane\\\" id=\\\"network\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"form-group\\\" ng-if=\\\"globalNetworkCount === 0 && applicationState.endpoint.mode.provider !== 'DOCKER_SWARM_MODE'\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">You don't have any shared networks. Head over to the <a ui-sref=\\\"docker.networks\\\">networks view</a> to create one.</span>\\n </div>\\n </div>\\n <!-- network-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_network\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Network</label>\\n <div class=\\\"col-sm-9\\\">\\n <select\\n class=\\\"form-control\\\"\\n ng-options=\\\"net.Name as net.Name for net in availableNetworks\\\"\\n ng-model=\\\"config.HostConfig.NetworkMode\\\"\\n id=\\\"container_network\\\"\\n ng-change=\\\"resetNetworkConfig()\\\"\\n >\\n <option selected disabled hidden value=\\\"\\\">Select a network</option>\\n </select>\\n </div>\\n </div>\\n <!-- !network-input -->\\n <!-- container-name-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"config.HostConfig.NetworkMode == 'container'\\\">\\n <label for=\\\"container_network_container\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Container</label>\\n <div class=\\\"col-sm-9\\\">\\n <select ng-options=\\\"container|containername for container in runningContainers\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.NetworkContainer\\\">\\n <option selected disabled hidden value=\\\"\\\">Select a container</option>\\n </select>\\n </div>\\n </div>\\n <!-- !container-name-input -->\\n <!-- hostname-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_hostname\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Hostname</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.Hostname\\\" id=\\\"container_hostname\\\" placeholder=\\\"e.g. web01\\\" />\\n </div>\\n </div>\\n <!-- !hostname-input -->\\n <!-- domainname-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_domainname\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Domain Name</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.Domainname\\\" id=\\\"container_domainname\\\" placeholder=\\\"e.g. example.com\\\" />\\n </div>\\n </div>\\n <!-- !domainname -->\\n <!-- mac-address-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_macaddress\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Mac Address</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.MacAddress\\\" id=\\\"container_macaddress\\\" placeholder=\\\"e.g. 12-34-56-78-9a-bc\\\" />\\n </div>\\n </div>\\n <!-- !mac-address-input -->\\n <!-- ipv4-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_ipv4\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">IPv4 Address</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPv4\\\" id=\\\"container_ipv4\\\" placeholder=\\\"e.g. 172.20.0.7\\\" />\\n </div>\\n </div>\\n <!-- !ipv4-input -->\\n <!-- ipv6-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_ipv6\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">IPv6 Address</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPv6\\\" id=\\\"container_ipv6\\\" placeholder=\\\"e.g. a:b:c:d::1234\\\" />\\n </div>\\n </div>\\n <!-- !ipv6-input -->\\n <!-- dns-primary-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_dns_primary\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Primary DNS Server</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.DnsPrimary\\\" id=\\\"container_dns_primary\\\" placeholder=\\\"e.g. 1.1.1.1, 2606:4700:4700::1111\\\" />\\n </div>\\n </div>\\n <!-- !dns-primary-input -->\\n <!-- dns-secondary-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_dns_secondary\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Secondary DNS Server</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.DnsSecondary\\\" id=\\\"container_dns_secondary\\\" placeholder=\\\"e.g. 1.0.0.1, 2606:4700:4700::1001\\\" />\\n </div>\\n </div>\\n <!-- !dns-secondary-input -->\\n <!-- extra-hosts-variables -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Hosts file entries</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addExtraHost()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add additional entry\\n </span>\\n </div>\\n <!-- extra-hosts-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"variable in formValues.ExtraHosts\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"variable.value\\\" placeholder=\\\"e.g. host:IP\\\" />\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeExtraHost($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !extra-hosts-input-list -->\\n </div>\\n <!-- !extra-hosts-variables -->\\n </form>\\n </div>\\n <!-- !tab-network -->\\n <!-- tab-labels -->\\n <div class=\\\"tab-pane\\\" id=\\\"labels\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <!-- labels -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Labels</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addLabel()\\\"> <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add label </span>\\n </div>\\n <!-- labels-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"label in formValues.Labels\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.name\\\" placeholder=\\\"e.g. com.example.foo\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"e.g. bar\\\" />\\n </div>\\n <button class=\\\"btn btn-sm btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !labels-input-list -->\\n </div>\\n <!-- !labels-->\\n </form>\\n </div>\\n <!-- !tab-labels -->\\n <!-- tab-env -->\\n <div class=\\\"tab-pane\\\" id=\\\"env\\\">\\n <div class=\\\"form-horizontal\\\">\\n <environment-variables-panel\\n values=\\\"formValues.Env\\\"\\n explanation=\\\"'These values will be applied to the container when deployed'\\\"\\n on-change=\\\"(handleEnvVarChange)\\\"\\n ></environment-variables-panel>\\n </div>\\n </div>\\n <!-- !tab-env -->\\n <!-- tab-restart-policy -->\\n <div class=\\\"tab-pane\\\" id=\\\"restart-policy\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\"> Restart policy </label>\\n <div class=\\\"btn-group btn-group-sm\\\" style=\\\"margin-left: 20px\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"config.HostConfig.RestartPolicy.Name\\\" uib-btn-radio=\\\"'no'\\\"> Never </label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"config.HostConfig.RestartPolicy.Name\\\" uib-btn-radio=\\\"'always'\\\"> Always </label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"config.HostConfig.RestartPolicy.Name\\\" uib-btn-radio=\\\"'on-failure'\\\"> On failure </label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"config.HostConfig.RestartPolicy.Name\\\" uib-btn-radio=\\\"'unless-stopped'\\\"> Unless stopped </label>\\n </div>\\n </div>\\n </div>\\n </form>\\n </div>\\n <!-- !tab-restart-policy -->\\n <!-- tab-runtime-resources -->\\n <div class=\\\"tab-pane\\\" id=\\\"runtime-resources\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Runtime </div>\\n <!-- privileged-mode -->\\n <div class=\\\"form-group\\\" ng-if=\\\"isAdmin || allowPrivilegedMode\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"config.HostConfig.Privileged\\\"\\n label=\\\"'Privileged mode'\\\"\\n on-change=\\\"(handlePrivilegedChange)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !privileged-mode -->\\n <!-- init -->\\n <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.37\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field label-class=\\\"'col-sm-2'\\\" checked=\\\"config.HostConfig.Init\\\" label=\\\"'Init'\\\" on-change=\\\"(handleInitChange)\\\"></por-switch-field>\\n </div>\\n </div>\\n <!-- !init -->\\n <!-- runtimes -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_runtime\\\" class=\\\"col-sm-1 control-label text-left\\\">Runtime</label>\\n <div class=\\\"col-sm-11\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"config.HostConfig.Runtime\\\" id=\\\"container_runtime\\\" ng-options=\\\"runtime for runtime in availableRuntimes\\\">\\n <option selected value=\\\"\\\">Default</option>\\n </select>\\n </div>\\n </div>\\n <!-- !runtimes -->\\n </form>\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\" name=\\\"resourceForm\\\">\\n <!-- devices -->\\n <div ng-if=\\\"showDeviceMapping\\\" class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Devices</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addDevice()\\\"> <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add device </span>\\n </div>\\n <!-- devices-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"device in config.HostConfig.Devices\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">host</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"device.pathOnHost\\\" placeholder=\\\"e.g. /dev/tty0\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">container</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"device.pathInContainer\\\" placeholder=\\\"e.g. /dev/tty0\\\" />\\n </div>\\n <button class=\\\"btn btn-sm btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeDevice($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !devices-input-list -->\\n </div>\\n <!-- !devices-->\\n <!-- sysctls -->\\n <div ng-if=\\\"showSysctls\\\" class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Sysctls</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addSysctl()\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> add sysctl </span>\\n </div>\\n <!-- sysctls-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"sysctl in formValues.Sysctls\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"sysctl.name\\\" placeholder=\\\"e.g. FOO\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"sysctl.value\\\" placeholder=\\\"e.g. bar\\\" />\\n </div>\\n <button class=\\\"btn btn-sm btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeSysctl($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !sysctls-input-list -->\\n </div>\\n <!-- !sysctls -->\\n <!-- shm-size-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"shm-size\\\" class=\\\"col-sm-2 control-label text-left\\\"> Shared memory size </label>\\n <div class=\\\"col-sm-2\\\">\\n <input type=\\\"number\\\" min=\\\"1\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.ShmSize\\\" id=\\\"shm-size\\\" />\\n </div>\\n <div class=\\\"col-sm-2\\\">\\n <p class=\\\"small text-muted mt-2\\\"> Size of /dev/shm (<b>MB</b>) </p>\\n </div>\\n </div>\\n <!-- !shm-size-input -->\\n <!-- #region GPU -->\\n <div ng-if=\\\"applicationState.endpoint.mode.provider === 'DOCKER_STANDALONE'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> GPU </div>\\n\\n <gpu\\n ng-if=\\\"applicationState.endpoint.apiVersion >= 1.4\\\"\\n values=\\\"formValues.GPU\\\"\\n on-change=\\\"(onGpuChange)\\\"\\n gpus=\\\"endpoint.Gpus\\\"\\n used-gpus=\\\"gpuUseList\\\"\\n used-all-gpus=\\\"gpuUseAll\\\"\\n enable-gpu-management=\\\"endpoint.EnableGPUManagement\\\"\\n >\\n </gpu>\\n </div>\\n\\n <!-- #endregion GPU -->\\n <div ng-class=\\\"{ 'edit-resources': state.mode == 'duplicate' }\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Resources </div>\\n <!-- memory-reservation-input -->\\n <div class=\\\"form-group flex\\\">\\n <label for=\\\"memory-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label vertical-center text-left\\\"> Memory reservation (MB) </label>\\n <div class=\\\"col-sm-6\\\">\\n <slider\\n on-change=\\\"(handleResourceChange)\\\"\\n model=\\\"formValues.MemoryReservation\\\"\\n floor=\\\"0\\\"\\n ceil=\\\"state.sliderMaxMemory\\\"\\n step=\\\"256\\\"\\n ng-if=\\\"state.sliderMaxMemory\\\"\\n ></slider>\\n </div>\\n <div class=\\\"col-sm-2 vertical-center\\\">\\n <input\\n name=\\\"memory_reservation\\\"\\n type=\\\"number\\\"\\n min=\\\"0\\\"\\n max=\\\"{{ state.sliderMaxMemory }}\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"formValues.MemoryReservation\\\"\\n id=\\\"memory-reservation\\\"\\n required\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"resourceForm.memory_reservation.$invalid\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8 small text-muted\\\">\\n <div ng-messages=\\\"resourceForm.memory-reservation.$error\\\">\\n <p class=\\\"vertical-center text-warning\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Value must be between 0 and {{ state.sliderMaxMemory }}.\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- !memory-reservation-input -->\\n <!-- memory-limit-input -->\\n <div class=\\\"form-group flex\\\">\\n <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label vertical-center text-left\\\"> Memory limit (MB) </label>\\n <div class=\\\"col-sm-6\\\">\\n <slider\\n on-change=\\\"(handleResourceChange)\\\"\\n model=\\\"formValues.MemoryLimit\\\"\\n floor=\\\"0\\\"\\n ceil=\\\"state.sliderMaxMemory\\\"\\n step=\\\"256\\\"\\n ng-if=\\\"state.sliderMaxMemory\\\"\\n ></slider>\\n </div>\\n <div class=\\\"col-sm-2 vertical-center\\\">\\n <input\\n name=\\\"memory_Limit\\\"\\n type=\\\"number\\\"\\n min=\\\"0\\\"\\n max=\\\"{{ state.sliderMaxMemory }}\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"formValues.MemoryLimit\\\"\\n id=\\\"memory-limit\\\"\\n required\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"resourceForm.memory_Limit.$invalid\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8 small text-muted\\\">\\n <div ng-messages=\\\"resourceForm.memory-limit.$error\\\">\\n <p class=\\\"vertical-center text-warning\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Value must be between 0 and {{ state.sliderMaxMemory }}.\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- !memory-limit-input -->\\n <!-- cpu-limit-input -->\\n <div class=\\\"form-group flex\\\">\\n <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label vertical-center text-left\\\"> Maximum CPU usage </label>\\n <div class=\\\"col-sm-8\\\">\\n <slider\\n on-change=\\\"(handleResourceChange)\\\"\\n model=\\\"formValues.CpuLimit\\\"\\n floor=\\\"0\\\"\\n ceil=\\\"state.sliderMaxCpu\\\"\\n step=\\\"0.1\\\"\\n precision=\\\"2\\\"\\n ng-if=\\\"state.sliderMaxCpu\\\"\\n ></slider>\\n </div>\\n </div>\\n <!-- !cpu-limit-input -->\\n\\n <!-- update-limit-btn -->\\n <div class=\\\"form-group\\\" ng-if=\\\"state.mode == 'duplicate'\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress || !formValues.RegistryModel.Image || (!formValues.RegistryModel.Registry && fromContainer)\\\"\\n ng-click=\\\"update()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Update Limits</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Update in progress...</span>\\n </button>\\n </div>\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"state.settingUnlimitedResources\\\">\\n <p class=\\\"text-muted mr-4\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class-name=\\\"'mt-10'\\\"></pr-icon>\\n Updating any resource value to ‘unlimited' will redeploy this container.\\n </p>\\n </div>\\n </div>\\n <!-- !update-limit-btn -->\\n </div>\\n </form>\\n </div>\\n <!-- !tab-runtime-resources -->\\n <!-- tab-container-capabilities -->\\n <div class=\\\"tab-pane\\\" id=\\\"container-capabilities\\\">\\n <container-capabilities capabilities=\\\"formValues.capabilities\\\"></container-capabilities>\\n </div>\\n <!-- !tab-container-capabilities -->\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/create/createcontainer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Container details'\\\" breadcrumbs=\\\"[{label:'Containers', link:'docker.containers'}, (container.Name | trimcontainername)]\\\"> </page-header>\\n\\n<div\\n class=\\\"row\\\"\\n authorization=\\\"DockerContainerStart, DockerContainerStop, DockerContainerKill, DockerContainerRestart, DockerContainerPause, DockerContainerUnpause, DockerContainerDelete, DockerContainerCreate\\\"\\n>\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"settings\\\" title-text=\\\"Actions\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"padding\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n <button authorization=\\\"DockerContainerStart\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"start()\\\" ng-disabled=\\\"container.State.Running || container.IsPortainer\\\">\\n <pr-icon icon=\\\"'play'\\\"></pr-icon>\\n Start\\n </button>\\n <button authorization=\\\"DockerContainerStop\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"stop()\\\" ng-disabled=\\\"!container.State.Running || container.IsPortainer\\\">\\n <pr-icon icon=\\\"'square'\\\"></pr-icon>\\n Stop\\n </button>\\n <button authorization=\\\"DockerContainerKill\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"kill()\\\" ng-disabled=\\\"!container.State.Running || container.IsPortainer\\\">\\n <pr-icon icon=\\\"'bomb'\\\"></pr-icon>\\n Kill\\n </button>\\n <button authorization=\\\"DockerContainerRestart\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"restart()\\\" ng-disabled=\\\"!container.State.Running || container.IsPortainer\\\">\\n <pr-icon icon=\\\"'refresh-cw'\\\"></pr-icon>\\n Restart</button\\n >\\n <button\\n authorization=\\\"DockerContainerPause\\\"\\n class=\\\"btn btn-light btn-sm\\\"\\n ng-click=\\\"pause()\\\"\\n ng-disabled=\\\"!container.State.Running || container.State.Paused || container.IsPortainer\\\"\\n >\\n <pr-icon icon=\\\"'pause'\\\"></pr-icon>\\n Pause</button\\n >\\n <button authorization=\\\"DockerContainerUnpause\\\" class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"unpause()\\\" ng-disabled=\\\"!container.State.Paused || container.IsPortainer\\\">\\n <pr-icon icon=\\\"'play'\\\"></pr-icon>\\n Resume</button\\n >\\n <button authorization=\\\"DockerContainerDelete\\\" class=\\\"btn btn-dangerlight btn-sm\\\" ng-click=\\\"confirmRemove()\\\" ng-disabled=\\\"container.IsPortainer\\\">\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Remove</button\\n >\\n </div>\\n <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\" ng-if=\\\"displayRecreateButton\\\" authorization=\\\"DockerContainerCreate\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-light btn-sm\\\"\\n ng-disabled=\\\"state.recreateContainerInProgress || container.IsPortainer\\\"\\n ng-click=\\\"recreate()\\\"\\n button-spinner=\\\"state.recreateContainerInProgress\\\"\\n >\\n <span ng-hide=\\\"state.recreateContainerInProgress\\\" class=\\\"flex items-center\\\">\\n <pr-icon icon=\\\"'refresh-cw'\\\" class-name=\\\"'!mr-1'\\\"></pr-icon>\\n Recreate</span\\n >\\n <span ng-show=\\\"state.recreateContainerInProgress\\\">Recreation in progress...</span>\\n </button>\\n <a class=\\\"btn btn-light btn-sm\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.new({ from: container.Id, nodeName: nodeName })\\\" ng-disabled=\\\"container.IsPortainer\\\">\\n <pr-icon icon=\\\"'copy'\\\"></pr-icon>\\n Duplicate/Edit</a\\n >\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"box\\\" title-text=\\\"Container status\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td class=\\\"col-xs-6 col-sm-4 col-md-3 col-lg-3\\\">ID</td>\\n <td>{{ container.Id }}</td>\\n </tr>\\n <tr>\\n <td>Name</td>\\n <td ng-if=\\\"!container.edit\\\">\\n {{ container.Name | trimcontainername }}\\n <a authorization=\\\"DockerContainerRename\\\" href=\\\"\\\" data-toggle=\\\"tooltip\\\" title=\\\"Edit container name\\\" ng-click=\\\"container.edit = true;\\\"\\n ><pr-icon icon=\\\"'edit'\\\" class-name=\\\"'space-right'\\\"></pr-icon\\n ></a>\\n </td>\\n <td ng-if=\\\"container.edit\\\">\\n <form ng-submit=\\\"renameContainer()\\\">\\n <input type=\\\"text\\\" class=\\\"containerNameInput\\\" ng-model=\\\"container.newContainerName\\\" />\\n <a href=\\\"\\\" ng-click=\\\"container.edit = false;\\\">\\n <pr-icon icon=\\\"'x'\\\"></pr-icon>\\n </a>\\n <a href=\\\"\\\" ng-click=\\\"renameContainer()\\\">\\n <pr-icon icon=\\\"'check'\\\"></pr-icon>\\n </a>\\n </form>\\n </td>\\n </tr>\\n <tr ng-if=\\\"container.NetworkSettings.IPAddress\\\">\\n <td>IP address</td>\\n <td>{{ container.NetworkSettings.IPAddress }}</td>\\n </tr>\\n <tr>\\n <td>Status</td>\\n <td>\\n <pr-icon ng-if=\\\"container.State.Running\\\" icon=\\\"'heart-pulse'\\\" mode=\\\"'success'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!container.State.Running && container.State.Status !== 'created'\\\" icon=\\\"'heart-pulse'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n {{ container.State | getstatetext }} for {{ activityTime\\n }}<span ng-if=\\\"!container.State.Running && container.State.Status !== 'created'\\\"> with exit code {{ container.State.ExitCode }}</span>\\n </td>\\n </tr>\\n <tr>\\n <td>Created</td>\\n <td>{{ container.Created | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"container.State.Running\\\">\\n <td>Start time</td>\\n <td>{{ container.State.StartedAt | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"!container.State.Running && container.State.Status !== 'created'\\\">\\n <td>Finished</td>\\n <td>{{ container.State.FinishedAt | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"isAdmin && displayCreateWebhookButton && applicationState.endpoint.type !== 4\\\">\\n <td colspan=\\\"6\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n tooltip=\\\"'Webhook (or callback URI) used to automate the recreation of this container. Sending a POST request to this callback URI (without requiring any authentication) will pull the most up-to-date version of the associated image and recreate this container.'\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n label=\\\"'Container webhook'\\\"\\n feature-id=\\\"'container-webhook'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n </td>\\n </tr>\\n <tr authorization=\\\"DockerContainerLogs, DockerContainerInspect, DockerContainerStats, DockerExecStart\\\">\\n <td colspan=\\\"2\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n <a authorization=\\\"DockerContainerLogs\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.logs({ id: container.Id })\\\"\\n ><pr-icon icon=\\\"'file-text'\\\" class-name=\\\"'space-right'\\\"></pr-icon>Logs</a\\n >\\n <a authorization=\\\"DockerContainerInspect\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.inspect({ id: container.Id })\\\"\\n ><pr-icon icon=\\\"'info'\\\" class-name=\\\"'space-right'\\\"></pr-icon>Inspect</a\\n >\\n <a authorization=\\\"DockerContainerStats\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.stats({ id: container.Id })\\\"\\n ><pr-icon icon=\\\"'bar-chart'\\\" class-name=\\\"'space-right'\\\"></pr-icon>Stats</a\\n >\\n <a authorization=\\\"DockerExecStart\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.exec({ id: container.Id })\\\"\\n ><pr-icon icon=\\\"'terminal'\\\" class-name=\\\"'space-right'\\\"></pr-icon>Console</a\\n >\\n <a authorization=\\\"DockerContainerAttach\\\" class=\\\"btn\\\" type=\\\"button\\\" ui-sref=\\\"docker.containers.container.attach({ id: container.Id })\\\"\\n ><pr-icon icon=\\\"'paperclip'\\\" class-name=\\\"'space-right'\\\"></pr-icon>Attach</a\\n >\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n ng-if=\\\"container\\\"\\n resource-id=\\\"container.Id\\\"\\n resource-control=\\\"container.ResourceControl\\\"\\n resource-type=\\\"resourceType\\\"\\n on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\\n<docker-health-status ng-if=\\\"container.State.Health\\\" health=\\\"container.State.Health\\\"></docker-health-status>\\n\\n<div class=\\\"row\\\" authorization=\\\"DockerImageCreate\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Create image\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <!-- tag-description -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">\\n You can create an image from this container, this allows you to backup important data or save helpful configurations. You'll be able to spin up another container\\n based on this image afterward.\\n </span>\\n </div>\\n </div>\\n <!-- !tag-description -->\\n <!-- image-and-registry -->\\n <por-image-registry\\n model=\\\"config.RegistryModel\\\"\\n auto-complete=\\\"true\\\"\\n label-class=\\\"col-sm-1\\\"\\n input-class=\\\"col-sm-11\\\"\\n endpoint=\\\"endpoint\\\"\\n is-admin=\\\"isAdmin\\\"\\n set-validity=\\\"setPullImageValidity\\\"\\n check-rate-limits=\\\"true\\\"\\n ></por-image-registry>\\n <!-- !image-and-registry -->\\n <!-- tag-note -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">Note: if you don't specify the tag in the image name, <span class=\\\"label label-default\\\">latest</span> will be used.</span>\\n </div>\\n </div>\\n <!-- !tag-note -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"!state.pullImageValidity || !config.RegistryModel.Image || config.commitInProgress\\\"\\n ng-click=\\\"commit()\\\"\\n >\\n Create\\n </button>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Container details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"container-details-table table\\\">\\n <tbody>\\n <tr>\\n <td>Image</td>\\n <td\\n ><a ui-sref=\\\"docker.images.image({ id: container.Image, nodeName: nodeName })\\\">{{ container.Config.Image }}@{{ container.Image }}</a></td\\n >\\n </tr>\\n <tr ng-if=\\\"portBindings.length > 0\\\">\\n <td>Port configuration</td>\\n <td>\\n <div ng-repeat=\\\"portMapping in portBindings\\\">\\n {{ portMapping.host }}\\n <pr-icon icon=\\\"'arrow-right'\\\"></pr-icon>\\n {{ portMapping.container }}\\n </div>\\n </td>\\n </tr>\\n <tr>\\n <td>CMD</td>\\n <td\\n ><code>{{ container.Config.Cmd | command }}</code></td\\n >\\n </tr>\\n <tr>\\n <td>ENTRYPOINT</td>\\n <td\\n ><code>{{ container.Config.Entrypoint ? (container.Config.Entrypoint | command) : 'null' }}</code></td\\n >\\n </tr>\\n <tr>\\n <td>ENV</td>\\n <td>\\n <table class=\\\"table-bordered table-condensed table\\\">\\n <tr ng-repeat=\\\"var in container.Config.Env track by $index\\\">\\n <td>{{ var|key: '=' }}</td>\\n <td>{{ var|value: '=' }}</td>\\n </tr>\\n </table>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!(container.Config.Labels | emptyobject)\\\">\\n <td>Labels</td>\\n <td>\\n <table class=\\\"table-bordered table-condensed table\\\">\\n <tr ng-repeat=\\\"(k, v) in container.Config.Labels\\\">\\n <td>{{ k }}</td>\\n <td>{{ v }}</td>\\n </tr>\\n </table>\\n </td>\\n </tr>\\n <tr>\\n <td>Restart policies</td>\\n <td>\\n <container-restart-policy\\n ng-if=\\\"container\\\"\\n name=\\\"container.HostConfig.RestartPolicy.Name\\\"\\n maximum-retry-count=\\\"container.HostConfig.RestartPolicy.MaximumRetryCount\\\"\\n update-restart-policy=\\\"updateRestartPolicy(name, maximumRetryCount)\\\"\\n >\\n </container-restart-policy>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!(container.HostConfig.Sysctls | emptyobject)\\\">\\n <td>Sysctls</td>\\n <td>\\n <table class=\\\"table-bordered table-condensed table\\\">\\n <tr ng-repeat=\\\"(k, v) in container.HostConfig.Sysctls\\\">\\n <td>{{ k }}</td>\\n <td>{{ v }}</td>\\n </tr>\\n </table>\\n </td>\\n </tr>\\n <tr ng-if=\\\"container.HostConfig.DeviceRequests.length\\\">\\n <td>GPUS</td>\\n <td>{{ computeDockerGPUCommand() }}</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\" ng-if=\\\"container.Mounts.length > 0\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"database\\\" title-text=\\\"Volumes\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Host/volume</th>\\n <th>Path in container</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"vol in container.Mounts\\\">\\n <td ng-if=\\\"vol.Type === 'bind'\\\">{{ vol.Source }}</td>\\n <td ng-if=\\\"vol.Type === 'volume'\\\"\\n ><a ui-sref=\\\"docker.volumes.volume({ id: vol.Name, nodeName: nodeName })\\\">{{ vol.Name }}</a></td\\n >\\n <td>{{ vol.Destination }}</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <container-networks-datatable\\n ng-if=\\\"container.NetworkSettings.Networks\\\"\\n title-text=\\\"Connected networks\\\"\\n title-icon=\\\"share-2\\\"\\n dataset=\\\"container.NetworkSettings.Networks\\\"\\n table-key=\\\"container-networks\\\"\\n container=\\\"container\\\"\\n available-networks=\\\"availableNetworks\\\"\\n join-network-action=\\\"containerJoinNetwork\\\"\\n join-network-action-in-progress=\\\"state.joinNetworkInProgress\\\"\\n leave-network-action=\\\"containerLeaveNetwork\\\"\\n leave-network-action-in-progress=\\\"state.leaveNetworkInProgress\\\"\\n node-name=\\\"nodeName\\\"\\n ></container-networks-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/edit/container.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Container inspect'\\\"\\n breadcrumbs=\\\"[\\n { label:'Containers', link:'docker.containers' },\\n {\\n label:(containerInfo.Name | trimcontainername),\\n link: 'docker.containers.container',\\n linkParams: { id: containerInfo.Id },\\n }, 'Inspect']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"circle\\\" title-text=\\\"Inspect\\\">\\n <span class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"state.DisplayTextView\\\" uib-btn-radio=\\\"false\\\"><pr-icon icon=\\\"'code'\\\"></pr-icon>Tree</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"state.DisplayTextView\\\" uib-btn-radio=\\\"true\\\"><pr-icon icon=\\\"'file'\\\"></pr-icon>Text</label>\\n </span>\\n </rd-widget-header>\\n <rd-widget-body>\\n <pre ng-show=\\\"state.DisplayTextView\\\">{{ containerInfo | json : 4 }}</pre>\\n <json-tree ng-hide=\\\"state.DisplayTextView\\\" object=\\\"containerInfo\\\" root-name=\\\"containerInfo.Id\\\" start-expanded=\\\"true\\\"></json-tree>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/inspect/containerinspect.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Container logs'\\\"\\n breadcrumbs=\\\"[\\n { label:'Containers', link:'docker.containers' },\\n { \\n label:(container.Name | trimcontainername),\\n link: 'docker.containers.container', \\n linkParams:container.Id\\n }, 'Logs']\\\"\\n>\\n</page-header>\\n\\n<log-viewer\\n data=\\\"logs\\\"\\n ng-if=\\\"logs\\\"\\n log-collection-change=\\\"changeLogCollection\\\"\\n display-timestamps=\\\"state.displayTimestamps\\\"\\n line-count=\\\"state.lineCount\\\"\\n since-timestamp=\\\"state.sinceTimestamp\\\"\\n resource-name=\\\"container.Name\\\"\\n></log-viewer>\\n\";;\nvar path = 'app/docker/views/containers/logs/containerlogs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Container statistics'\\\"\\n breadcrumbs=\\\"[\\n { label:'Containers', link:'docker.containers' },\\n {\\n label:(container.Name | trimcontainername),\\n link: 'docker.containers.container',\\n linkParams: { id: container.Id },\\n }, 'Stats']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-md-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"info\\\" title-text=\\\"About statistics\\\"> </rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">\\n This view displays real-time statistics about the container <b>{{ container.Name | trimcontainername }}</b> as well as a list of the running processes inside this\\n container.\\n </span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"refreshRate\\\" class=\\\"col-sm-3 col-md-2 col-lg-2 margin-sm-top control-label text-left\\\"> Refresh rate </label>\\n <div class=\\\"col-sm-3 col-md-2\\\">\\n <select id=\\\"refreshRate\\\" ng-model=\\\"state.refreshRate\\\" ng-change=\\\"changeUpdateRepeater()\\\" class=\\\"form-control\\\">\\n <option value=\\\"1\\\">1s</option>\\n <option value=\\\"3\\\">3s</option>\\n <option value=\\\"5\\\">5s</option>\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">60s</option>\\n </select>\\n </div>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"state.networkStatsUnavailable\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Network stats are unavailable for this container.\\n </span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"state.ioStatsUnavailable\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n I/O stats are unavailable for this container.\\n </span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"bar-chart\\\" title-text=\\\"Memory usage\\\"></rd-widget-header>\\n <rd-widget-body>\\n <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n <canvas id=\\\"memoryChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n\\n <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"bar-chart\\\" title-text=\\\"CPU usage\\\"></rd-widget-header>\\n <rd-widget-body>\\n <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n <canvas id=\\\"cpuChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n\\n <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\" ng-if=\\\"!state.networkStatsUnavailable\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"bar-chart\\\" title-text=\\\"Network usage (aggregate)\\\"></rd-widget-header>\\n <rd-widget-body>\\n <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n <canvas id=\\\"networkChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n\\n <div class=\\\"col-lg-6 col-md-6 col-sm-12\\\" ng-if=\\\"!state.ioStatsUnavailable\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"bar-chart\\\" title-text=\\\"I/O usage (aggregate)\\\"></rd-widget-header>\\n <rd-widget-body>\\n <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n <canvas id=\\\"ioChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <container-processes-datatable\\n title-text=\\\"Processes\\\"\\n title-icon=\\\"list\\\"\\n dataset=\\\"processInfo.Processes\\\"\\n headerset=\\\"processInfo.Titles\\\"\\n table-key=\\\"container-processes\\\"\\n ></container-processes-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/containers/stats/containerstats.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Dashboard'\\\" breadcrumbs=\\\"['Environment summary']\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n <div class=\\\"col-sm-12\\\">\\n <dashboard-cluster-agent-info endpoint-id=\\\"endpoint.Id\\\"></dashboard-cluster-agent-info>\\n </div>\\n</div>\\n<information-panel\\n ng-if=\\\"\\n !applicationState.UI.dismissedInfoPanels['docker-dashboard-info-01'] &&\\n !applicationState.endpoint.mode.agentProxy &&\\n applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\n \\\"\\n title-text=\\\"Information\\\"\\n dismiss-action=\\\"dismissInformationPanel('docker-dashboard-info-01')\\\"\\n>\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted\\\" ng-if=\\\"applicationState.endpoint.mode.role === 'MANAGER'\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Portainer is connected to a node that is part of a Swarm cluster. Some resources located on other nodes in the cluster might not be available for management, have a look at\\n <a href=\\\"https://docs.portainer.io/start/install/agent/swarm/linux\\\" target=\\\"_blank\\\">our agent setup</a> for more details.\\n </p>\\n <p class=\\\"text-muted\\\" ng-if=\\\"applicationState.endpoint.mode.role === 'WORKER'\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Portainer is connected to a worker node. Swarm management features will not be available.\\n </p>\\n </span>\\n</information-panel>\\n\\n<div ng-if=\\\"info\\\">\\n <div class=\\\"row\\\" ng-if=\\\"(!applicationState.endpoint.mode.agentProxy || applicationState.endpoint.mode.provider !== 'DOCKER_SWARM_MODE') && info && endpoint\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"gauge\\\" title-text=\\\"Environment info\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"!px-5 !py-0\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Environment</td>\\n <td>\\n {{ endpoint.Name }}\\n <span class=\\\"small text-muted space-left\\\">\\n <pr-icon icon=\\\"'cpu'\\\"></pr-icon> {{ endpoint.Snapshots[0].TotalCPU }} <pr-icon icon=\\\"'svg-memory'\\\"></pr-icon>\\n {{ endpoint.Snapshots[0].TotalMemory | humansize }}\\n </span>\\n <span class=\\\"small text-muted\\\">\\n - {{ info.Swarm && info.Swarm.NodeID !== '' ? 'Swarm' : 'Standalone' }} {{ info.ServerVersion }}\\n <span ng-if=\\\"endpoint.Type === 2\\\">\\n <pr-icon icon=\\\"'zap'\\\"></pr-icon>\\n Agent</span\\n ></span\\n >\\n </td>\\n </tr>\\n <tr ng-if=\\\"showEnvUrl\\\">\\n <td>URL</td>\\n <td>{{ endpoint.URL | stripprotocol }}</td>\\n </tr>\\n <tr>\\n <td>{{ endpoint.Gpus.length <= 1 ? 'GPU' : 'GPUs' }}</td>\\n <td>{{ gpuInfoStr }}</td>\\n </tr>\\n <tr>\\n <td>Tags</td>\\n <td>{{ endpointTags }}</td>\\n </tr>\\n <tr ng-if=\\\"applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && applicationState.endpoint.mode.role === 'MANAGER'\\\">\\n <td colspan=\\\"2\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n <a ui-sref=\\\"docker.swarm.visualizer\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'trello'\\\" class-name=\\\"'icon'\\\"></pr-icon>Go to cluster visualizer</a>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"mx-4 grid grid-cols-2 gap-3\\\">\\n <a class=\\\"no-link\\\" ui-sref=\\\"docker.stacks\\\" ng-if=\\\"showStacks\\\">\\n <dashboard-item icon=\\\"'layers'\\\" type=\\\"'Stack'\\\" value=\\\"stackCount\\\"></dashboard-item>\\n </a>\\n\\n <div ng-if=\\\"applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && applicationState.endpoint.mode.role === 'MANAGER'\\\">\\n <a class=\\\"no-link\\\" ui-sref=\\\"docker.services\\\">\\n <dashboard-item icon=\\\"'shuffle'\\\" type=\\\"'Service'\\\" value=\\\"serviceCount\\\"></dashboard-item>\\n </a>\\n </div>\\n\\n <a class=\\\"no-link\\\" ng-if=\\\"containers\\\" ui-sref=\\\"docker.containers\\\">\\n <dashboard-item icon=\\\"'box'\\\" type=\\\"'Container'\\\" value=\\\"containers.length\\\" children=\\\"containerStatusComponent\\\"></dashboard-item>\\n </a>\\n\\n <a class=\\\"no-link\\\" ng-if=\\\"images\\\" ui-sref=\\\"docker.images\\\">\\n <dashboard-item icon=\\\"'list'\\\" type=\\\"'Image'\\\" value=\\\"images.length\\\" children=\\\"imagesTotalSizeComponent\\\"></dashboard-item>\\n </a>\\n\\n <a class=\\\"no-link\\\" ui-sref=\\\"docker.volumes\\\">\\n <dashboard-item icon=\\\"'database'\\\" type=\\\"'Volume'\\\" value=\\\"volumeCount\\\"></dashboard-item>\\n </a>\\n\\n <a class=\\\"no-link\\\" ui-sref=\\\"docker.networks\\\">\\n <dashboard-item icon=\\\"'share2'\\\" type=\\\"'Network'\\\" value=\\\"networkCount\\\"></dashboard-item>\\n </a>\\n\\n <div>\\n <dashboard-item\\n ng-if=\\\"endpoint.EnableGPUManagement && applicationState.endpoint.mode.provider === 'DOCKER_STANDALONE'\\\"\\n icon=\\\"'cpu'\\\"\\n type=\\\"'GPU'\\\"\\n value=\\\"endpoint.Gpus.length\\\"\\n ></dashboard-item>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/dashboard/dashboard.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Docker features configuration'\\\" breadcrumbs=\\\"['Docker configuration']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.form\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Host and Filesystem </div>\\n <div ng-if=\\\"!$ctrl.isAgent\\\" class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class-name=\\\"'space-right'\\\"></pr-icon>\\n These features are only available for an Agent enabled environments.\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.enableHostManagementFeatures\\\"\\n name=\\\"'enableHostManagementFeatures'\\\"\\n label=\\\"'Enable host management features'\\\"\\n tooltip=\\\"'Enable host management features: host system browsing and advanced host details.'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n disabled=\\\"!$ctrl.isAgent\\\"\\n on-change=\\\"($ctrl.onChangeEnableHostManagementFeatures)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.allowVolumeBrowserForRegularUsers\\\"\\n name=\\\"'allowVolumeBrowserForRegularUsers'\\\"\\n label=\\\"'Enable volume management for non-administrators'\\\"\\n tooltip=\\\"'When enabled, regular users will be able to use Portainer volume management features.'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n on-change=\\\"($ctrl.onChangeAllowVolumeBrowserForRegularUsers)\\\"\\n disabled=\\\"!$ctrl.isAgent\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- auto update window -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Change Window Setting </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.state.autoUpdateSettings.Enabled\\\"\\n name=\\\"'disableSysctlSettingForRegularUsers'\\\"\\n label=\\\"'Enable Change Window'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n feature-id=\\\"$ctrl.limitedFeatureAutoUpdate\\\"\\n tooltip=\\\"'Specify a time-frame during which GitOps updates can occur in this environment.'\\\"\\n on-change=\\\"($ctrl.onToggleAutoUpdate)\\\"\\n >\\n </por-switch-field>\\n </div>\\n </div>\\n\\n <!-- security -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Docker Security Settings </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.disableBindMountsForRegularUsers\\\"\\n name=\\\"'disableBindMountsForRegularUsers'\\\"\\n label=\\\"'Disable bind mounts for non-administrators'\\\"\\n tooltip=\\\"'When enabled, regular users will not be able to use bind mounts when creating containers.'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n on-change=\\\"($ctrl.onChangeDisableBindMountsForRegularUsers)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.disablePrivilegedModeForRegularUsers\\\"\\n name=\\\"'disablePrivilegedModeForRegularUsers'\\\"\\n label=\\\"'Disable privileged mode for non-administrators'\\\"\\n tooltip=\\\"'When enabled, regular users will not be able to use privileged mode when creating containers.'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n on-change=\\\"($ctrl.onChangeDisablePrivilegedModeForRegularUsers)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.disableHostNamespaceForRegularUsers\\\"\\n name=\\\"'disableHostNamespaceForRegularUsers'\\\"\\n label=\\\"'Disable the use of host PID 1 for non-administrators'\\\"\\n tooltip=\\\"'Prevent users from accessing the host filesystem through the host PID namespace.'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n on-change=\\\"($ctrl.onChangeDisableHostNamespaceForRegularUsers)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.disableStackManagementForRegularUsers\\\"\\n name=\\\"'disableStackManagementForRegularUsers'\\\"\\n label=\\\"'Disable the use of Stacks for non-administrators'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n on-change=\\\"($ctrl.onChangeDisableStackManagementForRegularUsers)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.disableDeviceMappingForRegularUsers\\\"\\n name=\\\"'disableDeviceMappingForRegularUsers'\\\"\\n label=\\\"'Disable device mappings for non-administrators'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n on-change=\\\"($ctrl.onChangeDisableDeviceMappingForRegularUsers)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.disableContainerCapabilitiesForRegularUsers\\\"\\n name=\\\"'disableContainerCapabilitiesForRegularUsers'\\\"\\n label=\\\"'Disable container capabilities for non-administrators'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n on-change=\\\"($ctrl.onChangeDisableContainerCapabilitiesForRegularUsers)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.formValues.disableSysctlSettingForRegularUsers\\\"\\n name=\\\"'disableSysctlSettingForRegularUsers'\\\"\\n label=\\\"'Disable sysctl settings for non-administrators'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n on-change=\\\"($ctrl.onChangeDisableSysctlSettingForRegularUsers)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.isContainerEditDisabled()\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n Note: The recreate/duplicate/edit feature is currently disabled (for non-admin users) by one or more security settings.\\n </span>\\n </div>\\n <!-- !security -->\\n\\n <!-- other -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Other </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 pb-3\\\">\\n <gpus-insights></gpus-insights>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Show GPU in the UI'\\\"\\n tooltip=\\\"'This allows managing of GPUs for container/stack hardware acceleration via the Portainer UI.'\\\"\\n checked=\\\"$ctrl.state.enableGPUManagement\\\"\\n name=\\\"'enableGPUManagement'\\\"\\n on-change=\\\"($ctrl.onToggleGPUManagement)\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n disabled=\\\"!$ctrl.isDockerStandaloneEnv\\\"\\n ></por-switch-field>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"pl-4\\\">\\n <gpus-list ng-if=\\\"$ctrl.state.enableGPUManagement && $ctrl.endpoint\\\" value=\\\"$ctrl.endpoint.Gpus\\\" on-change=\\\"($ctrl.onGpusChange)\\\"></gpus-list>\\n </div>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Show an image(s) up to date indicator for Stacks, Services and Containers'\\\"\\n checked=\\\"false\\\"\\n name=\\\"'outOfDateImageToggle'\\\"\\n label-class=\\\"'col-sm-7 col-lg-4'\\\"\\n feature-id=\\\"$ctrl.limitedFeatureUpToDateImage\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !other -->\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-click=\\\"$ctrl.save()\\\"\\n ng-disabled=\\\"$ctrl.state.actionInProgress\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">Save configuration</span>\\n <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Saving...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/docker-features-configuration/docker-features-configuration.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Event list'\\\" breadcrumbs=\\\"['Events']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<docker-events-datatable dataset=\\\"events\\\"></docker-events-datatable>\\n\";;\nvar path = 'app/docker/views/events/events.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Host Browser'\\\" breadcrumbs=\\\"['Host', {label:$ctrl.host.Name, link:'docker.host'}, 'browse']\\\"> </page-header>\\n\\n<host-browser ng-if=\\\"$ctrl.host\\\" endpoint-id=\\\"$ctrl.endpoint.Id\\\"></host-browser>\\n\";;\nvar path = 'app/docker/views/host/host-browser-view/host-browser-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<host-overview\\n engine-details=\\\"$ctrl.engineDetails\\\"\\n host-details=\\\"$ctrl.hostDetails\\\"\\n is-agent=\\\"$ctrl.state.isAgent\\\"\\n agent-api-version=\\\"$ctrl.state.agentApiVersion\\\"\\n disks=\\\"$ctrl.disks\\\"\\n devices=\\\"$ctrl.devices\\\"\\n refresh-url=\\\"docker.host\\\"\\n browse-url=\\\"docker.host.browser\\\"\\n host-features-enabled=\\\"$ctrl.state.enableHostManagementFeatures\\\"\\n></host-overview>\\n\";;\nvar path = 'app/docker/views/host/host-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Build image'\\\" breadcrumbs=\\\"[{label:'Images', link:'docker.images'}, 'Build image']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <uib-tabset active=\\\"state.activeTab\\\">\\n <uib-tab index=\\\"0\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'wrench'\\\" class=\\\"leading-none\\\"></pr-icon> Builder </uib-tab-heading>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Naming </div>\\n <!-- names -->\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> You can specify multiple names to your image. </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">Names</label>\\n <span class=\\\"label label-default interactive\\\" class=\\\"ml-2.5\\\" ng-click=\\\"addImageName()\\\"> <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add additional name </span>\\n </div>\\n </div>\\n <!-- !names -->\\n <div class=\\\"form-group\\\" ng-if=\\\"formValues.ImageNames.length === 0\\\">\\n <span class=\\\"col-sm-12 text-danger small\\\">\\n <p class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'sm'\\\"></pr-icon> You must specify at least one name for the image. </p>\\n </span>\\n </div>\\n <!-- name-input-list -->\\n <div ng-if=\\\"formValues.ImageNames.length > 0\\\">\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n A name must be specified in one of the following formats: <code>name:tag</code>, <code>repository/name:tag</code> or\\n <code>registryfqdn:port/repository/name:tag</code> format. If you omit the tag the default <b>latest</b> value is assumed.\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"col-sm-12 form-inline\\\" class=\\\"mt-2.5\\\">\\n <div ng-repeat=\\\"item in formValues.ImageNames track by $index\\\" class=\\\"mt-1\\\">\\n <!-- name-input -->\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"item.Name\\\" ng-change=\\\"checkName($index)\\\" placeholder=\\\"e.g. my-image:my-tag\\\" auto-focus />\\n <span class=\\\"input-group-addon\\\" ng-if=\\\"!item.Valid\\\">\\n <pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n </span>\\n <span class=\\\"input-group-addon\\\" ng-if=\\\"item.Valid\\\">\\n <pr-icon icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon>\\n </span>\\n </div>\\n <!-- !name-input -->\\n <!-- actions -->\\n <div class=\\\"input-group col-sm-2 input-group-sm\\\">\\n <button class=\\\"btn btn-dangerlight btn-only-icon\\\" type=\\\"button\\\" ng-click=\\\"removeImageName($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- !actions -->\\n <div class=\\\"small text-warning\\\" ng-if=\\\"!item.Valid\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span ng-if=\\\"!item.Unique\\\">The image name must be unique</span>\\n <span ng-if=\\\"item.Unique\\\"\\n >The image name must consist of between 2 and 255 lowercase alphanumeric characters, '.', '_', or '-' (e.g. 'my-name', or 'abc-123').</span\\n >\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input-list -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n <box-selector options=\\\"options\\\" slim=\\\"true\\\" value=\\\"state.BuildType\\\" on-change=\\\"(onChangeBuildType)\\\"></box-selector>\\n\\n <!-- web-editor -->\\n <!-- TODO use web-editor-form component -->\\n <div ng-show=\\\"state.BuildType === 'editor'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Web editor </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n You can get more information about Dockerfile format in the\\n <a href=\\\"https://docs.docker.com/engine/reference/builder/\\\" target=\\\"_blank\\\">official documentation</a>.\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <code-editor\\n identifier=\\\"image-build-editor\\\"\\n placeholder=\\\"Define or paste the content of your Dockerfile here\\\"\\n docker-file=\\\"true\\\"\\n on-change=\\\"(editorUpdate)\\\"\\n ></code-editor>\\n </div>\\n </div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Upload </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n You can upload files from your local computer for referencing in your Dockerfile (using ADD filename) so they are included in your built image.\\n </span>\\n </div>\\n <button class=\\\"btn btn-sm btn-primary\\\" ngf-select=\\\"selectAdditionalFiles($files)\\\" ngf-multiple=\\\"true\\\">Select files</button>\\n <span ng-repeat=\\\"item in formValues.AdditionalFiles track by $index\\\" class=\\\"mx-2\\\">\\n {{ item.name }}\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !web-editor -->\\n <!-- upload -->\\n <div ng-show=\\\"state.BuildType === 'upload'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Upload </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n You can upload a Dockerfile or a tar archive containing a Dockerfile from your computer. When using a tarball, the root folder will be used as the build\\n context.\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <button class=\\\"btn btn-sm btn-primary\\\" ngf-select ngf-min-size=\\\"10\\\" ng-model=\\\"formValues.UploadFile\\\">Select file</button>\\n <span class=\\\"space-left\\\">\\n {{ formValues.UploadFile.name }}\\n <span ng-if=\\\"!formValues.UploadFile\\\"><pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\"></pr-icon></span>\\n </span>\\n </div>\\n </div>\\n <div ng-if=\\\"formValues.UploadFile.type === 'application/gzip' || formValues.UploadFile.type === 'application/x-tar'\\\">\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> Indicate the path to the Dockerfile within the tarball. </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"image_path\\\" class=\\\"col-sm-2 control-label text-left\\\">Dockerfile path</label>\\n <div class=\\\"col-sm-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Path\\\" id=\\\"image_path\\\" placeholder=\\\"Dockerfile\\\" />\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !upload -->\\n <!-- url -->\\n <div ng-show=\\\"state.BuildType === 'url'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> URL </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 small vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span class=\\\"text-muted\\\"\\n >Specify the URL to a Dockerfile, a tarball or a public Git repository (suffixed by <b>.git</b>). When using a Git repository URL, build contexts can be\\n specified as in the <a href=\\\"https://docs.docker.com/engine/reference/commandline/build/#git-repositories\\\">Docker documentation.</a></span\\n >\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"image_url\\\" class=\\\"col-sm-2 control-label text-left\\\">URL</label>\\n <div class=\\\"col-sm-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"formValues.URL\\\"\\n id=\\\"image_url\\\"\\n placeholder=\\\"https://myhost.mydomain/myimage.tar.gz or https://github.com/myname/myrepo.git#mybranch\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Indicate the path to the Dockerfile within the tarball/repository (ignored when using a Dockerfile).\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"image_path\\\" class=\\\"col-sm-2 control-label text-left\\\">Dockerfile path</label>\\n <div class=\\\"col-sm-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Path\\\" id=\\\"image_path\\\" placeholder=\\\"Dockerfile\\\" />\\n </div>\\n </div>\\n </div>\\n <!-- !url -->\\n <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Deployment </div>\\n <!-- node-selection -->\\n <node-selector model=\\\"formValues.NodeName\\\" endpoint-id=\\\"endpoint.Id\\\"> </node-selector>\\n <!-- !node-selection -->\\n </div>\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress\\n || (state.BuildType === 'editor' && formValues.DockerFileContent === '')\\n || (state.BuildType === 'upload' && (!formValues.UploadFile || !formValues.Path))\\n || (state.BuildType === 'url' && (!formValues.URL || !formValues.Path))\\n || (formValues.ImageNames.length === 0 || !validImageNames())\\\"\\n ng-click=\\\"buildImage()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Build the image</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Image building in progress...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" class=\\\"space-left\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </uib-tab>\\n <uib-tab index=\\\"1\\\" disable=\\\"!buildLogs\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'file-text'\\\" class=\\\"leading-none\\\"></pr-icon> Output </uib-tab-heading>\\n <pre class=\\\"log_viewer\\\">\\n <div ng-repeat=\\\"line in buildLogs track by $index\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\" ng-click=\\\"active=!active\\\" ng-class=\\\"{'line_selected': active}\\\">{{ line }}</p></div>\\n <div ng-if=\\\"!buildLogs.length\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No build output available.</p></div>\\n </pre>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/images/build/buildimage.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Image details'\\\" breadcrumbs=\\\"[{label:'Images', link:'docker.images'}, image.Id]\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"image.RepoTags.length > 0\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"tag\\\" title-text=\\\"Image tags\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"pull-left\\\" ng-repeat=\\\"tag in image.RepoTags\\\" style=\\\"display: table\\\">\\n <div class=\\\"input-group col-md-1 !pr-3.5 !pl-3.5\\\">\\n <span class=\\\"input-group-addon\\\" style=\\\"border-right: 1px solid var(--border-input-group-addon-color); border-radius: 4px\\\" data-cy=\\\"image-tag-{{ tag }}\\\">{{\\n tag\\n }}</span>\\n <span class=\\\"input-group-btn\\\" style=\\\"padding: 0px 5px\\\">\\n <span style=\\\"margin: 0px 5px\\\" authorization=\\\"DockerImagePush\\\">\\n <a data-toggle=\\\"tooltip\\\" class=\\\"btn btn-primary interactive\\\" title=\\\"Push to registry\\\" ng-click=\\\"pushTag(tag)\\\">\\n <pr-icon icon=\\\"'upload'\\\" class=\\\"text-white\\\"></pr-icon>\\n </a>\\n </span>\\n\\n <span class=\\\"my-0 mx-1\\\" authorization=\\\"DockerImageCreate\\\">\\n <a data-toggle=\\\"tooltip\\\" class=\\\"btn btn-primary interactive\\\" title=\\\"Pull from registry\\\" ng-click=\\\"pullTag(tag)\\\">\\n <pr-icon icon=\\\"'download'\\\" class=\\\"text-white\\\"></pr-icon>\\n </a>\\n </span>\\n\\n <span class=\\\"my-0 mx-1\\\" authorization=\\\"DockerImageDelete\\\">\\n <a data-toggle=\\\"tooltip\\\" class=\\\"btn btn-primary interactive\\\" title=\\\"Remove tag\\\" ng-click=\\\"removeTag(tag)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class=\\\"text-white\\\"></pr-icon>\\n </a>\\n </span>\\n </span>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\" authorization=\\\"DockerImageDelete\\\">\\n Note: you can click on the upload icon <pr-icon icon=\\\"'upload'\\\"></pr-icon> to push an image or on the download icon <pr-icon icon=\\\"'download'\\\"></pr-icon> to pull an\\n image or on the trash icon <pr-icon icon=\\\"'trash-2'\\\"></pr-icon> to delete a tag.\\n </span>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <span id=\\\"downloadResourceHint\\\" class=\\\"createResource ml-0\\\" style=\\\"display: none\\\">\\n Download in progress...\\n <pr-icon icon=\\\"'loader-2'\\\" class-name=\\\"'animate-spin-slow ml-0.5'\\\"></pr-icon>\\n </span>\\n <span id=\\\"uploadResourceHint\\\" class=\\\"createResource ml-0.5\\\" style=\\\"display: none\\\">\\n Upload in progress...\\n <pr-icon icon=\\\"'loader-2'\\\" class-name=\\\"'animate-spin-slow ml-0.5'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\" authorization=\\\"DockerImageCreate\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"tag\\\" title-text=\\\"Tag the image\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <!-- image-and-registry -->\\n <por-image-registry\\n model=\\\"formValues.RegistryModel\\\"\\n label-class=\\\"col-sm-1\\\"\\n input-class=\\\"col-sm-11\\\"\\n endpoint=\\\"endpoint\\\"\\n is-admin=\\\"isAdmin\\\"\\n set-validity=\\\"setPullImageValidity\\\"\\n check-rate-limits=\\\"true\\\"\\n ></por-image-registry>\\n <!-- !image-and-registry -->\\n <!-- tag-note -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">Note: if you don't specify the tag in the image name, <span class=\\\"label label-default\\\">latest</span> will be used.</span>\\n </div>\\n </div>\\n <!-- !tag-note -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!formValues.RegistryModel.Image\\\" ng-click=\\\"tagImage()\\\">Tag</button>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Image details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>ID</td>\\n <td>\\n {{ image.Id }}\\n <button authorization=\\\"DockerImageDelete\\\" class=\\\"btn btn-xs btn-danger\\\" ng-click=\\\"removeImage(image.Id)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon> Delete this image\\n </button>\\n <button\\n authorization=\\\"DockerImageGet\\\"\\n class=\\\"btn btn-xs btn-primary\\\"\\n ng-click=\\\"exportImage(image)\\\"\\n button-spinner=\\\"$ctrl.exportInProgress\\\"\\n ng-disabled=\\\"state.exportInProgress\\\"\\n >\\n <pr-icon icon=\\\"'download'\\\"></pr-icon>\\n <span ng-hide=\\\"state.exportInProgress\\\">Export this image</span>\\n <span ng-show=\\\"state.exportInProgress\\\">Export in progress...</span>\\n </button>\\n </td>\\n </tr>\\n <tr ng-if=\\\"image.Parent\\\">\\n <td>Parent</td>\\n <td\\n ><a ui-sref=\\\"docker.images.image({id: image.Parent})\\\">{{ image.Parent }}</a></td\\n >\\n </tr>\\n <tr>\\n <td>Size</td>\\n <td>{{ image.VirtualSize | humansize }}</td>\\n </tr>\\n <tr>\\n <td>Created</td>\\n <td>{{ image.Created | getisodate }}</td>\\n </tr>\\n <tr>\\n <td>Build</td>\\n <td>Docker {{ image.DockerVersion }} on {{ image.Os }}, {{ image.Architecture }}</td>\\n </tr>\\n <tr ng-if=\\\"!(image.Labels | emptyobject)\\\">\\n <td>Labels</td>\\n <td>\\n <table class=\\\"table-bordered table-condensed table\\\">\\n <tr ng-repeat=\\\"(k, v) in image.Labels\\\">\\n <td>{{ k }}</td>\\n <td>{{ v }}</td>\\n </tr>\\n </table>\\n </td>\\n </tr>\\n <tr ng-if=\\\"image.Author\\\">\\n <td>Author</td>\\n <td>{{ image.Author }}</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<dockerfile-details ng-if=\\\"image\\\" image=\\\"image\\\"></dockerfile-details>\\n\\n<div class=\\\"row\\\" ng-if=\\\"history.length > 0\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Image layers\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table id=\\\"image-layers\\\" class=\\\"table\\\">\\n <thead>\\n <th class=\\\"whitespace-nowrap\\\">\\n <table-column-header\\n col-title=\\\"'Order'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Order'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Order' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Order')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Size'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Size'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Size' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Size')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Layer'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Layer'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Layer' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Layer')\\\"\\n ></table-column-header>\\n </th>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"layer in history | orderBy:sortType:sortReverse\\\">\\n <td class=\\\"whitespace-nowrap\\\">\\n {{ layer.Order }}\\n </td>\\n <td class=\\\"whitespace-nowrap\\\">\\n {{ layer.Size | humansize }}\\n </td>\\n <td class=\\\"expand\\\">\\n <div ng-if=\\\"layer.CreatedBy.length > 130\\\">\\n <span id=\\\"layer-command-{{ $index }}-full\\\" style=\\\"display: none\\\">\\n {{ layer.CreatedBy | imagelayercommand }}\\n </span>\\n <span id=\\\"layer-command-{{ $index }}-short\\\">\\n {{ layer.CreatedBy | imagelayercommand | truncate : 130 }}\\n <span ng-if=\\\"layer.CreatedBy.length > 130\\\" class=\\\"ml-1\\\">\\n <a id=\\\"layer-command-expander{{ $index }}\\\" class=\\\"btn\\\" ng-click=\\\"toggleLayerCommand($index)\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon>\\n </a>\\n </span>\\n </span>\\n </div>\\n <div ng-if=\\\"layer.CreatedBy.length <= 130\\\">\\n <span id=\\\"layer-command-{{ $index }}-full\\\">\\n {{ layer.CreatedBy | imagelayercommand }}\\n </span>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/images/edit/image.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Image list'\\\" breadcrumbs=\\\"['Images']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" authorization=\\\"DockerImageCreate\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"download\\\" title-text=\\\"Pull image \\\"> </rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <!-- image-and-registry -->\\n <por-image-registry\\n model=\\\"formValues.RegistryModel\\\"\\n auto-complete=\\\"true\\\"\\n label-class=\\\"col-sm-1\\\"\\n input-class=\\\"col-sm-11\\\"\\n endpoint=\\\"endpoint\\\"\\n is-admin=\\\"isAdmin\\\"\\n set-validity=\\\"setPullImageValidity\\\"\\n check-rate-limits=\\\"true\\\"\\n >\\n <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Deployment </div>\\n <!-- node-selection -->\\n <node-selector model=\\\"formValues.NodeName\\\" endpoint-id=\\\"endpoint.Id\\\"> </node-selector>\\n <!-- !node-selection -->\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress || !formValues.RegistryModel.Image || !state.pullRateValid\\\"\\n ng-click=\\\"pullImage()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Pull the image</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Download in progress...</span>\\n </button>\\n </div>\\n </div>\\n </por-image-registry>\\n <!-- !image-and-registry -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<docker-images-datatable\\n ng-if=\\\"images\\\"\\n dataset=\\\"images\\\"\\n is-host-column-visible=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\"\\n on-download=\\\"(downloadAction)\\\"\\n on-remove=\\\"(confirmRemovalAction)\\\"\\n on-refresh=\\\"(getImages)\\\"\\n is-export-in-progress=\\\"state.exportInProgress\\\"\\n storage-key=\\\"images\\\"\\n environment=\\\"endpoint\\\"\\n settings-store=\\\"settingsStore\\\"\\n containers=\\\"containers\\\"\\n></docker-images-datatable>\\n\";;\nvar path = 'app/docker/views/images/images.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Import image'\\\" breadcrumbs=\\\"[{label:'Images', link:'docker.images'}, 'Import image']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <!-- upload -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Upload </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> You can upload a tar archive containing your images. </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ngf-min-size=\\\"10\\\" ng-model=\\\"formValues.UploadFile\\\">Select file</button>\\n <span class=\\\"ml-1\\\">\\n {{ formValues.UploadFile.name }}\\n <pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\" ng-if=\\\"!formValues.UploadFile\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n <!-- !upload -->\\n <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Deployment </div>\\n <!-- node-selection -->\\n <node-selector model=\\\"formValues.NodeName\\\" endpoint-id=\\\"endpoint.Id\\\"> </node-selector>\\n <!-- !node-selection -->\\n </div>\\n <div class=\\\"row\\\" authorization=\\\"DockerImageCreate\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"tag\\\" title-text=\\\"Tag the image\\\"></rd-widget-header>\\n <rd-widget-body>\\n <!-- image-and-registry -->\\n <por-image-registry\\n model=\\\"formValues.RegistryModel\\\"\\n label-class=\\\"col-sm-1\\\"\\n input-class=\\\"col-sm-11\\\"\\n endpoint=\\\"endpoint\\\"\\n is-admin=\\\"isAdmin\\\"\\n set-validity=\\\"setPullImageValidity\\\"\\n check-rate-limits=\\\"true\\\"\\n ></por-image-registry>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress || !formValues.UploadFile\\\"\\n ng-click=\\\"uploadImage()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Upload</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Images uploading in progress...</span>\\n </button>\\n <span class=\\\"text-danger ml-1\\\" ng-if=\\\"state.formValidationError\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/images/import/importimage.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create network'\\\" breadcrumbs=\\\"[{label:'Networks', link:'docker.networks'}, 'Add network']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"networkCreationForm\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"network_name\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-10 col-lg-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.Name\\\" id=\\\"network_name\\\" placeholder=\\\"e.g. myNetwork\\\" />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Driver configuration </div>\\n <!-- driver-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"network_driver\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Driver</label>\\n <div class=\\\"col-sm-10 col-lg-11\\\">\\n <select class=\\\"form-control\\\" ng-options=\\\"driver for driver in availableNetworkDrivers\\\" ng-model=\\\"config.Driver\\\" ng-if=\\\"availableNetworkDrivers.length > 0\\\">\\n <option disabled hidden value=\\\"\\\">Select a driver</option>\\n </select>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"config.Driver\\\" id=\\\"network_driver\\\" placeholder=\\\"e.g. driverName\\\" ng-if=\\\"availableNetworkDrivers.length === 0\\\" />\\n </div>\\n </div>\\n <!-- !driver-input -->\\n <!-- driver-options -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 mt-1\\\">\\n <label class=\\\"control-label text-left\\\">\\n Driver options\\n <portainer-tooltip message=\\\"'Driver options are specific to the selected driver. Please refer to the selected driver documentation.'\\\"></portainer-tooltip>\\n </label>\\n </div>\\n <!-- driver-options-input-list -->\\n <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n <div ng-repeat=\\\"option in formValues.DriverOptions\\\" class=\\\"mt-1\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.name\\\" placeholder=\\\"e.g. com.docker.network.bridge.enable_icc\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-6 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.value\\\" placeholder=\\\"e.g. true\\\" />\\n <span class=\\\"input-group-btn\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeDriverOption($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"small interactive text-muted vertical-center mt-1\\\" ng-click=\\\"addDriverOption()\\\"> <pr-icon icon=\\\"'plus'\\\" size=\\\"'md'\\\"></pr-icon> Add driver option </div>\\n </div>\\n <!-- !driver-options-input-list -->\\n </div>\\n <!-- !driver-options -->\\n <!-- macvlan-management -->\\n <network-macvlan-form ng-show=\\\"config.Driver === 'macvlan'\\\" data=\\\"formValues.Macvlan\\\" application-state=\\\"applicationState\\\"></network-macvlan-form>\\n <!-- !macvlan-management -->\\n <div ng-hide=\\\"config.Driver === 'macvlan' && formValues.Macvlan.Scope === 'swarm'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> IPV4 Network configuration </div>\\n <!-- subnet-gateway-inputs -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ipv4_network_subnet\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Subnet</label>\\n <div class=\\\"col-sm-4 col-lg-5\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV4.Subnet\\\" id=\\\"ipv4_network_subnet\\\" placeholder=\\\"e.g. 172.20.0.0/16\\\" />\\n </div>\\n <label for=\\\"ipv4_network_gateway\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Gateway</label>\\n <div class=\\\"col-sm-4 col-lg-5\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV4.Gateway\\\" id=\\\"ipv4_network_gateway\\\" placeholder=\\\"e.g. 172.20.10.11\\\" />\\n </div>\\n </div>\\n <!-- !subnet-gateway-inputs -->\\n <!-- iprange-auxaddr-inputs -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ipv4_network_iprange\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">IP range</label>\\n <div class=\\\"col-sm-4 col-lg-5\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV4.IPRange\\\" id=\\\"ipv4_network_iprange\\\" placeholder=\\\"e.g. 172.20.10.128/25\\\" />\\n </div>\\n </div>\\n <div ng-repeat=\\\"auxAddress in formValues.IPV4.AuxiliaryAddresses track by $index\\\" class=\\\"form-group\\\">\\n <label for=\\\"ipv4_network_auxaddr_{{ $index }}\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Exclude IP</label>\\n <div class=\\\"col-sm-4 col-lg-5\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"formValues.IPV4.AuxiliaryAddresses[$index]\\\"\\n ng-change=\\\"checkIPV4AuxiliaryAddress($index)\\\"\\n id=\\\"ipv4_network_auxaddr_{{ $index }}\\\"\\n placeholder=\\\"e.g. my-router=172.20.10.129\\\"\\n />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeIPV4AuxAddress($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n <div class=\\\"col-sm-12 small text-warning\\\" ng-if=\\\"state.IPV4AuxiliaryAddressesError[$index]\\\">\\n <p class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Exclude ip cannot be the same as gateway.</p>\\n </div>\\n </div>\\n <!-- !iprange-auxaddr-inputs -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small interactive text-muted vertical-center\\\" ng-click=\\\"addIPV4AuxAddress()\\\">\\n <pr-icon icon=\\\"'plus'\\\" size=\\\"'md'\\\"></pr-icon> Add excluded IP\\n </div>\\n </div>\\n </div>\\n <div ng-show=\\\"config.Driver === 'bridge' || (config.Driver === 'macvlan' && formValues.Macvlan.Scope !== 'swarm')\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> IPV6 Network configuration </div>\\n <!-- subnet-gateway-inputs -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ipv6_network_subnet\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Subnet</label>\\n <div class=\\\"col-sm-4 col-lg-5\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV6.Subnet\\\" id=\\\"ipv6_network_subnet\\\" placeholder=\\\"e.g. 2001:db8::/48\\\" />\\n </div>\\n <label for=\\\"ipv6_network_gateway\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Gateway</label>\\n <div class=\\\"col-sm-4 col-lg-5\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV6.Gateway\\\" id=\\\"ipv6_network_gateway\\\" placeholder=\\\"e.g. 2001:db8::1\\\" />\\n </div>\\n </div>\\n <!-- !subnet-gateway-inputs -->\\n <!-- iprange-auxaddr-inputs -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ipv6_network_iprange\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">IP range</label>\\n <div class=\\\"col-sm-4 col-lg-5\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.IPV6.IPRange\\\" id=\\\"ipv6_network_iprange\\\" placeholder=\\\"e.g. 2001:db8::/64\\\" />\\n </div>\\n </div>\\n <div ng-repeat=\\\"auxAddress in formValues.IPV6.AuxiliaryAddresses track by $index\\\" class=\\\"form-group\\\">\\n <label for=\\\"ipv6_network_auxaddr_{{ $index }}\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Exclude IP</label>\\n <div class=\\\"col-sm-4 col-lg-5\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"formValues.IPV6.AuxiliaryAddresses[$index]\\\"\\n ng-change=\\\"checkIPV6AuxiliaryAddress($index)\\\"\\n id=\\\"ipv6_network_auxaddr_{{ $index }}\\\"\\n placeholder=\\\"e.g. my-router=2001:db8::1\\\"\\n />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeIPV6AuxAddress($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n <div class=\\\"col-sm-12 small text-warning\\\" ng-show=\\\"state.IPV6AuxiliaryAddressesError[$index]\\\">\\n <p class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Exclude ip cannot be the same as gateway.</p>\\n </div>\\n </div>\\n <!-- !iprange-auxaddr-inputs -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small interactive text-muted vertical-center\\\" ng-click=\\\"addIPV6AuxAddress()\\\">\\n <pr-icon icon=\\\"'plus'\\\" size=\\\"'md'\\\"></pr-icon> Add excluded IP\\n </div>\\n </div>\\n </div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Advanced configuration </div>\\n <!-- labels -->\\n <div class=\\\"form-group\\\">\\n <!-- labels-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\">\\n <div ng-repeat=\\\"label in formValues.Labels\\\" class=\\\"mt-1\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"e.g. com.example.foo\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-6 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"e.g. bar\\\" />\\n <span class=\\\"input-group-btn\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\"> <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon> </button\\n ></span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small interactive text-muted vertical-center mt-1\\\" ng-click=\\\"addLabel()\\\"> <pr-icon icon=\\\"'plus'\\\" size=\\\"'md'\\\"></pr-icon> Add label </div>\\n </div>\\n </div>\\n <!-- !labels-input-list -->\\n </div>\\n <!-- !labels-->\\n <!-- internal -->\\n <div class=\\\"form-group\\\" ng-hide=\\\"config.Driver === 'macvlan' && formValues.Macvlan.Scope === 'local'\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"config.Internal\\\"\\n label=\\\"'Isolated network'\\\"\\n tooltip=\\\"'An isolated network has no inbound or outbound communications.'\\\"\\n on-change=\\\"(onChangeInternal)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !internal -->\\n <!-- attachable -->\\n <div class=\\\"form-group\\\" ng-hide=\\\"config.Driver === 'macvlan' && formValues.Macvlan.Scope === 'local'\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"config.Attachable\\\"\\n label=\\\"'Enable manual container attachment'\\\"\\n on-change=\\\"(onChangeAttachable)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !attachable -->\\n <div\\n ng-if=\\\"\\n applicationState.endpoint.mode.agentProxy &&\\n applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' &&\\n config.Driver !== 'overlay' &&\\n config.Driver !== 'macvlan'\\n \\\"\\n >\\n <div class=\\\"col-sm-12 form-section-title\\\"> Deployment </div>\\n <!-- node-selection -->\\n <node-selector model=\\\"formValues.NodeName\\\" endpoint-id=\\\"endpoint.Id\\\"> </node-selector>\\n <!-- !node-selection -->\\n </div>\\n <!-- access-control -->\\n <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n <!-- !access-control -->\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress || !config.Name || (config.Driver === 'macvlan' && networkCreationForm.$invalid) || !isValid()\\\"\\n ng-click=\\\"create()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Create the network</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Creating network...</span>\\n </button>\\n <span class=\\\"text-danger space-left\\\" ng-if=\\\"state.formValidationError\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/networks/create/createnetwork.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Network list'\\\" breadcrumbs=\\\"['Networks']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <networks-datatable\\n title-text=\\\"Networks\\\"\\n title-icon=\\\"share-2\\\"\\n dataset=\\\"networks\\\"\\n table-key=\\\"networks\\\"\\n order-by=\\\"Name\\\"\\n remove-action=\\\"removeAction\\\"\\n show-host-column=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\"\\n refresh-callback=\\\"getNetworks\\\"\\n ></networks-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/networks/networks.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Node Browser'\\\"\\n breadcrumbs=\\\"[\\n {\\n label:'swarm',\\n link:'docker.swarm'\\n },\\n {\\n label: $ctrl.node.Hostname,\\n link: 'docker.nodes.node',\\n linkParams: { id: $ctrl.nodeId }\\n },\\n 'browse'\\n ]\\\"\\n>\\n</page-header>\\n\\n<host-browser ng-if=\\\"$ctrl.node\\\" endpoint-id=\\\"$ctrl.endpoint.Id\\\"></host-browser>\\n\";;\nvar path = 'app/docker/views/nodes/node-browser/node-browser.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<host-overview\\n agent-api-version=\\\"$ctrl.state.agentApiVersion\\\"\\n is-agent=\\\"$ctrl.state.isAgent\\\"\\n host-details=\\\"$ctrl.hostDetails\\\"\\n engine-details=\\\"$ctrl.engineDetails\\\"\\n disks=\\\"$ctrl.disks\\\"\\n devices=\\\"$ctrl.devices\\\"\\n refresh-url=\\\"docker.nodes.node\\\"\\n browse-url=\\\"docker.nodes.node.browse\\\"\\n is-job-enabled=\\\"$ctrl.state.isAdmin && $ctrl.state.isAgent\\\"\\n host-features-enabled=\\\"$ctrl.state.enableHostManagementFeatures\\\"\\n job-url=\\\"docker.nodes.node.job\\\"\\n jobs=\\\"$ctrl.jobs\\\"\\n>\\n <swarm-node-details-panel details=\\\"$ctrl.nodeDetails\\\" original-node=\\\"$ctrl.originalNode\\\"></swarm-node-details-panel>\\n</host-overview>\\n\";;\nvar path = 'app/docker/views/nodes/node-details/node-details-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div ng-if=\\\"$ctrl.registry\\\">\\n <page-header title=\\\"'Registry access'\\\" breadcrumbs=\\\"[{label:'Registries', link:$ctrl.registryTo,}, $ctrl.registry.Name, 'Access management']\\\"> </page-header>\\n\\n <registry-details registry=\\\"$ctrl.registry\\\"></registry-details>\\n\\n <por-access-management\\n ng-if=\\\"$ctrl.endpointGroup\\\"\\n access-controlled-entity=\\\"$ctrl.registryEndpointAccesses\\\"\\n entity-type=\\\"registry\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n update-access=\\\"$ctrl.updateAccess\\\"\\n filter-users=\\\"$ctrl.filterUsers\\\"\\n >\\n </por-access-management>\\n</div>\\n\";;\nvar path = 'app/docker/views/registries/access/registryAccess.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create secret'\\\" breadcrumbs=\\\"[{label:'Secrets', link:'docker.secrets'}, 'Add secret']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"secret_name\\\" class=\\\"col-sm-2 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Name\\\" id=\\\"secret_name\\\" placeholder=\\\"e.g. mySecret\\\" />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- secret-data -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"secret_data\\\" class=\\\"col-sm-2 control-label text-left\\\">Secret</label>\\n <div class=\\\"col-sm-10\\\">\\n <textarea class=\\\"form-control\\\" rows=\\\"5\\\" ng-model=\\\"formValues.Data\\\" ng-trim=\\\"false\\\"></textarea>\\n </div>\\n </div>\\n <!-- !secret-data -->\\n <!-- encode-secret -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"formValues.encodeSecret\\\"\\n label=\\\"'Encode secret'\\\"\\n on-change=\\\"(handleEncodeSecretChange)\\\"\\n tooltip=\\\"'Secrets need to be base64 encoded. Disable this if your secret is already base64 encoded.'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !encode-secret -->\\n <!-- labels -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 mt-1\\\">\\n <label class=\\\"control-label space-right text-left\\\">Labels</label>\\n <span class=\\\"label label-default interactive vertical-center space-left\\\" ng-click=\\\"addLabel()\\\"> <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add label </span>\\n </div>\\n <!-- labels-input-list -->\\n <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n <div ng-repeat=\\\"label in formValues.Labels\\\" class=\\\"mt-1\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"e.g. com.example.foo\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-6 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"e.g. bar\\\" />\\n <span class=\\\"input-group-btn\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !labels-input-list -->\\n </div>\\n <!-- !labels-->\\n <!-- access-control -->\\n <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n <!-- !access-control -->\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress || !formValues.Name || !formValues.Data\\\"\\n ng-click=\\\"create()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Create the secret</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Creating secret...</span>\\n </button>\\n <span class=\\\"text-danger space-left\\\" ng-if=\\\"state.formValidationError\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/secrets/create/createsecret.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Secret details'\\\" breadcrumbs=\\\"[{label:'Secrets', link:'docker.secrets', linkParams:{ id: secret.Id }}, secret.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"lock\\\" title-text=\\\"Secret details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Name</td>\\n <td>{{ secret.Name }}</td>\\n </tr>\\n <tr>\\n <td>ID</td>\\n <td>\\n {{ secret.Id }}\\n <button authorization=\\\"DockerSecretDelete\\\" class=\\\"btn btn-xs btn-dangerlight\\\" ng-click=\\\"removeSecret(secret.Id)\\\"\\n ><pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Delete this secret</button\\n >\\n </td>\\n </tr>\\n <tr>\\n <td>Created</td>\\n <td>{{ secret.CreatedAt | getisodate }}</td>\\n </tr>\\n <tr>\\n <td>Last updated</td>\\n <td>{{ secret.UpdatedAt | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"!(secret.Labels | emptyobject)\\\">\\n <td>Labels</td>\\n <td>\\n <table class=\\\"table-bordered table-condensed table\\\">\\n <tr ng-repeat=\\\"(k, v) in secret.Labels\\\">\\n <td>{{ k }}</td>\\n <td>{{ v }}</td>\\n </tr>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n ng-if=\\\"secret\\\"\\n resource-id=\\\"secret.Id\\\"\\n resource-control=\\\"secret.ResourceControl\\\"\\n resource-type=\\\"resourceType\\\"\\n on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\";;\nvar path = 'app/docker/views/secrets/edit/secret.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Secrets list'\\\" breadcrumbs=\\\"['Secrets']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <secrets-datatable\\n title-text=\\\"Secrets\\\"\\n title-icon=\\\"lock\\\"\\n dataset=\\\"secrets\\\"\\n table-key=\\\"secrets\\\"\\n order-by=\\\"Name\\\"\\n remove-action=\\\"removeAction\\\"\\n refresh-callback=\\\"getSecrets\\\"\\n ></secrets-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/secrets/secrets.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create service'\\\" breadcrumbs=\\\"[{label:'Services', link:'docker.services'}, 'Add service']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"service_name\\\" class=\\\"col-sm-2 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Name\\\" id=\\\"service_name\\\" placeholder=\\\"e.g. myService\\\" />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Image configuration </div>\\n <!-- image-and-registry -->\\n <por-image-registry\\n model=\\\"formValues.RegistryModel\\\"\\n auto-complete=\\\"true\\\"\\n label-class=\\\"col-sm-2\\\"\\n input-class=\\\"col-sm-8\\\"\\n endpoint=\\\"endpoint\\\"\\n is-admin=\\\"isAdmin\\\"\\n check-rate-limits=\\\"true\\\"\\n set-validity=\\\"setPullImageValidity\\\"\\n >\\n </por-image-registry>\\n <!-- !image-and-registry -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Scheduling </div>\\n <!-- scheduling-mode -->\\n <div class=\\\"form-group\\\">\\n <div>\\n <label class=\\\"control-label col-sm-2 text-left\\\"> Scheduling mode </label>\\n <div class=\\\"btn-group btn-group-sm col-sm-8\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.Mode\\\" uib-btn-radio=\\\"'global'\\\">Global</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.Mode\\\" uib-btn-radio=\\\"'replicated'\\\">Replicated</label>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"form-group form-inline\\\" ng-if=\\\"formValues.Mode === 'replicated'\\\">\\n <div>\\n <label class=\\\"control-label col-sm-2 text-left\\\"> Replicas </label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"number\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Replicas\\\" id=\\\"replicas\\\" placeholder=\\\"e.g. 3\\\" />\\n </div>\\n </div>\\n </div>\\n <!-- !scheduling-mode -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Ports configuration </div>\\n <!-- port-mapping -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"control-label col-sm-2 text-left\\\">Port mapping</label>\\n <div class=\\\"col-sm-8 pt-2\\\">\\n <span class=\\\"label label-default interactive vertical-center\\\" ng-click=\\\"addPortBinding()\\\"> <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> map additional port </span>\\n </div>\\n <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n <div ng-repeat=\\\"portBinding in formValues.Ports\\\" class=\\\"mt-1\\\">\\n <!-- host-port -->\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">host</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.PublishedPort\\\" placeholder=\\\"e.g. 80 or 1.2.3.4:80 (optional)\\\" />\\n </div>\\n <!-- !host-port -->\\n <span style=\\\"margin: 0 10px 0 10px\\\">\\n <pr-icon icon=\\\"'arrow-right'\\\"></pr-icon>\\n </span>\\n <!-- container-port -->\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">container</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.TargetPort\\\" placeholder=\\\"e.g. 80\\\" />\\n </div>\\n <!-- !container-port -->\\n <!-- protocol-actions -->\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.Protocol\\\" uib-btn-radio=\\\"'tcp'\\\">TCP</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.Protocol\\\" uib-btn-radio=\\\"'udp'\\\">UDP</label>\\n </div>\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.PublishMode\\\" uib-btn-radio=\\\"'ingress'\\\">Ingress</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.PublishMode\\\" uib-btn-radio=\\\"'host'\\\">Host</label>\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePortBinding($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- !protocol-actions -->\\n </div>\\n </div>\\n <!-- !port-mapping-input-list -->\\n </div>\\n <!-- !port-mapping -->\\n <!-- create-webhook -->\\n <div ng-if=\\\"endpoint.Type !== 4 && isAdmin\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Webhooks </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"$ctrl.formValues.Webhook\\\"\\n label=\\\"'Create a service webhook'\\\"\\n on-change=\\\"(handleWebHookChange)\\\"\\n tooltip=\\\"'Create a webhook (or callback URI) to automate the update of this service. Sending a POST request to this callback URI (without requiring any authentication) will pull the most up-to-date version of the associated image and re-deploy this service.'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n </div>\\n <!-- !create-webhook -->\\n <!-- access-control -->\\n <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n <!-- !access-control -->\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress || !formValues.RegistryModel.Image || !volumesAreValid()\\\"\\n ng-click=\\\"create()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Create the service</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Creating service...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <ul class=\\\"nav nav-pills nav-justified\\\">\\n <li class=\\\"active interactive\\\"><a data-target=\\\"#command\\\" data-toggle=\\\"tab\\\">Command & Logging</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#volumes\\\" data-toggle=\\\"tab\\\">Volumes</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#network\\\" data-toggle=\\\"tab\\\">Network</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#env\\\" data-toggle=\\\"tab\\\">Env</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#labels\\\" data-toggle=\\\"tab\\\">Labels</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#update-config\\\" data-toggle=\\\"tab\\\">Update config & Restart</a></li>\\n <li class=\\\"interactive\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"><a data-target=\\\"#secrets\\\" data-toggle=\\\"tab\\\">Secrets</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#configs\\\" data-toggle=\\\"tab\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\">Configs</a></li>\\n <li class=\\\"interactive\\\"><a data-target=\\\"#resources-placement\\\" data-toggle=\\\"tab\\\" ng-click=\\\"refreshSlider()\\\">Resources & Placement</a></li>\\n </ul>\\n <!-- tab-content -->\\n <div class=\\\"tab-content\\\">\\n <!-- tab-command -->\\n <div class=\\\"tab-pane active\\\" id=\\\"command\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Command </div>\\n <!-- command-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"service_command\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Command</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Command\\\" id=\\\"service_command\\\" placeholder=\\\"e.g. /usr/bin/nginx -t -c /mynginx.conf\\\" />\\n </div>\\n </div>\\n <!-- !command-input -->\\n <!-- entrypoint-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"service_entrypoint\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Entrypoint</label>\\n <div class=\\\"col-sm-9\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.EntryPoint\\\" id=\\\"service_entrypoint\\\" placeholder=\\\"e.g. /bin/sh -c\\\" />\\n </div>\\n </div>\\n <!-- !entrypoint-input -->\\n <!-- workdir-user-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"service_workingdir\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Working Dir</label>\\n <div class=\\\"col-sm-4\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.WorkingDir\\\" id=\\\"service_workingdir\\\" placeholder=\\\"e.g. /myapp\\\" />\\n </div>\\n <label for=\\\"service_user\\\" class=\\\"col-sm-1 control-label text-left\\\">User</label>\\n <div class=\\\"col-sm-4\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.User\\\" id=\\\"service_user\\\" placeholder=\\\"e.g. nginx\\\" />\\n </div>\\n </div>\\n <!-- !workdir-user-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Logging </div>\\n <!-- logging-driver -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"log-driver\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Driver</label>\\n <div class=\\\"col-sm-4\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"formValues.LogDriverName\\\" id=\\\"log-driver\\\">\\n <option selected value=\\\"\\\">Default logging driver</option>\\n <option ng-repeat=\\\"driver in availableLoggingDrivers\\\" ng-value=\\\"driver\\\">{{ driver }}</option>\\n <option value=\\\"none\\\">none</option>\\n </select>\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\">\\n Logging driver for service that will override the default docker daemon driver. Select Default logging driver if you don't want to override it. Supported\\n logging drivers can be found\\n <a href=\\\"https://docs.docker.com/engine/admin/logging/overview/#supported-logging-drivers\\\" target=\\\"_blank\\\">in the Docker documentation</a>.\\n </p>\\n </div>\\n </div>\\n <!-- !logging-driver -->\\n <!-- logging-opts -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 mt-1\\\">\\n <label class=\\\"control-label text-left\\\">\\n Options\\n <portainer-tooltip\\n position=\\\"'top'\\\"\\n message=\\\"'Add button is disabled unless a driver other than none or default is selected. Options are specific to the selected driver, refer to the driver documentation.'\\\"\\n ></portainer-tooltip>\\n </label>\\n <span\\n class=\\\"label label-default interactive vertical-center\\\"\\n style=\\\"margin-left: 10px\\\"\\n ng-click=\\\"!formValues.LogDriverName || formValues.LogDriverName === 'none' || addLogDriverOpt(formValues.LogDriverName)\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add logging driver option\\n </span>\\n </div>\\n <!-- logging-opts-input-list -->\\n <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n <div ng-repeat=\\\"opt in formValues.LogDriverOpts\\\" class=\\\"mt-1\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">option</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"opt.name\\\" placeholder=\\\"e.g. FOO\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"opt.value\\\" placeholder=\\\"e.g. bar\\\" />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLogDriverOpt($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- logging-opts-input-list -->\\n </div>\\n <!-- !logging-opts -->\\n </form>\\n </div>\\n <!-- !tab-command -->\\n <!-- tab-volume -->\\n <div class=\\\"tab-pane\\\" id=\\\"volumes\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <!-- volumes -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Volume mapping</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addVolume()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> map additional volume\\n </span>\\n </div>\\n <!-- volumes-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"volume in formValues.Volumes\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n <!-- volume-line1 -->\\n <div class=\\\"col-sm-12 form-inline\\\">\\n <!-- container-path -->\\n <div class=\\\"input-group col-sm-6\\\">\\n <div class=\\\"input-group input-group-sm w-full\\\">\\n <span class=\\\"input-group-addon\\\">container</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.Target\\\" placeholder=\\\"e.g. /path/in/container\\\" />\\n </div>\\n <div class=\\\"small text-warning\\\" ng-show=\\\"!volume.Target\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Target is required. </div>\\n </div>\\n <!-- !container-path -->\\n <!-- volume-type -->\\n <div class=\\\"input-group col-sm-5\\\" style=\\\"margin-left: 5px; vertical-align: top\\\">\\n <div class=\\\"btn-group btn-group-sm\\\" ng-if=\\\"allowBindMounts\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.Type\\\" uib-btn-radio=\\\"'volume'\\\" ng-click=\\\"volume.Source = null\\\">Volume</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.Type\\\" uib-btn-radio=\\\"'bind'\\\" ng-click=\\\"volume.Source = null\\\">Bind</label>\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeVolume($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- !volume-type -->\\n </div>\\n <!-- !volume-line1 -->\\n <!-- volume-line2 -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 5px\\\">\\n <div style=\\\"height: 30px; display: inline-block; vertical-align: top; display: inline-flex; align-items: center\\\">\\n <pr-icon icon=\\\"'arrow-right'\\\"></pr-icon>\\n </div>\\n <!-- volume -->\\n <div class=\\\"col-sm-6 input-group\\\" ng-if=\\\"volume.Type === 'volume'\\\" style=\\\"float: none; padding: 0\\\">\\n <div class=\\\"input-group input-group-sm w-full\\\">\\n <span class=\\\"input-group-addon\\\">volume</span>\\n <select\\n class=\\\"form-control\\\"\\n ng-model=\\\"volume.Source\\\"\\n ng-options=\\\"vol as ((vol.Id|truncate:30) + ' - ' + (vol.Driver|truncate:30)) for vol in availableVolumes\\\"\\n >\\n <option selected disabled value=\\\"\\\">Select a volume</option>\\n </select>\\n </div>\\n <div class=\\\"small text-warning\\\" ng-show=\\\"!volume.Source\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Source is required. </div>\\n </div>\\n <!-- !volume -->\\n <!-- bind -->\\n <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.Type === 'bind'\\\">\\n <div class=\\\"input-group input-group-sm w-full\\\">\\n <span class=\\\"input-group-addon\\\">host</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.Source\\\" placeholder=\\\"e.g. /path/on/host\\\" />\\n </div>\\n <div class=\\\"small text-warning\\\" ng-show=\\\"!volume.Source\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Source is required. </div>\\n </div>\\n <!-- !bind -->\\n <!-- read-only -->\\n <div class=\\\"input-group input-group-sm col-sm-5\\\" style=\\\"margin-left: 5px; vertical-align: top\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.ReadOnly\\\" uib-btn-radio=\\\"false\\\">Writable</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.ReadOnly\\\" uib-btn-radio=\\\"true\\\">Read-only</label>\\n </div>\\n </div>\\n <!-- !read-only -->\\n </div>\\n <!-- !volume-line2 -->\\n </div>\\n </div>\\n </div>\\n <!-- !volumes-input-list -->\\n </div>\\n <!-- !volumes -->\\n </form>\\n </div>\\n <!-- !tab-volume -->\\n <!-- tab-network -->\\n <div class=\\\"tab-pane\\\" id=\\\"network\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <!-- network-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_network\\\" class=\\\"col-sm-2 col-lg-1 control-label text-left\\\">Network</label>\\n <div class=\\\"col-sm-9\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"formValues.Network\\\">\\n <option selected disabled hidden value=\\\"\\\">Select a network</option>\\n <option ng-repeat=\\\"net in availableNetworks | orderBy: 'Name'\\\" ng-value=\\\"net.Name\\\">{{ net.Name }}</option>\\n </select>\\n </div>\\n <div class=\\\"col-sm-2\\\"></div>\\n </div>\\n <!-- !network-input -->\\n <!-- extra-networks -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Extra networks</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addExtraNetwork()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add extra network\\n </span>\\n </div>\\n <!-- network-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"network in formValues.ExtraNetworks\\\" style=\\\"margin-top: 2px\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"network.Name\\\">\\n <option selected disabled hidden value=\\\"\\\">Select a network</option>\\n <option ng-repeat=\\\"net in availableNetworks\\\" ng-value=\\\"net.Name\\\">{{ net.Name }}</option>\\n </select>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeExtraNetwork($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !network-input-list -->\\n </div>\\n <!-- !extra-networks -->\\n <!-- extra-hosts-variables -->\\n <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Hosts file entries</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addHostsEntry()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add additional entry\\n </span>\\n </div>\\n <!-- hosts-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"variable in formValues.HostsEntries\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"variable.value\\\" placeholder=\\\"e.g. host:IP\\\" />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeHostsEntry($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !hosts-input-list -->\\n </div>\\n <!-- !extra-hosts-variables -->\\n </form>\\n </div>\\n <!-- !tab-network -->\\n <!-- tab-env -->\\n <div class=\\\"tab-pane\\\" id=\\\"env\\\">\\n <div class=\\\"form-horizontal\\\">\\n <environment-variables-panel\\n values=\\\"formValues.Env\\\"\\n explanation=\\\"'These values will be applied to the service when created'\\\"\\n on-change=\\\"(handleEnvVarChange)\\\"\\n ></environment-variables-panel>\\n </div>\\n </div>\\n <!-- !tab-env -->\\n <!-- tab-labels -->\\n <div class=\\\"tab-pane\\\" id=\\\"labels\\\">\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <!-- labels -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Service labels</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addLabel()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add service label\\n </span>\\n </div>\\n <!-- labels-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"label in formValues.Labels\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"e.g. com.example.foo\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"e.g. bar\\\" />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !labels-input-list -->\\n </div>\\n <!-- !labels-->\\n <!-- container-labels -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Container labels</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addContainerLabel()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add container label\\n </span>\\n </div>\\n <!-- container-labels-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"label in formValues.ContainerLabels\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.key\\\" placeholder=\\\"e.g. com.example.foo\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"e.g. bar\\\" />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeContainerLabel($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !container-labels-input-list -->\\n </div>\\n <!-- !container-labels-->\\n </form>\\n </div>\\n <!-- !tab-labels -->\\n <!-- tab-update-config -->\\n <div class=\\\"tab-pane\\\" id=\\\"update-config\\\" ng-include=\\\"'app/docker/views/services/create/includes/update-restart.html'\\\"></div>\\n <!-- !tab-update-config -->\\n <!-- tab-secrets -->\\n <div class=\\\"tab-pane\\\" id=\\\"secrets\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\" ng-include=\\\"'app/docker/views/services/create/includes/secret.html'\\\"></div>\\n <!-- !tab-secrets -->\\n <!-- tab-configs -->\\n <div class=\\\"tab-pane\\\" id=\\\"configs\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\" ng-include=\\\"'app/docker/views/services/create/includes/config.html'\\\"></div>\\n <!-- !tab-configs -->\\n <!-- tab-resources-placement -->\\n <div class=\\\"tab-pane\\\" id=\\\"resources-placement\\\" ng-include=\\\"'app/docker/views/services/create/includes/resources-placement.html'\\\"></div>\\n <!-- !tab-resources-placement -->\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/create/createservice.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Configs</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addConfig()\\\"> <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add a config </span>\\n </div>\\n <!-- info message -->\\n <div class=\\\"form-group\\\" ng-show=\\\"formValues.Configs.$invalid\\\" style=\\\"margin-bottom: 0px\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\" style=\\\"padding-left: 35px; padding-top: 20px\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> {{ formValues.Configs.$error }}\\n </div>\\n </div>\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"config in formValues.Configs\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">config</span>\\n <select class=\\\"form-control\\\" ng-change=\\\"checkIfConfigDuplicated()\\\" ng-model=\\\"config.model\\\" ng-options=\\\"config.Name for config in availableConfigs | orderBy: 'Name'\\\">\\n <option value=\\\"\\\" selected=\\\"selected\\\">Select a config</option>\\n </select>\\n </div>\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">Path in container</span>\\n <input class=\\\"form-control\\\" ng-model=\\\"config.FileName\\\" placeholder=\\\"e.g. /path/in/container\\\" />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeConfig($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n</form>\\n\";;\nvar path = 'app/docker/views/services/create/includes/config.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Resources </div>\\n <!-- memory-reservation-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"memory-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> Memory reservation </label>\\n <div class=\\\"col-sm-3\\\">\\n <slider model=\\\"formValues.MemoryReservation\\\" floor=\\\"0\\\" ceil=\\\"state.sliderMaxMemory\\\" step=\\\"256\\\" ng-if=\\\"state.sliderMaxMemory\\\"></slider>\\n </div>\\n <div class=\\\"col-sm-2\\\">\\n <input type=\\\"number\\\" min=\\\"0\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.MemoryReservation\\\" />\\n </div>\\n <div class=\\\"col-sm-4\\\">\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 7px\\\"> Minimum memory available on a node to run a task (<b>MB</b>) </p>\\n </div>\\n </div>\\n <!-- !memory-reservation-input -->\\n <!-- memory-limit-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> Memory limit </label>\\n <div class=\\\"col-sm-3\\\">\\n <slider model=\\\"formValues.MemoryLimit\\\" floor=\\\"0\\\" ceil=\\\"state.sliderMaxMemory\\\" step=\\\"256\\\" ng-if=\\\"state.sliderMaxMemory\\\"></slider>\\n </div>\\n <div class=\\\"col-sm-2\\\">\\n <input type=\\\"number\\\" min=\\\"0\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.MemoryLimit\\\" />\\n </div>\\n <div class=\\\"col-sm-4\\\" style=\\\"margin-top: 7px\\\">\\n <p class=\\\"small text-muted\\\"> Maximum memory usage per task (<b>MB</b>) </p>\\n </div>\\n </div>\\n <!-- !memory-limit-input -->\\n <!-- cpu-reservation-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"cpu-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> CPU reservation </label>\\n <div class=\\\"col-sm-5\\\">\\n <slider model=\\\"formValues.CpuReservation\\\" floor=\\\"0\\\" ceil=\\\"state.sliderMaxCpu\\\" step=\\\"0.25\\\" precision=\\\"2\\\" ng-if=\\\"state.sliderMaxCpu\\\"></slider>\\n </div>\\n <div class=\\\"col-sm-4\\\" style=\\\"margin-top: 20px\\\">\\n <p class=\\\"small text-muted\\\"> Minimum CPU available on a node to run a task </p>\\n </div>\\n </div>\\n <!-- !cpu-reservation-input -->\\n <!-- cpu-limit-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> CPU limit </label>\\n <div class=\\\"col-sm-5\\\">\\n <slider model=\\\"formValues.CpuLimit\\\" floor=\\\"0\\\" ceil=\\\"state.sliderMaxCpu\\\" step=\\\"0.25\\\" precision=\\\"2\\\" ng-if=\\\"state.sliderMaxCpu\\\"></slider>\\n </div>\\n <div class=\\\"col-sm-4\\\" style=\\\"margin-top: 20px\\\">\\n <p class=\\\"small text-muted\\\"> Maximum CPU usage per task </p>\\n </div>\\n </div>\\n <!-- !cpu-limit-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Placement </div>\\n <!-- placement-constraints -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Placement constraints</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addPlacementConstraint()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> placement constraint\\n </span>\\n </div>\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"constraint in formValues.PlacementConstraints\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"constraint.key\\\" placeholder=\\\"e.g. node.role\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-1 input-group-sm\\\">\\n <select name=\\\"constraintOperator\\\" class=\\\"form-control\\\" ng-model=\\\"constraint.operator\\\">\\n <option value=\\\"==\\\">==</option>\\n <option value=\\\"!=\\\">!=</option>\\n </select>\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"constraint.value\\\" placeholder=\\\"e.g. manager\\\" />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePlacementConstraint($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n <!-- !placement-constraints -->\\n <!-- placement-preferences -->\\n <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Placement preferences</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addPlacementPreference()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> placement preference\\n </span>\\n </div>\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"preference in formValues.PlacementPreferences\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">strategy</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"preference.strategy\\\" placeholder=\\\"e.g. spread\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"preference.value\\\" placeholder=\\\"e.g. node.labels.datacenter\\\" />\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePlacementPreference($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n <!-- !placement-preferences -->\\n</form>\\n\";;\nvar path = 'app/docker/views/services/create/includes/resources-placement.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n By default, secrets will be available under <code>/run/secrets/$SECRET_NAME</code> in containers (Linux) or\\n <code>C:\\\\ProgramData\\\\Docker\\\\secrets\\\\$SECRET_NAME</code> (Windows).</div\\n >\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Secrets</label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addSecret()\\\"> <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add a secret </span>\\n </div>\\n <!-- info message -->\\n <div class=\\\"form-group\\\" ng-show=\\\"formValues.Secrets.$invalid\\\" style=\\\"margin-bottom: 0px\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\" style=\\\"padding-left: 35px; padding-top: 20px\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> {{ formValues.Secrets.$error }}\\n </div>\\n </div>\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"secret in formValues.Secrets track by $index\\\" style=\\\"margin-top: 4px\\\">\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">secret</span>\\n <select class=\\\"form-control\\\" ng-model=\\\"secret.model\\\" ng-change=\\\"checkIfSecretDuplicated()\\\" ng-options=\\\"secret.Name for secret in availableSecrets | orderBy: 'Name'\\\">\\n <option value=\\\"\\\" selected=\\\"selected\\\">Select a secret</option>\\n </select>\\n </div>\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3 && secret.overrideTarget\\\">\\n <span class=\\\"input-group-addon\\\">target</span>\\n <input class=\\\"form-control\\\" ng-model=\\\"secret.target\\\" placeholder=\\\"/path/in/container\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n <div class=\\\"btn-group btn-group-sm\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"secret.overrideTarget\\\" uib-btn-radio=\\\"false\\\">Default location</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"secret.overrideTarget\\\" uib-btn-radio=\\\"true\\\">Override</label>\\n </div>\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeSecret($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n</form>\\n\";;\nvar path = 'app/docker/views/services/create/includes/secret.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Update config </div>\\n <!-- parallelism-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"parallelism\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Update parallelism</label>\\n <div class=\\\"col-sm-4 col-lg-3\\\">\\n <input type=\\\"number\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Parallelism\\\" id=\\\"parallelism\\\" placeholder=\\\"e.g. 1\\\" />\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\"> Maximum number of tasks to be updated simultaneously (0 to update all at once). </p>\\n </div>\\n </div>\\n <!-- !parallelism-input -->\\n <!-- delay-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"update-delay\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Update delay\\n <portainer-tooltip message=\\\"'Supported format examples: 1h, 5m, 10s, 1000ms, 15us, 60ns.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-4 col-lg-3\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.UpdateDelay\\\" id=\\\"update-delay\\\" placeholder=\\\"e.g. 1m\\\" ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\" />\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\"> Amount of time between updates expressed by a number followed by unit (ns|us|ms|s|m|h). Default value is 0s, 0 seconds. </p>\\n </div>\\n </div>\\n <!-- !delay-input -->\\n <!-- failureAction-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"failure-action\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Update failure action</label>\\n <div class=\\\"col-sm-4 col-lg-3\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.FailureAction\\\" uib-btn-radio=\\\"'continue'\\\">Continue</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.FailureAction\\\" uib-btn-radio=\\\"'pause'\\\">Pause</label>\\n </div>\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\"> Action taken on failure to start after update. </p>\\n </div>\\n </div>\\n <!-- !failureAction-input -->\\n <!-- order-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.29\\\">\\n <label for=\\\"update-order\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Update order</label>\\n <div class=\\\"col-sm-4 col-lg-3\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.UpdateOrder\\\" uib-btn-radio=\\\"'start-first'\\\">start-first</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.UpdateOrder\\\" uib-btn-radio=\\\"'stop-first'\\\">stop-first</label>\\n </div>\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\"> Operation order on failure. </p>\\n </div>\\n </div>\\n <!-- !order-input -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Restart policy </div>\\n <!-- restartCondition-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"restart-condition\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Restart condition</label>\\n <div class=\\\"col-sm-4 col-lg-3\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.RestartCondition\\\" uib-btn-radio=\\\"'none'\\\">None</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.RestartCondition\\\" uib-btn-radio=\\\"'on-failure'\\\">On-failure</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"formValues.RestartCondition\\\" uib-btn-radio=\\\"'any'\\\">Any</label>\\n </div>\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\"> Restart when condition is met (default condition \\\"any\\\"). </p>\\n </div>\\n </div>\\n <!-- !restartCondition-input -->\\n <!-- restartDelay-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"restart-delay\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Restart delay\\n <portainer-tooltip message=\\\"'Supported format examples: 1h, 5m, 10s, 1000ms, 15us, 60ns.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-4 col-lg-3\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.RestartDelay\\\" id=\\\"restart-delay\\\" placeholder=\\\"e.g. 1m\\\" ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\" />\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\"> Delay between restart attempts expressed by a number followed by unit (ns|us|ms|s|m|h). Default value is 5s, 5 seconds. </p>\\n </div>\\n </div>\\n <!-- !restartDelay-input -->\\n <!-- restartMaxAttempts-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"restart-max-attempts\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Restart max attempts</label>\\n <div class=\\\"col-sm-4 col-lg-3\\\">\\n <input type=\\\"number\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.RestartMaxAttempts\\\" id=\\\"restart-max-attempts\\\" placeholder=\\\"e.g. 0\\\" />\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\"> Maximum attempts to restart a given task before giving up (default value is 0, which means unlimited). </p>\\n </div>\\n </div>\\n <!-- !restartMaxAttempts-input -->\\n <!-- restartWindow-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"restart-window\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Restart window\\n <portainer-tooltip message=\\\"'Supported format examples: 1h, 5m, 10s, 1000ms, 15us, 60ns.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-4 col-lg-3\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.RestartWindow\\\" id=\\\"restart-window\\\" placeholder=\\\"e.g. 1m\\\" ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\" />\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <p class=\\\"small text-muted\\\">\\n Time window to evaluate restart attempts expressed by a number followed by unit (ns|us|ms|s|m|h). Default value is 0 seconds, which is unbounded.\\n </p>\\n </div>\\n </div>\\n <!-- !restartWindow-input -->\\n</form>\\n\";;\nvar path = 'app/docker/views/services/create/includes/update-restart.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\" id=\\\"service-configs\\\" ng-submit=\\\"updateService(service)\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Configs\\\"> </rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"form-inline\\\" style=\\\"padding: 10px\\\" authorization=\\\"DockerServiceUpdate\\\">\\n Add a config:\\n <select class=\\\"form-control !h-[30px] !text-[13px]\\\" ng-options=\\\"config.Name for config in filterConfigs(configs) | orderBy: 'Name'\\\" ng-model=\\\"newConfig\\\">\\n <option selected disabled hidden value=\\\"\\\">Select a config</option>\\n </select>\\n <a class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"addConfig(service, newConfig)\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> add config </a>\\n </div>\\n <table class=\\\"table\\\" style=\\\"margin-top: 5px\\\">\\n <thead>\\n <tr>\\n <th>Name</th>\\n <th>Path in container</th>\\n <th>UID</th>\\n <th>GID</th>\\n <th>Mode</th>\\n <th></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"config in service.ServiceConfigs\\\">\\n <td>\\n <a ui-sref=\\\"docker.configs.config({id: config.Id})\\\">{{ config.Name }}</a>\\n </td>\\n <td ng-if=\\\"!config.credSpec\\\">\\n <input\\n class=\\\"form-control\\\"\\n ng-model=\\\"config.FileName\\\"\\n ng-change=\\\"updateConfig(service)\\\"\\n placeholder=\\\"e.g. /path/in/container\\\"\\n required\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n ng-disabled=\\\"config.credSpec\\\"\\n />\\n </td>\\n <td ng-if=\\\"!config.credSpec\\\">{{ config.Uid }}</td>\\n <td ng-if=\\\"!config.credSpec\\\">{{ config.Gid }}</td>\\n <td ng-if=\\\"!config.credSpec\\\">{{ config.Mode }}</td>\\n <td ng-if=\\\"config.credSpec\\\" colspan=\\\"4\\\">Credential Spec</td>\\n <td authorization=\\\"DockerServiceUpdate\\\">\\n <button class=\\\"btn btn-dangerlight pull-right\\\" type=\\\"button\\\" ng-click=\\\"removeConfig(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </td>\\n </tr>\\n <tr ng-if=\\\"service.ServiceConfigs.length === 0\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">No configs associated to this service.</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"submit\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceConfigs'])\\\">Apply changes</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['ServiceConfigs'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</form>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/configs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div ng-if=\\\"service.ServiceConstraints\\\" id=\\\"service-placement-constraints\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Placement constraints\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addPlacementConstraint(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> placement constraint\\n </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"service.ServiceConstraints.length === 0\\\">\\n <p>There are no placement constraints for this service.</p>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"service.ServiceConstraints.length > 0\\\" classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Name</th>\\n <th>Operator</th>\\n <th>Value</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"constraint in service.ServiceConstraints\\\">\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"constraint.key\\\"\\n placeholder=\\\"e.g. node.role\\\"\\n ng-change=\\\"updatePlacementConstraint(service, constraint)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <select\\n name=\\\"constraintOperator\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"constraint.operator\\\"\\n ng-change=\\\"updatePlacementConstraint(service, constraint)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n >\\n <option value=\\\"==\\\">==</option>\\n <option value=\\\"!=\\\">!=</option>\\n </select>\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"constraint.value\\\"\\n placeholder=\\\"e.g. manager\\\"\\n ng-change=\\\"updatePlacementConstraint(service, constraint)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePlacementConstraint(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceConstraints'])\\\" ng-click=\\\"updateService(service)\\\">Apply changes</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['ServiceConstraints'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/constraints.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Container spec\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"!mb-0 table\\\">\\n <tbody>\\n <tr>\\n <td class=\\\"w-1/5\\\">CMD</td>\\n <td\\n ><code ng-if=\\\"service.Command\\\">{{ service.Command | command }}</code></td\\n >\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Command to execute. </p>\\n </td>\\n </tr>\\n <tr>\\n <td>Args</td>\\n <td\\n ><code ng-if=\\\"service.Arguments\\\">{{ service.Arguments }}</code></td\\n >\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Arguments passed to command in container. </p>\\n </td>\\n </tr>\\n <tr>\\n <td>User</td>\\n <td>{{ service.User }}</td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Username or UID. </p>\\n </td>\\n </tr>\\n <tr>\\n <td>Working directory</td>\\n <td>{{ service.Dir }}</td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Working directory inside the container. </p>\\n </td>\\n </tr>\\n <tr>\\n <td>Stop grace period</td>\\n <td>{{ service.StopGracePeriod }}</td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Time to wait before force killing a container (default none). </p>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/container-specs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div id=\\\"service-container-labels\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Container labels\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating ||addContainerLabel(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> container label\\n </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"service.ServiceContainerLabels.length === 0\\\">\\n <p>There are no container labels for this service.</p>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"service.ServiceContainerLabels.length > 0\\\" classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Label</th>\\n <th>Value</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"label in service.ServiceContainerLabels\\\">\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon fit-text-size\\\">name</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"label.key\\\"\\n placeholder=\\\"e.g. com.example.foo\\\"\\n ng-change=\\\"updateContainerLabel(service, label)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon fit-text-size\\\">value</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"label.value\\\"\\n placeholder=\\\"e.g. bar\\\"\\n ng-change=\\\"updateContainerLabel(service, label)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeContainerLabel(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceContainerLabels'])\\\" ng-click=\\\"updateService(service)\\\"\\n >Apply changes</button\\n >\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['ServiceContainerLabels'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/containerlabels.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form ng-if=\\\"service.EnvironmentVariables\\\" id=\\\"service-env-variables\\\" name=\\\"serviceEnvForm\\\" class=\\\"form-horizontal\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Environment variables\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addEnvironmentVariable(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> environment variable\\n </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"service.EnvironmentVariables.length === 0\\\">\\n <p>There are no environment variables for this service.</p>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"service.EnvironmentVariables.length > 0\\\">\\n <div class=\\\"form-group\\\">\\n <environment-variables-fieldset values=\\\"service.EnvironmentVariables\\\" on-change=\\\"(onChangeEnvVars)\\\"></environment-variables-fieldset>\\n </div>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"!hasChanges(service, ['EnvironmentVariables']) || serviceEnvForm.$invalid\\\"\\n ng-click=\\\"updateService(service)\\\"\\n >\\n Apply changes\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['EnvironmentVariables'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</ng-form>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/environmentvariables.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Hosts file entries\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating ||addHostsEntry(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> add host entry\\n </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"!service.Hosts || service.Hosts.length === 0\\\">\\n <p>The Hosts file has no extra entries.</p>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"service.Hosts.length > 0\\\" classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Hostname</th>\\n <th>IP</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"entry in service.Hosts\\\">\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"entry.hostname\\\"\\n placeholder=\\\"e.g. example.com\\\"\\n ng-change=\\\"updateHostsEntry(service, entry)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"entry.ip\\\"\\n placeholder=\\\"e.g. 10.0.1.1\\\"\\n ng-change=\\\"updateHostsEntry(service, entry)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeHostsEntry(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['Hosts'])\\\" ng-click=\\\"updateService(service)\\\">Apply changes</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['Hosts'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/hosts.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div id=\\\"service-container-image\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Change container image\\\"> </rd-widget-header>\\n <rd-widget-body ng-if=\\\"!isUpdating\\\">\\n <form class=\\\"form-horizontal\\\">\\n <por-image-registry\\n model=\\\"formValues.RegistryModel\\\"\\n auto-complete=\\\"true\\\"\\n label-class=\\\"col-sm-1\\\"\\n input-class=\\\"col-sm-11\\\"\\n endpoint=\\\"endpoint\\\"\\n is-admin=\\\"isAdmin\\\"\\n check-rate-limits=\\\"true\\\"\\n set-validity=\\\"setPullImageValidity\\\"\\n >\\n </por-image-registry>\\n </form>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"isUpdating\\\">\\n <p>Image modification is disabled while service is updating.</p>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['Image'])\\\" ng-click=\\\"updateService(service)\\\">Apply changes</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['Image'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/image.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div id=\\\"service-logging-driver\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Logging driver\\\"> </rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"form-inline\\\" style=\\\"padding: 10px\\\" authorization=\\\"DockerServiceUpdate\\\">\\n Driver:\\n <select class=\\\"form-control !h-[30px] !text-[13px]\\\" ng-model=\\\"service.LogDriverName\\\" ng-change=\\\"updateLogDriverName(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n <option selected value=\\\"\\\">Default logging driver</option>\\n <option ng-repeat=\\\"driver in availableLoggingDrivers\\\" ng-value=\\\"driver\\\">{{ driver }}</option>\\n <option value=\\\"none\\\">none</option>\\n </select>\\n <a class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"!service.LogDriverName || service.LogDriverName === 'none' || addLogDriverOpt(service)\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> add logging driver option\\n </a>\\n </div>\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Option</th>\\n <th>Value</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"option in service.LogDriverOpts\\\">\\n <td class=\\\"w-1/2\\\">\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon fit-text-size\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.key\\\" ng-disabled=\\\"option.added || isUpdating\\\" placeholder=\\\"e.g. FOO\\\" />\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon fit-text-size\\\">value</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"option.value\\\"\\n ng-change=\\\"updateLogDriverOpt(service, option)\\\"\\n placeholder=\\\"e.g. bar\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLogDriverOpt(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </td>\\n </tr>\\n <tr ng-if=\\\"service.LogDriverOpts.length === 0\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">No options associated to this logging driver.</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['LogDriverName', 'LogDriverOpts'])\\\" ng-click=\\\"updateService(service)\\\"\\n >Apply changes</button\\n >\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['LogDriverName', 'LogDriverOpts'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/logging.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div ng-if=\\\"service.ServiceMounts\\\" id=\\\"service-mounts\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Mounts\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating ||addMount(service)\\\" ng-disabled=\\\"isUpdating\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> mount </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"service.ServiceMounts.length === 0\\\">\\n <p>There are no mounts for this service.</p>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"service.ServiceMounts.length > 0\\\" classes=\\\"no-padding\\\">\\n <table class=\\\"mb-0 table\\\">\\n <thead>\\n <tr>\\n <th ng-if=\\\"isAdmin || allowBindMounts\\\">Type</th>\\n <th>Source</th>\\n <th>Target</th>\\n <th authorization=\\\"DockerServiceUpdate\\\">Read only</th>\\n <th authorization=\\\"DockerServiceUpdate\\\">Actions</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"(index, mount) in service.ServiceMounts\\\">\\n <td class=\\\"!pt-6 !align-top\\\" ng-if=\\\"isAdmin || allowBindMounts\\\">\\n <select\\n name=\\\"mountType\\\"\\n class=\\\"form-control !h-[30px] !text-[13px]\\\"\\n ng-model=\\\"mount.Type\\\"\\n ng-change=\\\"onChangeMountType(service, mount)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n >\\n <option value=\\\"volume\\\">Volume</option>\\n <option value=\\\"bind\\\">Bind</option>\\n </select>\\n </td>\\n <td class=\\\"!pt-6 !pb-0 !align-top\\\">\\n <div class=\\\"mb-6\\\">\\n <select\\n class=\\\"form-control !h-[30px] !text-[13px]\\\"\\n ng-model=\\\"mount.Source\\\"\\n ng-change=\\\"updateMount(service, mount)\\\"\\n ng-options=\\\"vol.Id as ((vol.Id|truncate:30) + ' - ' + (vol.Driver|truncate:30)) for vol in availableVolumes\\\"\\n ng-if=\\\"mount.Type === 'volume'\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n >\\n <option selected disabled hidden value=\\\"\\\">Select a volume</option>\\n </select>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control !h-[30px] !text-[13px]\\\"\\n name=\\\"\\\"\\n ng-model=\\\"mount.Source\\\"\\n placeholder=\\\"e.g. /tmp/portainer/data\\\"\\n ng-change=\\\"updateMount(service, mount)\\\"\\n ng-disabled=\\\"isUpdating || (!isAdmin && !allowBindMounts && mount.Type === 'bind')\\\"\\n ng-if=\\\"mount.Type === 'bind'\\\"\\n />\\n </div>\\n <div class=\\\"small text-warning !-mt-6\\\" ng-show=\\\"!mount.Source\\\">\\n <div class=\\\"vertical-center\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Source is required. </div></div\\n >\\n </td>\\n <td class=\\\"!pt-6 !pb-0 !align-top\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control mb-6 !h-[30px] !text-[13px]\\\"\\n ng-model=\\\"mount.Target\\\"\\n placeholder=\\\"e.g. /tmp/portainer/data\\\"\\n ng-change=\\\"updateMount(service, mount)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n <div class=\\\"small text-warning !-mt-6\\\" ng-show=\\\"!mount.Target\\\">\\n <div class=\\\"vertical-center\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Target is required. </div></div\\n >\\n </td>\\n <td authorization=\\\"DockerServiceUpdate\\\">\\n <por-switch-field checked=\\\"mount.ReadOnly\\\" disabled=\\\"isUpdating\\\" on-change=\\\"(toggleMountReadOnly)\\\" index=\\\"index\\\"></por-switch-field>\\n </td>\\n <td authorization=\\\"DockerServiceUpdate\\\">\\n <span class=\\\"input-group-btn\\\">\\n <button class=\\\"btn btn-dangerlight btn-sm\\\" type=\\\"button\\\" ng-click=\\\"removeMount(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!mountsAreValid() || !hasChanges(service, ['ServiceMounts'])\\\" ng-click=\\\"updateService(service)\\\">\\n Apply changes\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['ServiceMounts'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/mounts.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div id=\\\"service-network-specs\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Networks\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addNetwork(service)\\\" ng-disabled=\\\"isUpdating\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> network </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"!service.Networks || service.Networks.length === 0\\\">\\n <p>This service is not connected to any networks.</p>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"service.Networks && service.Networks.length > 0\\\" classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Name</th>\\n <th>ID</th>\\n <th>IP address</th>\\n <th>Actions</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"network in service.Networks\\\">\\n <td>\\n <select\\n ng-if=\\\"network.Editable\\\"\\n class=\\\"form-control !h-[30px] !rounded !text-[13px]\\\"\\n ng-model=\\\"network.Id\\\"\\n ng-change=\\\"updateNetwork(service)\\\"\\n ng-options=\\\"net.Id as net.Name for net in filterNetworks(swarmNetworks, network)\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n style=\\\"width: initial; min-width: 50%\\\"\\n >\\n <option disabled value=\\\"\\\" selected>Select a network</option>\\n </select>\\n <span ng-if=\\\"!network.Editable\\\">{{ network.Name }}</span>\\n </td>\\n <td>\\n <a ui-sref=\\\"docker.networks.network({id: network.Id})\\\">{{ network.Id }}</a>\\n </td>\\n <td>\\n {{ network.Addr }}\\n </td>\\n <td ng-if=\\\"network.Editable\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <span class=\\\"input-group-btn\\\">\\n <button class=\\\"btn btn-sm btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeNetwork(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </td>\\n <td ng-if=\\\"!network.Editable\\\"></td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"isUpdating || !hasChanges(service, ['Networks'])\\\" ng-click=\\\"updateService(service)\\\">\\n Apply changes\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['Networks'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/networks.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div ng-if=\\\"service.ServicePreferences\\\" id=\\\"service-placement-preferences\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Placement preferences\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addPlacementPreference(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> placement preference\\n </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"service.ServicePreferences.length === 0\\\">\\n <p>There are no placement preferences for this service.</p>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"service.ServicePreferences.length > 0\\\" classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Strategy</th>\\n <th>Value</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"preference in service.ServicePreferences\\\">\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"preference.strategy\\\"\\n placeholder=\\\"e.g. node.role\\\"\\n ng-change=\\\"updatePlacementPreference(service, preference)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"preference.value\\\"\\n placeholder=\\\"e.g. manager\\\"\\n ng-change=\\\"updatePlacementPreference(service, preference)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePlacementPreference(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServicePreferences'])\\\" ng-click=\\\"updateService(service)\\\">Apply changes</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['ServicePreferences'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/placementPreferences.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Published ports\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating ||addPublishedPort(service)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> port mapping\\n </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"!service.Ports || service.Ports.length === 0\\\">\\n <p>This service has no ports published.</p>\\n </rd-widget-body>\\n <rd-widget-body ng-if=\\\"service.Ports && service.Ports.length > 0\\\" classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th>Host port</th>\\n <th>Container port</th>\\n <th>Protocol</th>\\n <th>Publish mode</th>\\n <th authorization=\\\"DockerServiceUpdate\\\">Actions</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"portBinding in service.Ports\\\">\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon !leading-none\\\">host</span>\\n <input\\n type=\\\"number\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"portBinding.PublishedPort\\\"\\n placeholder=\\\"e.g. 8080\\\"\\n ng-change=\\\"updatePublishedPort(service, mapping)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon !leading-none\\\">container</span>\\n <input\\n type=\\\"number\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"portBinding.TargetPort\\\"\\n placeholder=\\\"e.g. 80\\\"\\n ng-change=\\\"updatePublishedPort(service, mapping)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <select\\n class=\\\"selectpicker form-control !rounded\\\"\\n ng-model=\\\"portBinding.Protocol\\\"\\n ng-change=\\\"updatePublishedPort(service, mapping)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n >\\n <option value=\\\"tcp\\\">tcp</option>\\n <option value=\\\"udp\\\">udp</option>\\n </select>\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <select\\n class=\\\"selectpicker form-control !rounded\\\"\\n ng-model=\\\"portBinding.PublishMode\\\"\\n ng-change=\\\"updatePublishedPort(service, mapping)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n >\\n <option value=\\\"ingress\\\">ingress</option>\\n <option value=\\\"host\\\">host</option>\\n </select>\\n </div>\\n </td>\\n <td authorization=\\\"DockerServiceUpdate\\\">\\n <span class=\\\"input-group-btn\\\">\\n <button class=\\\"btn btn-sm btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removePortPublishedBinding(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['Ports'])\\\" ng-click=\\\"updateService(service)\\\">Apply changes</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['Ports'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/ports.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div id=\\\"service-resources\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Resource limits and reservations\\\"> </rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td style=\\\"vertical-align: middle\\\"> Memory reservation (MB) </td>\\n <td>\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"number\\\"\\n step=\\\"0.125\\\"\\n min=\\\"0\\\"\\n ng-model=\\\"service.ReservationMemoryBytes\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'ReservationMemoryBytes')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </td>\\n <td style=\\\"vertical-align: middle\\\">\\n <p class=\\\"small text-muted\\\"> Minimum memory available on a node to run a task (set to 0 for unlimited) </p>\\n </td>\\n </tr>\\n <tr>\\n <td style=\\\"vertical-align: middle\\\"> Memory limit (MB) </td>\\n <td>\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"number\\\"\\n step=\\\"0.125\\\"\\n min=\\\"0\\\"\\n ng-model=\\\"service.LimitMemoryBytes\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'LimitMemoryBytes')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </td>\\n <td style=\\\"vertical-align: middle\\\">\\n <p class=\\\"small text-muted\\\"> Maximum memory usage per task (set to 0 for unlimited) </p>\\n </td>\\n </tr>\\n <tr>\\n <td style=\\\"vertical-align: middle\\\">\\n <div> CPU reservation </div>\\n </td>\\n <td>\\n <slider\\n model=\\\"service.ReservationNanoCPUs\\\"\\n floor=\\\"0\\\"\\n ceil=\\\"state.sliderMaxCpu\\\"\\n step=\\\"0.25\\\"\\n precision=\\\"2\\\"\\n ng-if=\\\"service && state.sliderMaxCpu\\\"\\n on-change=\\\"updateServiceAttribute(service, 'ReservationNanoCPUs')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n ></slider>\\n </td>\\n <td style=\\\"vertical-align: middle\\\">\\n <p class=\\\"small text-muted\\\"> Minimum CPU available on a node to run a task </p>\\n </td>\\n </tr>\\n <tr>\\n <td style=\\\"vertical-align: middle\\\">\\n <div> CPU limit </div>\\n </td>\\n <td>\\n <slider\\n model=\\\"service.LimitNanoCPUs\\\"\\n floor=\\\"0\\\"\\n ceil=\\\"state.sliderMaxCpu\\\"\\n step=\\\"0.25\\\"\\n precision=\\\"2\\\"\\n ng-if=\\\"service && state.sliderMaxCpu\\\"\\n on-change=\\\"updateServiceAttribute(service, 'LimitNanoCPUs')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n ></slider>\\n </td>\\n <td style=\\\"vertical-align: middle\\\">\\n <p class=\\\"small text-muted\\\"> Maximum CPU usage per task </p>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"!hasChanges(service, ['LimitNanoCPUs', 'LimitMemoryBytes', 'ReservationNanoCPUs', 'ReservationMemoryBytes'])\\\"\\n ng-click=\\\"updateService(service)\\\"\\n >Apply changes</button\\n >\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['LimitNanoCPUs', 'LimitMemoryBytes', 'ReservationNanoCPUs', 'ReservationMemoryBytes'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/resources.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div id=\\\"service-restart-policy\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Restart policy\\\"> </rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Restart condition</td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <select\\n class=\\\"selectpicker form-control !rounded\\\"\\n ng-model=\\\"service.RestartCondition\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'RestartCondition')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n >\\n <option value=\\\"none\\\">None</option>\\n <option value=\\\"on-failure\\\">On failure</option>\\n <option value=\\\"any\\\">Any</option>\\n </select>\\n </div>\\n </td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Condition for restart. </p>\\n </td>\\n </tr>\\n <tr>\\n <td>Restart delay</td>\\n <td>\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"text\\\"\\n ng-model=\\\"service.RestartDelay\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'RestartDelay')\\\"\\n ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\">\\n Delay between restart attempts expressed by a number followed by unit (ns|us|ms|s|m|h). Default value is 5s, 5 seconds.\\n </p>\\n </td>\\n </tr>\\n <tr>\\n <td>Restart max attempts</td>\\n <td>\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"number\\\"\\n ng-model=\\\"service.RestartMaxAttempts\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'RestartMaxAttempts')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Maximum attempts to restart a given task before giving up (default value is 0, which means unlimited). </p>\\n </td>\\n </tr>\\n <tr>\\n <td>Restart window</td>\\n <td>\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"text\\\"\\n ng-model=\\\"service.RestartWindow\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'RestartWindow')\\\"\\n ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\">\\n Time window to evaluate restart attempts expressed by a number followed by unit (ns|us|ms|s|m|h). Default value is 0 seconds, which is unbounded.\\n </p>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"!hasChanges(service, ['RestartCondition', 'RestartDelay', 'RestartMaxAttempts', 'RestartWindow'])\\\"\\n ng-click=\\\"updateService(service)\\\"\\n >Apply changes</button\\n >\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['RestartCondition', 'RestartDelay', 'RestartMaxAttempts', 'RestartWindow'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/restart.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\" id=\\\"service-secrets\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Secrets\\\"> </rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"form-inline\\\" style=\\\"padding: 10px\\\" authorization=\\\"DockerServiceUpdate\\\">\\n Add a secret:\\n <select class=\\\"form-control !h-[30px] !text-[13px]\\\" ng-options=\\\"secret.Name for secret in secrets | orderBy: 'Name'\\\" ng-model=\\\"state.addSecret.secret\\\">\\n <option selected disabled hidden value=\\\"\\\">Select a secret</option>\\n </select>\\n <div class=\\\"form-group\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3 && state.addSecret.override\\\">\\n Target:\\n <input class=\\\"form-control\\\" ng-model=\\\"state.addSecret.target\\\" placeholder=\\\"/path/in/container\\\" />\\n </div>\\n <div class=\\\"btn-group btn-group-sm\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"state.addSecret.override\\\" uib-btn-radio=\\\"false\\\">Default location</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"state.addSecret.override\\\" uib-btn-radio=\\\"true\\\">Override</label>\\n </div>\\n <a class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"addSecret(service, state.addSecret)\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> add secret </a>\\n </div>\\n <table class=\\\"table\\\" style=\\\"margin-top: 5px\\\">\\n <thead>\\n <tr>\\n <th>Name</th>\\n <th>File name</th>\\n <th>UID</th>\\n <th>GID</th>\\n <th>Mode</th>\\n <th></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"secret in service.ServiceSecrets\\\">\\n <td\\n ><a ui-sref=\\\"docker.secrets.secret({id: secret.Id})\\\">{{ secret.Name }}</a></td\\n >\\n <td>{{ secret.FileName }}</td>\\n <td>{{ secret.Uid }}</td>\\n <td>{{ secret.Gid }}</td>\\n <td>{{ secret.Mode }}</td>\\n <td authorization=\\\"DockerServiceUpdate\\\">\\n <button class=\\\"btn btn-dangerlight pull-right\\\" type=\\\"button\\\" ng-click=\\\"removeSecret(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </td>\\n </tr>\\n <tr ng-if=\\\"service.ServiceSecrets.length === 0\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">No secrets associated to this service.</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceSecrets'])\\\" ng-click=\\\"updateService(service)\\\">Apply changes</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['ServiceSecrets'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/secrets.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div id=\\\"service-labels\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Service labels\\\">\\n <div class=\\\"nopadding\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <a class=\\\"btn btn-secondary btn-sm pull-right\\\" ng-click=\\\"isUpdating || addLabel(service)\\\" ng-disabled=\\\"isUpdating\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> label </a>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"service.ServiceLabels.length === 0\\\">\\n <p>There are no labels for this service.</p>\\n </rd-widget-body>\\n <rd-widget-body classes=\\\"no-padding\\\" ng-if=\\\"service.ServiceLabels.length > 0\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <tr>\\n <th> Label </th>\\n <th> Value </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"label in service.ServiceLabels\\\">\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon fit-text-size\\\">name</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"label.key\\\"\\n placeholder=\\\"e.g. com.example.foo\\\"\\n ng-change=\\\"updateLabel(service, label)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </div>\\n </td>\\n <td>\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon fit-text-size\\\">value</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"label.value\\\"\\n placeholder=\\\"e.g. bar\\\"\\n ng-change=\\\"updateLabel(service, label)\\\"\\n ng-disabled=\\\"isUpdating\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n <span class=\\\"input-group-btn\\\" authorization=\\\"DockerServiceUpdate\\\">\\n <button class=\\\"btn btn-dangerlight\\\" type=\\\"button\\\" ng-click=\\\"removeLabel(service, $index)\\\" ng-disabled=\\\"isUpdating\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </span>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!hasChanges(service, ['ServiceLabels'])\\\" ng-click=\\\"updateService(service)\\\">Apply changes</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['ServiceLabels'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/servicelabels.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div ng-if=\\\"tasks.length > 0 && nodes\\\" id=\\\"service-tasks\\\">\\n <tasks-datatable\\n title-text=\\\"Tasks\\\"\\n title-icon=\\\"list\\\"\\n dataset=\\\"tasks\\\"\\n table-key=\\\"service-tasks\\\"\\n order-by=\\\"Updated\\\"\\n reverse-order=\\\"true\\\"\\n nodes=\\\"nodes\\\"\\n show-slot-column=\\\"service.Mode !== 'global'\\\"\\n show-logs-button=\\\"applicationState.endpoint.apiVersion >= 1.30\\\"\\n agent-proxy=\\\"applicationState.endpoint.mode.agentProxy\\\"\\n ></tasks-datatable>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/tasks.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div id=\\\"service-update-config\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Update configuration\\\"> </rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"mb-0 table\\\">\\n <tbody>\\n <tr>\\n <td>Update Parallelism</td>\\n <td>\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"number\\\"\\n ng-model=\\\"service.UpdateParallelism\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'UpdateParallelism')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Maximum number of tasks to be updated simultaneously (0 to update all at once). </p>\\n </td>\\n </tr>\\n <tr>\\n <td>Update Delay</td>\\n <td>\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"text\\\"\\n ng-model=\\\"service.UpdateDelay\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'UpdateDelay')\\\"\\n ng-pattern=\\\"/^([0-9]+)(h|m|s|ms|us|ns)$/i\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Amount of time between updates expressed by a number followed by unit (ns|us|ms|s|m|h). Example: 1m. </p>\\n </td>\\n </tr>\\n <tr>\\n <td>Update Failure Action</td>\\n <td>\\n <div class=\\\"form-group !mb-0\\\">\\n <label class=\\\"radio-inline align-baseline\\\">\\n <input\\n type=\\\"radio\\\"\\n name=\\\"failure_action\\\"\\n ng-model=\\\"service.UpdateFailureAction\\\"\\n value=\\\"continue\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'UpdateFailureAction')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n Continue\\n </label>\\n <label class=\\\"radio-inline align-baseline\\\">\\n <input\\n type=\\\"radio\\\"\\n name=\\\"failure_action\\\"\\n ng-model=\\\"service.UpdateFailureAction\\\"\\n value=\\\"pause\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'UpdateFailureAction')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n Pause\\n </label>\\n </div>\\n </td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Action taken on failure to start after update. </p>\\n </td>\\n </tr>\\n <tr ng-if=\\\"applicationState.endpoint.apiVersion >= 1.29\\\">\\n <td>Order</td>\\n <td>\\n <div class=\\\"form-group !mb-0\\\">\\n <label class=\\\"radio-inline\\\">\\n <input\\n type=\\\"radio\\\"\\n name=\\\"updateconfig_order\\\"\\n ng-model=\\\"service.UpdateOrder\\\"\\n value=\\\"start-first\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'UpdateOrder')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n start-first\\n </label>\\n <label class=\\\"radio-inline\\\">\\n <input\\n type=\\\"radio\\\"\\n name=\\\"updateconfig_order\\\"\\n ng-model=\\\"service.UpdateOrder\\\"\\n value=\\\"stop-first\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'UpdateOrder')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n stop-first\\n </label>\\n </div>\\n </td>\\n <td>\\n <p class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Operation order on failure. </p>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"!hasChanges(service, ['UpdateFailureAction', 'UpdateDelay', 'UpdateParallelism', 'UpdateOrder'])\\\"\\n ng-click=\\\"updateService(service)\\\"\\n >Apply changes</button\\n >\\n <button type=\\\"button\\\" class=\\\"btn btn-default btn-sm dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['UpdateFailureAction', 'UpdateDelay', 'UpdateParallelism', 'UpdateOrder'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/includes/updateconfig.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Service details'\\\" breadcrumbs=\\\"[{label:'Services', link:'docker.services'}, service.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div ng-if=\\\"isUpdating\\\" class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <div class=\\\"alert alert-info\\\" role=\\\"alert\\\" id=\\\"service-update-alert\\\">\\n <p>This service is being updated. Editing this service is currently disabled.</p>\\n <a ui-sref=\\\"docker.services.service({id: service.Id}, {reload: true})\\\">Refresh to see if this service has finished updated.</a>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-9 col-md-9 col-xs-9\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"shuffle\\\" title-text=\\\"Service details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td class=\\\"w-1/5\\\">Name</td>\\n <td ng-if=\\\"applicationState.endpoint.apiVersion <= 1.24\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"service.Name\\\" ng-change=\\\"updateServiceAttribute(service, 'Name')\\\" ng-disabled=\\\"isUpdating\\\" />\\n </td>\\n <td ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\">\\n {{ service.Name }}\\n </td>\\n </tr>\\n <tr>\\n <td>ID</td>\\n <td>\\n {{ service.Id }}\\n </td>\\n </tr>\\n <tr ng-if=\\\"service.CreatedAt\\\">\\n <td>Created at</td>\\n <td>{{ service.CreatedAt | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"service.UpdatedAt\\\">\\n <td>Last updated at</td>\\n <td>{{ service.UpdatedAt | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"service.Version\\\">\\n <td>Version</td>\\n <td>{{ service.Version }}</td>\\n </tr>\\n <tr>\\n <td>Scheduling mode</td>\\n <td>{{ service.Mode }}</td>\\n </tr>\\n <tr ng-if=\\\"service.Mode === 'replicated'\\\">\\n <td>Replicas</td>\\n <td>\\n <span ng-if=\\\"service.Mode === 'replicated'\\\">\\n <input\\n class=\\\"input-sm\\\"\\n type=\\\"number\\\"\\n ng-model=\\\"service.Replicas\\\"\\n ng-change=\\\"updateServiceAttribute(service, 'Replicas')\\\"\\n disable-authorization=\\\"DockerServiceUpdate\\\"\\n />\\n </span>\\n </td>\\n </tr>\\n <tr>\\n <td>Image</td>\\n <td>{{ service.Image }}</td>\\n </tr>\\n <tr ng-if=\\\"isAdmin && applicationState.endpoint.type !== 4\\\">\\n <td>\\n <div class=\\\"inline-flex items-center\\\">\\n <div> Service webhook </div>\\n <portainer-tooltip\\n message=\\\"'Webhook (or callback URI) used to automate the update of this service. Sending a POST request to this callback URI (without requiring any authentication) will pull the most up-to-date version of the associated image and re-deploy this service.'\\\"\\n >\\n </portainer-tooltip>\\n </div>\\n </td>\\n <td>\\n <div class=\\\"flex flex-wrap items-center\\\">\\n <por-switch-field label-class=\\\"'!mr-0'\\\" checked=\\\"WebhookExists\\\" disabled=\\\"disabledWebhookButton(WebhookExists)\\\" on-change=\\\"(onWebhookChange)\\\"></por-switch-field>\\n <span ng-if=\\\"webhookURL\\\">\\n <span class=\\\"text-muted\\\">{{ webhookURL | truncatelr }}</span>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary btn-sm space-left\\\" ng-if=\\\"webhookURL\\\" ng-click=\\\"copyWebhook()\\\">\\n <pr-icon icon=\\\"'copy'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n Copy link\\n </button>\\n <span>\\n <pr-icon id=\\\"copyNotification\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </span>\\n </div>\\n </td>\\n </tr>\\n <tr authorization=\\\"DockerServiceLogs, DockerServiceUpdate, DockerServiceDelete\\\">\\n <td colspan=\\\"2\\\">\\n <p class=\\\"small text-muted\\\" authorization=\\\"DockerServiceUpdate\\\">\\n Note: you can only rollback one level of changes. Clicking the rollback button without making a new change will undo your previous rollback </p\\n ><div class=\\\"flex flex-wrap gap-x-2 gap-y-1\\\">\\n <a\\n authorization=\\\"DockerServiceLogs\\\"\\n ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n type=\\\"button\\\"\\n ui-sref=\\\"docker.services.service.logs({id: service.Id})\\\"\\n >\\n <pr-icon icon=\\\"'file-text'\\\"></pr-icon>Service logs</a\\n >\\n <button\\n authorization=\\\"DockerServiceUpdate\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"state.updateInProgress || isUpdating\\\"\\n ng-click=\\\"forceUpdateService(service)\\\"\\n button-spinner=\\\"state.updateInProgress\\\"\\n ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n >\\n <span ng-hide=\\\"state.updateInProgress\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'refresh-cw'\\\"></pr-icon>\\n Update the service</span\\n >\\n <span ng-show=\\\"state.updateInProgress\\\">Update in progress...</span>\\n </button>\\n <button\\n authorization=\\\"DockerServiceUpdate\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"state.rollbackInProgress || isUpdating\\\"\\n ng-click=\\\"rollbackService(service)\\\"\\n button-spinner=\\\"state.rollbackInProgress\\\"\\n ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n >\\n <span ng-hide=\\\"state.rollbackInProgress\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'rotate-ccw'\\\"></pr-icon>\\n Rollback the service</span\\n >\\n <span ng-show=\\\"state.rollbackInProgress\\\">Rollback in progress...</span>\\n </button>\\n <button\\n authorization=\\\"DockerServiceDelete\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-danger btn-sm !ml-0\\\"\\n ng-disabled=\\\"state.deletionInProgress || isUpdating\\\"\\n ng-click=\\\"removeService()\\\"\\n button-spinner=\\\"state.deletionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.deletionInProgress\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Delete the service</span\\n >\\n <span ng-show=\\\"state.deletionInProgress\\\">Deletion in progress...</span>\\n </button>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n <rd-widget-footer authorization=\\\"DockerServiceUpdate\\\">\\n <p class=\\\"small text-muted\\\">\\n Do you need help? View the Docker Service documentation <a href=\\\"https://docs.docker.com/engine/reference/commandline/service_update/\\\" target=\\\"self\\\">here</a>.\\n </p>\\n <div class=\\\"btn-toolbar\\\" role=\\\"toolbar\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" ng-disabled=\\\"!hasChanges(service, ['Mode', 'Replicas', 'Name', 'Webhooks'])\\\" ng-click=\\\"updateService(service)\\\"\\n >Apply changes</button\\n >\\n <button type=\\\"button\\\" class=\\\"btn btn-default dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\">\\n <span class=\\\"caret\\\"></span>\\n </button>\\n <ul class=\\\"dropdown-menu\\\">\\n <li><a ng-click=\\\"cancelChanges(service, ['Mode', 'Replicas', 'Name'])\\\">Reset changes</a></li>\\n <li><a ng-click=\\\"cancelChanges(service)\\\">Reset all changes</a></li>\\n </ul>\\n </div>\\n </div>\\n </rd-widget-footer>\\n </rd-widget>\\n </div>\\n\\n <div class=\\\"col-lg-3 col-md-3 col-xs-3\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"menu\\\" title-text=\\\"Quick navigation\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <ul class=\\\"nav nav-pills nav-stacked\\\">\\n <li><a href ng-click=\\\"goToItem('service-env-variables')\\\">Environment variables</a></li>\\n <li><a href ng-click=\\\"goToItem('service-container-image')\\\">Container image</a></li>\\n <li><a href ng-click=\\\"goToItem('service-container-labels')\\\">Container labels</a></li>\\n <li><a href ng-click=\\\"goToItem('service-mounts')\\\">Mounts</a></li>\\n <li><a href ng-click=\\\"goToItem('service-network-specs')\\\">Network & published ports</a></li>\\n <li><a href ng-click=\\\"goToItem('service-resources')\\\">Resource limits & reservations</a></li>\\n <li><a href ng-click=\\\"goToItem('service-placement-constraints')\\\">Placement constraints</a></li>\\n <li ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\"><a href ng-click=\\\"goToItem('service-placement-preferences')\\\">Placement preferences</a></li>\\n <li><a href ng-click=\\\"goToItem('service-restart-policy')\\\">Restart policy</a></li>\\n <li><a href ng-click=\\\"goToItem('service-update-config')\\\">Update configuration</a></li>\\n <li><a href ng-click=\\\"goToItem('service-logging')\\\">Logging</a></li>\\n <li><a href ng-click=\\\"goToItem('service-labels')\\\">Service labels</a></li>\\n <li><a href ng-click=\\\"goToItem('service-configs')\\\">Configs</a></li>\\n <li ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"><a href ng-click=\\\"goToItem('service-secrets')\\\">Secrets</a></li>\\n <li><a href ng-click=\\\"goToItem('service-tasks')\\\">Tasks</a></li>\\n </ul>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n ng-if=\\\"service\\\"\\n resource-id=\\\"service.Id\\\"\\n resource-control=\\\"service.ResourceControl\\\"\\n resource-type=\\\"resourceType\\\"\\n on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\\n<div class=\\\"row\\\">\\n <hr />\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <h3 id=\\\"container-specs\\\">Container specification</h3>\\n <div id=\\\"service-container-spec\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/container-specs.html'\\\"></div>\\n <div id=\\\"service-container-image\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/image.html'\\\"></div>\\n <div id=\\\"service-env-variables\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/environmentvariables.html'\\\"></div>\\n <div id=\\\"service-container-labels\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/containerlabels.html'\\\"></div>\\n <div id=\\\"service-mounts\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/mounts.html'\\\"></div>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <hr />\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <h3 id=\\\"service-network-specs\\\">Networks & ports</h3>\\n <div id=\\\"service-networks\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/networks.html'\\\"></div>\\n <div id=\\\"service-published-ports\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/ports.html'\\\"></div>\\n <div id=\\\"service-hosts-entries\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/hosts.html'\\\"></div>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <hr />\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <h3 id=\\\"service-specs\\\">Service specification</h3>\\n <div id=\\\"service-resources\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/resources.html'\\\"></div>\\n <div id=\\\"service-placement-constraints\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/constraints.html'\\\"></div>\\n <div\\n id=\\\"service-placement-preferences\\\"\\n ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3\\\"\\n class=\\\"padding-top\\\"\\n ng-include=\\\"'app/docker/views/services/edit/includes/placementPreferences.html'\\\"\\n ></div>\\n <div id=\\\"service-restart-policy\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/restart.html'\\\"></div>\\n <div id=\\\"service-update-config\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/updateconfig.html'\\\"></div>\\n <div id=\\\"service-logging\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/logging.html'\\\"></div>\\n <div id=\\\"service-labels\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/servicelabels.html'\\\"></div>\\n <div id=\\\"service-configs\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/configs.html'\\\"></div>\\n <div id=\\\"service-secrets\\\" ng-if=\\\"applicationState.endpoint.apiVersion >= 1.25\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/secrets.html'\\\"></div>\\n <div id=\\\"service-tasks\\\" class=\\\"padding-top\\\" ng-include=\\\"'app/docker/views/services/edit/includes/tasks.html'\\\"></div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/edit/service.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Service logs'\\\"\\n breadcrumbs=\\\"[\\n {\\n label: 'Services',\\n link: 'docker.services'\\n },\\n {\\n label: service.Name,\\n link: 'docker.services.service',\\n linkParams: { id: service.Id }\\n },\\n 'Logs'\\n ]\\\"\\n>\\n</page-header>\\n\\n<log-viewer\\n data=\\\"logs\\\"\\n ng-if=\\\"logs\\\"\\n log-collection-change=\\\"changeLogCollection\\\"\\n display-timestamps=\\\"state.displayTimestamps\\\"\\n line-count=\\\"state.lineCount\\\"\\n since-timestamp=\\\"state.sinceTimestamp\\\"\\n resource-name=\\\"service.Name\\\"\\n></log-viewer>\\n\";;\nvar path = 'app/docker/views/services/logs/servicelogs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Service list'\\\" breadcrumbs=\\\"['Services']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"services\\\">\\n <div class=\\\"col-sm-12\\\">\\n <services-datatable\\n title-text=\\\"Services\\\"\\n title-icon=\\\"shuffle\\\"\\n dataset=\\\"services\\\"\\n table-key=\\\"services\\\"\\n order-by=\\\"Name\\\"\\n nodes=\\\"nodes\\\"\\n agent-proxy=\\\"applicationState.endpoint.mode.agentProxy\\\"\\n show-update-action=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n show-task-logs-button=\\\"applicationState.endpoint.apiVersion >= 1.30\\\"\\n show-add-action=\\\"true\\\"\\n show-stack-column=\\\"true\\\"\\n refresh-callback=\\\"getServices\\\"\\n endpoint-public-url=\\\"endpoint.PublicURL\\\"\\n endpoint-id=\\\"endpoint.Id\\\"\\n ></services-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/services/services.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Cluster overview'\\\" breadcrumbs=\\\"['Swarm']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"trello\\\" title-text=\\\"Cluster status\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Nodes</td>\\n <td>{{ info.Swarm.Nodes }}</td>\\n </tr>\\n <tr>\\n <td>Docker API version</td>\\n <td>{{ docker.ApiVersion }}</td>\\n </tr>\\n <tr>\\n <td>Total CPU</td>\\n <td>{{ totalCPU }}</td>\\n </tr>\\n <tr>\\n <td>Total memory</td>\\n <td>{{ totalMemory | humansize : 2 }}</td>\\n </tr>\\n <tr>\\n <td colspan=\\\"2\\\">\\n <div class=\\\"btn-group\\\" role=\\\"group\\\" aria-label=\\\"...\\\">\\n <a ui-sref=\\\"docker.swarm.visualizer\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'trello'\\\" class-name=\\\"'icon'\\\"></pr-icon>Go to cluster visualizer</a>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <nodes-datatable\\n title-text=\\\"Nodes\\\"\\n title-icon=\\\"trello\\\"\\n dataset=\\\"nodes\\\"\\n table-key=\\\"nodes\\\"\\n order-by=\\\"Hostname\\\"\\n show-ip-address-column=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n access-to-node-details=\\\"isAdmin\\\"\\n refresh-callback=\\\"getNodes\\\"\\n ></nodes-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/swarm/swarm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Swarm visualizer'\\\" breadcrumbs=\\\"[{label:'Swarm', link:'docker.swarm'}, {label:'Cluster visualizer', link:'docker.swarm.visualizer'}]\\\" reload=\\\"true\\\">\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"trello\\\" title-text=\\\"Cluster information\\\">\\n <div class=\\\"pull-right\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"changeShowInformationPanel(true)\\\" ng-if=\\\"!state.ShowInformationPanel\\\">Show</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"changeShowInformationPanel(false)\\\" ng-if=\\\"state.ShowInformationPanel\\\">Hide</button>\\n </div>\\n </rd-widget-header>\\n <rd-widget-body ng-if=\\\"state.ShowInformationPanel\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Nodes</td>\\n <td>{{ nodes.length }}</td>\\n </tr>\\n <tr>\\n <td>Services</td>\\n <td>{{ services.length }}</td>\\n </tr>\\n <tr>\\n <td>Tasks</td>\\n <td>{{ tasks.length }}</td>\\n </tr>\\n </tbody>\\n </table>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Options </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"state.DisplayOnlyRunningTasks\\\"\\n label=\\\"'Only display running tasks'\\\"\\n on-change=\\\"(handleChangeDisplayOnlyRunningTasks)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"state.DisplayNodeLabels\\\"\\n label=\\\"'Display node labels'\\\"\\n on-change=\\\"(handleChangeDisplayNodeLabels)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n </form>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Refresh rate </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"refreshRate\\\" class=\\\"col-sm-2 margin-sm-top control-label text-left\\\">\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\" style=\\\"display: none\\\"></pr-icon>\\n </label>\\n <div class=\\\"col-sm-2\\\">\\n <select id=\\\"refreshRate\\\" ng-model=\\\"state.refreshRate\\\" ng-change=\\\"changeUpdateRepeater()\\\" class=\\\"form-control\\\">\\n <option value=\\\"5\\\">5s</option>\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">60s</option>\\n </select>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\" ng-if=\\\"visualizerData\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"trello\\\" title-text=\\\"Cluster visualizer\\\"></rd-widget-header>\\n <rd-widget-body>\\n <div class=\\\"visualizer_container\\\">\\n <div class=\\\"node\\\" ng-repeat=\\\"node in visualizerData.nodes | orderBy : ['Role', 'Hostname'] track by $index\\\">\\n <div class=\\\"node_info\\\">\\n <div>\\n <div>\\n <b>{{ node.Name || node.Hostname }}</b>\\n <span class=\\\"node_platform\\\">\\n <pr-icon ng-if=\\\"node.PlatformOS === 'linux'\\\" icon=\\\"'svg-linux'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"node.PlatformOS === 'windows'\\\" icon=\\\"'layout-grid'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n <div>{{ node.Role }}</div>\\n <div>CPU: {{ node.CPUs / 1000000000 }}</div>\\n <div>Memory: {{ node.Memory | humansize : 2 }}</div>\\n <div\\n ><span class=\\\"label label-{{ node.Status | nodestatusbadge }}\\\">{{ node.Status }}</span></div\\n >\\n <div class=\\\"node_labels\\\" ng-if=\\\"node.Labels.length > 0 && state.DisplayNodeLabels\\\">\\n <div>Labels</div>\\n <div class=\\\"node_label\\\" ng-repeat=\\\"label in node.Labels\\\">\\n <span class=\\\"label_key\\\">\\n {{ label.key }}\\n </span>\\n <span class=\\\"label_value\\\" ng-if=\\\"label.value\\\"> = {{ label.value }} </span>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"tasks\\\">\\n <div\\n class=\\\"task task_{{ task.Status.State | visualizerTask }}\\\"\\n style=\\\"border: 2px solid {{ task.ServiceId | visualizerTaskBorderColor }}\\\"\\n ng-repeat=\\\"task in node.Tasks | orderBy: 'ServiceName' | filter: (state.DisplayOnlyRunningTasks || '') && { Status: { State: 'running' } }\\\"\\n >\\n <div class=\\\"service_name\\\">{{ task.ServiceName }}</div>\\n <div>Image: {{ task.Spec.ContainerSpec.Image | hideshasum }}</div>\\n <div>Status: {{ task.Status.State }}</div>\\n <div>Update: {{ task.Updated | getisodate }}</div>\\n <div ng-if=\\\"task.Spec.Resources.Limits.MemoryBytes\\\">Memory limit: {{ task.Spec.Resources.Limits.MemoryBytes | humansize : 2 : 2 }}</div>\\n <div ng-if=\\\"task.Spec.Resources.Limits.NanoCPUs\\\">CPU limit: {{ task.Spec.Resources.Limits.NanoCPUs / 1000000000 }}</div>\\n </div>\\n </div>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/swarm/visualizer/swarmvisualizer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Task details'\\\"\\n breadcrumbs=\\\"[\\n { label:'Services', link:'docker.services' },\\n {\\n label: service.Name,\\n link: 'docker.services.service',\\n linkParams:{ id: service.Id }\\n }, task.Id]\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"task && service\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"list\\\" title-text=\\\"Task status\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>ID</td>\\n <td>{{ task.Id }}</td>\\n </tr>\\n <tr>\\n <td>State</td>\\n <td\\n ><span class=\\\"label label-{{ task.Status.State | taskstatusbadge }}\\\">{{ task.Status.State }}</span></td\\n >\\n </tr>\\n <tr>\\n <td>State Message</td>\\n <td>{{ task.Status.Message }}</td>\\n </tr>\\n <tr ng-if=\\\"task.Status.Err\\\">\\n <td>Error message</td>\\n <td\\n ><code>{{ task.Status.Err }}</code></td\\n >\\n </tr>\\n <tr>\\n <td>Image</td>\\n <td>{{ task.Spec.ContainerSpec.Image | hideshasum }}</td>\\n </tr>\\n <tr ng-if=\\\"service.Mode !== 'global'\\\">\\n <td>Slot</td>\\n <td>{{ task.Slot }}</td>\\n </tr>\\n <tr>\\n <td>Created</td>\\n <td>{{ task.Created | getisodate }}</td>\\n </tr>\\n <tr ng-if=\\\"task.Status.ContainerStatus.ContainerID\\\">\\n <td>Container ID</td>\\n <td>{{ task.Status.ContainerStatus.ContainerID }}</td>\\n </tr>\\n <tr ng-if=\\\"applicationState.endpoint.apiVersion >= 1.3 && task.Status.State | taskhaslogs\\\">\\n <td colspan=\\\"2\\\"\\n ><a class=\\\"btn btn-primary btn-sm\\\" type=\\\"button\\\" ui-sref=\\\"docker.tasks.task.logs({id: task.Id})\\\">\\n <pr-icon icon=\\\"'file-text'\\\"></pr-icon>\\n Task logs</a\\n ></td\\n >\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/tasks/edit/task.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Task details'\\\"\\n breadcrumbs=\\\"[\\n { label:'Services', link:'docker.services' },\\n { \\n label:service.Name,\\n link:'docker.services.service', \\n linkParams:{ id: service.Id }\\n }, \\n { \\n label:task.Id,\\n link:'docker.tasks.task', \\n linkParams:{ id: task.Id }\\n },\\n 'Logs']\\\"\\n>\\n</page-header>\\n\\n<log-viewer\\n data=\\\"logs\\\"\\n ng-if=\\\"logs\\\"\\n log-collection-change=\\\"changeLogCollection\\\"\\n display-timestamps=\\\"state.displayTimestamps\\\"\\n line-count=\\\"state.lineCount\\\"\\n since-timestamp=\\\"state.sinceTimestamp\\\"\\n resource-name=\\\"task.Id\\\"\\n></log-viewer>\\n\";;\nvar path = 'app/docker/views/tasks/logs/tasklogs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Volume browser'\\\"\\n breadcrumbs=\\\"[\\n { label:'Volumes', link:'docker.volumes' },\\n { \\n label:volumeId,\\n link: 'docker.volumes.volume', \\n linkParams:{ id: volumeId }\\n }, 'browse']\\\"\\n>\\n</page-header>\\n\\n<volume-browser volume-id=\\\"volumeId\\\" node-name=\\\"nodeName\\\" is-upload-enabled=\\\"agentApiVersion > 1\\\" endpoint-id=\\\"endpointId\\\"></volume-browser>\\n\";;\nvar path = 'app/docker/views/volumes/browse/browsevolume.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create volume'\\\" breadcrumbs=\\\"[{label:'Volumes', link:'docker.volumes'}, 'Add volume']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"volumeCreationForm\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"volume_name\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Name\\\" id=\\\"volume_name\\\" placeholder=\\\"e.g. myVolume\\\" />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Driver configuration </div>\\n <!-- driver-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"volume_driver\\\" class=\\\"col-sm-2 col-md-1 control-label text-left\\\">Driver</label>\\n <div class=\\\"col-sm-10 col-md-11\\\">\\n <select class=\\\"form-control\\\" ng-options=\\\"driver for driver in availableVolumeDrivers\\\" ng-model=\\\"formValues.Driver\\\" ng-if=\\\"availableVolumeDrivers.length > 0\\\">\\n <option disabled hidden value=\\\"\\\">Select a driver</option>\\n </select>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Driver\\\" id=\\\"volume_driver\\\" placeholder=\\\"e.g. driverName\\\" ng-if=\\\"availableVolumeDrivers.length === 0\\\" />\\n </div>\\n </div>\\n <!-- !driver-input -->\\n <!-- driver-options -->\\n <div class=\\\"form-group\\\" ng-hide=\\\"formValues.CIFSData.useCIFS || formValues.NFSData.useNFS\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label text-left\\\">\\n Driver options\\n <portainer-tooltip message=\\\"'Driver options are specific to the selected driver. Please refer to the selected driver documentation.'\\\"></portainer-tooltip>\\n </label>\\n <span class=\\\"label label-default interactive\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"addDriverOption()\\\">\\n <pr-icon icon=\\\"'plus'\\\" mode=\\\"'alt'\\\"></pr-icon> add driver option\\n </span>\\n </div>\\n <!-- driver-options-input-list -->\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\">\\n <div ng-repeat=\\\"option in formValues.DriverOptions\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.name\\\" placeholder=\\\"e.g. mountpoint\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"option.value\\\" placeholder=\\\"e.g. /path/on/host\\\" />\\n </div>\\n <button class=\\\"btn btn-sm btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeDriverOption($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !driver-options-input-list -->\\n </div>\\n <!-- !driver-options -->\\n <!-- nfs-management -->\\n <div class=\\\"form-group col-md-12\\\">\\n <por-switch-field checked=\\\"formValues.NFSData.useNFS\\\" label=\\\"'Use NFS volume'\\\" on-change=\\\"(onUseNFSChange)\\\"></por-switch-field>\\n <div ng-if=\\\"formValues.NFSData.useNFS\\\" class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Ensure <code>nfs-utils</code> are installed on your hosts. </div>\\n </div>\\n <volumes-nfs-form data=\\\"formValues.NFSData\\\" ng-show=\\\"formValues.Driver === 'local'\\\"></volumes-nfs-form>\\n <!-- !nfs-management -->\\n <!-- cifs-management -->\\n <div class=\\\"form-group col-md-12\\\">\\n <por-switch-field checked=\\\"formValues.CIFSData.useCIFS\\\" label=\\\"'Use CIFS volume'\\\" on-change=\\\"(onUseCIFSChange)\\\"></por-switch-field>\\n <div ng-if=\\\"formValues.CIFSData.useCIFS\\\" class=\\\"small text-muted\\\" style=\\\"margin-top: 10px\\\"> Ensure <code>cifs-utils</code> are installed on your hosts. </div>\\n </div>\\n <volumes-cifs-form data=\\\"formValues.CIFSData\\\" ng-show=\\\"formValues.Driver === 'local'\\\"></volumes-cifs-form>\\n <!-- !cifs-management -->\\n <div ng-if=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && formValues.Driver === 'local'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Deployment </div>\\n <!-- node-selection -->\\n <node-selector model=\\\"formValues.NodeName\\\" endpoint-id=\\\"endpoint.Id\\\"> </node-selector>\\n <!-- !node-selection -->\\n </div>\\n <!-- access-control -->\\n <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n <!-- !access-control -->\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-click=\\\"create()\\\"\\n ng-disabled=\\\"state.actionInProgress || (formValues.NFSData.useNFS && !volumeCreationForm.nfsInformationForm.$valid) || (formValues.CIFSData.useCIFS && !volumeCreationForm.cifsInformationForm.$valid)\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Create the volume</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Creating volume...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/volumes/create/createvolume.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Volume details'\\\" breadcrumbs=\\\"[{label:'Volumes', link:'docker.volumes'}, volume.Id]\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"volume\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"database\\\" title-text=\\\"Volume details\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>ID</td>\\n <td>\\n {{ volume.Id }}\\n <button authorization=\\\"DockerVolumeDelete\\\" class=\\\"btn btn-xs btn-danger\\\" ng-click=\\\"removeVolume()\\\"\\n ><pr-icon icon=\\\"'trash-2'\\\" class=\\\"leading-none\\\"></pr-icon> Remove this volume</button\\n >\\n </td>\\n </tr>\\n <tr>\\n <td>Created</td>\\n <td>{{ volume.CreatedAt | getisodate }}</td>\\n </tr>\\n <tr>\\n <td>Mount path</td>\\n <td>{{ volume.Mountpoint }}</td>\\n </tr>\\n <tr>\\n <td>Driver</td>\\n <td>{{ volume.Driver }}</td>\\n </tr>\\n <tr ng-if=\\\"!(volume.Labels | emptyobject)\\\">\\n <td>Labels</td>\\n <td>\\n <table class=\\\"table-bordered table-condensed table\\\">\\n <tr ng-repeat=\\\"(k, v) in volume.Labels\\\">\\n <td>{{ k }}</td>\\n <td>{{ v }}</td>\\n </tr>\\n </table>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n ng-if=\\\"volume\\\"\\n resource-id=\\\"volume.ResourceId\\\"\\n resource-control=\\\"volume.ResourceControl\\\"\\n resource-type=\\\"resourceType\\\"\\n on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\\n<div class=\\\"row\\\" ng-if=\\\"!(volume.Options | emptyobject)\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"settings\\\" title-text=\\\"Volume options\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr ng-repeat=\\\"(key, value) in volume.Options\\\">\\n <td>{{ key }}</td>\\n <td>{{ value }}</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n<div class=\\\"row\\\" ng-if=\\\"containersUsingVolume.length > 0\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"box\\\" title-text=\\\"Containers using volume\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <thead>\\n <th>Container Name</th>\\n <th>Mounted At</th>\\n <th>Read-only</th>\\n </thead>\\n <tbody>\\n <tr ng-repeat=\\\"container in containersUsingVolume\\\">\\n <td\\n ><a ui-sref=\\\"docker.containers.container({ id: container.Id, nodeName: container.NodeName })\\\">{{ container | containername }}</a></td\\n >\\n <td>{{ container.volumeData.Destination }}</td>\\n <td>{{ !container.volumeData.RW }}</td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/volumes/edit/volume.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Volume list'\\\" breadcrumbs=\\\"['Volumes']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <volumes-datatable\\n title-text=\\\"Volumes\\\"\\n title-icon=\\\"database\\\"\\n dataset=\\\"volumes\\\"\\n table-key=\\\"volumes\\\"\\n order-by=\\\"Id\\\"\\n remove-action=\\\"removeAction\\\"\\n show-host-column=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\"\\n show-browse-action=\\\"showBrowseAction\\\"\\n refresh-callback=\\\"getVolumes\\\"\\n ></volumes-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/docker/views/volumes/volumes.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n </div>\\n <div class=\\\"searchBar\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n auto-focus\\n placeholder=\\\"Search...\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Group'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'GroupName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'GroupName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('GroupName')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in $ctrl.state.filteredDataSet | itemsPerPage: $ctrl.state.paginatedItemLimit\\\"\\n total-items=\\\"$ctrl.state.totalFilteredDataSet\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span>{{ item.Name }}</span>\\n </td>\\n\\n <td>{{ item.GroupName }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.loading\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.state.loading && $ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No environment available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"!$ctrl.state.loading\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" on-page-change=\\\"$ctrl.onPageChange(newPageNumber, oldPageNumber)\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/associated-endpoints-datatable/associatedEndpointsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal -mt-4\\\" name=\\\"edgeJobForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Edge job configuration </div>\\n <!-- name-input -->\\n <div class=\\\"form-group mt-4\\\">\\n <label for=\\\"edgejob_name\\\" class=\\\"col-sm-2 control-label required text-left\\\">Name </label>\\n <div class=\\\"col-sm-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.model.Name\\\"\\n ng-pattern=\\\"/^[a-zA-Z0-9][a-zA-Z0-9_.-]+$/\\\"\\n id=\\\"edgejob_name\\\"\\n name=\\\"edgejob_name\\\"\\n placeholder=\\\"e.g. backup-app-prod\\\"\\n required\\n auto-focus\\n />\\n <div class=\\\"help-block\\\" ng-show=\\\"edgeJobForm.edgejob_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"edgeJobForm.edgejob_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\"></pr-icon></span> This field is required.\\n </p>\\n <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\">\\n <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\"></pr-icon></span> Allowed characters are: [a-zA-Z0-9_.-]\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <!-- !name-input -->\\n <!-- cron-input -->\\n <!-- edge-job-method-select -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Edge job configuration </div>\\n\\n <box-selector slim=\\\"true\\\" radio-name=\\\"'configuration'\\\" value=\\\"$ctrl.formValues.cronMethod\\\" options=\\\"$ctrl.cronMethods\\\" on-change=\\\"($ctrl.onCronMethodChange)\\\"></box-selector>\\n\\n <!-- !edge-job-method-select -->\\n <!-- basic-edge-job -->\\n <div ng-if=\\\"$ctrl.formValues.cronMethod === 'basic'\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"recurring\\\" class=\\\"col-sm-2 control-label text-left\\\">Recurring Edge job</label>\\n <div class=\\\"col-sm-10\\\">\\n <label class=\\\"switch\\\"><input type=\\\"checkbox\\\" name=\\\"recurring\\\" ng-model=\\\"$ctrl.model.Recurring\\\" /><span class=\\\"slider round\\\"></span></label>\\n </div>\\n </div>\\n <!-- not-recurring -->\\n <div ng-if=\\\"!$ctrl.model.Recurring\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"edgejob_cron\\\" class=\\\"col-sm-2 control-label text-left\\\">Schedule date</label>\\n <div class=\\\"col-sm-10\\\">\\n <input class=\\\"form-control\\\" moment-picker ng-model=\\\"$ctrl.formValues.datetime\\\" format=\\\"YYYY-MM-DD HH:mm\\\" />\\n </div>\\n <div class=\\\"col-sm-12 small text-muted mt-2.5\\\"> Time should be set according to the chosen environments' timezone. </div>\\n <div ng-show=\\\"edgeJobForm.datepicker.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"edgeJobForm.datepicker.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\"></pr-icon></span> This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !not-recurring -->\\n <!-- recurring -->\\n <div ng-if=\\\"$ctrl.model.Recurring\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"edgejob_value\\\" class=\\\"col-sm-2 control-label text-left\\\">Edge job time</label>\\n <div class=\\\"col-sm-10\\\">\\n <select\\n id=\\\"edgejob_value\\\"\\n name=\\\"edgejob_value\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.formValues.scheduleValue\\\"\\n ng-options=\\\"value.displayed for value in $ctrl.scheduleValues\\\"\\n required\\n ></select>\\n </div>\\n <div ng-show=\\\"edgeJobForm.edgejob_value.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"edgeJobForm.edgejob_value.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\"></pr-icon></span> This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !recurring -->\\n </div>\\n <!-- !basic-edge-job -->\\n <!-- advanced-schedule -->\\n <div ng-if=\\\"$ctrl.formValues.cronMethod === 'advanced'\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"edgejob_cron\\\" class=\\\"col-sm-2 control-label text-left\\\">Cron rule</label>\\n <div class=\\\"col-sm-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.model.CronExpression\\\"\\n id=\\\"edgejob_cron\\\"\\n name=\\\"edgejob_cron\\\"\\n placeholder=\\\"e.g. 0 2 * * *\\\"\\n required\\n ng-pattern=\\\"$ctrl.cronRegex\\\"\\n />\\n <div class=\\\"help-block\\\" ng-show=\\\"edgeJobForm.edgejob_cron.$invalid && edgeJobForm.edgejob_cron.$dirty\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"edgeJobForm.edgejob_cron.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\"></pr-icon></span> This field is required.\\n </p>\\n <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\">\\n <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\"></pr-icon></span> This field format is invalid.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"col-sm-12 small text-muted mt-2.5\\\"> Time should be set according to the chosen environments' timezone. </div>\\n </div>\\n </div>\\n <!-- !advanced-schedule -->\\n\\n <!-- execution-method -->\\n <div ng-if=\\\"!$ctrl.model.Id\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Job content </div>\\n <box-selector value=\\\"$ctrl.formValues.method\\\" options=\\\"$ctrl.buildMethods\\\" radio-name=\\\"buildMethod\\\" on-change=\\\"($ctrl.onBuildMethodChange)\\\" slim=\\\"true\\\"></box-selector>\\n </div>\\n <!-- !execution-method -->\\n\\n <!-- web-editor -->\\n <!-- TODO use web-editor-form component -->\\n <div ng-show=\\\"$ctrl.formValues.method === 'editor'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Web editor </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <code-editor\\n identifier=\\\"execute-edge-job-editor\\\"\\n placeholder=\\\"Define or paste the content of your script file here\\\"\\n on-change=\\\"($ctrl.editorUpdate)\\\"\\n value=\\\"$ctrl.model.FileContent\\\"\\n shell=\\\"true\\\"\\n ></code-editor>\\n </div>\\n </div>\\n </div>\\n <!-- !web-editor -->\\n <!-- upload -->\\n <div ng-show=\\\"$ctrl.formValues.method === 'upload'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Upload </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> You can upload a script file from your computer. </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.model.File\\\">Select file</button>\\n <span class=\\\"space-left\\\">\\n {{ $ctrl.model.File.name }}\\n <span ng-if=\\\"!$ctrl.model.File\\\"><pr-icon icon=\\\"'x'\\\" class-name=\\\"'icon icon-danger'\\\"></pr-icon></span>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !upload -->\\n\\n <edge-groups-selector ng-if=\\\"$ctrl.model.EdgeGroups\\\" value=\\\"$ctrl.model.EdgeGroups\\\" on-change=\\\"($ctrl.onChangeGroups)\\\"></edge-groups-selector>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Target environments </div>\\n <!-- node-selection -->\\n <associated-edge-environments-selector value=\\\"$ctrl.model.Endpoints\\\" on-change=\\\"($ctrl.onChangeEnvironments)\\\"></associated-edge-environments-selector>\\n <!-- !node-selection -->\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !edgeJobForm.$valid\\n || ($ctrl.model.Endpoints.length === 0 && $ctrl.model.EdgeGroups.length === 0)\\n || ($ctrl.formValues.method === 'upload' && !$ctrl.model.File)\\n || ($ctrl.formValues.method === 'editor' && !$ctrl.model.FileContent)\\n \\\"\\n ng-click=\\\"$ctrl.action()\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n <span class=\\\"text-danger space-left\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">\\n {{ $ctrl.state.formValidationError }}\\n </span>\\n </div>\\n </div>\\n <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/edge/components/edge-job-form/edgeJobForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable edge-job-results-datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <span><pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon></span>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar\\\">\\n <span><pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon></span>\\n <input type=\\\"text\\\" class=\\\"searchInput\\\" ng-model=\\\"$ctrl.state.textFilter\\\" placeholder=\\\"Search...\\\" auto-focus ng-model-options=\\\"{ debounce: 300 }\\\" />\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover table-filters nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <a ng-click=\\\"$ctrl.changeOrderBy('Endpoint')\\\">\\n Environment\\n <span><pr-icon icon=\\\"'arrow-down'\\\" ng-if=\\\"$ctrl.state.orderBy === 'Endpoint' && !$ctrl.state.reverseOrder\\\"></pr-icon></span>\\n <span><pr-icon icon=\\\"'arrow-up'\\\" ng-if=\\\"$ctrl.state.orderBy === 'Endpoint' && $ctrl.state.reverseOrder\\\"></pr-icon></span>\\n </a>\\n </th>\\n <th> Actions </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n >\\n <td>\\n {{ item.Endpoint.Name }}\\n </td>\\n <td>\\n <button ng-if=\\\"item.LogsStatus === 0 || item.LogsStatus === 1\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"$ctrl.collectLogs(item.EndpointId)\\\"> Retrieve logs </button>\\n <button ng-if=\\\"item.LogsStatus === 3\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"$ctrl.onDownloadLogsClick(item.EndpointId)\\\"> Download logs </button>\\n <button ng-if=\\\"item.LogsStatus === 3\\\" class=\\\"btn btn-sm btn-primary\\\" ng-click=\\\"$ctrl.onClearLogsClick(item.EndpointId)\\\"> Clear logs </button>\\n <span ng-if=\\\"item.LogsStatus === 2\\\"> Logs marked for collection, please wait until the logs are available. </span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"9\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"9\\\" class=\\\"text-muted text-center\\\">No result available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span class=\\\"mr-1\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/edge-job-results-datatable/edgeJobResultsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\"> <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon> {{ $ctrl.titleText }} </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'icon'\\\"></pr-icon>\\n <input type=\\\"text\\\" class=\\\"searchInput\\\" ng-model=\\\"$ctrl.state.textFilter\\\" placeholder=\\\"Search...\\\" auto-focus ng-model-options=\\\"{ debounce: 300 }\\\" />\\n </div>\\n <div class=\\\"actionBar\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\" ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-sref=\\\"edge.jobs.new\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon>Add Edge job </button>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'CronExpression'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CronExpression'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CronExpression' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CronExpression')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Created'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Created'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Created' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Created')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"edge.jobs.job({id: item.Id})\\\">{{ item.Name }}</a>\\n </td>\\n <td>\\n {{ item.CronExpression }}\\n </td>\\n <td>{{ item.Created | getisodatefromtimestamp }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">No Edge job available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span class=\\\"mr-1\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/edge-jobs-datatable/edgeJobsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<span class=\\\"status\\\" title=\\\"Acknowledged environments\\\"><i class=\\\"acknowledged icon\\\"></i>{{ $ctrl.status.acknowledged || 0 }}</span>\\n<span class=\\\"status\\\" title=\\\"Successful environments\\\"><i class=\\\"ok icon\\\"></i>{{ $ctrl.status.ok || 0 }}</span>\\n<span class=\\\"status\\\" title=\\\"Failed environments\\\"><i class=\\\"error icon\\\"></i>{{ $ctrl.status.error || 0 }}</span>\\n\";;\nvar path = 'app/edge/components/edge-stack-status/edgeStackStatus.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"EdgeGroupForm\\\" ng-submit=\\\"$ctrl.handleSubmit()\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"group_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\"> Name </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"group_name\\\"\\n name=\\\"group_name\\\"\\n ng-model=\\\"$ctrl.model.Name\\\"\\n required\\n auto-focus\\n data-cy=\\\"edgeGroupCreate-groupNameInput\\\"\\n placeholder=\\\"e.g. mygroup\\\"\\n />\\n <div class=\\\"help-block\\\" ng-show=\\\"EdgeGroupForm.group_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"EdgeGroupForm.group_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\"></pr-icon> This field is required. </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Group type </div>\\n\\n <box-selector slim=\\\"true\\\" value=\\\"$ctrl.model.Dynamic\\\" on-change=\\\"($ctrl.onChangeDynamic)\\\" options=\\\"$ctrl.groupTypeOptions\\\" radio-name=\\\"'groupTypeDynamic'\\\"></box-selector>\\n\\n <!-- StaticGroup -->\\n <div ng-if=\\\"!$ctrl.model.Dynamic\\\">\\n <div ng-if=\\\"!$ctrl.noEndpoints\\\">\\n <!-- environments -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Associated environments </div>\\n <div class=\\\"form-group\\\">\\n <associated-edge-environments-selector value=\\\"$ctrl.model.Endpoints\\\" on-change=\\\"($ctrl.onChangeEnvironments)\\\"></associated-edge-environments-selector>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.noEndpoints\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n No Edge environments are available. Head over to the <a ui-sref=\\\"portainer.endpoints\\\">Environments view</a> to add environments.\\n </div>\\n </div>\\n </div>\\n <!-- !StaticGroup -->\\n\\n <!-- DynamicGroup -->\\n <div ng-if=\\\"$ctrl.model.Dynamic\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Tags </div>\\n\\n <box-selector slim=\\\"true\\\" value=\\\"$ctrl.model.PartialMatch\\\" on-change=\\\"($ctrl.onChangePartialMatch)\\\" options=\\\"$ctrl.tagOptions\\\" radio-name=\\\"'partialMatch'\\\"></box-selector>\\n\\n <tag-selector ng-if=\\\"$ctrl.model.TagIds\\\" value=\\\"$ctrl.model.TagIds\\\" on-change=\\\"($ctrl.onChangeTags)\\\"> </tag-selector>\\n\\n <edge-group-association-table\\n title=\\\"'Associated environments by tags'\\\"\\n empty-content-message=\\\"'No associated available'\\\"\\n query=\\\"$ctrl.dynamicQuery\\\"\\n ></edge-group-association-table>\\n </div>\\n <!-- !DynamicGroup -->\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !EdgeGroupForm.$valid\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n data-cy=\\\"edgeGroupCreate-addGroupButton\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n</form>\\n\";;\nvar path = 'app/edge/components/group-form/groupForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\"> <pr-icon icon=\\\"'layout-grid'\\\"></pr-icon> Edge Groups </div>\\n <div class=\\\"searchBar vertical-center leading-none\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"edgeGroup-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-danger\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"edgeGroup-removeEdgeGroupButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon> Remove\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-sref=\\\"edge.groups.new\\\" data-cy=\\\"edgeGroup-addEdgeGroupButton\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> Add Edge group\\n </button>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\" data-cy=\\\"edgeGroup-edgeGroupTable\\\">\\n <thead>\\n <tr>\\n <th class=\\\"flex\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" data-cy=\\\"edgeGroup-selectAllCheckbox\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Environments Count'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Endpoints.length'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Endpoints.length' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Endpoints.length')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Group Type'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Dynamic'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Dynamic' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Dynamic')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input\\n id=\\\"select_{{ $index }}\\\"\\n type=\\\"checkbox\\\"\\n ng-model=\\\"item.Checked\\\"\\n ng-disabled=\\\"item.HasEdgeStack || item.HasEdgeJob\\\"\\n ng-click=\\\"$ctrl.selectItem(item, $event)\\\"\\n />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"edge.groups.edit({groupId: item.Id})\\\">{{ item.Name }}</a>\\n <span ng-if=\\\"item.HasEdgeStack || item.HasEdgeJob\\\" class=\\\"label label-info image-tag space-left\\\">in use</span>\\n </td>\\n <td>{{ item.Endpoints.length }}</td>\\n <td>{{ item.Dynamic ? 'Dynamic' : 'Static' }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\"> No Edge group available. </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span class=\\\"mr-1\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/edge/components/groups-datatable/groupsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create edge group'\\\" breadcrumbs=\\\"[{label:'Edge groups', link:'edge.groups'}, 'Add edge group']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <edge-group-form\\n loaded=\\\"$ctrl.state.loaded\\\"\\n page-type=\\\"create\\\"\\n form-action-label=\\\"Add edge group\\\"\\n form-action=\\\"$ctrl.createGroup\\\"\\n groups=\\\"$ctrl.endpointGroups\\\"\\n model=\\\"$ctrl.model\\\"\\n ></edge-group-form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-groups/createEdgeGroupView/createEdgeGroupView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Edge Groups'\\\" breadcrumbs=\\\"['Edge Groups']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <edge-groups-datatable title-icon=\\\"dice-4\\\" table-key=\\\"EdgeGroups\\\" order-by=\\\"Name\\\" dataset=\\\"$ctrl.items\\\" remove-action=\\\"$ctrl.removeAction\\\"></edge-groups-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-groups/edgeGroupsView/edgeGroupsView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Edit edge group'\\\" breadcrumbs=\\\"[{label:'Edge Groups', link:'edge.groups'}, $ctrl.model.Name]\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"$ctrl.model\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <edge-group-form\\n loaded=\\\"$ctrl.state.loaded\\\"\\n page-type=\\\"edit\\\"\\n form-action-label=\\\"Save edge group\\\"\\n form-action=\\\"$ctrl.updateGroup\\\"\\n endpoints=\\\"$ctrl.endpoints\\\"\\n groups=\\\"$ctrl.endpointGroups\\\"\\n model=\\\"$ctrl.model\\\"\\n ></edge-group-form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-groups/editEdgeGroupView/editEdgeGroupView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create Edge job'\\\" breadcrumbs=\\\"[{label:'Edge Jobs', link:'edge.jobs'}, 'Create Edge job']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <edge-job-form\\n model=\\\"$ctrl.model\\\"\\n groups=\\\"$ctrl.groups\\\"\\n tags=\\\"$ctrl.tags\\\"\\n edge-groups=\\\"$ctrl.edgeGroups\\\"\\n form-action=\\\"$ctrl.create\\\"\\n form-action-label=\\\"Create edge job\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n is-editor-dirty=\\\"$ctrl.state.isEditorDirty\\\"\\n ></edge-job-form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-jobs/createEdgeJobView/createEdgeJobView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Edge job details'\\\" breadcrumbs=\\\"[{label:'Edge jobs', link:'edge.jobs'}, $ctrl.edgeJob.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <uib-tabset active=\\\"$ctrl.state.activeTab\\\">\\n <uib-tab index=\\\"0\\\" select=\\\"$ctrl.showEditor()\\\">\\n <uib-tab-heading>\\n <span><pr-icon icon=\\\"'wrench'\\\"></pr-icon></span> Configuration\\n </uib-tab-heading>\\n\\n <edge-job-form\\n ng-if=\\\"$ctrl.edgeJob && $ctrl.state.showEditorTab\\\"\\n model=\\\"$ctrl.edgeJob\\\"\\n endpoints=\\\"endpoints\\\"\\n groups=\\\"$ctrl.groups\\\"\\n tags=\\\"$ctrl.tags\\\"\\n edge-groups=\\\"$ctrl.edgeGroups\\\"\\n form-action=\\\"$ctrl.update\\\"\\n form-action-label=\\\"Update Edge job\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n is-editor-dirty=\\\"$ctrl.state.isEditorDirty\\\"\\n ></edge-job-form>\\n </uib-tab>\\n\\n <uib-tab index=\\\"1\\\">\\n <uib-tab-heading>\\n <span><pr-icon icon=\\\"'list'\\\"></pr-icon></span> Results\\n </uib-tab-heading>\\n\\n <edge-job-results-datatable\\n ng-if=\\\"$ctrl.results\\\"\\n title-text=\\\"Results\\\"\\n title-icon=\\\"list\\\"\\n dataset=\\\"$ctrl.results\\\"\\n table-key=\\\"edge-job-results\\\"\\n order-by=\\\"Status\\\"\\n reverse-order=\\\"true\\\"\\n refresh-callback=\\\"$ctrl.refresh\\\"\\n on-download-logs-click=\\\"($ctrl.downloadLogs)\\\"\\n on-collect-logs-click=\\\"($ctrl.collectLogs)\\\"\\n on-clear-logs-click=\\\"($ctrl.clearLogs)\\\"\\n ></edge-job-results-datatable>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-jobs/edgeJob/edgeJob.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Edge Jobs'\\\" breadcrumbs=\\\"['Edge Jobs']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<information-panel title-text=\\\"Information\\\">\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted\\\">Edge Jobs requires Docker Standalone and a cron implementation that reads jobs from <code>/etc/cron.d</code></p>\\n </span>\\n</information-panel>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <edge-jobs-datatable\\n title-text=\\\"Edge jobs\\\"\\n title-icon=\\\"clock\\\"\\n dataset=\\\"$ctrl.edgeJobs\\\"\\n table-key=\\\"edgeJobs\\\"\\n order-by=\\\"Name\\\"\\n remove-action=\\\"$ctrl.removeAction\\\"\\n ></edge-jobs-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-jobs/edgeJobsView/edgeJobsView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create Edge stack'\\\" breadcrumbs=\\\"[{label:'Edge Stacks', link:'edge.stacks'}, 'Create Edge stack']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.form\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"stack_name\\\" class=\\\"col-sm-1 control-label required text-left\\\"> Name </label>\\n <div class=\\\"col-sm-11\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.formValues.Name\\\"\\n id=\\\"stack_name\\\"\\n name=\\\"nameField\\\"\\n ng-pattern=\\\"$ctrl.formValues.DeploymentType === $ctrl.EditorType.Compose ? STACK_NAME_VALIDATION_REGEX : ''\\\"\\n placeholder=\\\"e.g. mystack\\\"\\n auto-focus\\n required\\n data-cy=\\\"edgeStackCreate-nameInput\\\"\\n />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.form.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.form.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span>Name is required.</span>\\n </p>\\n <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span>This field must consist of lower case alphanumeric characters, '_' or '-' (e.g. 'my-name', or 'abc-123').</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n\\n <edge-groups-selector ng-if=\\\"$ctrl.formValues.Groups\\\" value=\\\"$ctrl.formValues.Groups\\\" on-change=\\\"($ctrl.onChangeGroups)\\\"></edge-groups-selector>\\n\\n <p class=\\\"col-sm-12 vertical-center help-block small text-warning\\\" ng-if=\\\"$ctrl.formValues.DeploymentType === undefined\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> There are no available deployment types when there is more than one type of environment in your edge group\\n selection (e.g. Kubernetes and Docker environments). Please select edge groups that have environments of the same type.\\n </p>\\n\\n <edge-stack-deployment-type-selector\\n value=\\\"$ctrl.formValues.DeploymentType\\\"\\n has-docker-endpoint=\\\"$ctrl.hasType($ctrl.EnvironmentType.EdgeAgentOnDocker)\\\"\\n has-kube-endpoint=\\\"$ctrl.hasType($ctrl.EnvironmentType.EdgeAgentOnKubernetes)\\\"\\n has-nomad-endpoint=\\\"$ctrl.hasType($ctrl.EnvironmentType.EdgeAgentOnNomad)\\\"\\n on-change=\\\"($ctrl.onChangeDeploymentType)\\\"\\n ></edge-stack-deployment-type-selector>\\n\\n <edge-stacks-docker-compose-form\\n ng-if=\\\"$ctrl.formValues.DeploymentType == $ctrl.EditorType.Compose\\\"\\n form-values=\\\"$ctrl.formValues\\\"\\n state=\\\"$ctrl.state\\\"\\n ></edge-stacks-docker-compose-form>\\n\\n <edge-stacks-kube-manifest-form\\n ng-if=\\\"$ctrl.formValues.DeploymentType == $ctrl.EditorType.Kubernetes\\\"\\n form-values=\\\"$ctrl.formValues\\\"\\n state=\\\"$ctrl.state\\\"\\n ></edge-stacks-kube-manifest-form>\\n\\n <div ng-if=\\\"$ctrl.isBE\\\">\\n <environment-variables-panel values=\\\"$ctrl.formValues.envVars\\\" on-change=\\\"($ctrl.onEnvVarChange)\\\"></environment-variables-panel>\\n </div>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.state.actionInProgress || $ctrl.formIsInvalid()\\\"\\n ng-click=\\\"$ctrl.createStack()\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n analytics-on\\n analytics-event=\\\"edge-stack-creation\\\"\\n analytics-category=\\\"edge\\\"\\n analytics-properties=\\\"$ctrl.buildAnalyticsProperties()\\\"\\n data-cy=\\\"edgeStackCreate-createStackButton\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">Deploy the stack</span>\\n <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Deployment in progress...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"$ctrl.state.formValidationError\\\" style=\\\"margin-left: 5px\\\">\\n {{ $ctrl.state.formValidationError }}\\n </span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/createEdgeStackView/create-edge-stack-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n<box-selector slim=\\\"true\\\" radio-name=\\\"'method'\\\" value=\\\"$ctrl.state.Method\\\" options=\\\"$ctrl.methodOptions\\\" on-change=\\\"($ctrl.onChangeMethod)\\\"></box-selector>\\n\\n<web-editor-form\\n ng-if=\\\"$ctrl.state.Method === 'editor'\\\"\\n identifier=\\\"stack-creation-editor\\\"\\n value=\\\"$ctrl.formValues.StackFileContent\\\"\\n on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n ng-required=\\\"true\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your docker compose file here\\\"\\n>\\n <editor-description>\\n You can get more information about Compose file format in the\\n <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> official documentation </a>\\n .\\n </editor-description>\\n</web-editor-form>\\n\\n<file-upload-form ng-if=\\\"$ctrl.state.Method === 'upload'\\\" file=\\\"$ctrl.formValues.StackFile\\\" on-change=\\\"($ctrl.onChangeFile)\\\" ng-required=\\\"true\\\">\\n <file-upload-description> You can upload a Compose file from your computer. </file-upload-description>\\n</file-upload-form>\\n\\n<git-form\\n ng-if=\\\"$ctrl.state.Method === 'repository'\\\"\\n value=\\\"$ctrl.formValues\\\"\\n on-change=\\\"($ctrl.onChangeFormValues)\\\"\\n base-webhook-url=\\\"{{ $ctrl.state.baseWebhookUrl }}\\\"\\n webhook-id=\\\"{{ $ctrl.state.webhookId }}\\\"\\n docs-links\\n></git-form>\\n\\n<!-- template -->\\n<div ng-if=\\\"$ctrl.state.Method === 'template'\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"stack_template\\\" class=\\\"col-sm-1 control-label text-left\\\"> Template </label>\\n <div class=\\\"col-sm-11\\\">\\n <select\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.selectedTemplate\\\"\\n ng-options=\\\"template as template.label for template in $ctrl.templates\\\"\\n ng-change=\\\"$ctrl.onChangeTemplate($ctrl.selectedTemplate)\\\"\\n >\\n <option value=\\\"\\\" label=\\\"Select an Edge stack template\\\" disabled selected=\\\"selected\\\"> </option>\\n </select>\\n </div>\\n </div>\\n <!-- description -->\\n <div ng-if=\\\"$ctrl.selectedTemplate.note\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Information </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"template-note\\\" ng-bind-html=\\\"$ctrl.selectedTemplate.note\\\"></div>\\n </div>\\n </div>\\n </div>\\n <!-- !description -->\\n\\n <web-editor-form\\n ng-if=\\\"$ctrl.selectedTemplate && $ctrl.formValues.StackFileContent\\\"\\n identifier=\\\"template-content-editor\\\"\\n value=\\\"$ctrl.formValues.StackFileContent\\\"\\n on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your docker compose file here\\\"\\n ng-required=\\\"true\\\"\\n >\\n </web-editor-form>\\n\\n <!-- !template -->\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/createEdgeStackView/docker-compose-form/docker-compose-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>Templates allow deploying any kind of Kubernetes resource (Deployment, Secret, ConfigMap...)</div>\\n<div>\\n You can get more information about Kubernetes file format in the\\n <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/createEdgeStackView/kube-deploy-description/kube-deploy-description.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Use namespace(s) specified from manifest'\\\"\\n tooltip=\\\"'If you have defined namespaces in your deployment file turning this on will enforce the use of those only in the deployment'\\\"\\n checked=\\\"$ctrl.formValues.UseManifestNamespaces\\\"\\n on-change=\\\"($ctrl.onChangeUseManifestNamespaces)\\\"\\n ></por-switch-field>\\n </div>\\n</div>\\n\\n<div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n<box-selector slim=\\\"true\\\" radio-name=\\\"'method'\\\" value=\\\"$ctrl.state.Method\\\" options=\\\"$ctrl.methodOptions\\\" on-change=\\\"($ctrl.onChangeMethod)\\\"></box-selector>\\n\\n<web-editor-form\\n ng-if=\\\"$ctrl.state.Method === 'editor'\\\"\\n identifier=\\\"stack-creation-editor\\\"\\n value=\\\"$ctrl.formValues.StackFileContent\\\"\\n on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your manifest here\\\"\\n ng-required=\\\"true\\\"\\n>\\n <editor-description>\\n <kube-deploy-description></kube-deploy-description>\\n </editor-description>\\n</web-editor-form>\\n\\n<file-upload-form ng-if=\\\"$ctrl.state.Method === 'upload'\\\" file=\\\"$ctrl.formValues.StackFile\\\" on-change=\\\"($ctrl.onChangeFile)\\\" ng-required=\\\"true\\\">\\n <file-upload-description>\\n <kube-deploy-description></kube-deploy-description>\\n </file-upload-description>\\n</file-upload-form>\\n\\n<git-form\\n ng-if=\\\"$ctrl.state.Method === 'repository'\\\"\\n deploy-method=\\\"kubernetes\\\"\\n value=\\\"$ctrl.formValues\\\"\\n on-change=\\\"($ctrl.onChangeFormValues)\\\"\\n base-webhook-url=\\\"{{ $ctrl.state.baseWebhookUrl }}\\\"\\n webhook-id=\\\"{{ $ctrl.state.webhookId }}\\\"\\n></git-form>\\n\";;\nvar path = 'app/edge/views/edge-stacks/createEdgeStackView/kube-manifest-form/kube-manifest-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Edit Edge stack'\\\" breadcrumbs=\\\"[{label:'Edge Stacks', link:'edge.stacks'}, $ctrl.stack.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"$ctrl.stack\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"$ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\">\\n <uib-tab-heading>\\n <span><pr-icon icon=\\\"'layers'\\\"></pr-icon></span> Stack\\n </uib-tab-heading>\\n\\n <div style=\\\"padding: 20px\\\">\\n <edit-edge-stack-form\\n ng-if=\\\"$ctrl.edgeGroups && $ctrl.stack && $ctrl.formValues.content !== null\\\"\\n edge-groups=\\\"$ctrl.edgeGroups\\\"\\n edge-stack=\\\"$ctrl.stack\\\"\\n is-submitting=\\\"$ctrl.state.actionInProgress\\\"\\n on-submit=\\\"($ctrl.deployStack)\\\"\\n on-editor-change=\\\"($ctrl.onEditorChange)\\\"\\n file-content=\\\"$ctrl.formValues.content\\\"\\n allow-kube-to-select-compose=\\\"$ctrl.allowKubeToSelectCompose\\\"\\n ></edit-edge-stack-form>\\n </div>\\n </uib-tab>\\n <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\">\\n <uib-tab-heading>\\n <span><pr-icon icon=\\\"'hard-drive'\\\"></pr-icon></span> Environments\\n </uib-tab-heading>\\n\\n <div style=\\\"margin-top: 25px\\\">\\n <edge-stack-environments-datatable></edge-stack-environments-datatable>\\n </div>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/edge/views/edge-stacks/editEdgeStackView/editEdgeStackView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'server'\\\"></pr-icon>\\n </div>\\n <span>\\n {{ $ctrl.titleText }}\\n </span>\\n </div>\\n <div class=\\\"searchBar\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\" size=\\\"'sm'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput ml-1\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for an application...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div ng-if=\\\"$ctrl.refreshCallback\\\" class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\"></pr-icon></span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\" data-cy=\\\"k8sAppDetail-containerTable\\\">\\n <thead>\\n <tr>\\n <th ng-if=\\\"!$ctrl.isPod\\\">\\n <table-column-header\\n col-title=\\\"'Pod'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'PodName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'PodName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('PodName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Image'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Image Pull Policy'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ImagePullPolicy'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ImagePullPolicy' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ImagePullPolicy')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Status'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Node'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Node'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Node' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Node')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Pod IP'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'IP'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'IP' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('IP')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Creation date'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CreationDate'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreationDate' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CreationDate')\\\"\\n ></table-column-header>\\n </th>\\n <th>Actions</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n pagination-id=\\\"$ctrl.tableKey\\\"\\n >\\n <td ng-if=\\\"!$ctrl.isPod\\\">{{ item.PodName }}</td>\\n <td>{{ item.Name }}</td>\\n <td title=\\\"{{ item.Image }}\\\">{{ item.Image | truncate : 64 }}</td>\\n <td>{{ item.ImagePullPolicy }}</td>\\n <td\\n ><span class=\\\"label label-{{ item.Status | kubernetesPodStatusColor }}\\\">{{ item.Status }}</span></td\\n >\\n <td>\\n <span ng-if=\\\"item.Node\\\">\\n <a ui-sref=\\\"kubernetes.cluster.node({ name: item.Node })\\\">\\n {{ item.Node }}\\n </a>\\n </span>\\n <span ng-if=\\\"!item.Node\\\">-</span>\\n </td>\\n <td>{{ item.PodIP }}</td>\\n <td>{{ item.CreationDate | getisodate }}</td>\\n <td>\\n <a\\n ng-if=\\\"item.Status === 'Running' && $ctrl.useServerMetrics\\\"\\n ui-sref=\\\"kubernetes.applications.application.stats({ pod: item.PodName, container: item.Name })\\\"\\n class=\\\"vertical-center mr-1\\\"\\n >\\n <pr-icon icon=\\\"'bar-chart'\\\"></pr-icon>Stats\\n </a>\\n <a ui-sref=\\\"kubernetes.applications.application.logs({ pod: item.PodName, container: item.Name })\\\" class=\\\"vertical-center mr-1\\\">\\n <pr-icon icon=\\\"'file-text'\\\"></pr-icon>Logs\\n </a>\\n <a\\n ng-if=\\\"item.Status === 'Running'\\\"\\n ui-sref=\\\"kubernetes.applications.application.console({ pod: item.PodName, container: item.Name })\\\"\\n class=\\\"vertical-center mr-1\\\"\\n >\\n <pr-icon icon=\\\"'terminal'\\\"></pr-icon>Console\\n </a>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"7\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"7\\\" class=\\\"text-muted text-center\\\">No pod available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/application/containers-datatable/containersDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-xs-12 !px-0 !py-1 text-[13px]\\\"> Secrets </div>\\n<table style=\\\"width: 50%\\\">\\n <tbody>\\n <tr>\\n <td>\\n <sensitive-details ng-repeat=\\\"secret in $ctrl.state.secrets\\\" key=\\\"{{ secret.key }}\\\" value=\\\"{{ secret.value }}\\\"> </sensitive-details>\\n </td>\\n </tr>\\n </tbody>\\n</table>\\n\";;\nvar path = 'app/kubernetes/components/datatables/applications-datatable-details/applications-datatable-details.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <!-- toolbar header actions and settings -->\\n <div ng-if=\\\"$ctrl.isPrimary\\\" class=\\\"toolBar !flex-col !gap-0\\\">\\n <div class=\\\"toolBar w-full !items-start !gap-x-5 !p-0\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'box'\\\"></pr-icon>\\n </div>\\n Applications\\n </div>\\n <!-- use row reverse to make the left most items wrap first to the right side in the next line -->\\n <div class=\\\"inline-flex flex-row-reverse flex-wrap !gap-x-5 gap-y-3\\\">\\n <div class=\\\"settings\\\" data-cy=\\\"k8sApp-tableSettings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n <input id=\\\"applications_setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n <label for=\\\"applications_setting_show_system\\\">Show system resources</label>\\n </div>\\n <div class=\\\"md-checkbox\\\">\\n <input\\n id=\\\"setting_auto_refresh\\\"\\n type=\\\"checkbox\\\"\\n ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\"\\n ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n data-cy=\\\"k8sApp-autoRefreshCheckbox\\\"\\n />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select\\n id=\\\"settings_refresh_rate\\\"\\n ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\"\\n ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n class=\\\"small-select\\\"\\n data-cy=\\\"k8sApp-refreshRateDropdown\\\"\\n >\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-sm btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\" data-cy=\\\"k8sApp-tableSettingsCloseButton\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n\\n <div class=\\\"actionBar !mr-0 !gap-3\\\">\\n <button\\n ng-if=\\\"$ctrl.isPrimary\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"k8sApp-removeAppButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Remove\\n </button>\\n <button\\n ng-if=\\\"$ctrl.isPrimary\\\"\\n hide-deployment-option=\\\"form\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-secondary vertical-center !ml-0 h-fit\\\"\\n ui-sref=\\\"kubernetes.applications.new\\\"\\n data-cy=\\\"k8sApp-addApplicationButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" class-name=\\\"'!h-3'\\\"></pr-icon>Add with form\\n </button>\\n <button\\n ng-if=\\\"$ctrl.isPrimary\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary vertical-center !ml-0 h-fit\\\"\\n ui-sref=\\\"kubernetes.deploy({ referrer: 'kubernetes.applications' })\\\"\\n data-cy=\\\"k8sApp-deployFromManifestButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" class-name=\\\"'!h-3'\\\"></pr-icon>Create from manifest\\n </button>\\n </div>\\n\\n <div class=\\\"searchBar\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"k8sApp-searchApplicationsInput\\\"\\n />\\n </div>\\n\\n <div class=\\\"form-group namespaces !mb-0 !mr-0 !h-[30px] min-w-[140px]\\\">\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-addon\\\">\\n <pr-icon icon=\\\"'filter'\\\" size=\\\"'sm'\\\"></pr-icon>\\n Namespace\\n </span>\\n <select\\n class=\\\"form-control !h-[30px] !py-1\\\"\\n ng-model=\\\"$ctrl.state.namespace\\\"\\n ng-change=\\\"$ctrl.onChangeNamespace()\\\"\\n data-cy=\\\"component-namespaceSelect\\\"\\n ng-options=\\\"o.Value as (o.Name + (o.IsSystem ? ' - system' : '')) for o in $ctrl.state.namespaces\\\"\\n >\\n </select>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"flex w-full flex-row\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.settings.showSystem\\\">\\n <span class=\\\"small text-muted vertical-center mt-1\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n System resources are hidden, this can be changed in the table settings.\\n </span>\\n </div>\\n <div class=\\\"w-full\\\">\\n <div class=\\\"w-fit\\\">\\n <insights-box class-name=\\\"'mt-2'\\\" type=\\\"'slim'\\\" header=\\\"'From 2.18 on, you can filter this view by namespace.'\\\" insight-close-id=\\\"'k8s-namespace-filtering'\\\"></insights-box>\\n </div>\\n </div>\\n </div>\\n <!-- data table content -->\\n <div ng-class=\\\"{ 'table-responsive': $ctrl.isPrimary, 'inner-datatable': !$ctrl.isPrimary }\\\">\\n <table class=\\\"table-hover table-filters nowrap-cells table\\\" data-cy=\\\"k8sApp-appTable\\\">\\n <thead ng-class=\\\"{ 'secondary-heading': !$ctrl.isPrimary }\\\">\\n <tr role=\\\"row\\\">\\n <th role=\\\"columnheader\\\" class=\\\"datatable-wide dropdown\\\">\\n <div ng-if=\\\"$ctrl.isPrimary\\\" class=\\\"no-wrap flex min-w-max\\\">\\n <span class=\\\"md-checkbox vertical-center\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" data-cy=\\\"k8sApp-selectAllCheckbox\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <div class=\\\"vertical-center cursor-pointer\\\" ng-click=\\\"$ctrl.expandAll()\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </div>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Stack'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Namespace'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourcePool'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourcePool' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourcePool')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Image'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n ></table-column-header>\\n </th>\\n <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.filters.state.open\\\">\\n <div class=\\\"no-wrap flex flex-row gap-2\\\">\\n <table-column-header\\n col-title=\\\"'Application Type'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ApplicationType'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ApplicationType' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ApplicationType')\\\"\\n ></table-column-header>\\n <div class=\\\"no-wrap flex flex-row items-center gap-1\\\" uib-dropdown-toggle>\\n <span class=\\\"table-filter\\\">Filters</span>\\n <pr-icon ng-if=\\\"!$ctrl.filters.state.enabled\\\" icon=\\\"'filter'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"$ctrl.filters.state.enabled\\\" icon=\\\"'check'\\\"></pr-icon>\\n </div>\\n <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Filter by application type </div>\\n <div class=\\\"menuContent\\\">\\n <div class=\\\"md-checkbox\\\" ng-repeat=\\\"filter in $ctrl.filters.state.values track by $index\\\">\\n <input id=\\\"filter_state_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"filter.display\\\" ng-change=\\\"$ctrl.onStateFilterChange()\\\" />\\n <label for=\\\"filter_state_{{ $index }}\\\">{{ filter.type | kubernetesApplicationTypeText }}</label>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-sm btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </div>\\n </th>\\n <th>\\n <table-column-header col-title=\\\"'Status'\\\" can-sort=\\\"false\\\"></table-column-header>\\n <!-- Status -->\\n </th>\\n <th>\\n <table-column-header col-title=\\\"'Published'\\\" can-sort=\\\"false\\\"></table-column-header>\\n <!-- Published -->\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Created'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CreationDate'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CreationDate' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CreationDate')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n ng-show=\\\"!$ctrl.isAppsLoading\\\"\\n ng-click=\\\"$ctrl.expandItem(item, !$ctrl.isItemExpanded(item))\\\"\\n dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.applyFilters | filter:$ctrl.state.textFilter | filter:$ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n ng-class=\\\"{ active: item.Checked, interactive: $ctrl.isExpandable(item), 'secondary-body': !$ctrl.isPrimary }\\\"\\n pagination-id=\\\"$ctrl.tableKey\\\"\\n >\\n <td class=\\\"h-[50px]\\\">\\n <span ng-if=\\\"$ctrl.isPrimary\\\" class=\\\"md-checkbox vertical-center\\\">\\n <input\\n id=\\\"select_{{ $index }}\\\"\\n type=\\\"checkbox\\\"\\n ng-model=\\\"item.Checked\\\"\\n ng-click=\\\"$ctrl.selectItem(item, $event); $event.stopPropagation()\\\"\\n ng-disabled=\\\"$ctrl.isSystemNamespace(item)\\\"\\n />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <div ng-if=\\\"$ctrl.isExpandable(item)\\\" class=\\\"vertical-center\\\">\\n <pr-icon ng-if=\\\"$ctrl.isItemExpanded(item)\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.isItemExpanded(item)\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </div>\\n </td>\\n <td>\\n <a\\n ng-if=\\\"item.KubernetesApplications\\\"\\n ui-sref=\\\"kubernetes.helm({ name: item.Name, namespace: item.ResourcePool })\\\"\\n ng-click=\\\"$event.stopPropagation()\\\"\\n class=\\\"hyperlink\\\"\\n >{{ item.Name }}\\n </a>\\n <a\\n ng-if=\\\"!item.KubernetesApplications\\\"\\n ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool, 'resource-type': $ctrl.applicationTypeEnumToParamMap[item.ApplicationType] })\\\"\\n ng-click=\\\"$event.stopPropagation()\\\"\\n class=\\\"hyperlink\\\"\\n >{{ item.Name }}\\n </a>\\n <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">system</span>\\n <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && $ctrl.isExternalApplication(item)\\\">external</span>\\n </td>\\n <td>{{ item.StackName || '-' }}</td>\\n <td>\\n <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.ResourcePool })\\\" ng-click=\\\"$event.stopPropagation()\\\">{{ item.ResourcePool }}</a>\\n </td>\\n <td title=\\\"{{ item.Image }}\\\"\\n >{{ item.Image | truncate : 64 }} <span ng-if=\\\"item.Containers.length > 1\\\">+ {{ item.Containers.length - 1 }}</span></td\\n >\\n <td>{{ item.ApplicationType | kubernetesApplicationTypeText }}</td>\\n <td ng-if=\\\"item.ApplicationType !== $ctrl.KubernetesApplicationTypes.POD\\\">\\n <status-indicator ok=\\\"(item.TotalPodsCount > 0 && item.TotalPodsCount === item.RunningPodsCount) || item.Status === 'Ready'\\\"></status-indicator>\\n <span ng-if=\\\"item.DeploymentType === $ctrl.KubernetesApplicationDeploymentTypes.REPLICATED\\\">Replicated</span>\\n <span ng-if=\\\"item.DeploymentType === $ctrl.KubernetesApplicationDeploymentTypes.GLOBAL\\\">Global</span>\\n <span ng-if=\\\"item.RunningPodsCount >= 0 && item.TotalPodsCount >= 0\\\"\\n ><code>{{ item.RunningPodsCount }}</code> / <code>{{ item.TotalPodsCount }}</code></span\\n >\\n <span ng-if=\\\"item.KubernetesApplications\\\">{{ item.Status }}</span>\\n </td>\\n <td ng-if=\\\"item.ApplicationType === $ctrl.KubernetesApplicationTypes.POD\\\">\\n {{ item.Pods[0].Status }}\\n </td>\\n <td>\\n <span>\\n {{ item.Services.length === 0 ? 'No' : 'Yes' }}\\n </span>\\n </td>\\n <td>{{ item.CreationDate | getisodate }} {{ item.ApplicationOwner ? 'by ' + item.ApplicationOwner : '' }}</td>\\n </tr>\\n <tr dir-paginate-end ng-show=\\\"$ctrl.isExpandable(item) && $ctrl.isItemExpanded(item)\\\" ng-class=\\\"{ 'secondary-body': $ctrl.isPrimary && !item.KubernetesApplications }\\\">\\n <td></td>\\n <td colspan=\\\"8\\\" class=\\\"datatable-padding-vertical\\\">\\n <span ng-if=\\\"item.KubernetesApplications\\\">\\n <kubernetes-applications-datatable\\n dataset=\\\"item.KubernetesApplications\\\"\\n table-key=\\\"{{ item.Id }}_table\\\"\\n settings-key=\\\"{{ $ctrl.tableKey }}\\\"\\n order-by=\\\"Name\\\"\\n remove-action=\\\"$ctrl.removeAction\\\"\\n refresh-callback=\\\"$ctrl.refreshCallback\\\"\\n on-publishing-mode-click=\\\"($ctrl.onPublishingModeClick)\\\"\\n is-primary=\\\"false\\\"\\n >\\n </kubernetes-applications-datatable>\\n </span>\\n <span ng-if=\\\"!item.KubernetesApplications\\\">\\n <div class=\\\"published-url-container\\\">\\n <div>\\n <div class=\\\"text-muted\\\"> Published URL(s) </div>\\n </div>\\n <div>\\n <div ng-repeat=\\\"url in $ctrl.getPublishedUrls(item)\\\">\\n <a ng-href=\\\"{{ url }}\\\" target=\\\"_blank\\\" class=\\\"publish-url-link vertical-center\\\">\\n <pr-icon icon=\\\"'external-link'\\\"></pr-icon>\\n {{ url }}\\n </a>\\n </div>\\n </div>\\n </div>\\n <kubernetes-applications-datatable-details\\n ng-if=\\\"$ctrl.hasConfigurationSecrets(item)\\\"\\n configurations=\\\"item.Configurations\\\"\\n ></kubernetes-applications-datatable-details>\\n </span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.isAppsLoading\\\">\\n <td colspan=\\\"8\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0 && !$ctrl.isAppsLoading\\\">\\n <td colspan=\\\"8\\\" class=\\\"text-muted text-center\\\">No application available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.isPrimary && $ctrl.dataset\\\">\\n <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span class=\\\"mr-1\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/applications-datatable/applicationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <!-- table title and action menu -->\\n <div class=\\\"toolBar !flex-col !gap-0\\\">\\n <div class=\\\"toolBar w-full !items-start !gap-x-5 !p-0\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'list'\\\"></pr-icon>\\n </div>\\n Stacks\\n </div>\\n <!-- use row reverse to make the left most items wrap first to the right side in the next line -->\\n <div class=\\\"inline-flex flex-row-reverse flex-wrap !gap-x-5 gap-y-3\\\">\\n <div class=\\\"actionBar !mr-0 !gap-3\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"k8sApp-removeStackButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Remove\\n </button>\\n <div class=\\\"settings\\\" data-cy=\\\"k8sApp-StackTableSettings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle>\\n <pr-icon icon=\\\"'more-vertical'\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n <input id=\\\"applications_setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n <label for=\\\"applications_setting_show_system\\\">Show system resources</label>\\n </div>\\n <div class=\\\"md-checkbox\\\">\\n <input\\n id=\\\"setting_auto_refresh\\\"\\n type=\\\"checkbox\\\"\\n ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\"\\n ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n data-cy=\\\"k8sApp-autoRefreshCheckbox-stack\\\"\\n />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select\\n id=\\\"settings_refresh_rate\\\"\\n ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\"\\n ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\"\\n class=\\\"small-select\\\"\\n data-cy=\\\"k8sApp-refreshRateDropdown-stack\\\"\\n >\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-sm btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\" data-cy=\\\"k8sApp-tableSettingsCloseButton-stack\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'!h-3'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput min-w-min self-start\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n\\n <div class=\\\"form-group namespaces !mb-0 !mr-0 !h-[30px] w-fit min-w-[140px]\\\">\\n <div class=\\\"input-group\\\">\\n <span class=\\\"input-group-addon\\\">\\n <pr-icon icon=\\\"'filter'\\\" size=\\\"'sm'\\\"></pr-icon>\\n Namespace\\n </span>\\n <select\\n class=\\\"form-control !h-[30px] !py-1\\\"\\n ng-model=\\\"$ctrl.state.namespace\\\"\\n ng-change=\\\"$ctrl.onChangeNamespace()\\\"\\n data-cy=\\\"component-namespaceSelect\\\"\\n ng-options=\\\"o.Value as (o.Name + (o.IsSystem ? ' - system' : '')) for o in $ctrl.state.namespaces\\\"\\n >\\n </select>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- info text -->\\n <div class=\\\"flex w-full flex-row\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.settings.showSystem\\\">\\n <span class=\\\"small text-muted vertical-center mt-1\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n System resources are hidden, this can be changed in the table settings.\\n </span>\\n </div>\\n <div class=\\\"w-full\\\">\\n <div class=\\\"w-fit\\\">\\n <insights-box class-name=\\\"'mt-2'\\\" type=\\\"'slim'\\\" header=\\\"'From 2.18 on, you can filter this view by namespace.'\\\" insight-close-id=\\\"'k8s-namespace-filtering'\\\"></insights-box>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th class=\\\"dropdown w-20\\\">\\n <div class=\\\"no-wrap flex h-full items-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <div class=\\\"cursor-pointer\\\" ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </div>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Stack'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Namespace'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourcePool'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourcePool' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourcePool')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Applications'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Applications.length'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Applications.length' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Applications.length')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n ng-show=\\\"!$ctrl.isAppsLoading\\\"\\n dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter: $ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n pagination-id=\\\"$ctrl.tableKey\\\"\\n >\\n <td>\\n <div class=\\\"no-wrap flex items-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input\\n id=\\\"select_{{ $index }}\\\"\\n type=\\\"checkbox\\\"\\n ng-model=\\\"item.Checked\\\"\\n ng-click=\\\"$ctrl.selectItem(item, $event); $event.stopPropagation();\\\"\\n ng-disabled=\\\"!$ctrl.allowSelection(item)\\\"\\n />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <div ng-if=\\\"$ctrl.itemCanExpand(item)\\\" class=\\\"vertical-center\\\">\\n <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </div>\\n </div>\\n </td>\\n <td>\\n {{ item.Name }}\\n </td>\\n <td>\\n <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.ResourcePool })\\\" ng-click=\\\"$event.stopPropagation();\\\">{{ item.ResourcePool }}</a>\\n <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"$ctrl.isSystemNamespace(item.ResourcePool)\\\">system</span>\\n </td>\\n <td>{{ item.Applications.length }}</td>\\n <td>\\n <a class=\\\"vertical-center\\\" ui-sref=\\\"kubernetes.stacks.stack.logs({ namespace: item.ResourcePool, name: item.Name })\\\">\\n <pr-icon icon=\\\"'file-text'\\\" size=\\\"'md'\\\" title=\\\"Logs\\\"></pr-icon>\\n Logs\\n </a>\\n </td>\\n </tr>\\n <tr\\n dir-paginate-end\\n ng-show=\\\"item.Expanded\\\"\\n ng-repeat=\\\"app in item.Applications\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td></td>\\n <td colspan=\\\"4\\\">\\n <a ui-sref=\\\"kubernetes.applications.application({ name: app.Name, namespace: app.ResourcePool })\\\">{{ app.Name }}</a>\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-primary image-tag\\\" ng-if=\\\"!$ctrl.isSystemNamespace(app.ResourcePool) && $ctrl.isExternalApplication(app)\\\"\\n >external</span\\n >\\n </td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.isAppsLoading\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0 && !$ctrl.isAppsLoading\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No stack available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/applications-stacks-datatable/applicationsStacksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'history'\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput ml-1\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for an event...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"k8sConfigDetail-eventsTableSearchInput\\\"\\n />\\n </div>\\n <div class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\"></pr-icon></span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\" data-cy=\\\"k8sConfigDetail-eventsTable\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Date'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Date'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Date' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Date')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Kind'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Involved.kind'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Involved.kind' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Involved.kind')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Type'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Type'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Type' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Type')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Message'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Message'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Message' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Message')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n pagination-id=\\\"$ctrl.tableKey\\\"\\n >\\n <td>{{ item.Date | getisodate }}</td>\\n <td>{{ item.Involved.kind }}</td>\\n <td\\n ><span class=\\\"label label-{{ item.Type | kubernetesEventTypeColor }}\\\">{{ item.Type }}</span></td\\n >\\n <td>{{ item.Message }}</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.loading\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.loading && (!$ctrl.dataset || $ctrl.state.filteredDataSet.length === 0)\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">No event available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"k8sConfigDetail-eventsTablePaginationDropdown\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/events-datatable/eventsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar !gap-3\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center !mr-0 min-w-[280px]\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for an application...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div ng-if=\\\"$ctrl.refreshCallback\\\" class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Stack'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Image'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n >\\n <td\\n ><a ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool })\\\">{{ item.Name }}</a></td\\n >\\n <td>{{ item.StackName || '-' }}</td>\\n <td title=\\\"{{ item.Image }}\\\">{{ item.Image | truncate : 64 }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">No application available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/integrated-applications-datatable/integratedApplicationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'svg-laptopcode'\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\">\\n {{ $ctrl.titleText }}\\n </span>\\n </div>\\n <div class=\\\"searchBar min-w-[260px]\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for an application...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"settings vertical-center\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\"></pr-icon></span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Stack'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Namespace'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Namespace'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Namespace')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Image'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'CPU reservation'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CPU'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CPU' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CPU')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Memory reservation'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Memory'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Memory' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Memory')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n >\\n <td>\\n <a ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool })\\\">{{ item.Name }}</a>\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">system</span>\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-primary image-tag\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && $ctrl.isExternalApplication(item)\\\">external</span>\\n </td>\\n <td>{{ item.StackName || '-' }}</td>\\n <td>\\n <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.ResourcePool })\\\">{{ item.ResourcePool }}</a>\\n </td>\\n <td title=\\\"{{ item.Image }}\\\"\\n >{{ item.Image | truncate : 64 }} <span ng-if=\\\"item.Containers.length > 1\\\">+ {{ item.Containers.length - 1 }}</span></td\\n >\\n <td>{{ item.CPU | kubernetesApplicationCPUValue }}</td>\\n <td>{{ item.Memory | humansize }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">No stack available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/node-applications-datatable/nodeApplicationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\">\\n {{ $ctrl.titleText }}\\n </span>\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a node...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"settings\\\">\\n <span\\n class=\\\"setting vertical-center\\\"\\n ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\"\\n uib-dropdown\\n dropdown-append-to-body\\n auto-close=\\\"disabled\\\"\\n is-open=\\\"$ctrl.settings.open\\\"\\n >\\n <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\"></pr-icon></span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Role'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Role'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Role' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Role')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Status'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Status'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Status' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Status')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'CPU'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CPU'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CPU' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CPU')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Memory'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Memory'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Memory' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Memory')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Version'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Version'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Version' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Version')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'IP Address'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'IPAddress'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'IPAddress' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('IPAddress')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-if=\\\"$ctrl.useServerMetrics\\\">\\n <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n >\\n <td ng-if=\\\"$ctrl.isAdmin\\\">\\n <a ui-sref=\\\"kubernetes.cluster.node({ name: item.Name })\\\">\\n {{ item.Name }}\\n </a>\\n <span class=\\\"label label-primary image-tag\\\" style=\\\"margin-left: 5px\\\" ng-if=\\\"item.Api\\\">api</span>\\n </td>\\n <td>{{ item.Role }}</td>\\n <td\\n ><span class=\\\"label label-{{ item.Status | kubernetesNodeStatusColor }}\\\">{{ item.Status }}</span></td\\n >\\n <td>{{ item.CPU }}</td>\\n <td>{{ item.Memory | humansize }}</td>\\n <td>{{ item.Version }}</td>\\n <td>{{ item.IPAddress }}</td>\\n <td ng-if=\\\"$ctrl.useServerMetrics\\\">\\n <a ui-sref=\\\"kubernetes.cluster.node.stats({ name: item.Name })\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'bar-chart'\\\"></pr-icon> Stats </a>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"7\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"7\\\" class=\\\"text-muted text-center\\\">No node available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/nodes-datatable/nodesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"searchIcon\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for an application...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div ng-if=\\\"$ctrl.refreshCallback\\\" class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\"></pr-icon></span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'StackName'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'StackName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'StackName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('StackName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Image'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Image'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Image' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Image')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'CPU'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'CPU'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'CPU' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('CPU')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Memory'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Memory'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Memory' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Memory')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n >\\n <td>\\n <a ui-sref=\\\"kubernetes.applications.application({ name: item.Name, namespace: item.ResourcePool })\\\">{{ item.Name }}</a>\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-primary image-tag\\\" ng-if=\\\"$ctrl.isExternalApplication(item)\\\">external</span>\\n </td>\\n <td>{{ item.StackName || '-' }}</td>\\n <td title=\\\"{{ item.Image }}\\\"\\n >{{ item.Image | truncate : 64 }} <span ng-if=\\\"item.Containers.length > 1\\\">+ {{ item.Containers.length - 1 }}</span></td\\n >\\n <td>{{ item.CPU | kubernetesApplicationCPUValue }}</td>\\n <td>{{ item.Memory | humansize }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No application available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/resource-pool-applications-datatable/resourcePoolApplicationsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <!-- toolbar header actions and settings -->\\n <div class=\\\"toolBar !flex-col gap-1\\\">\\n <div class=\\\"toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'layers'\\\"></pr-icon>\\n </div>\\n Namespaces\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a namespace...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"k8sNamespace-namespaceSearchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !mr-0 !gap-3\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"k8sNamespace-removeNamespaceButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-secondary !ml-0\\\" ui-sref=\\\"kubernetes.resourcePools.new\\\" data-cy=\\\"k8sNamespace-addNamespaceWithFormButton\\\">\\n <pr-icon icon=\\\"'plus'\\\" class-name=\\\"'!h-3'\\\"></pr-icon>Add with form\\n </button>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary !ml-0\\\"\\n ui-sref=\\\"kubernetes.deploy({ referrer: 'kubernetes.resourcePools' })\\\"\\n data-cy=\\\"k8sNamespace-deployFromManifestButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" class-name=\\\"'!h-3'\\\"></pr-icon>Create from manifest\\n </button>\\n </div>\\n <div class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle>\\n <pr-icon icon=\\\"'more-vertical'\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n <input id=\\\"setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n <label for=\\\"setting_show_system\\\">Show system resources</label>\\n </div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n\\n <div class=\\\"flex w-full flex-row\\\" ng-if=\\\"!$ctrl.settings.showSystem && $ctrl.isAdmin\\\">\\n <span class=\\\"small text-muted vertical-center mt-1\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n <div> System resources are hidden, this can be changed in the table settings. </div>\\n </span>\\n </div>\\n </div>\\n\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th class=\\\"dropdown\\\">\\n <div class=\\\"vertical-center flex min-w-max flex-nowrap\\\">\\n <span ng-if=\\\"$ctrl.isAdmin\\\" class=\\\"md-checkbox vertical-center\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Namespace.Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace.Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Namespace.Name')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Status'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Namespace.Status'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace.Status' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Namespace.Status')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Quota'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Quota'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Quota' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Quota')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Created'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Namespace.CreationDate'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace.CreationDate' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Namespace.CreationDate')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-if=\\\"$ctrl.isAdmin\\\">\\n <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter:$ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span ng-if=\\\"$ctrl.isAdmin\\\" class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"$ctrl.disableRemove(item)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.Namespace.Name })\\\">{{ item.Namespace.Name }}</a>\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">system</span>\\n </td>\\n <td>\\n <span class=\\\"label label-{{ $ctrl.namespaceStatusColor(item.Namespace.Status) }}\\\">{{ item.Namespace.Status }}</span>\\n </td>\\n <td>\\n <span ng-if=\\\"item.Quota\\\" class=\\\"label label-warning\\\">Enabled</span>\\n <span ng-if=\\\"!item.Quota\\\">-</span>\\n </td>\\n <td>{{ item.Namespace.CreationDate | getisodate }} {{ item.Namespace.ResourcePoolOwner ? 'by ' + item.Namespace.ResourcePoolOwner : '' }}</td>\\n <td ng-if=\\\"$ctrl.isAdmin\\\">\\n <a class=\\\"vertical-center\\\" ng-if=\\\"$ctrl.canManageAccess(item)\\\" ui-sref=\\\"kubernetes.resourcePools.resourcePool.access({id: item.Namespace.Name})\\\">\\n <pr-icon icon=\\\"'users'\\\"></pr-icon>\\n Manage access\\n </a>\\n <span ng-if=\\\"!$ctrl.canManageAccess(item)\\\">-</span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">No namespace available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/resource-pools-datatable/resourcePoolsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <!-- toolbar header actions and settings -->\\n <div class=\\\"toolBar !flex-col gap-1\\\">\\n <div class=\\\"toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'database'\\\"></pr-icon>\\n </div>\\n Volumes\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput !mr-0\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a volume...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !mr-0 !gap-3\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Remove\\n </button>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary vertical-center !ml-0\\\"\\n ui-sref=\\\"kubernetes.deploy({ referrer: 'kubernetes.volumes' })\\\"\\n data-cy=\\\"k8sVolume-deployFromManifestButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" class-name=\\\"'!h-3'\\\"></pr-icon>\\n Create from manifest\\n </button>\\n </div>\\n <div class=\\\"settings\\\">\\n <span\\n class=\\\"setting\\\"\\n ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\"\\n uib-dropdown\\n dropdown-append-to-body\\n auto-close=\\\"disabled\\\"\\n is-open=\\\"$ctrl.settings.open\\\"\\n data-cy=\\\"k8s-vol-table-settings\\\"\\n >\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n <input id=\\\"setting_show_system\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.showSystem\\\" ng-change=\\\"$ctrl.onSettingsShowSystemChange()\\\" />\\n <label for=\\\"setting_show_system\\\">Show system resources</label>\\n </div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\" data-cy=\\\"k8s-vol-table-settings-close\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"flex w-full flex-row\\\" ng-if=\\\"!ctrl.isAdmin && !$ctrl.settings.showSystem\\\">\\n <span class=\\\"small text-muted vertical-center mt-1\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span> System resources are hidden, this can be changed in the table settings. </span>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"flex-no-wrap flex items-center\\\">\\n <span class=\\\"md-checkbox vertical-center\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.Name')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Namespace'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourcePool.Namespace.Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourcePool.Namespace.Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourcePool.Namespace.Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Used by'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Applications[0].Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Applications[0].Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.Applications[0].Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Storage'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.StorageClass.Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.StorageClass.Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.StorageClass.Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Size'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Storage'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.Storage' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.Storage')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Created'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.CreationDate'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'PersistentVolumeClaim.CreationDate' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('PersistentVolumeClaim.CreationDate')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter:$ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"$ctrl.disableRemove(item)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"kubernetes.volumes.volume({ namespace: item.ResourcePool.Namespace.Name, name: item.PersistentVolumeClaim.Name })\\\">{{ item.PersistentVolumeClaim.Name }}</a>\\n <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"$ctrl.isSystemNamespace(item)\\\">system</span>\\n <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && $ctrl.isExternalVolume(item)\\\">external</span>\\n <span class=\\\"label label-warning image-tag label-margins\\\" ng-if=\\\"!$ctrl.isSystemNamespace(item) && !$ctrl.isUsed(item)\\\">unused</span>\\n </td>\\n <td>\\n <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: item.ResourcePool.Namespace.Name })\\\">{{ item.ResourcePool.Namespace.Name }}</a>\\n </td>\\n <td>\\n <a ng-if=\\\"item.Applications.length\\\" ui-sref=\\\"kubernetes.applications.application({ name: item.Applications[0].Name, namespace: item.ResourcePool.Namespace.Name })\\\">{{\\n item.Applications[0].Name\\n }}</a>\\n <span ng-if=\\\"item.Applications.length > 1\\\"> + {{ item.Applications.length - 1 }}</span>\\n <span ng-if=\\\"!item.Applications.length\\\">-</span>\\n </td>\\n <td>\\n {{ item.PersistentVolumeClaim.StorageClass.Name }}\\n </td>\\n <td>\\n {{ item.PersistentVolumeClaim.Storage }}\\n </td>\\n <td>\\n {{ item.PersistentVolumeClaim.CreationDate | getisodate }}\\n {{ item.PersistentVolumeClaim.ApplicationOwner ? 'by ' + item.PersistentVolumeClaim.ApplicationOwner : '' }}\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">No volume available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/datatables/volumes-datatable/volumesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<rd-widget>\\n <div class=\\\"toolBar px-5 pt-5\\\">\\n <div class=\\\"toolBarTitle vertical-center text-[16px] font-medium\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'svg-helm'\\\"></pr-icon>\\n </div>\\n Additional repositories\\n </div>\\n </div>\\n <rd-widget-body>\\n <div class=\\\"actionBar\\\">\\n <form class=\\\"form-horizontal\\\" name=\\\"addUserHelmRepoForm\\\">\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small inline-flex gap-1 !align-top\\\">\\n <div class=\\\"icon icon-sm\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n </div>\\n <div> Add a Helm repository. All Helm charts in the repository will be added to the list. </div>\\n </span>\\n </div>\\n\\n <div class=\\\"form-group mb-2\\\">\\n <div class=\\\"col-sm-12\\\">\\n <input\\n type=\\\"url\\\"\\n name=\\\"repo\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.state.repository\\\"\\n placeholder=\\\"https://charts.bitnami.com/bitnami\\\"\\n ng-pattern=\\\"/^https?:///\\\"\\n required\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group nomargin\\\" ng-show=\\\"addUserHelmRepoForm.repo.$invalid\\\">\\n <div class=\\\"small\\\">\\n <div ng-messages=\\\"addUserHelmRepoForm.repo.$error\\\">\\n <p class=\\\"vertical-center text-warning\\\" ng-message=\\\"pattern\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> A valid URL beginning with http(s) is required.</p\\n >\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group nomargin\\\" ng-show=\\\"$ctrl.doesRepoExist()\\\">\\n <div class=\\\"small\\\">\\n <div ng-messages=\\\"addUserHelmRepoForm.repo.$error\\\">\\n <p class=\\\"vertical-center text-warning\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Helm repository already exists.</p>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm nomargin\\\"\\n ng-click=\\\"$ctrl.addRepository()\\\"\\n ng-disabled=\\\"$ctrl.state.isAddingRepo || addUserHelmRepoForm.repo.$invalid || $ctrl.doesRepoExist()\\\"\\n analytics-on\\n analytics-category=\\\"kubernetes\\\"\\n analytics-event=\\\"kubernetes-helm-add-repository\\\"\\n >\\n Add repository\\n </button>\\n </div>\\n </div>\\n </form>\\n </div>\\n </rd-widget-body>\\n</rd-widget>\\n\";;\nvar path = 'app/kubernetes/components/helm/helm-templates/helm-add-repository/helm-add-repository.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<!-- helm chart -->\\n<div ng-class=\\\"{ 'blocklist-item--selected': $ctrl.model.Selected }\\\" class=\\\"blocklist-item template-item mx-[10px]\\\" ng-click=\\\"$ctrl.onSelect($ctrl.model)\\\">\\n <div class=\\\"blocklist-item-box\\\">\\n <!-- helmchart-image -->\\n <span class=\\\"shrink-0\\\">\\n <fallback-image src=\\\"$ctrl.model.icon\\\" fallback-icon=\\\"'svg-helm'\\\" class-name=\\\"'blocklist-item-logo h-16 w-auto'\\\" size=\\\"'3xl'\\\"></fallback-image>\\n </span>\\n <!-- helmchart-details -->\\n <div class=\\\"col-sm-12 helm-template-item-details\\\">\\n <!-- blocklist-item-line1 -->\\n <div class=\\\"blocklist-item-line\\\">\\n <span>\\n <span class=\\\"blocklist-item-title\\\">\\n {{ $ctrl.model.name }}\\n </span>\\n <span class=\\\"space-left blocklist-item-subtitle\\\">\\n <span class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'svg-helm'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n </span>\\n <span> Helm </span>\\n </span>\\n </span>\\n </div>\\n <!-- !blocklist-item-line1 -->\\n <span class=\\\"blocklist-item-actions\\\" ng-transclude=\\\"actions\\\"></span>\\n <!-- blocklist-item-line2 -->\\n <div class=\\\"blocklist-item-line helm-template-item-details-sub\\\">\\n <span class=\\\"blocklist-item-desc\\\">\\n {{ $ctrl.model.description }}\\n </span>\\n <span class=\\\"small text-muted\\\" ng-if=\\\"$ctrl.model.annotations.category\\\">\\n {{ $ctrl.model.annotations.category }}\\n </span>\\n </div>\\n <!-- !blocklist-item-line2 -->\\n </div>\\n <!-- !helmchart-details -->\\n </div>\\n <!-- !helm chart -->\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list-item/helm-templates-list-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar vertical-center relative w-full flex-wrap !gap-x-5 !gap-y-1\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n\\n {{ $ctrl.titleText }}\\n </div>\\n\\n <div class=\\\"searchBar vertical-center !mr-0\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"searchIcon\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a chart...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"w-1/5\\\">\\n <por-select\\n placeholder=\\\"'Select a category'\\\"\\n value=\\\"$ctrl.state.selectedCategory\\\"\\n options=\\\"$ctrl.state.categories\\\"\\n on-change=\\\"($ctrl.onCategoryChange)\\\"\\n is-clearable=\\\"true\\\"\\n bind-to-body=\\\"true\\\"\\n ></por-select>\\n </div>\\n </div>\\n\\n <div class=\\\"blocklist\\\">\\n <helm-templates-list-item\\n ng-repeat=\\\"chart in $ctrl.charts | filter:$ctrl.state.textFilter | filter: $ctrl.state.selectedCategory\\\"\\n model=\\\"chart\\\"\\n type-label=\\\"helm\\\"\\n on-select=\\\"($ctrl.selectAction)\\\"\\n >\\n </helm-templates-list-item>\\n <div ng-if=\\\"$ctrl.loading\\\" class=\\\"text-muted text-center\\\">\\n Loading...\\n <div class=\\\"text-muted text-center\\\"> Initial download of Helm Charts can take a few minutes </div>\\n </div>\\n <div ng-if=\\\"!$ctrl.loading && $ctrl.charts.length === 0\\\" class=\\\"text-muted text-center\\\"> No helm charts available. </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/helm/helm-templates/helm-templates-list/helm-templates-list.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Helm'\\\" breadcrumbs=\\\"['Charts']\\\" reload=\\\"true\\\"></page-header>\\n\\n<information-panel title-text=\\\"Information\\\" ng-if=\\\"!$ctrl.state.chart\\\">\\n <beta-alert\\n is-html=\\\"true\\\"\\n message=\\\"'Beta feature - initial version of Helm charts functionality, for more information see this <a href=\\\\'https://www.portainer.io/blog/portainer-now-with-helm-support\\\\' target=\\\\'_blank\\\\' class=\\\\'hyperlink\\\\'>blog post</a>.'\\\"\\n ></beta-alert>\\n <span class=\\\"small text-muted\\\">\\n <p ng-if=\\\"$ctrl.state.globalRepository === ''\\\" class=\\\"inline-flex items-center\\\">\\n <pr-icon icon=\\\"'info'\\\"></pr-icon>\\n <span>The Global Helm Repository is not configured.</span>\\n <a ng-if=\\\"$ctrl.state.isAdmin\\\" ui-sref=\\\"portainer.settings\\\">Configure Global Helm Repository in Settings</a>.\\n </p>\\n </span>\\n</information-panel>\\n\\n<div class=\\\"row\\\">\\n <!-- helmchart-form -->\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.state.chart\\\">\\n <rd-widget>\\n <div class=\\\"toolBarTitle vertical-center px-5 pt-5 text-[16px] font-medium\\\">\\n <fallback-image src=\\\"$ctrl.state.chart.icon\\\" fallback-icon=\\\"'svg-helm'\\\" class-name=\\\"'h-8 w-8'\\\" size=\\\"'lg'\\\"></fallback-image>\\n {{ $ctrl.state.chart.name }}\\n </div>\\n <rd-widget-body classes=\\\"padding\\\">\\n <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.helmTemplateCreationForm\\\">\\n <!-- description -->\\n <div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Description </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"text-muted text-xs\\\" ng-bind-html=\\\"$ctrl.state.chart.description\\\"></div>\\n </div>\\n </div>\\n </div>\\n <!-- !description -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Configuration </div>\\n <!-- namespace-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.resourcePool\\\">\\n <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-2 control-label text-left\\\">Namespace</label>\\n <div class=\\\"col-sm-10\\\">\\n <select\\n class=\\\"form-control\\\"\\n id=\\\"resource-pool-selector\\\"\\n ng-model=\\\"$ctrl.state.resourcePool\\\"\\n ng-options=\\\"resourcePool.Namespace.Name for resourcePool in $ctrl.state.resourcePools\\\"\\n ng-change=\\\"\\\"\\n ng-disabled=\\\"$ctrl.state.isEdit\\\"\\n ></select>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.state.resourcePool\\\">\\n <div class=\\\"col-sm-12 small text-warning vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n </div>\\n </div>\\n <!-- !namespace-input -->\\n <!-- name-input -->\\n <div class=\\\"form-group mb-2\\\">\\n <label for=\\\"release_name\\\" class=\\\"col-sm-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-10\\\">\\n <input\\n type=\\\"text\\\"\\n name=\\\"release_name\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.state.appName\\\"\\n placeholder=\\\"e.g. my-app\\\"\\n required\\n ng-pattern=\\\"/^[a-z]([-a-z0-9]*[a-z0-9])?$/\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"$ctrl.helmTemplateCreationForm.release_name.$invalid\\\">\\n <div class=\\\"small\\\">\\n <div ng-messages=\\\"$ctrl.helmTemplateCreationForm.release_name.$error\\\">\\n <div class=\\\"col-sm-2\\\"></div>\\n <p class=\\\"vertical-center col-sm-10 text-warning\\\" ng-message=\\\"required\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p class=\\\"vertical-center col-sm-10 text-warning\\\" ng-message=\\\"pattern\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n This field must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name',\\n or 'abc-123').\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n ng-if=\\\"!$ctrl.state.showCustomValues && !$ctrl.state.loadingValues\\\"\\n class=\\\"btn btn-xs btn-default vertical-center mr-2 !ml-0\\\"\\n ng-click=\\\"$ctrl.state.showCustomValues = true;\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n Show custom values\\n </button>\\n <span class=\\\"small interactive vertical-center\\\" ng-if=\\\"$ctrl.state.loadingValues\\\">\\n <pr-icon icon=\\\"'refresh-cw'\\\" class=\\\"mr-1\\\"></pr-icon>\\n Loading values.yaml...\\n </span>\\n <button ng-if=\\\"$ctrl.state.showCustomValues\\\" class=\\\"btn btn-xs btn-default vertical-center mr-2 !ml-0\\\" ng-click=\\\"$ctrl.state.showCustomValues = false;\\\">\\n <pr-icon icon=\\\"'minus'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n Hide custom values\\n </button>\\n </div>\\n </div>\\n <!-- values override -->\\n <div ng-if=\\\"$ctrl.state.showCustomValues\\\">\\n <!-- web-editor -->\\n <div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <web-editor-form\\n identifier=\\\"helm-app-creation-editor\\\"\\n value=\\\"$ctrl.state.values\\\"\\n on-change=\\\"($ctrl.editorUpdate)\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your values yaml file here\\\"\\n >\\n <editor-description class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span>\\n You can get more information about Helm values file format in the\\n <a href=\\\"https://helm.sh/docs/chart_template_guide/values_files/\\\" target=\\\"_blank\\\" class=\\\"text-blue-8 hover:text-blue-8 hover:underline\\\"\\n >official documentation</a\\n >.\\n </span>\\n </editor-description>\\n </web-editor-form>\\n </div>\\n </div>\\n </div>\\n <!-- !web-editor -->\\n </div>\\n <!-- !values override -->\\n <!-- helm actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!($ctrl.state.appName && $ctrl.state.resourcePool && !$ctrl.state.loadingValues && !$ctrl.state.actionInProgress)\\\"\\n ng-click=\\\"$ctrl.installHelmchart()\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n data-cy=\\\"helm-install\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">Install</span>\\n <span ng-hide=\\\"!$ctrl.state.actionInProgress\\\">Helm installing in progress</span>\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"$ctrl.state.chart = null\\\">Hide</button>\\n </div>\\n </div>\\n <!-- !helm actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n <!-- helmchart-form -->\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <helm-add-repository repos=\\\"$ctrl.state.repos\\\" endpoint=\\\"$ctrl.endpoint\\\"></helm-add-repository>\\n </div>\\n</div>\\n\\n<!-- Helm Charts Component -->\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <helm-templates-list\\n title-text=\\\"Charts\\\"\\n title-icon=\\\"compass\\\"\\n charts=\\\"$ctrl.state.charts\\\"\\n table-key=\\\"$ctrl.state.charts\\\"\\n select-action=\\\"$ctrl.selectHelmChart\\\"\\n loading=\\\"$ctrl.state.chartsLoading || $ctrl.state.resourcePoolsLoading\\\"\\n >\\n </helm-templates-list>\\n </div>\\n</div>\\n<!-- !Helm Charts Component -->\\n\";;\nvar path = 'app/kubernetes/components/helm/helm-templates/helm-templates.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form name=\\\"kubernetesConfigurationDataCreationForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> Data </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.isCreation\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm !ml-0 p-0 hover:no-underline\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\" ng-click=\\\"$ctrl.showAdvancedMode()\\\">\\n <pr-icon icon=\\\"'list'\\\"></pr-icon> Advanced mode\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-link btn-sm !ml-0 p-0 hover:no-underline\\\" ng-if=\\\"!$ctrl.formValues.IsSimple\\\" ng-click=\\\"$ctrl.showSimpleMode()\\\">\\n <pr-icon icon=\\\"'edit'\\\"></pr-icon> Simple mode\\n </button>\\n </div>\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Switch to advanced mode to copy and paste multiple key/values\\n </div>\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\" ng-if=\\\"!$ctrl.formValues.IsSimple && $ctrl.type === 'configmap'\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Generate a ConfigMap entry per line, use YAML format\\n </div>\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\" ng-if=\\\"!$ctrl.formValues.IsSimple && $ctrl.type === 'secret'\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Generate a Secret entry per line, use YAML format\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" style=\\\"margin-left: 0\\\" ng-click=\\\"$ctrl.addEntry()\\\" data-cy=\\\"k8sConfigCreate-createEntryButton\\\">\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'plus'\\\"></pr-icon> Create entry\\n </button>\\n <button\\n ng-if=\\\"\\n !(($ctrl.isDockerConfig || $ctrl.formValues.Type === $ctrl.KubernetesSecretTypeOptions.TLS.value) && $ctrl.formValues.Kind === $ctrl.KubernetesConfigurationKinds.SECRET)\\n \\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-default ml-0\\\"\\n ngf-select=\\\"$ctrl.addEntryFromFile($file)\\\"\\n data-cy=\\\"k8sConfigCreate-createConfigsFromFileButton\\\"\\n >\\n <pr-icon icon=\\\"'upload'\\\" class=\\\"vertical-center\\\"></pr-icon> Create key/value from file\\n </button>\\n <button\\n ng-if=\\\"$ctrl.isDockerConfig && $ctrl.formValues.Kind === $ctrl.KubernetesConfigurationKinds.SECRET\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-default ml-0\\\"\\n ngf-select=\\\"$ctrl.addEntryFromFile($file)\\\"\\n ngf-accept=\\\"'.json'\\\"\\n data-cy=\\\"k8sConfigCreate-createConfigsFromFileButton\\\"\\n >\\n <pr-icon icon=\\\"'upload'\\\" class=\\\"vertical-center\\\"></pr-icon> Upload docker config file\\n </button>\\n <button\\n ng-if=\\\"$ctrl.formValues.Type === $ctrl.KubernetesSecretTypeOptions.TLS.value && $ctrl.formValues.Kind === $ctrl.KubernetesConfigurationKinds.SECRET\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-default ml-0\\\"\\n ngf-select=\\\"$ctrl.addEntryFromFile($file)\\\"\\n data-cy=\\\"k8sConfigCreate-createConfigsFromFileButton\\\"\\n >\\n <pr-icon icon=\\\"'upload'\\\" class=\\\"vertical-center\\\"></pr-icon> Upload TLS key/cert file\\n </button>\\n <portainer-tooltip message=\\\"'Maximum upload file size is 1MB'\\\"></portainer-tooltip>\\n </div>\\n </div>\\n\\n <div ng-repeat=\\\"(index, entry) in $ctrl.formValues.Data\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"configuration_data_key_{{ index }}\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\"\\n >Key\\n <portainer-tooltip message=\\\"'The key must consist of alphanumeric characters, \\\\'-\\\\', \\\\'_\\\\' or \\\\'.\\\\' and be up to 253 characters in length.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n maxlength=\\\"253\\\"\\n id=\\\"configuration_data_key_{{ index }}\\\"\\n name=\\\"configuration_data_key_{{ index }}\\\"\\n ng-model=\\\"$ctrl.formValues.Data[index].Key\\\"\\n ng-disabled=\\\"entry.Used || $ctrl.isRequiredKey(entry.Key)\\\"\\n required\\n ng-change=\\\"$ctrl.onChangeKey(entry)\\\"\\n />\\n <div\\n class=\\\"small text-warning mt-1\\\"\\n ng-show=\\\"\\n kubernetesConfigurationDataCreationForm['configuration_data_key_' + index].$invalid ||\\n (!entry.Used && $ctrl.state.duplicateKeys[index] !== undefined) ||\\n $ctrl.state.invalidKeys[index]\\n \\\"\\n >\\n <ng-messages for=\\\"kubernetesConfigurationDataCreationForm['configuration_data_key_' + index].$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required. </p>\\n </ng-messages>\\n <div>\\n <p ng-if=\\\"$ctrl.state.duplicateKeys[index] !== undefined\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon>This key is already defined.\\n </p>\\n </div>\\n <p ng-if=\\\"$ctrl.state.invalidKeys[index]\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon> This key is invalid. A valid key must consist of alphanumeric characters, '-', '_'\\n or '.'\\n </p>\\n </div>\\n </div>\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formValues.IsSimple && !entry.IsBinary\\\">\\n <label for=\\\"configuration_data_value_{{ index }}\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Value</label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <textarea\\n class=\\\"form-control\\\"\\n rows=\\\"5\\\"\\n id=\\\"configuration_data_value_{{ index }}\\\"\\n name=\\\"configuration_data_value_{{ index }}\\\"\\n ng-model=\\\"$ctrl.formValues.Data[index].Value\\\"\\n ng-trim=\\\"false\\\"\\n required\\n ></textarea>\\n <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\" ng-show=\\\"kubernetesConfigurationDataCreationForm['configuration_data_value_' + index].$invalid\\\">\\n <ng-messages for=\\\"kubernetesConfigurationDataCreationForm['configuration_data_value_' + index].$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </ng-messages>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formValues.IsSimple && entry.IsBinary\\\">\\n <label for=\\\"configuration_data_value_{{ index }}\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Value</label>\\n <div class=\\\"col-sm-8 control-label small text-muted text-left\\\"\\n >Binary data <portainer-tooltip message=\\\"'This key holds binary data and cannot be displayed.'\\\"></portainer-tooltip\\n ></div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formValues.IsSimple\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8\\\">\\n <button\\n ng-if=\\\"!$ctrl.isRequiredKey(entry.Key) || $ctrl.state.duplicateKeys[index] !== undefined\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight !ml-0\\\"\\n style=\\\"margin-left: 0\\\"\\n ng-disabled=\\\"entry.Used || $ctrl.isEntryRequired()\\\"\\n ng-click=\\\"$ctrl.removeEntry(index, entry)\\\"\\n data-cy=\\\"k8sConfigDetail-removeEntryButton{{ index }}\\\"\\n >\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'trash-2'\\\"></pr-icon> Remove entry\\n </button>\\n <span class=\\\"small text-muted\\\" ng-if=\\\"entry.Used\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n This key is currently used by one or more applications\\n </span>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group !px-[15px]\\\" ng-if=\\\"!$ctrl.formValues.IsSimple\\\">\\n <input type=\\\"text\\\" ng-model=\\\"$ctrl.formValues.DataYaml\\\" required style=\\\"display: none\\\" />\\n\\n <web-editor-form\\n identifier=\\\"kubernetes-configuration-editor\\\"\\n value=\\\"$ctrl.formValues.DataYaml\\\"\\n on-change=\\\"($ctrl.editorUpdate)\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste key-value pairs, one pair per line\\\"\\n >\\n </web-editor-form>\\n </div>\\n</ng-form>\\n\";;\nvar path = 'app/kubernetes/components/kubernetes-configuration-data/kubernetesConfigurationData.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Resource reservation </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n {{ $ctrl.description }}\\n </span>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.memoryLimit !== 0\\\">\\n <label for=\\\"memory-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Memory reservation </label>\\n <div class=\\\"col-sm-9\\\" style=\\\"margin-top: 4px\\\" data-cy=\\\"k8sNamespaceDetail-memoryUsage\\\">\\n <uib-progressbar animate=\\\"false\\\" value=\\\"$ctrl.memoryReservationPercent\\\" type=\\\"{{ $ctrl.memoryReservationPercent | kubernetesUsageLevelInfo }}\\\"></uib-progressbar>\\n <span> {{ $ctrl.memoryReservation }} / {{ $ctrl.memoryLimit }} MB - {{ $ctrl.memoryReservationPercent }}% </span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.displayUsage && $ctrl.memoryLimit !== 0\\\">\\n <label for=\\\"memory-usage\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Memory used </label>\\n <div class=\\\"col-sm-9\\\" style=\\\"margin-top: 4px\\\">\\n <uib-progressbar animate=\\\"false\\\" value=\\\"$ctrl.memoryUsagePercent\\\" type=\\\"{{ $ctrl.memoryUsagePercent | kubernetesUsageLevelInfo }}\\\"></uib-progressbar>\\n <span> {{ $ctrl.memoryUsage }} / {{ $ctrl.memoryLimit }} MB - {{ $ctrl.memoryUsagePercent }}% </span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.cpuLimit !== 0\\\">\\n <label for=\\\"cpu-reservation\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> CPU reservation </label>\\n <div class=\\\"col-sm-9\\\" style=\\\"margin-top: 4px\\\">\\n <uib-progressbar animate=\\\"false\\\" value=\\\"$ctrl.cpuReservationPercent\\\" type=\\\"{{ $ctrl.cpuReservationPercent | kubernetesUsageLevelInfo }}\\\"></uib-progressbar>\\n <span> {{ $ctrl.cpuReservation | kubernetesApplicationCPUValue }} / {{ $ctrl.cpuLimit }} - {{ $ctrl.cpuReservationPercent }}% </span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.displayUsage && $ctrl.cpuLimit !== 0\\\">\\n <label for=\\\"cpu-usage\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> CPU used </label>\\n <div class=\\\"col-sm-9\\\" style=\\\"margin-top: 4px\\\">\\n <uib-progressbar animate=\\\"false\\\" value=\\\"$ctrl.cpuUsagePercent\\\" type=\\\"{{ $ctrl.cpuUsagePercent | kubernetesUsageLevelInfo }}\\\"></uib-progressbar>\\n <span> {{ $ctrl.cpuUsage | kubernetesApplicationCPUValue }} / {{ $ctrl.cpuLimit }} - {{ $ctrl.cpuUsagePercent }}% </span>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/resource-reservation/resourceReservation.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"loading-view-area\\\" ng-if=\\\"!$ctrl.viewReady\\\">\\n <div class=\\\"sk-fold sk-center\\\">\\n <div class=\\\"sk-fold-cube\\\"></div>\\n <div class=\\\"sk-fold-cube\\\"></div>\\n <div class=\\\"sk-fold-cube\\\"></div>\\n <div class=\\\"sk-fold-cube\\\"></div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/view-loading/viewLoading.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <web-editor-form\\n identifier=\\\"application-details-yaml\\\"\\n value=\\\"$ctrl.data\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your manifest here\\\"\\n read-only=\\\"true\\\"\\n hide-title=\\\"true\\\"\\n height=\\\"{{ $ctrl.expanded ? '800px' : '500px' }}\\\"\\n >\\n </web-editor-form>\\n <div class=\\\"py-5\\\">\\n <span class=\\\"btn btn-light btn-sm\\\" ng-click=\\\"$ctrl.copyYAML()\\\">\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'copy'\\\"></pr-icon>\\n Copy to clipboard\\n </span>\\n <span class=\\\"btn btn-light btn-sm space-left !ml-0\\\" ng-click=\\\"$ctrl.toggleYAMLInspectorExpansion()\\\">\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'minus'\\\" size=\\\"'sm'\\\" ng-if=\\\"$ctrl.expanded\\\"></pr-icon>\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'plus'\\\" size=\\\"'sm'\\\" ng-if=\\\"!$ctrl.expanded\\\"></pr-icon>\\n {{ $ctrl.expanded ? 'Collapse' : 'Expand' }}\\n </span>\\n <span id=\\\"copyNotificationYAML\\\" style=\\\"display: none\\\" class=\\\"small vertical-center ml-1\\\">\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'check'\\\" size=\\\"'md'\\\" mode=\\\"'success'\\\"></pr-icon> copied\\n </span>\\n\\n <be-teaser-button\\n class=\\\"float-right\\\"\\n feature-id=\\\"$ctrl.limitedFeature\\\"\\n message=\\\"'Applies any changes that you make in the YAML editor by calling the Kubernetes API to patch the relevant resources. Any resource removals or unexpected resource additions that you make in the YAML will be ignored. Note that editing is disabled for resources in namespaces marked as system.'\\\"\\n heading=\\\"'Apply YAML changes'\\\"\\n button-text=\\\"'Apply changes'\\\"\\n ></be-teaser-button>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/components/yaml-inspector/yamlInspector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create Custom template'\\\" breadcrumbs=\\\"[{label:'Custom Templates', link:'kubernetes.templates.custom'}, 'Create Custom template']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.form\\\">\\n <custom-template-common-fields\\n form-values=\\\"$ctrl.formValues\\\"\\n name-regex=\\\"$ctrl.state.templateNameRegex\\\"\\n name-regex-error=\\\"'This field must consist of lower-case alphanumeric characters, \\\\'.\\\\', \\\\'_\\\\' or \\\\'-\\\\', must start and end with an alphanumeric character and must be 63 characters or less (e.g. \\\\'my-name\\\\', or \\\\'abc-123\\\\').'\\\"\\n ></custom-template-common-fields>\\n\\n <!-- build-method -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n <box-selector slim=\\\"true\\\" radio-name=\\\"'method'\\\" value=\\\"$ctrl.state.method\\\" options=\\\"$ctrl.methodOptions\\\" on-change=\\\"($ctrl.onChangeMethod)\\\"></box-selector>\\n\\n <div class=\\\"mt-4\\\">\\n <web-editor-form\\n ng-if=\\\"$ctrl.state.method === 'editor'\\\"\\n identifier=\\\"template-creation-editor\\\"\\n value=\\\"$ctrl.formValues.FileContent\\\"\\n on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n ng-required=\\\"true\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your manifest file here\\\"\\n >\\n <editor-description>\\n <p>Templates allow deploying any kind of Kubernetes resource (Deployment, Secret, ConfigMap...)</p>\\n <p>\\n You can get more information about Kubernetes file format in the\\n <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n </p>\\n </editor-description>\\n </web-editor-form>\\n </div>\\n\\n <file-upload-form ng-if=\\\"$ctrl.state.method === 'upload'\\\" file=\\\"$ctrl.formValues.File\\\" on-change=\\\"($ctrl.onChangeFile)\\\" ng-required=\\\"true\\\">\\n <file-upload-description> You can upload a Manifest file from your computer. </file-upload-description>\\n </file-upload-form>\\n\\n <git-form deploy-method=\\\"kubernetes\\\" ng-if=\\\"$ctrl.state.method === 'repository'\\\" value=\\\"$ctrl.formValues\\\" on-change=\\\"($ctrl.handleChange)\\\"></git-form>\\n\\n <custom-templates-variables-definition-field\\n ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n value=\\\"$ctrl.formValues.Variables\\\"\\n on-change=\\\"($ctrl.onVariablesChange)\\\"\\n is-variables-names-from-parent=\\\"$ctrl.state.method === 'editor'\\\"\\n ></custom-templates-variables-definition-field>\\n\\n <por-access-control-form form-data=\\\"$ctrl.formValues.AccessControlData\\\"></por-access-control-form>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!$ctrl.state.isTemplateValid ||$ctrl.state.actionInProgress || $ctrl.form.$invalid || ($ctrl.state.method === 'editor' && !$ctrl.formValues.FileContent)\\\"\\n ng-click=\\\"$ctrl.createCustomTemplate()\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">Create custom template</span>\\n <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Creation in progress...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"$ctrl.state.formValidationError\\\" style=\\\"margin-left: 5px\\\">\\n {{ $ctrl.state.formValidationError }}\\n </span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/custom-templates/kube-create-custom-template-view/kube-create-custom-template-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Custom Templates'\\\" breadcrumbs=\\\"['Custom Templates']\\\" reload=\\\"true\\\"></page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <custom-templates-list\\n ng-if=\\\"$ctrl.templates\\\"\\n title-text=\\\"Templates\\\"\\n title-icon=\\\"edit\\\"\\n templates=\\\"$ctrl.templates\\\"\\n table-key=\\\"customTemplates\\\"\\n is-edit-allowed=\\\"$ctrl.isEditAllowed\\\"\\n on-select-click=\\\"($ctrl.selectTemplate)\\\"\\n on-delete-click=\\\"($ctrl.confirmDelete)\\\"\\n create-path=\\\"kubernetes.templates.custom.new\\\"\\n edit-path=\\\"kubernetes.templates.custom.edit\\\"\\n ></custom-templates-list>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/custom-templates/kube-custom-templates-view/kube-custom-templates-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Edit Custom Template'\\\" breadcrumbs=\\\"[{label:'Custom templates', link:'kubernetes.templates.custom'}, $ctrl.formValues.Title]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"$ctrl.formValues\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.form\\\">\\n <custom-template-common-fields\\n form-values=\\\"$ctrl.formValues\\\"\\n name-regex=\\\"$ctrl.state.templateNameRegex\\\"\\n name-regex-error=\\\"'This field must consist of lower-case alphanumeric characters, \\\\'.\\\\', \\\\'_\\\\' or \\\\'-\\\\', must start and end with an alphanumeric character and must be 63 characters or less (e.g. \\\\'my-name\\\\', or \\\\'abc-123\\\\').'\\\"\\n ></custom-template-common-fields>\\n\\n <git-form value=\\\"$ctrl.formValues\\\" on-change=\\\"($ctrl.handleChange)\\\" ng-if=\\\"$ctrl.formValues.GitConfig\\\"></git-form>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\"\\n ><button type=\\\"button\\\" class=\\\"btn btn-sm btn-light !ml-0\\\" ng-if=\\\"$ctrl.formValues.GitConfig\\\" ng-click=\\\"$ctrl.previewFileFromGitRepository()\\\">\\n <pr-icon icon=\\\"'refresh-cw'\\\" feather=\\\"true\\\"></pr-icon>Reload custom template</button\\n >\\n </div>\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.state.templatePreviewFailed\\\">\\n <p class=\\\"small vertical-center text-danger mt-5\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>\\n Custom template could not be loaded, {{ $ctrl.state.templatePreviewError }}.</p\\n >\\n </div>\\n </div>\\n\\n <web-editor-form\\n identifier=\\\"template-editor\\\"\\n value=\\\"$ctrl.formValues.FileContent\\\"\\n on-change=\\\"($ctrl.onChangeFileContent)\\\"\\n ng-required=\\\"true\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your manifest file here\\\"\\n read-only=\\\"$ctrl.state.isEditorReadOnly\\\"\\n >\\n <editor-description>\\n <p>Templates allow deploying any kind of Kubernetes resource (Deployment, Secret, ConfigMap...)</p>\\n <p>\\n You can get more information about Kubernetes file format in the\\n <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n </p>\\n </editor-description>\\n </web-editor-form>\\n\\n <custom-templates-variables-definition-field\\n ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n value=\\\"$ctrl.formValues.Variables\\\"\\n on-change=\\\"($ctrl.onVariablesChange)\\\"\\n is-variables-names-from-parent=\\\"true\\\"\\n ></custom-templates-variables-definition-field>\\n\\n <por-access-control-form\\n form-data=\\\"$ctrl.formValues.AccessControlData\\\"\\n resource-control=\\\"$ctrl.formValues.ResourceControl\\\"\\n ng-if=\\\"$ctrl.formValues.AccessControlData\\\"\\n ></por-access-control-form>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || $ctrl.form.$invalid || !$ctrl.formValues.Title || !$ctrl.formValues.FileContent\\\"\\n ng-click=\\\"$ctrl.submitAction()\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">Update the template</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">Update in progress...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"$ctrl.state.formValidationError\\\" style=\\\"margin-left: 5px\\\">\\n {{ $ctrl.state.formValidationError }}\\n </span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/custom-templates/kube-edit-custom-template-view/kube-edit-custom-template-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Registry access'\\\" breadcrumbs=\\\"[{label:'Registries', link:'kubernetes.registries'}, $ctrl.registry.Name, 'Access management']\\\"> </page-header>\\n\\n<registry-details registry=\\\"$ctrl.registry\\\" ng-if=\\\"$ctrl.registry\\\"></registry-details>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"user-x\\\" title-text=\\\"Create access\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"padding-top: 0\\\"> Select namespaces </label>\\n <div class=\\\"col-sm-9 col-lg-4\\\" style=\\\"margin-bottom: 15px\\\">\\n <span class=\\\"small text-muted\\\" ng-if=\\\"!$ctrl.resourcePools.length\\\"> No namespaces available. </span>\\n\\n <namespaces-selector\\n ng-if=\\\"$ctrl.resourcePools.length\\\"\\n value=\\\"$ctrl.selectedResourcePools\\\"\\n namespaces=\\\"$ctrl.resourcePools\\\"\\n placeholder=\\\"'Select one or more namespaces'\\\"\\n on-change=\\\"($ctrl.onChangeResourcePools)\\\"\\n ></namespaces-selector>\\n </div>\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Adding this registry will expose the registry credentials to all users of this namespace.\\n </div>\\n </div>\\n\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"$ctrl.selectedResourcePools.length === 0 || $ctrl.state.actionInProgress\\\"\\n ng-click=\\\"$ctrl.submit()\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\"></pr-icon> Create access</span>\\n <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Creating access...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <strings-datatable\\n title-text=\\\"Access\\\"\\n title-icon=\\\"user-x\\\"\\n table-key=\\\"access_registry_resourcepools\\\"\\n dataset=\\\"$ctrl.savedResourcePools\\\"\\n empty-dataset-message=\\\"No namespace has been authorized yet.\\\"\\n on-remove=\\\"($ctrl.handleRemove)\\\"\\n column-header=\\\"Namespace\\\"\\n >\\n </strings-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/registries/kube-registry-access-view/kube-registry-access-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Application list'\\\" breadcrumbs=\\\"['Applications']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\" data-cy=\\\"k8sApp-appList\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'box'\\\"></pr-icon> Applications </uib-tab-heading>\\n <kubernetes-applications-datatable\\n dataset=\\\"ctrl.state.applications\\\"\\n table-key=\\\"kubernetes.applications\\\"\\n settings-key=\\\"kubernetes.applications\\\"\\n order-by=\\\"Name\\\"\\n remove-action=\\\"ctrl.removeAction\\\"\\n refresh-callback=\\\"ctrl.getApplications\\\"\\n on-publishing-mode-click=\\\"(ctrl.onPublishingModeClick)\\\"\\n is-primary=\\\"true\\\"\\n namespaces=\\\"ctrl.state.namespaces\\\"\\n namespace=\\\"ctrl.state.namespaceName\\\"\\n on-change-namespace-dropdown=\\\"(ctrl.onChangeNamespaceDropdown)\\\"\\n is-apps-loading=\\\"ctrl.state.isAppsLoading\\\"\\n is-system-resources=\\\"ctrl.state.isSystemResources\\\"\\n set-system-resources=\\\"(ctrl.setSystemResources)\\\"\\n >\\n </kubernetes-applications-datatable>\\n </uib-tab>\\n <uib-tab index=\\\"2\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(2)\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'list'\\\"></pr-icon> Stacks </uib-tab-heading>\\n <kubernetes-applications-stacks-datatable\\n dataset=\\\"ctrl.state.stacks\\\"\\n table-key=\\\"kubernetes.applications.stacks\\\"\\n order-by=\\\"Name\\\"\\n refresh-callback=\\\"ctrl.getApplications\\\"\\n remove-action=\\\"ctrl.removeStacksAction\\\"\\n namespaces=\\\"ctrl.state.namespaces\\\"\\n namespace=\\\"ctrl.state.namespaceName\\\"\\n on-change-namespace-dropdown=\\\"(ctrl.onChangeNamespaceDropdown)\\\"\\n is-apps-loading=\\\"ctrl.state.isAppsLoading\\\"\\n is-system-resources=\\\"ctrl.state.isSystemResources\\\"\\n set-system-resources=\\\"(ctrl.setSystemResources)\\\"\\n >\\n </kubernetes-applications-stacks-datatable>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/applications.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"!ctrl.state.isEdit && !ctrl.stack.IsComposeFormat && ctrl.state.viewReady\\\"\\n title=\\\"'Create application'\\\"\\n breadcrumbs=\\\"[\\n { label:'Applications', link:'kubernetes.applications' },\\n 'Create an application'\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<page-header\\n ng-if=\\\"ctrl.state.isEdit && !ctrl.stack.IsComposeFormat && ctrl.state.viewReady\\\"\\n title=\\\"'Edit application'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.application.ResourcePool,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{ id: ctrl.application.ResourcePool }\\n },\\n { label:'Applications', link:'kubernetes.applications' },\\n {\\n label:ctrl.application.Name,\\n link: 'kubernetes.applications.application',\\n linkParams:{ name: ctrl.application.Name, namespace: ctrl.application.ResourcePool }\\n },\\n 'Edit',\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<page-header\\n ng-if=\\\"ctrl.stack.IsComposeFormat\\\"\\n title=\\\"'View application'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.application.ResourcePool,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{ id: ctrl.application.ResourcePool }\\n },\\n { label:'Applications', link:'kubernetes.applications' },\\n {\\n label:ctrl.application.Name,\\n link: 'kubernetes.applications.application',\\n linkParams:{ name: ctrl.application.Name, namespace: ctrl.application.ResourcePool }\\n },\\n 'View',\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row kubernetes-create\\\">\\n <div class=\\\"col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal mt-4\\\" name=\\\"kubernetesApplicationCreationForm\\\" autocomplete=\\\"off\\\">\\n <div ng-if=\\\"!ctrl.isExternalApplication()\\\">\\n <git-form-info-panel\\n ng-if=\\\"ctrl.state.appType == ctrl.KubernetesDeploymentTypes.GIT\\\"\\n class-name=\\\"'text-muted'\\\"\\n url=\\\"ctrl.stack.GitConfig.URL\\\"\\n config-file-path=\\\"ctrl.stack.GitConfig.ConfigFilePath\\\"\\n additional-files=\\\"ctrl.stack.AdditionalFiles\\\"\\n type=\\\"'application'\\\"\\n ></git-form-info-panel>\\n <!-- #region NAMESPACE -->\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Namespace</label>\\n <div class=\\\"col-sm-8\\\">\\n <select\\n class=\\\"form-control\\\"\\n id=\\\"resource-pool-selector\\\"\\n ng-model=\\\"ctrl.formValues.ResourcePool\\\"\\n ng-options=\\\"resourcePool.Namespace.Name for resourcePool in ctrl.resourcePools\\\"\\n ng-change=\\\"ctrl.onResourcePoolSelectionChange()\\\"\\n ng-disabled=\\\"ctrl.state.isEdit\\\"\\n data-cy=\\\"k8sAppCreate-nsSelect\\\"\\n ></select>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded() && ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 small text-danger\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This namespace has exhausted its resource capacity and you will not be able to deploy the application. Contact your administrator to expand the capacity of the\\n namespace.\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region Git repository -->\\n <kubernetes-redeploy-app-git-form\\n ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.GIT\\\"\\n stack=\\\"ctrl.stack\\\"\\n namespace=\\\"ctrl.formValues.ResourcePool.Namespace.Name\\\"\\n ></kubernetes-redeploy-app-git-form>\\n <!-- #endregion -->\\n\\n <!-- #region web editor -->\\n <web-editor-form\\n read-only=\\\"ctrl.stack.IsComposeFormat\\\"\\n ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.CONTENT\\\"\\n value=\\\"ctrl.stackFileContent\\\"\\n yml=\\\"true\\\"\\n identifier=\\\"kubernetes-deploy-editor\\\"\\n placeholder=\\\"Define or paste the content of your manifest file here\\\"\\n on-change=\\\"(ctrl.onChangeFileContent)\\\"\\n >\\n <editor-description>\\n <div class=\\\"flex gap-1\\\" ng-show=\\\"ctrl.stack.IsComposeFormat\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\" class-name=\\\"'!mt-1'\\\"></pr-icon>\\n <div>\\n <p>\\n Portainer no longer supports <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\">docker-compose</a> format manifests for Kubernetes\\n deployments, and we have removed the <a href=\\\"https://kompose.io/\\\" target=\\\"_blank\\\">Kompose</a>\\n conversion tool which enables this. The reason for this is because Kompose now poses a security risk, since it has a number of Common Vulnerabilities and\\n Exposures (CVEs).\\n </p>\\n <p>\\n Unfortunately, while the Kompose project has a maintainer and is part of the CNCF, it is not being actively maintained. Releases are very infrequent and new\\n pull requests to the project (including ones we've submitted) are taking months to be merged, with new CVEs arising in the meantime.\\n </p>\\n <p>\\n We advise installing your own instance of Kompose in a sandbox environment, performing conversions of your Docker Compose files to Kubernetes manifests and\\n using those manifests to set up applications.\\n </p>\\n </div>\\n </div>\\n <span ng-show=\\\"!ctrl.stack.IsComposeFormat\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n This feature allows you to deploy any kind of Kubernetes resource in this environment (Deployment, Secret, ConfigMap...).\\n </p>\\n <p>\\n You can get more information about Kubernetes file format in the\\n <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n </p>\\n </span>\\n </editor-description>\\n </web-editor-form>\\n <!-- #endregion -->\\n <div ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\">\\n <!-- #region NAME FIELD -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"application_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-8\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"application_name\\\"\\n ng-model=\\\"ctrl.formValues.Name\\\"\\n ng-change=\\\"ctrl.onChangeName()\\\"\\n placeholder=\\\"my-app\\\"\\n ng-pattern=\\\"/^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$/\\\"\\n auto-focus\\n required\\n ng-disabled=\\\"ctrl.state.isEdit\\\"\\n data-cy=\\\"k8sAppCreate-applicationName\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"kubernetesApplicationCreationForm.application_name.$invalid || ctrl.state.alreadyExists\\\">\\n <div class=\\\"small\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"> </div>\\n <div class=\\\"col-sm-8\\\" ng-messages=\\\"kubernetesApplicationCreationForm.application_name.$error\\\">\\n <p class=\\\"text-warning vertical-center\\\" ng-message=\\\"required\\\"\\n ><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p\\n >\\n <p class=\\\"text-warning vertical-center\\\" ng-message=\\\"pattern\\\">\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field must consist of lower case alphanumeric characters or '-', contain at most 63 characters, start with an alphabetic character, and end with an\\n alphanumeric character (e.g. 'my-name', or 'abc-123').\\n </p>\\n </div>\\n <div class=\\\"col-sm-8\\\" ng-if=\\\"ctrl.state.alreadyExists\\\">\\n <p class=\\\"text-warning vertical-center\\\">\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n An application with the same name already exists inside the selected namespace.\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region IMAGE FIELD -->\\n <div class=\\\"form-group mb-2\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-image-registry\\n model=\\\"ctrl.formValues.ImageModel\\\"\\n ng-if=\\\"ctrl.formValues.ResourcePool\\\"\\n auto-complete=\\\"false\\\"\\n label-class=\\\"col-sm-3 col-lg-2\\\"\\n input-class=\\\"col-sm-8\\\"\\n namespace=\\\"ctrl.formValues.ResourcePool.Namespace.Name\\\"\\n endpoint=\\\"ctrl.endpoint\\\"\\n is-admin=\\\"ctrl.isAdmin\\\"\\n check-rate-limits=\\\"true\\\"\\n set-validity=\\\"ctrl.setPullImageValidity\\\"\\n ></por-image-registry>\\n </div>\\n </div>\\n <!-- #end region IMAGE FIELD -->\\n\\n <div class=\\\"col-sm-12 mb-4 !p-0\\\">\\n <annotations-be-teaser></annotations-be-teaser>\\n </div>\\n\\n <div ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <!-- #region STACK -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Portainer can automatically bundle multiple applications inside a stack. Enter a name of a new stack or select an existing stack in the list. Leave empty to\\n use the application name.\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"stack_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Stack</label>\\n <div class=\\\"col-sm-8\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n placeholder=\\\"myStack\\\"\\n ng-model=\\\"ctrl.formValues.StackName\\\"\\n name=\\\"stack_name\\\"\\n uib-typeahead=\\\"stack for stack in ctrl.stacks | filter:$viewValue | limitTo:7\\\"\\n typeahead-min-length=\\\"0\\\"\\n data-cy=\\\"k8sAppCreate-stackName\\\"\\n />\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region ENVIRONMENT VARIABLES -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <label class=\\\"control-label !pt-0 text-left\\\">Environment variables</label>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-inline mt-2\\\">\\n <div ng-repeat=\\\"envVar in ctrl.formValues.EnvironmentVariables | orderBy: 'NameIndex'\\\" class=\\\"mt-2\\\">\\n <div style=\\\"margin-top: 2px\\\">\\n <div class=\\\"col-sm-4 input-group input-group-sm mr-2\\\">\\n <div class=\\\"input-group col-sm-12 input-group-sm\\\" ng-class=\\\"{ striked: envVar.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon required\\\">name</span>\\n <input\\n type=\\\"text\\\"\\n name=\\\"environment_variable_name_{{ $index }}\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"envVar.Name\\\"\\n ng-change=\\\"ctrl.onChangeEnvironmentName()\\\"\\n ng-pattern=\\\"/^[-._a-zA-Z][-._a-zA-Z0-9]*$/\\\"\\n placeholder=\\\"foo\\\"\\n ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-envVarName_{{ $index }}\\\"\\n required\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-4 input-group input-group-sm mr-2\\\" ng-class=\\\"{ striked: envVar.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input\\n type=\\\"text\\\"\\n name=\\\"environment_variable_value_{{ $index }}\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"envVar.Value\\\"\\n placeholder=\\\"bar\\\"\\n ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-envVarValue_{{ $index }}\\\"\\n />\\n </div>\\n\\n <div class=\\\"col-sm-2 input-group input-group-sm\\\" ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\">\\n <button\\n ng-if=\\\"!envVar.NeedsDeletion\\\"\\n class=\\\"btn btn-md btn-dangerlight btn-only-icon !ml-0\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.removeEnvironmentVariable(envVar)\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n <button\\n ng-if=\\\"envVar.NeedsDeletion\\\"\\n class=\\\"btn btn-sm btn-light btn-only-icon\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.restoreEnvironmentVariable(envVar)\\\"\\n data-cy=\\\"k8sAppCreate-removeEnvVarButton_{{ $index }}\\\"\\n >\\n <pr-icon icon=\\\"'rotate-cw'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <div\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['environment_variable_name_' + $index].$invalid ||\\n ctrl.state.duplicates.environmentVariables.refs[$index] !== undefined\\n \\\"\\n >\\n <div class=\\\"col-sm-8 input-group input-group-sm\\\">\\n <div\\n class=\\\"small\\\"\\n style=\\\"margin-top: 5px\\\"\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['environment_variable_name_' + $index].$invalid ||\\n ctrl.state.duplicates.environmentVariables.refs[$index] !== undefined\\n \\\"\\n >\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['environment_variable_name_' + $index].$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"text-warning vertical-center\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class-=\\\"vertical-center\\\"></pr-icon> Environment variable name is required.</p\\n >\\n <p ng-message=\\\"pattern\\\" class=\\\"text-warning vertical-center\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field must consist of alphabetic characters, digits, '_', '-', or '.', and must\\n not start with a digit (e.g. 'my.env-name', or 'MY_ENV.NAME', or 'MyEnvName1'.</p\\n >\\n </ng-messages>\\n <p class=\\\"text-warning vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.environmentVariables.refs[$index] !== undefined\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This environment variable is already defined.</p\\n >\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 mt-2\\\">\\n <span\\n ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\"\\n class=\\\"btn btn-primary btn-sm btn btn-sm btn-light mb-2 !ml-0\\\"\\n ng-click=\\\"ctrl.addEnvironmentVariable()\\\"\\n data-cy=\\\"k8sAppCreate-addEnvVarButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\"></pr-icon> Add environment variable\\n </span>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region CONFIGMAPS -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <label class=\\\"control-label !pt-0 text-left\\\">ConfigMaps</label>\\n </div>\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\" style=\\\"margin-top: 15px\\\" ng-if=\\\"ctrl.formValues.ConfigMaps.length\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Portainer will automatically expose all the keys of a ConfigMap as environment variables. This behavior can be overridden to filesystem mounts for each key\\n via the override option.\\n </div>\\n </div>\\n\\n <!-- config-element -->\\n <div class=\\\"form-inline clearfix\\\" ng-repeat=\\\"(index, config) in ctrl.formValues.ConfigMaps\\\">\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <div class=\\\"input-group input-group-sm !mr-1\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <select\\n class=\\\"form-control col-sm-6\\\"\\n ng-model=\\\"config.SelectedConfiguration\\\"\\n ng-options=\\\"c as c.Name for c in ctrl.configMaps track by c.Name\\\"\\n ng-change=\\\"ctrl.resetConfigMap(index)\\\"\\n ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-addConfigSelect_{{ $index }}\\\"\\n ></select>\\n </div>\\n\\n <div class=\\\"input-group btn-group btn-group-sm\\\">\\n <label\\n class=\\\"btn btn-md btn-light vertical-center !ml-0\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.resetConfigMap(index)\\\"\\n ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-configAutoButton_{{ $index }}\\\"\\n uib-btn-radio=\\\"false\\\"\\n ng-model=\\\"config.Overriden\\\"\\n >\\n <pr-icon icon=\\\"'rotate-cw'\\\" size=\\\"'md'\\\"></pr-icon> Auto\\n </label>\\n <label\\n class=\\\"btn btn-md btn-light vertical-center !ml-0\\\"\\n ng-click=\\\"ctrl.overrideConfigMap(index)\\\"\\n ng-disabled=\\\"!config.SelectedConfiguration || ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-configOverrideButton_{{ $index }}\\\"\\n uib-btn-radio=\\\"true\\\"\\n ng-model=\\\"config.Overriden\\\"\\n >\\n <pr-icon icon=\\\"'list'\\\" size=\\\"'md'\\\"></pr-icon> Override\\n </label>\\n </div>\\n\\n <button\\n class=\\\"btn btn-md btn-dangerlight btn-only-icon vertical-center\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.removeConfigMap(index)\\\"\\n ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\"\\n data-cy=\\\"k8sAppCreate-configRemoveButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- no-override -->\\n <div class=\\\"row clearfix\\\" ng-if=\\\"config.SelectedConfiguration && !config.Overriden\\\">\\n <div class=\\\"col-sm-9 small text-muted !mt-2 !p-0\\\">\\n The following keys will be loaded from the <code>{{ config.SelectedConfiguration.Name }}</code>\\n ConfigMap as environment variables:\\n <span ng-repeat=\\\"(key, _) in config.SelectedConfiguration.Data\\\">\\n <code>{{ key }}</code\\n >{{ $last ? '' : ', ' }}\\n </span>\\n </div>\\n </div>\\n <!-- !no-override -->\\n\\n <!-- has-override -->\\n <div class=\\\"col-sm-12 !mt-2 !mb-4 !p-0\\\" ng-if=\\\"config.Overriden\\\" ng-repeat=\\\"(keyIndex, overridenKey) in config.OverridenKeys\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group input-group-sm !mr-1\\\">\\n <span class=\\\"input-group-addon\\\">key</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-value=\\\"overridenKey.Key\\\" disabled />\\n </div>\\n\\n <div class=\\\"input-group btn-group btn-group-sm !mr-1\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"overridenKey.Type\\\" uib-btn-radio=\\\"ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT\\\">\\n <pr-icon icon=\\\"'list'\\\"></pr-icon> Environment\\n </label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"overridenKey.Type\\\" uib-btn-radio=\\\"ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n <pr-icon icon=\\\"'file-text'\\\"></pr-icon> Filesystem\\n </label>\\n </div>\\n\\n <div class=\\\"form-group !ml-0 !mr-0 !align-top\\\" ng-if=\\\"overridenKey.Type === ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon required\\\">path on disk</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"overridenKey.Path\\\"\\n placeholder=\\\"/etc/myapp/conf.d\\\"\\n name=\\\"overriden_key_configmap_path_{{ index }}_{{ keyIndex }}\\\"\\n ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n required\\n ng-change=\\\"ctrl.onChangeConfigMapPath()\\\"\\n data-cy=\\\"k8sAppCreate-pathOnDiskInput\\\"\\n />\\n </div>\\n <div\\n class=\\\"small\\\"\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['overriden_key_configmap_path_' + index + '_' + keyIndex].$invalid ||\\n ctrl.state.duplicates.configMapPaths.refs[index + '_' + keyIndex] !== undefined\\n \\\"\\n >\\n <div class=\\\"text-warning\\\" ng-if=\\\"overridenKey.Type === ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n <div\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['overriden_key_configmap_path_' + index + '_' + keyIndex].$invalid ||\\n ctrl.state.duplicates.configMapPaths.refs[index + '_' + keyIndex] !== undefined\\n \\\"\\n >\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['overriden_key_configmap_path_' + index + '_' + keyIndex].$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Path is required.</p>\\n </ng-messages>\\n <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.configMapPaths.refs[index + '_' + keyIndex] !== undefined\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This path is already used.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !has-override -->\\n </div>\\n <!-- !config-element -->\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm btn btn-sm btn-light mb-2 !ml-0\\\"\\n ng-disabled=\\\"ctrl.configMaps.length === 0\\\"\\n ng-click=\\\"ctrl.addConfigMap()\\\"\\n ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\"\\n data-cy=\\\"k8sAppCreate-addConfigButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\"></pr-icon> Add ConfigMap\\n </button>\\n </div>\\n <div class=\\\"my-2 w-full\\\">\\n <p class=\\\"vertical-center text-warning text-xs\\\" ng-if=\\\"ctrl.configMaps.length === 0\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> There are no ConfigMaps available in this namespace.</p\\n >\\n </div>\\n\\n <!-- #region SECRETS -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center pt-2.5\\\">\\n <label class=\\\"control-label !pt-0 text-left\\\">Secrets</label>\\n </div>\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\" style=\\\"margin-top: 15px\\\" ng-if=\\\"ctrl.formValues.Secrets.length\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Portainer will automatically expose all the keys of a Secret as environment variables. This behavior can be overridden to filesystem mounts for each key via\\n the override option.\\n </div>\\n </div>\\n\\n <!-- config-element -->\\n <div class=\\\"form-inline clearfix\\\" ng-repeat=\\\"(index, config) in ctrl.formValues.Secrets\\\">\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <div class=\\\"input-group input-group-sm !mr-1\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <select\\n class=\\\"form-control col-sm-6\\\"\\n ng-model=\\\"config.SelectedConfiguration\\\"\\n ng-options=\\\"c as c.Name for c in ctrl.secrets track by c.Name\\\"\\n ng-change=\\\"ctrl.resetSecret(index)\\\"\\n ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-addSecretSelect_{{ $index }}\\\"\\n ></select>\\n </div>\\n\\n <div class=\\\"input-group btn-group btn-group-sm\\\">\\n <label\\n class=\\\"btn btn-md btn-light vertical-center !ml-0\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.resetSecret(index)\\\"\\n ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-secretAutoButton_{{ $index }}\\\"\\n uib-btn-radio=\\\"false\\\"\\n ng-model=\\\"config.Overriden\\\"\\n >\\n <pr-icon icon=\\\"'rotate-cw'\\\" size=\\\"'md'\\\"></pr-icon> Auto\\n </label>\\n <label\\n class=\\\"btn btn-md btn-light vertical-center !ml-0\\\"\\n ng-click=\\\"ctrl.overrideSecret(index)\\\"\\n ng-disabled=\\\"!config.SelectedConfiguration || ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-secretOverrideButton_{{ $index }}\\\"\\n uib-btn-radio=\\\"true\\\"\\n ng-model=\\\"config.Overriden\\\"\\n >\\n <pr-icon icon=\\\"'list'\\\" size=\\\"'md'\\\"></pr-icon> Override\\n </label>\\n </div>\\n\\n <button\\n class=\\\"btn btn-md btn-dangerlight btn-only-icon vertical-center\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.removeSecret(index)\\\"\\n ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\"\\n data-cy=\\\"k8sAppCreate-secretRemoveButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- no-override -->\\n <div class=\\\"row clearfix\\\" ng-if=\\\"config.SelectedConfiguration && !config.Overriden\\\">\\n <div class=\\\"col-sm-9 small text-muted !mt-2 !p-0\\\">\\n The following keys will be loaded from the <code>{{ config.SelectedConfiguration.Name }}</code> Secret as environment variables:\\n <span ng-repeat=\\\"(key, _) in config.SelectedConfiguration.Data\\\">\\n <code>{{ key }}</code\\n >{{ $last ? '' : ', ' }}\\n </span>\\n </div>\\n </div>\\n <!-- !no-override -->\\n\\n <!-- has-override -->\\n <div class=\\\"col-sm-12 !mt-2 !mb-4 !p-0\\\" ng-if=\\\"config.Overriden\\\" ng-repeat=\\\"(keyIndex, overridenKey) in config.OverridenKeys\\\" style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group input-group-sm !mr-1\\\">\\n <span class=\\\"input-group-addon\\\">key</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-value=\\\"overridenKey.Key\\\" disabled />\\n </div>\\n\\n <div class=\\\"input-group btn-group btn-group-sm !mr-1\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"overridenKey.Type\\\" uib-btn-radio=\\\"ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.ENVIRONMENT\\\">\\n <pr-icon icon=\\\"'list'\\\"></pr-icon> Environment\\n </label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"overridenKey.Type\\\" uib-btn-radio=\\\"ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n <pr-icon icon=\\\"'file-text'\\\"></pr-icon> Filesystem\\n </label>\\n </div>\\n\\n <div class=\\\"form-group !ml-0 !mr-0 !align-top\\\" ng-if=\\\"overridenKey.Type === ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n <div class=\\\"input-group input-group-sm\\\">\\n <span class=\\\"input-group-addon required\\\">path on disk</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"overridenKey.Path\\\"\\n placeholder=\\\"/etc/myapp/conf.d\\\"\\n name=\\\"overriden_key_secret_path_{{ index }}_{{ keyIndex }}\\\"\\n ng-disabled=\\\"ctrl.formValues.Containers.length > 1\\\"\\n required\\n ng-change=\\\"ctrl.onChangeSecretPath()\\\"\\n data-cy=\\\"k8sAppCreate-secretPathOnDiskInput\\\"\\n />\\n </div>\\n <div\\n class=\\\"small\\\"\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['overriden_key_secret_path_' + index + '_' + keyIndex].$invalid ||\\n ctrl.state.duplicates.secretPaths.refs[index + '_' + keyIndex] !== undefined\\n \\\"\\n >\\n <div class=\\\"text-warning\\\" ng-if=\\\"overridenKey.Type === ctrl.ApplicationConfigurationFormValueOverridenKeyTypes.FILESYSTEM\\\">\\n <div\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['overriden_key_secret_path_' + index + '_' + keyIndex].$invalid ||\\n ctrl.state.duplicates.secretPaths.refs[index + '_' + keyIndex] !== undefined\\n \\\"\\n >\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['overriden_key_secret_path_' + index + '_' + keyIndex].$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Path is required.</p>\\n </ng-messages>\\n <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.secretPaths.refs[index + '_' + keyIndex] !== undefined\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This path is already used.</p\\n >\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !has-override -->\\n </div>\\n\\n <div class=\\\"my-2 w-full\\\">\\n <p class=\\\"vertical-center text-muted text-xs\\\" ng-if=\\\"ctrl.secrets.length === 0\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n There are no secrets available in this namespace.\\n </p>\\n </div>\\n <!-- !config-element -->\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <button\\n type=\\\"button\\\"\\n ng-disabled=\\\"ctrl.secrets.length === 0\\\"\\n class=\\\"btn btn-primary btn-sm btn btn-sm btn-light mb-2 !ml-0\\\"\\n ng-click=\\\"ctrl.addSecret()\\\"\\n ng-if=\\\"ctrl.formValues.Containers.length <= 1\\\"\\n data-cy=\\\"k8sAppCreate-addSecretButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\"></pr-icon> Add Secret\\n </button>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region PERSISTED FOLDERS -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center mb-2 pt-2.5\\\" style=\\\"margin-top: 5px\\\">\\n <label class=\\\"control-label !pt-0 text-left\\\">Persisted folders</label>\\n </div>\\n\\n <div class=\\\"col-sm-12 small text-muted vertical-center mt-1\\\" ng-if=\\\"!ctrl.storageClassAvailable()\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n No storage option is available to persist data, contact your administrator to enable a storage option.\\n </div>\\n\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.storageClassAvailable()\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 5px\\\" ng-if=\\\"ctrl.allQuotasExhaustedAndNoVolumesAvailable()\\\">\\n <span class=\\\"small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This namespace has exhausted its storage capacity. Contact your administrator to expand the capacity of the namespace.\\n </span>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-inline\\\" style=\\\"margin-top: 10px\\\" ng-repeat=\\\"persistedFolder in ctrl.formValues.PersistedFolders\\\">\\n <div style=\\\"margin-top: 2px\\\">\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon required\\\">path in container</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"persisted_folder_path_{{ $index }}\\\"\\n ng-model=\\\"persistedFolder.ContainerPath\\\"\\n ng-change=\\\"ctrl.onChangePersistedFolderPath()\\\"\\n ng-disabled=\\\"ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1\\\"\\n placeholder=\\\"/data\\\"\\n required\\n data-cy=\\\"k8sAppCreate-containerPathInput_{{ $index }}\\\"\\n />\\n </div>\\n\\n <div\\n class=\\\"input-group col-sm-2 input-group-sm\\\"\\n ng-if=\\\"\\n !ctrl.isEditAndExistingPersistedFolder($index) &&\\n ctrl.application.ApplicationType !== ctrl.ApplicationTypes.STATEFULSET &&\\n ctrl.formValues.Containers.length <= 1\\n \\\"\\n >\\n <span class=\\\"btn-group btn-group-sm\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\">\\n <label\\n class=\\\"btn btn-light\\\"\\n ng-model=\\\"persistedFolder.UseNewVolume\\\"\\n uib-btn-radio=\\\"true\\\"\\n ng-change=\\\"ctrl.useNewVolume($index)\\\"\\n ng-disabled=\\\"ctrl.isNewVolumeButtonDisabled($index)\\\"\\n >New volume</label\\n >\\n <label\\n class=\\\"btn btn-light\\\"\\n ng-model=\\\"persistedFolder.UseNewVolume\\\"\\n uib-btn-radio=\\\"false\\\"\\n ng-change=\\\"ctrl.useExistingVolume($index)\\\"\\n ng-disabled=\\\"ctrl.isExistingVolumeButtonDisabled()\\\"\\n >Existing volume</label\\n >\\n </span>\\n </div>\\n\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\" ng-if=\\\"persistedFolder.UseNewVolume\\\">\\n <span class=\\\"input-group-addon required\\\">requested size</span>\\n <input\\n type=\\\"number\\\"\\n class=\\\"form-control !rounded-none\\\"\\n name=\\\"persisted_folder_size_{{ $index }}\\\"\\n ng-model=\\\"persistedFolder.Size\\\"\\n placeholder=\\\"20\\\"\\n min=\\\"0\\\"\\n required\\n ng-disabled=\\\"ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1\\\"\\n ng-change=\\\"ctrl.onChangeVolumeRequestedSize()\\\"\\n />\\n <span class=\\\"input-group-addon !rounded-r-[5px] !p-0\\\">\\n <select\\n class=\\\"form-control !h-[28px] w-12 !rounded-r-[5px] !border-none text-xs\\\"\\n ng-model=\\\"persistedFolder.SizeUnit\\\"\\n ng-style=\\\"{ height: '100%', cursor: ctrl.isEditAndExistingPersistedFolder($index) ? 'not-allowed' : 'auto' }\\\"\\n ng-options=\\\"unit for unit in ctrl.state.availableSizeUnits\\\"\\n ng-disabled=\\\"ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1\\\"\\n ng-change=\\\"ctrl.onChangeVolumeRequestedSize()\\\"\\n ></select>\\n </span>\\n </div>\\n\\n <div class=\\\"input-group col-sm-2 input-group-sm\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\" ng-if=\\\"persistedFolder.UseNewVolume\\\">\\n <span class=\\\"input-group-addon\\\">storage</span>\\n <select\\n ng-if=\\\"ctrl.hasMultipleStorageClassesAvailable()\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"persistedFolder.StorageClass\\\"\\n ng-options=\\\"storageClass as storageClass.Name for storageClass in ctrl.storageClasses\\\"\\n ng-disabled=\\\"ctrl.state.isEdit || ctrl.formValues.Containers.length > 1\\\"\\n data-cy=\\\"k8sAppCreate-storageSelect_{{ $index }}\\\"\\n ></select>\\n <input\\n ng-if=\\\"!ctrl.hasMultipleStorageClassesAvailable()\\\"\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n disabled\\n ng-model=\\\"persistedFolder.StorageClass.Name\\\"\\n data-cy=\\\"k8sAppCreate-storageClassNameInput_{{ $index }}\\\"\\n />\\n </div>\\n\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\" ng-if=\\\"!persistedFolder.UseNewVolume\\\" ng-class=\\\"{ striked: persistedFolder.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon\\\">volume</span>\\n <select\\n class=\\\"form-control\\\"\\n name=\\\"existing_volumes_{{ $index }}\\\"\\n ng-model=\\\"ctrl.formValues.PersistedFolders[$index].ExistingVolume\\\"\\n ng-options=\\\"vol as vol.PersistentVolumeClaim.Name for vol in ctrl.availableVolumes\\\"\\n ng-change=\\\"ctrl.onChangeExistingVolumeSelection()\\\"\\n ng-disabled=\\\"ctrl.isEditAndExistingPersistedFolder($index) || ctrl.formValues.Containers.length > 1\\\"\\n required\\n >\\n <option selected disabled hidden value=\\\"\\\">Select a volume</option>\\n </select>\\n </div>\\n\\n <div class=\\\"input-group col-sm-1 input-group-sm\\\">\\n <div ng-if=\\\"!ctrl.isEditAndStatefulSet() && !ctrl.state.useExistingVolume[$index] && ctrl.formValues.Containers.length <= 1\\\">\\n <button\\n ng-if=\\\"!persistedFolder.NeedsDeletion\\\"\\n class=\\\"btn btn-sm btn-dangerlight !ml-0 h-[30px]\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.removePersistedFolder($index)\\\"\\n data-cy=\\\"k8sAppCreate-rmPersistentFolderButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n <button\\n ng-if=\\\"persistedFolder.NeedsDeletion\\\"\\n class=\\\"btn btn-sm btn-primary\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.restorePersistedFolder($index)\\\"\\n data-cy=\\\"k8sAppCreate-restorePersistentButton\\\"\\n >\\n <pr-icon icon=\\\"'rotate-cw'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n\\n <div\\n class=\\\"flex flex-row gap-x-1\\\"\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['persisted_folder_path_' + $index].$invalid ||\\n ctrl.state.duplicates.persistedFolders.refs[$index] !== undefined ||\\n kubernetesApplicationCreationForm['persisted_folder_size_' + $index].$invalid ||\\n ctrl.state.exceeded.persistedFolders.refs[$index] !== undefined ||\\n kubernetesApplicationCreationForm['existing_volumes_' + $index].$invalid ||\\n ctrl.state.duplicates.existingVolumes.refs[$index] !== undefined\\n \\\"\\n >\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n <div\\n class=\\\"small text-warning\\\"\\n style=\\\"margin-top: 5px\\\"\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['persisted_folder_path_' + $index].$invalid || ctrl.state.duplicates.persistedFolders.refs[$index] !== undefined\\n \\\"\\n >\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['persisted_folder_path_' + $index].$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Path is required.</p>\\n </ng-messages>\\n <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.persistedFolders.refs[$index] !== undefined\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This path is already defined.</p\\n >\\n </div>\\n </div>\\n\\n <div class=\\\"input-group col-sm-offset-3 col-sm-3 input-group-sm\\\">\\n <div\\n class=\\\"small text-warning\\\"\\n style=\\\"margin-top: 5px\\\"\\n ng-show=\\\"\\n kubernetesApplicationCreationForm['persisted_folder_size_' + $index].$invalid || ctrl.state.exceeded.persistedFolders.refs[$index] !== undefined\\n \\\"\\n >\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['persisted_folder_size_' + $index].$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Size is required.</p>\\n <p class=\\\"vertical-center\\\" ng-message=\\\"min\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This value must be greater than zero.</p>\\n </ng-messages>\\n <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.exceeded.persistedFolders.refs[$index] !== undefined\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n You can only request up to\\n {{ ctrl.state.storages.availabilities[persistedFolder.StorageClass.Name] | kubernetesAppStorageRequestSizeHumanReadable }} for\\n {{ persistedFolder.StorageClass.Name }}\\n </p>\\n </div>\\n <div\\n class=\\\"small text-warning\\\"\\n ng-show=\\\"kubernetesApplicationCreationForm['existing_volumes_' + $index].$invalid || ctrl.state.duplicates.existingVolumes.refs[$index] !== undefined\\\"\\n >\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['existing_volumes_' + $index].$error\\\">\\n <p ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Volume is required.</p>\\n </ng-messages>\\n <p ng-if=\\\"ctrl.state.duplicates.existingVolumes.refs[$index] !== undefined\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This volume is already used.</p\\n >\\n </div>\\n </div>\\n\\n <div class=\\\"input-group col-sm-1 input-group-sm\\\"> </div>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 mt-2\\\">\\n <span\\n class=\\\"btn btn-primary btn-sm btn btn-sm btn-light mb-2 !ml-0\\\"\\n ng-click=\\\"ctrl.addPersistedFolder()\\\"\\n ng-if=\\\"ctrl.isAddPersistentFolderButtonShowed()\\\"\\n data-cy=\\\"k8sAppCreate-addPersistentFolderButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\"></pr-icon> Add persisted folder\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region DATA ACCESS POLICY -->\\n <div ng-if=\\\"ctrl.showDataAccessPolicySection()\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">Data access policy</label>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\"> Specify how the data will be used across instances. </div>\\n </div>\\n\\n <kube-application-access-policy-selector\\n value=\\\"ctrl.formValues.DataAccessPolicy\\\"\\n on-change=\\\"(ctrl.onDataAccessPolicyChange)\\\"\\n is-edit=\\\"ctrl.state.isEdit\\\"\\n persisted-folders-use-existing-volumes=\\\"ctrl.state.persistedFoldersUseExistingVolumes\\\"\\n ></kube-application-access-policy-selector>\\n </div>\\n <!-- #endregion -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Resource reservations </div>\\n <!-- #region RESOURCE RESERVATIONS -->\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.state.resourcePoolHasQuota\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Resource reservations are applied per instance of the application.\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded()\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n A resource quota is set on this namespace, you must specify resource reservations. Resource reservations are applied per instance of the application. Maximums\\n are inherited from the namespace quota.\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded()\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n This namespace has exhausted its resource capacity and you will not be able to deploy the application. Contact your administrator to expand the capacity of\\n the namespace.\\n </div>\\n </div>\\n\\n <!-- memory-limit-input -->\\n <div\\n class=\\\"form-group flex\\\"\\n ng-if=\\\"\\n (!ctrl.state.resourcePoolHasQuota || (ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded())) && ctrl.formValues.Containers.length <= 1\\n \\\"\\n >\\n <label for=\\\"memory-limit\\\" class=\\\"space-right col-sm-3 col-lg-2 control-label flex flex-row items-center text-left\\\">\\n Memory limit (MB)\\n <portainer-tooltip\\n message=\\\"'An instance of this application will reserve this amount of memory. If the instance memory usage exceeds the reservation, it might be subject to OOM.'\\\"\\n >\\n </portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-6\\\">\\n <slider model=\\\"ctrl.formValues.MemoryLimit\\\" floor=\\\"ctrl.state.sliders.memory.min\\\" ceil=\\\"ctrl.state.sliders.memory.max\\\" step=\\\"128\\\"></slider>\\n </div>\\n <div class=\\\"col-sm-2 vertical-center\\\">\\n <input\\n name=\\\"memory_limit\\\"\\n ng-model=\\\"ctrl.formValues.MemoryLimit\\\"\\n type=\\\"number\\\"\\n min=\\\"{{ ctrl.state.sliders.memory.min }}\\\"\\n max=\\\"{{ ctrl.state.sliders.memory.max }}\\\"\\n class=\\\"form-control\\\"\\n id=\\\"memory-limit\\\"\\n required\\n data-cy=\\\"k8sAppCreate-memoryLimit\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"kubernetesApplicationCreationForm.memory_limit.$invalid\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8 small text-warning\\\">\\n <div ng-messages=\\\"kubernetesApplicationCreationForm.memory_limit.$error\\\">\\n <p class=\\\"vertical-center\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Value must be between {{ ctrl.state.sliders.memory.min }} and\\n {{ ctrl.state.sliders.memory.max }}\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- !memory-limit-input -->\\n <!-- cpu-limit-input -->\\n <div\\n class=\\\"form-group flex\\\"\\n ng-if=\\\"\\n (!ctrl.state.resourcePoolHasQuota || (ctrl.state.resourcePoolHasQuota && !ctrl.resourceQuotaCapacityExceeded())) && ctrl.formValues.Containers.length <= 1\\n \\\"\\n >\\n <label for=\\\"cpu-limit\\\" class=\\\"space-right col-sm-3 col-lg-2 control-label flex flex-row items-center text-left\\\">\\n CPU limit\\n <portainer-tooltip\\n message=\\\"'An instance of this application will reserve this amount of CPU. If the instance CPU usage exceeds the reservation, it might be subject to CPU throttling.'\\\"\\n >\\n </portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8\\\">\\n <slider model=\\\"ctrl.formValues.CpuLimit\\\" floor=\\\"ctrl.state.sliders.cpu.min\\\" ceil=\\\"ctrl.state.sliders.cpu.max\\\" step=\\\"0.10\\\" precision=\\\"2\\\"></slider>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.nodeLimitsOverflow()\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8 small text-muted\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n These reservations would exceed the resources currently available in the cluster.\\n </div>\\n </div>\\n <!-- !cpu-limit-input -->\\n <!-- #endregion -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Deployment </div>\\n <!-- #region DEPLOYMENT -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\"> Select how you want to deploy your application inside the cluster. </div>\\n </div>\\n\\n <!-- deployment options -->\\n <kube-application-deployment-type-selector\\n value=\\\"ctrl.formValues.DeploymentType\\\"\\n on-change=\\\"(ctrl.onChangeDeploymentType)\\\"\\n support-global-deployment=\\\"ctrl.supportGlobalDeployment()\\\"\\n radio-name=\\\"'deploymentType'\\\"\\n ></kube-application-deployment-type-selector>\\n\\n <!-- replica count -->\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.DeploymentType === ctrl.ApplicationDeploymentTypes.REPLICATED\\\">\\n <label for=\\\"replica_count\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Instance count </label>\\n <div class=\\\"col-sm-2\\\">\\n <input\\n type=\\\"number\\\"\\n name=\\\"replica_count\\\"\\n class=\\\"form-control\\\"\\n min=\\\"1\\\"\\n max=\\\"9999\\\"\\n placeholder=\\\"1\\\"\\n ng-model=\\\"ctrl.formValues.ReplicaCount\\\"\\n ng-disabled=\\\"!ctrl.supportScalableReplicaDeployment()\\\"\\n ng-change=\\\"ctrl.enforceReplicaCountMinimum()\\\"\\n required\\n data-cy=\\\"k8sAppCreate-replicaCountInput\\\"\\n />\\n <div class=\\\"help-block\\\" ng-if=\\\"kubernetesApplicationCreationForm['replica_count'].$invalid\\\">\\n <div class=\\\"small text-warning whitespace-nowrap\\\">\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['replica_count'].$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Instance count is required.</p>\\n <p class=\\\"vertical-center\\\" ng-message=\\\"min\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Instance count must be greater than 0.</p>\\n </ng-messages>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !replica count -->\\n\\n <div\\n class=\\\"form-group\\\"\\n ng-if=\\\"!ctrl.resourceReservationsOverflow() && ctrl.formValues.ReplicaCount > 1 && (ctrl.formValues.CpuLimit !== 0 || ctrl.formValues.MemoryLimit !== 0)\\\"\\n >\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <div>\\n This application will reserve the following resources:\\n <b>{{ ctrl.formValues.CpuLimit * ctrl.formValues.ReplicaCount | kubernetesApplicationCPUValue }} CPU</b> and\\n <b>{{ ctrl.formValues.MemoryLimit * ctrl.formValues.ReplicaCount }} MB</b> of memory.\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.resourceReservationsOverflow()\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n This application would exceed available resources. Please review resource reservations or the instance count.\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.storages.quotaExceeded\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This application would exceed available storage. Please review the persisted folders or the instance count.\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.supportScalableReplicaDeployment()\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <div>\\n The following storage option(s) do not support concurrent access from multiples instances:\\n <code>{{ ctrl.getNonScalableStorage() }}</code\\n >. You will not be able to scale that application.\\n </div>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region AUTO SCALING -->\\n\\n <div class=\\\"form-group !mb-0\\\" ng-if=\\\"ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL && !ctrl.state.useServerMetrics\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p ng-if=\\\"!ctrl.isAdmin\\\"> This feature is currently disabled and must be enabled by an administrator user. </p>\\n <p ng-if=\\\"ctrl.isAdmin\\\">\\n Server metrics features must be enabled in the\\n <a ui-sref=\\\"kubernetes.cluster.setup\\\" class=\\\"ctrl.isAdmin\\\">environment configuration view</a>.\\n </p>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"col-sm-3 col-lg-2 pl-0 pt-0\\\">\\n <label for=\\\"enable_auto_scaling\\\" class=\\\"control-label text-left\\\"> Enable auto scaling for this application </label>\\n </div>\\n <label class=\\\"switch ml-4 mt-1\\\">\\n <input\\n type=\\\"checkbox\\\"\\n class=\\\"form-control\\\"\\n name=\\\"enable_auto_scaling\\\"\\n ng-model=\\\"ctrl.formValues.AutoScaler.IsUsed\\\"\\n data-cy=\\\"k8sAppCreate-autoScaleCheckbox\\\"\\n ng-disabled=\\\"!(ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL && ctrl.state.useServerMetrics)\\\"\\n />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n </div>\\n\\n <div class=\\\"form-inline\\\" ng-if=\\\"ctrl.formValues.DeploymentType !== ctrl.ApplicationDeploymentTypes.GLOBAL && ctrl.formValues.AutoScaler.IsUsed\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-4 pl-0\\\">\\n <label class=\\\"control-label pb-2 text-left\\\" for=\\\"auto_scaler_min\\\">Minimum instances</label>\\n <div class=\\\"input-group input-group-sm\\\" style=\\\"width: 100%\\\">\\n <input\\n type=\\\"number\\\"\\n class=\\\"form-control\\\"\\n name=\\\"auto_scaler_min\\\"\\n min=\\\"0\\\"\\n ng-max=\\\"ctrl.formValues.AutoScaler.MaxReplicas\\\"\\n ng-model=\\\"ctrl.formValues.AutoScaler.MinReplicas\\\"\\n data-cy=\\\"k8sAppCreate-autoScaleMin\\\"\\n required\\n />\\n </div>\\n <span ng-show=\\\"kubernetesApplicationCreationForm['auto_scaler_min'].$invalid\\\">\\n <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\">\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['auto_scaler_min'].$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Minimum instances is required. </p>\\n <p ng-message=\\\"min\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Minimum instances must be greater than 0.\\n </p>\\n <p ng-message=\\\"max\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Minimum instances must be smaller than maximum instances.\\n </p>\\n </ng-messages>\\n </div>\\n </span>\\n </div>\\n <div class=\\\"col-sm-4 pl-0\\\">\\n <label class=\\\"control-label pb-2 text-left\\\" for=\\\"auto_scaler_max\\\">Maximum instances</label>\\n <div class=\\\"input-group input-group-sm\\\" style=\\\"width: 100%\\\">\\n <input\\n type=\\\"number\\\"\\n class=\\\"form-control\\\"\\n name=\\\"auto_scaler_max\\\"\\n ng-min=\\\"ctrl.formValues.AutoScaler.MinReplicas\\\"\\n ng-model=\\\"ctrl.formValues.AutoScaler.MaxReplicas\\\"\\n />\\n </div>\\n <span ng-show=\\\"kubernetesApplicationCreationForm['auto_scaler_max'].$invalid || ctrl.autoScalerOverflow()\\\">\\n <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\">\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['auto_scaler_max'].$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Maximum instances is required. </p>\\n <p ng-message=\\\"min\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Maximum instances must be greater than minimum instances.\\n </p>\\n </ng-messages>\\n </div>\\n </span>\\n </div>\\n <div class=\\\"col-sm-4 pl-0\\\">\\n <label class=\\\"control-label pb-2 text-left\\\" for=\\\"auto_scaler_cpu\\\">\\n Target CPU usage (<b>%</b>)\\n <portainer-tooltip message=\\\"'The autoscaler will ensure enough instances are running to maintain an average CPU usage across all instances.'\\\">\\n </portainer-tooltip>\\n </label>\\n <div class=\\\"input-group input-group-sm\\\" style=\\\"width: 100%\\\">\\n <input\\n type=\\\"number\\\"\\n class=\\\"form-control\\\"\\n name=\\\"auto_scaler_cpu\\\"\\n ng-model=\\\"ctrl.formValues.AutoScaler.TargetCPUUtilization\\\"\\n min=\\\"1\\\"\\n max=\\\"100\\\"\\n required\\n data-cy=\\\"k8sAppCreate-targetCPUInput\\\"\\n />\\n </div>\\n <span ng-show=\\\"kubernetesApplicationCreationForm['auto_scaler_cpu'].$invalid\\\">\\n <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\">\\n <ng-messages for=\\\"kubernetesApplicationCreationForm['auto_scaler_cpu'].$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Target CPU usage is required. </p>\\n <p ng-message=\\\"min\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Target CPU usage must be greater than 0.\\n </p>\\n <p ng-message=\\\"max\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Target CPU usage must be smaller than 100.\\n </p>\\n </ng-messages>\\n </div>\\n </span>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.autoScalerOverflow()\\\" style=\\\"margin-bottom: 10px\\\">\\n <div class=\\\"col-sm-12 small text-danger\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n This application would exceed available resources. Please review resource reservations or the maximum instance count of the auto-scaling policy.\\n </div>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <div class=\\\"mt-4 mb-2\\\" ng-if=\\\"ctrl.formValues.DeploymentType === ctrl.ApplicationDeploymentTypes.REPLICATED\\\">\\n <div class=\\\"col-sm-12 control-label !mb-2 !p-0 text-left\\\"> Placement preferences and constraints </div>\\n\\n <!-- #region PLACEMENTS -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center !mb-2\\\" ng-if=\\\"ctrl.formValues.Placements.length > 0\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <div> Deploy this application on nodes that respect <b>ALL</b> of the following placement rules. Placement rules are based on node labels. </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-inline\\\">\\n <div ng-repeat-start=\\\"placement in ctrl.formValues.Placements\\\" class=\\\"!mb-2\\\">\\n <div class=\\\"col-sm-5 input-group mr-2 ng-class=\\\" { striked: placement.NeedsDeletion }\\\">\\n <select\\n class=\\\"form-control !rounded\\\"\\n ng-model=\\\"placement.Label\\\"\\n ng-options=\\\"label as (label.Key | kubernetesNodeLabelHumanReadbleText) for label in ctrl.nodesLabels\\\"\\n ng-change=\\\"ctrl.onChangePlacementLabel($index)\\\"\\n ng-disabled=\\\"ctrl.isEditAndNotNewPlacement($index)\\\"\\n data-cy=\\\"k8sAppCreate-placementLabel_{{ $index }}\\\"\\n >\\n </select>\\n </div>\\n <div class=\\\"col-sm-5 input-group mr-2\\\" ng-class=\\\"{ striked: placement.NeedsDeletion }\\\">\\n <select\\n class=\\\"form-control !rounded\\\"\\n ng-model=\\\"placement.Value\\\"\\n ng-options=\\\"value for value in placement.Label.Values\\\"\\n ng-disabled=\\\"ctrl.isEditAndNotNewPlacement($index)\\\"\\n data-cy=\\\"k8sAppCreate-placementName_{{ $index }}\\\"\\n >\\n </select>\\n </div>\\n\\n <div class=\\\"col-sm-1 input-group\\\">\\n <button\\n ng-if=\\\"!placement.NeedsDeletion\\\"\\n class=\\\"btn btn-md btn-dangerlight btn-only-icon !ml-0\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.removePlacement($index)\\\"\\n data-cy=\\\"k8sAppCreate-deletePlacementButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n <button\\n ng-if=\\\"placement.NeedsDeletion\\\"\\n class=\\\"btn btn-sm btn-light btn-only-icon !ml-0\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.restorePlacement($index)\\\"\\n data-cy=\\\"k8sAppCreate-restorePlacementButton\\\"\\n >\\n <pr-icon icon=\\\"'rotate-cw'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <div ng-repeat-end ng-show=\\\"ctrl.state.duplicates.placements.refs[$index] !== undefined\\\">\\n <div class=\\\"col-sm-5 input-group\\\">\\n <div class=\\\"small text-warning\\\" ng-if=\\\"ctrl.state.duplicates.placements.refs[$index] !== undefined\\\">\\n <p class=\\\"vertical-center\\\" ng-if=\\\"ctrl.state.duplicates.placements.refs[$index] !== undefined\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This label is already defined.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"btn btn-primary btn-sm btn btn-sm btn-light mb-2 !ml-0 mt-2\\\" ng-click=\\\"ctrl.addPlacement()\\\">\\n <pr-icon icon=\\\"'plus'\\\" size=\\\"'sm'\\\"></pr-icon> Add rule\\n </span>\\n </div>\\n </div>\\n <div ng-if=\\\"ctrl.showPlacementPolicySection()\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">Placement policy</label>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\"> Specify the policy associated to the placement rules. </div>\\n </div>\\n\\n <box-selector\\n ng-if=\\\"ctrl.formValues.Placements.length\\\"\\n options=\\\"ctrl.placementOptions\\\"\\n slim=\\\"true\\\"\\n value=\\\"ctrl.formValues.PlacementType\\\"\\n on-change=\\\"(ctrl.onChangePlacementType)\\\"\\n radio-name=\\\"'placementType'\\\"\\n ></box-selector>\\n </div>\\n <!-- #endregion -->\\n </div>\\n\\n <!-- kubernetes services options -->\\n <div ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <kube-services-form\\n on-change=\\\"(ctrl.onServicesChange)\\\"\\n values=\\\"ctrl.formValues.Services\\\"\\n load-balancer-enabled=\\\"ctrl.publishViaLoadBalancerEnabled()\\\"\\n app-name=\\\"ctrl.formValues.Name\\\"\\n selector=\\\"ctrl.formValues.Selector\\\"\\n validation-data=\\\"{nodePortServices: ctrl.state.nodePortServices, formServices: ctrl.formValues.Services, ingressPaths: ctrl.ingressPaths, originalIngressPaths: ctrl.originalIngressPaths}\\\"\\n is-edit-mode=\\\"ctrl.state.isEdit\\\"\\n namespace=\\\"ctrl.formValues.ResourcePool.Namespace.Name\\\"\\n ></kube-services-form>\\n </div>\\n <!-- kubernetes services options -->\\n\\n <!-- summary -->\\n <kubernetes-summary-view\\n ng-if=\\\"!(!kubernetesApplicationCreationForm.$valid || ctrl.isDeployUpdateButtonDisabled() || !ctrl.state.pullImageValidity)\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n old-form-values=\\\"ctrl.savedFormValues\\\"\\n ></kubernetes-summary-view>\\n </div>\\n </div>\\n <div ng-if=\\\"ctrl.isExternalApplication()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\"> Namespace </div>\\n <!-- #region NAMESPACE -->\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-1 control-label text-left\\\">Namespace</label>\\n <div class=\\\"col-sm-11\\\">\\n <select\\n class=\\\"form-control\\\"\\n id=\\\"resource-pool-selector\\\"\\n ng-model=\\\"ctrl.formValues.ResourcePool\\\"\\n ng-options=\\\"resourcePool.Namespace.Name for resourcePool in ctrl.resourcePools\\\"\\n ng-change=\\\"ctrl.onResourcePoolSelectionChange()\\\"\\n ng-disabled=\\\"ctrl.state.isEdit\\\"\\n data-cy=\\\"k8sAppCreate-nsSelect\\\"\\n ></select>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded() && ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 small text-danger\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n This namespace has exhausted its resource capacity and you will not be able to deploy the application. Contact your administrator to expand the capacity of the\\n namespace.\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n </div>\\n </div>\\n <!-- kubernetes services options -->\\n <div ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <kube-services-form\\n on-change=\\\"(ctrl.onServicesChange)\\\"\\n values=\\\"ctrl.formValues.Services\\\"\\n app-name=\\\"ctrl.formValues.Name\\\"\\n selector=\\\"ctrl.formValues.Selector\\\"\\n validation-data=\\\"{nodePortServices: ctrl.state.nodePortServices, formServices: ctrl.formValues.Services, ingressPaths: ctrl.ingressPaths, originalIngressPaths: ctrl.originalIngressPaths}\\\"\\n is-edit-mode=\\\"ctrl.state.isEdit\\\"\\n namespace=\\\"ctrl.formValues.ResourcePool.Namespace.Name\\\"\\n ></kube-services-form>\\n </div>\\n <!-- kubernetes services options -->\\n </div>\\n\\n <!-- kubernetes summary for external application -->\\n <kubernetes-summary-view ng-if=\\\"ctrl.isExternalApplication()\\\" form-values=\\\"ctrl.formValues\\\" old-form-values=\\\"ctrl.savedFormValues\\\"></kubernetes-summary-view>\\n <!-- kubernetes summary for external application -->\\n <div class=\\\"col-sm-12 form-section-title !mt-6\\\" ng-if=\\\"ctrl.state.appType !== ctrl.KubernetesDeploymentTypes.GIT\\\" ng-hide=\\\"ctrl.stack.IsComposeFormat\\\"> Actions </div>\\n <!-- #region ACTIONS -->\\n <div class=\\\"form-group\\\" ng-hide=\\\"ctrl.stack.IsComposeFormat\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!kubernetesApplicationCreationForm.$valid || ctrl.isDeployUpdateButtonDisabled() || !ctrl.imageValidityIsValid() || ctrl.hasPortErrors() || !ctrl.formValues.ResourcePool\\\"\\n ng-click=\\\"ctrl.deployApplication()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n data-cy=\\\"k8sAppCreate-deployButton\\\"\\n >\\n <span ng-show=\\\"!ctrl.state.isEdit && !ctrl.state.actionInProgress\\\">Deploy application</span>\\n <span ng-show=\\\"!ctrl.state.isEdit && ctrl.state.actionInProgress\\\">Deployment in progress...</span>\\n <span ng-show=\\\"ctrl.state.isEdit && !ctrl.state.actionInProgress\\\">Update application</span>\\n <span ng-show=\\\"ctrl.state.isEdit && ctrl.state.actionInProgress\\\">Update in progress...</span>\\n </button>\\n <button\\n ng-if=\\\"ctrl.state.isEdit && !ctrl.state.actionInProgress && ctrl.state.appType === ctrl.KubernetesDeploymentTypes.APPLICATION_FORM\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-default\\\"\\n ui-sref=\\\"kubernetes.applications.application({ name: ctrl.application.Name, namespace: ctrl.application.ResourcePool })\\\"\\n data-cy=\\\"k8sAppCreate-appCancelButton\\\"\\n >\\n Cancel\\n </button>\\n <!-- #Web editor buttons -->\\n <button\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-click=\\\"ctrl.updateApplicationViaWebEditor()\\\"\\n ng-if=\\\"ctrl.state.appType === ctrl.KubernetesDeploymentTypes.CONTENT || ctrl.state.updateWebEditorInProgress\\\"\\n ng-disabled=\\\"!kubernetesApplicationCreationForm.$valid || !ctrl.state.isEditorDirty || ctrl.state.updateWebEditorInProgress\\\"\\n style=\\\"margin-top: 7px; margin-left: 0\\\"\\n button-spinner=\\\"ctrl.state.updateWebEditorInProgress\\\"\\n >\\n <span ng-show=\\\"!ctrl.state.updateWebEditorInProgress\\\">Update the application</span>\\n <span ng-show=\\\"ctrl.state.updateWebEditorInProgress\\\">Update in progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- #endregion -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/create/createApplication.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Application details'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.application.ResourcePool,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{ id: ctrl.application.ResourcePool }\\n },\\n { label:'Applications', link:'kubernetes.applications' },\\n ctrl.application.Name\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row kubernetes-application\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n <uib-tab-heading> <pr-icon icon=\\\"'svg-laptopcode'\\\" class-name=\\\"'mr-1'\\\"></pr-icon> Application </uib-tab-heading>\\n <application-summary-widget></application-summary-widget>\\n </uib-tab>\\n\\n <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'minimize-2'\\\"></pr-icon> Placement\\n <div ng-if=\\\"ctrl.state.placementWarning\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n warning\\n </div>\\n </uib-tab-heading>\\n <div class=\\\"small text-muted vertical-center\\\" style=\\\"padding: 20px\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n The placement component helps you understand whether or not this application can be deployed on a specific node.\\n </div>\\n <kubernetes-application-placements-datatable\\n title-text=\\\"Placement constraints/preferences\\\"\\n title-icon=\\\"minimize-2\\\"\\n dataset=\\\"ctrl.placements\\\"\\n table-key=\\\"kubernetes.application.placements\\\"\\n order-by=\\\"Name\\\"\\n reverse-order=\\\"false\\\"\\n loading=\\\"ctrl.state.dataLoading\\\"\\n refresh-callback=\\\"ctrl.getApplication\\\"\\n ></kubernetes-application-placements-datatable>\\n </uib-tab>\\n\\n <uib-tab index=\\\"2\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(2)\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'history'\\\"></pr-icon> Events\\n <div ng-if=\\\"ctrl.hasEventWarnings()\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n {{ ctrl.state.eventWarningCount }} warning(s)\\n </div>\\n </uib-tab-heading>\\n <kubernetes-events-datatable\\n title-text=\\\"Events\\\"\\n title-icon=\\\"history\\\"\\n dataset=\\\"ctrl.events\\\"\\n table-key=\\\"kubernetes.application.events\\\"\\n order-by=\\\"Date\\\"\\n reverse-order=\\\"true\\\"\\n loading=\\\"ctrl.state.eventsLoading\\\"\\n refresh-callback=\\\"ctrl.getEvents\\\"\\n ></kubernetes-events-datatable>\\n </uib-tab>\\n\\n <uib-tab index=\\\"3\\\" ng-if=\\\"ctrl.application.Yaml\\\" select=\\\"ctrl.showEditor()\\\" classes=\\\"btn-sm\\\">\\n <uib-tab-heading> <pr-icon icon=\\\"'code'\\\"></pr-icon> YAML </uib-tab-heading>\\n <div class=\\\"px-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n <kubernetes-yaml-inspector key=\\\"application-yaml\\\" data=\\\"ctrl.application.Yaml\\\"></kubernetes-yaml-inspector>\\n </div>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <application-details-widget></application-details-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-containers-datatable\\n title-text=\\\"Application containers\\\"\\n title-icon=\\\"server\\\"\\n dataset=\\\"ctrl.allContainers\\\"\\n table-key=\\\"kubernetes.application.containers\\\"\\n is-pod=\\\"ctrl.application.ApplicationType === ctrl.KubernetesApplicationTypes.POD\\\"\\n order-by=\\\"{{ ctrl.application.ApplicationType === ctrl.KubernetesApplicationTypes.POD ? 'Name' : 'PodName' }}\\\"\\n use-server-metrics=\\\"ctrl.state.useServerMetrics\\\"\\n >\\n </kubernetes-containers-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/edit/application.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\">\\n {{ $ctrl.titleText }}\\n </span>\\n </div>\\n <div class=\\\"searchBar\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput ml-1\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a node...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\"></pr-icon></span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive border-none\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th style=\\\"width: 2%\\\">\\n <a ng-click=\\\"$ctrl.expandAll()\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n <pr-icon icon=\\\"'chevron-down'\\\" ng-if=\\\"$ctrl.state.expandAll\\\"></pr-icon>\\n <pr-icon icon=\\\"'chevron-up'\\\" ng-if=\\\"!$ctrl.state.expandAll\\\"></pr-icon>\\n </a>\\n </th>\\n <th style=\\\"width: 98%\\\">\\n <table-column-header\\n col-title=\\\"'Node'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Node'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Node' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Node')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | filter: $ctrl.isDisplayed | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n pagination-id=\\\"$ctrl.tableKey\\\"\\n >\\n <td>\\n <a ng-if=\\\"$ctrl.itemCanExpand(item)\\\">\\n <pr-icon icon=\\\"'chevron-down'\\\" class=\\\"mr-1\\\" ng-if=\\\"item.Expanded\\\"></pr-icon>\\n <pr-icon icon=\\\"'chevron-up'\\\" class=\\\"mr-1\\\" ng-if=\\\"!item.Expanded\\\"></pr-icon>\\n </a>\\n <pr-icon icon=\\\"'check'\\\" ng-if=\\\"item.AcceptsApplication\\\" mode=\\\"'success'\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" ng-if=\\\"!item.AcceptsApplication\\\" mode=\\\"'error'\\\"></pr-icon>\\n </td>\\n <td>\\n {{ item.Name }}\\n </td>\\n </tr>\\n <!-- ADMIN + UNMET TAINTS -->\\n <tr\\n ng-if=\\\"$ctrl.isAdmin\\\"\\n ng-show=\\\"item.Expanded\\\"\\n ng-repeat=\\\"taint in item.UnmetTaints\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td colspan=\\\"2\\\">\\n This application is missing a toleration for the taint <code>{{ taint.Key }}{{ taint.Value ? '=' + taint.Value : '' }}:{{ taint.Effect }}</code>\\n </td>\\n </tr>\\n <!-- !ADMIN + UNMET TAINTS -->\\n <!-- USER + UNMET TAINTS -->\\n <tr\\n ng-if=\\\"!$ctrl.isAdmin && item.UnmetTaints.length\\\"\\n ng-show=\\\"item.Expanded\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td colspan=\\\"2\\\"> Placement constraint not respected for that node. </td>\\n </tr>\\n <!-- ! USER + UNMET TAINTS -->\\n <!-- ADMIN + UNMET NODE SELECTOR LABELS -->\\n <tr\\n ng-if=\\\"$ctrl.isAdmin\\\"\\n ng-show=\\\"item.Expanded\\\"\\n ng-repeat=\\\"label in item.UnmatchedNodeSelectorLabels\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td colspan=\\\"2\\\">\\n This application can only be scheduled on a node where the label <code>{{ label.key }}</code> is set to <code>{{ label.value }}</code>\\n </td>\\n </tr>\\n <!-- ! ADMIN + UNMET NODE SELECTOR LABELS -->\\n <!-- USER + UNMET NODE SELECTOR LABELS || UNMET NODE AFFINITIES -->\\n <tr\\n ng-if=\\\"!$ctrl.isAdmin && (item.UnmatchedNodeSelectorLabels.length || item.UnmatchedNodeAffinities.length)\\\"\\n ng-show=\\\"item.Expanded\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td colspan=\\\"2\\\"> Placement label not respected for that node. </td>\\n </tr>\\n <!-- ! USER + UNMET NODE SELECTOR LABELS || UNMET NODE AFFINITIES -->\\n <!-- ADMIN + UNMET NODE AFFINITIES -->\\n <tr\\n ng-if=\\\"$ctrl.isAdmin\\\"\\n ng-show=\\\"item.Expanded && item.UnmatchedNodeAffinities.length\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td colspan=\\\"2\\\"> This application can only be scheduled on nodes respecting one of the following labels combination: </td>\\n </tr>\\n <tr\\n dir-paginate-end\\n ng-if=\\\"$ctrl.isAdmin\\\"\\n ng-show=\\\"item.Expanded\\\"\\n ng-repeat=\\\"aff in item.UnmatchedNodeAffinities\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td></td>\\n <td>\\n <code ng-repeat-start=\\\"term in aff track by $index\\\">\\n {{ term.key }} {{ term.operator }} {{ term.values | kubernetesApplicationConstraintNodeAffinityValue : term.operator }}\\n </code>\\n <span ng-repeat-end>{{ $last ? '' : ' + ' }}</span>\\n </td>\\n </tr>\\n <!-- ! ADMIN + UNMET NODE AFFINITIES -->\\n <tr ng-if=\\\"$ctrl.loading\\\">\\n <td colspan=\\\"2\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.loading && (!$ctrl.dataset || $ctrl.state.filteredDataSet.length === 0)\\\">\\n <td colspan=\\\"2\\\" class=\\\"text-muted text-center\\\">No node available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/edit/components/placements-datatable/template.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"$ctrl.state.viewReady\\\"\\n title=\\\"'Helm details'\\\"\\n breadcrumbs=\\\"[{label:'Applications', link:'kubernetes.applications'}, $ctrl.state.params.name]\\\"\\n reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"$ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"$ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <div class=\\\"toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 p-5\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'svg-helm'\\\"></pr-icon>\\n </div>\\n\\n Release\\n </div>\\n </div>\\n <div class=\\\"toolBarTitle vertical-center !gap-0 px-5\\\">\\n <beta-alert\\n is-html=\\\"true\\\"\\n message=\\\"'Beta feature - initial version of Helm charts functionality, for more information see this <a href=\\\\'https://www.portainer.io/blog/portainer-now-with-helm-support\\\\' target=\\\\'_blank\\\\' class=\\\\'hyperlink\\\\'>blog post</a>.'\\\"\\n ></beta-alert>\\n </div>\\n <rd-widget-body>\\n <table class=\\\"table\\\">\\n <tbody class=\\\"release-table\\\">\\n <tr>\\n <td class=\\\"vertical-center !pl-0\\\">Name</td>\\n <td class=\\\"vertical-center !p-2\\\">\\n {{ $ctrl.state.release.name }}\\n </td>\\n </tr>\\n <tr>\\n <td class=\\\"vertical-center !pl-0\\\">Chart</td>\\n <td class=\\\"vertical-center !p-2\\\">\\n {{ $ctrl.state.release.chart }}\\n </td>\\n </tr>\\n <tr>\\n <td class=\\\"vertical-center !pl-0\\\">App version</td>\\n <td class=\\\"vertical-center !p-2\\\">\\n {{ $ctrl.state.release.app_version }}\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/helm/helm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Application logs'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.application.ResourcePool,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{ id: ctrl.application.ResourcePool }\\n },\\n { label:'Applications', link:'kubernetes.applications' },\\n {\\n label:ctrl.application.Name,\\n link: 'kubernetes.applications.application',\\n linkParams:{ name: ctrl.application.Name, namespace: ctrl.application.ResourcePool }\\n },\\n 'Pods',\\n ctrl.podName,\\n 'Containers',\\n ctrl.containerName,\\n 'Logs'\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal row\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <!-- auto-refresh -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Auto-refresh\\n <portainer-tooltip message=\\\"'Automatically refresh logs every 5 seconds'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8\\\">\\n <label class=\\\"switch\\\"> <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.state.autoRefresh\\\" ng-change=\\\"ctrl.updateAutoRefresh()\\\" /><span class=\\\"slider round\\\"></span> </label>\\n </div>\\n </div>\\n <!-- !auto-refresh -->\\n <!-- search -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"logs_search\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Search </label>\\n <div class=\\\"col-sm-8\\\">\\n <input\\n class=\\\"form-control\\\"\\n type=\\\"text\\\"\\n name=\\\"logs_search\\\"\\n ng-model=\\\"ctrl.state.search\\\"\\n ng-change=\\\"ctrl.state.selectedLines.length = 0;\\\"\\n placeholder=\\\"Filter...\\\"\\n auto-focus\\n />\\n </div>\\n </div>\\n <!-- !search -->\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button class=\\\"btn btn-primary btn-sm !ml-0\\\" type=\\\"button\\\" ng-click=\\\"ctrl.downloadLogs()\\\"> <pr-icon icon=\\\"'download'\\\"></pr-icon> Download logs </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12 h-[max(400px,calc(100vh-380px))]\\\">\\n <pre class=\\\"log_viewer widget\\\">\\n <div ng-repeat=\\\"log in ctrl.state.filteredLogs = (ctrl.applicationLogs | filter:{ 'line': ctrl.state.search }) track by $index\\\" class=\\\"line\\\" ng-if=\\\"log.line\\\"><p class=\\\"inner_line\\\"><span ng-repeat=\\\"span in log.spans track by $index\\\" ng-style=\\\"{ 'color': span.fgColor, 'background-color': span.bgColor, 'font-weight': span.fontWeight }\\\">{{ span.text }}</span></p></div>\\n <div ng-if=\\\"ctrl.applicationLogs.length && !ctrl.state.filteredLogs.length\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No log line matching the '{{ ctrl.state.search }}' filter</p></div>\\n <div ng-if=\\\"ctrl.applicationLogs.length === 0\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No logs available</p></div></pre>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/logs/logs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Application stats'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.state.transition.namespace,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{ id: ctrl.state.transition.namespace }\\n },\\n { label:'Applications', link:'kubernetes.applications' },\\n {\\n label:ctrl.state.transition.applicationName,\\n link: 'kubernetes.applications.application',\\n linkParams:{ name: ctrl.state.transition.applicationName, namespace: ctrl.state.transition.namespace }\\n },\\n 'Pods',\\n ctrl.state.transition.podName,\\n 'Containers',\\n ctrl.state.transition.containerName,\\n 'Stats'\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<information-panel ng-if=\\\"!ctrl.state.getMetrics\\\" title-text=\\\"Unable to retrieve container metrics\\\">\\n <span class=\\\"small text-warning vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Portainer was unable to retrieve any metrics associated to that container. Please contact your administrator to ensure that the Kubernetes metrics feature is properly\\n configured.\\n </span>\\n</information-panel>\\n<div class=\\\"row\\\" ng-if=\\\"ctrl.state.getMetrics\\\">\\n <div class=\\\"col-md-12\\\">\\n <rd-widget>\\n <div class=\\\"toolBar px-5 pt-5\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'info'\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\"> About statistics </span>\\n </div>\\n </div>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-warning\\\">\\n This view displays real-time statistics about the container <b>{{ ctrl.state.transition.containerName | trimcontainername }}</b\\n >.\\n </span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"refreshRate\\\" class=\\\"col-sm-3 col-md-2 col-lg-2 margin-sm-top control-label text-left\\\"> Refresh rate </label>\\n <div class=\\\"col-sm-3 col-md-2\\\">\\n <select id=\\\"refreshRate\\\" ng-model=\\\"ctrl.state.refreshRate\\\" ng-change=\\\"ctrl.changeUpdateRepeater()\\\" class=\\\"form-control\\\">\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">60s</option>\\n </select>\\n </div>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" size=\\\"'sm'\\\"></pr-icon>\\n </span>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.networkStatsUnavailable\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Network stats are unavailable for this container.\\n </span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\" ng-if=\\\"ctrl.state.getMetrics\\\">\\n <div class=\\\"col-lg-6 col-md-12 col-sm-12\\\">\\n <rd-widget>\\n <div class=\\\"toolBar px-5 pt-5\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'svg-memory'\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\"> Memory usage </span>\\n </div>\\n </div>\\n <rd-widget-body>\\n <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n <canvas id=\\\"memoryChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n <div class=\\\"col-lg-6 col-md-12 col-sm-12\\\" ng-if=\\\"!ctrl.state.networkStatsUnavailable\\\">\\n <rd-widget>\\n <div class=\\\"toolBar px-5 pt-5\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'cpu'\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\"> CPU usage </span>\\n </div>\\n </div>\\n <rd-widget-body>\\n <div class=\\\"chart-container\\\" style=\\\"position: relative\\\">\\n <canvas id=\\\"cpuChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/applications/stats/stats.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Cluster'\\\" breadcrumbs=\\\"['Cluster information']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.isAdmin\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <!-- resource-reservation -->\\n <form class=\\\"form-horizontal\\\" ng-if=\\\"ctrl.resourceReservation\\\">\\n <kubernetes-resource-reservation\\n description=\\\"Resource reservation represents the total amount of resource assigned to all the applications inside the cluster.\\\"\\n cpu-reservation=\\\"ctrl.resourceReservation.CPU\\\"\\n cpu-limit=\\\"ctrl.CPULimit\\\"\\n memory-reservation=\\\"ctrl.resourceReservation.Memory\\\"\\n memory-limit=\\\"ctrl.MemoryLimit\\\"\\n display-usage=\\\"ctrl.hasResourceUsageAccess()\\\"\\n cpu-usage=\\\"ctrl.resourceUsage.CPU\\\"\\n memory-usage=\\\"ctrl.resourceUsage.Memory\\\"\\n >\\n </kubernetes-resource-reservation>\\n </form>\\n <!-- !resource-reservation -->\\n\\n <!-- leader-status -->\\n <div ng-if=\\\"ctrl.systemEndpoints.length > 0\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Leader status </div>\\n\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr class=\\\"text-muted\\\">\\n <td style=\\\"border-top: none; width: 25%\\\">Component</td>\\n <td style=\\\"border-top: none; width: 25%\\\">Leader node</td>\\n </tr>\\n <tr ng-repeat=\\\"ep in ctrl.systemEndpoints\\\">\\n <td style=\\\"width: 25%\\\">\\n {{ ep.Name }}\\n </td>\\n <td style=\\\"width: 25%\\\">\\n {{ ep.HolderIdentity }}\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <!-- !leader-status -->\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-nodes-datatable\\n title-text=\\\"Nodes\\\"\\n title-icon=\\\"hard-drive\\\"\\n dataset=\\\"ctrl.nodes\\\"\\n table-key=\\\"kubernetes.nodes\\\"\\n order-by=\\\"Name\\\"\\n refresh-callback=\\\"ctrl.getNodes\\\"\\n is-admin=\\\"ctrl.isAdmin\\\"\\n use-server-metrics=\\\"ctrl.state.useServerMetrics\\\"\\n ></kubernetes-nodes-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/cluster/cluster.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Node details'\\\" breadcrumbs=\\\"[{ label:'Cluster', link:'kubernetes.cluster' }, ctrl.node.Name]\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n <uib-tab-heading class=\\\"flex-center gap-1\\\"> <pr-icon icon=\\\"'hard-drive'\\\" size=\\\"'sm'\\\"></pr-icon> Node </uib-tab-heading>\\n\\n <form class=\\\"form-horizontal\\\" name=\\\"kubernetesNodeUpdateForm\\\" style=\\\"padding: 20px\\\" autocomplete=\\\"off\\\">\\n <table class=\\\"table\\\">\\n <tbody ng-if=\\\"ctrl.node\\\">\\n <tr>\\n <td>Hostname</td>\\n <td>\\n {{ ctrl.node.Name }}\\n <span class=\\\"label label-primary image-tag\\\" style=\\\"margin-left: 5px\\\" ng-if=\\\"ctrl.node.Api\\\">api</span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"ctrl.node.Api\\\">\\n <td> Kubernetes API </td>\\n <td>{{ ctrl.node.IPAddress }}:{{ ctrl.node.Port }}</td>\\n </tr>\\n <tr>\\n <td>Role</td>\\n <td>{{ ctrl.node.Role }}</td>\\n </tr>\\n <tr>\\n <td>Kubelet version</td>\\n <td>{{ ctrl.node.Version }}</td>\\n </tr>\\n <tr>\\n <td>Creation date</td>\\n <td>{{ ctrl.node.CreationDate | getisodate }}</td>\\n </tr>\\n <tr>\\n <td>Status</td>\\n <td>\\n <span class=\\\"label label-{{ ctrl.node.Status | kubernetesNodeStatusColor }}\\\">\\n {{ ctrl.node.Status }}\\n </span>\\n <span ng-if=\\\"ctrl.node.Status == 'Warning'\\\" class=\\\"text text-warning\\\">\\n {{ ctrl.node.Conditions | kubernetesNodeConditionsMessage }}\\n </span>\\n </td>\\n </tr>\\n <tr>\\n <td class=\\\"col-xs-3\\\"> Availability </td>\\n <td class=\\\"col-xs-9\\\">\\n <div class=\\\"flex flex-col\\\">\\n <select class=\\\"form-control\\\" name=\\\"availability\\\" style=\\\"display: inline-block; width: 16rem\\\" ng-model=\\\"ctrl.formValues.Availability\\\">\\n <option>{{ ctrl.availabilities.ACTIVE }}</option>\\n <option>{{ ctrl.availabilities.PAUSE }}</option>\\n <option>{{ ctrl.availabilities.DRAIN }}</option>\\n </select>\\n <div class=\\\"small text-warning vertical-center\\\" ng-if=\\\"ctrl.state.isDrainOperation && ctrl.formValues.Availability === ctrl.availabilities.DRAIN\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Cannot use this action while another node is currently being drained.\\n </div>\\n <div class=\\\"small text-warning vertical-center\\\" ng-if=\\\"ctrl.state.isContainPortainer && ctrl.formValues.Availability === ctrl.availabilities.DRAIN\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Cannot drain a node where this Portainer instance is running.\\n </div>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n\\n <div style=\\\"padding: 8px\\\">\\n <kubernetes-resource-reservation\\n ng-if=\\\"ctrl.resourceReservation\\\"\\n cpu-reservation=\\\"ctrl.resourceReservation.CPU\\\"\\n cpu-usage=\\\"ctrl.resourceUsage.CPU\\\"\\n cpu-limit=\\\"ctrl.node.CPU\\\"\\n memory-reservation=\\\"ctrl.resourceReservation.Memory\\\"\\n memory-usage=\\\"ctrl.resourceUsage.Memory\\\"\\n memory-limit=\\\"ctrl.memoryLimit\\\"\\n description=\\\"Resource reservation represents the total amount of resource assigned to all the applications running on this node.\\\"\\n display-usage=\\\"ctrl.hasResourceUsageAccess()\\\"\\n >\\n </kubernetes-resource-reservation>\\n </div>\\n\\n <div style=\\\"padding: 8px\\\">\\n <!-- #region labels -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Labels </div>\\n\\n <div style=\\\"margin-bottom: 10px\\\">\\n <span class=\\\"label label-default interactive vertical-center\\\" ng-click=\\\"ctrl.addLabel()\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> add label </span>\\n </div>\\n\\n <div class=\\\"form-inline py-1\\\" ng-repeat=\\\"label in ctrl.formValues.Labels\\\">\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: label.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon\\\">Key</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"label_key_{{ $index }}\\\"\\n ng-model=\\\"label.Key\\\"\\n ng-change=\\\"ctrl.onChangeLabelKey($index)\\\"\\n ng-disabled=\\\"ctrl.isSystemLabel($index)\\\"\\n required\\n />\\n </div>\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: label.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon\\\">Value</span>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"label_value_{{ $index }}\\\"\\n ng-change=\\\"ctrl.onChangeLabel($index)\\\"\\n ng-model=\\\"label.Value\\\"\\n ng-disabled=\\\"ctrl.isSystemLabel($index)\\\"\\n />\\n </div>\\n <div class=\\\"input-group col-sm-1 input-group-sm\\\">\\n <div style=\\\"white-space: nowrap\\\">\\n <button\\n ng-if=\\\"!ctrl.isSystemLabel($index) && !label.NeedsDeletion\\\"\\n class=\\\"btn btn-sm btn-dangerlight btn-only-icon\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.removeLabel($index)\\\"\\n >\\n <pr-icon icon=\\\"'x'\\\" mode=\\\"'error'\\\" size=\\\"'sm'\\\"></pr-icon>\\n </button>\\n <button ng-if=\\\"!ctrl.isSystemLabel($index) && label.NeedsDeletion\\\" class=\\\"btn btn-sm btn-secondary\\\" type=\\\"button\\\" ng-click=\\\"ctrl.restoreLabel($index)\\\">\\n Restore\\n </button>\\n <span class=\\\"label label-warning label-sm image-tag\\\" ng-if=\\\"label.IsUsed && !ctrl.isSystemLabel($index)\\\" style=\\\"margin-left: 5px\\\">used</span>\\n <span class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.isSystemLabel($index)\\\" style=\\\"margin-left: 5px\\\">system</span>\\n </div>\\n </div>\\n <div class=\\\"small text-warning mt-2\\\" ng-show=\\\"kubernetesNodeUpdateForm['label_key_' + $index].$invalid || ctrl.state.duplicateLabelKeys[$index] !== undefined\\\">\\n <ng-messages for=\\\"kubernetesNodeUpdateForm['label_key_' + $index].$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Label key is required. </p>\\n </ng-messages>\\n <p ng-if=\\\"ctrl.state.duplicateLabelKeys[$index] !== undefined\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This label key is already defined.\\n </p>\\n </div>\\n </div>\\n\\n <!-- #endregion -->\\n\\n <!-- #region taints -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 20px\\\"> Taints </div>\\n\\n <div style=\\\"margin-bottom: 10px\\\">\\n <span class=\\\"label label-default interactive vertical-center\\\" ng-click=\\\"ctrl.addTaint()\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> add taint </span>\\n </div>\\n\\n <div class=\\\"form-inline\\\" ng-repeat=\\\"taint in ctrl.formValues.Taints\\\" style=\\\"padding: 3px 0 3px 0\\\">\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: taint.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon\\\">Key</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"taint_key_{{ $index }}\\\" ng-model=\\\"taint.Key\\\" ng-change=\\\"ctrl.onChangeTaintKey($index)\\\" required />\\n </div>\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: taint.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon\\\">Value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"taint_value_{{ $index }}\\\" ng-model=\\\"taint.Value\\\" ng-change=\\\"ctrl.onChangeTaint($index)\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\" ng-class=\\\"{ striked: taint.NeedsDeletion }\\\">\\n <span class=\\\"input-group-addon\\\">Effect</span>\\n <select\\n id=\\\"taint_effect_{{ $index }}\\\"\\n name=\\\"taint_effect_{{ $index }}\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"taint.Effect\\\"\\n ng-change=\\\"ctrl.onChangeTaint($index)\\\"\\n ;\\n ng-options=\\\"effect as effect for effect in ctrl.availableEffects\\\"\\n ></select>\\n </div>\\n <div class=\\\"input-group col-sm-1 input-group-sm\\\">\\n <div>\\n <button ng-if=\\\"!taint.NeedsDeletion\\\" class=\\\"btn btn-sm btn-dangerlight btn-only-icon\\\" type=\\\"button\\\" ng-click=\\\"ctrl.removeTaint($index)\\\">\\n <pr-icon icon=\\\"'x'\\\" mode=\\\"'error'\\\" size=\\\"'sm'\\\"></pr-icon>\\n </button>\\n <button ng-if=\\\"taint.NeedsDeletion\\\" class=\\\"btn btn-sm btn-secondary\\\" type=\\\"button\\\" ng-click=\\\"ctrl.restoreTaint($index)\\\"> Restore </button>\\n </div>\\n </div>\\n <div\\n class=\\\"small text-warning\\\"\\n style=\\\"margin-top: 5px\\\"\\n ng-show=\\\"kubernetesNodeUpdateForm['taint_key_' + $index].$invalid || ctrl.state.duplicateTaintKeys[$index] !== undefined\\\"\\n >\\n <ng-messages for=\\\"kubernetesNodeUpdateForm['taint_key_' + $index].$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Taint key is required. </p>\\n </ng-messages>\\n <p ng-if=\\\"ctrl.state.duplicateTaintKeys[$index] !== undefined\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This taint key is already defined.\\n </p>\\n </div>\\n </div>\\n\\n <!-- #endregion -->\\n\\n <!-- #region actions -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 20px\\\"> Actions </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n class=\\\"btn btn-primary btn-sm\\\"\\n type=\\\"button\\\"\\n style=\\\"margin-left: 0\\\"\\n ng-click=\\\"ctrl.updateNode()\\\"\\n ng-disabled=\\\"kubernetesNodeUpdateForm.$invalid || !ctrl.isFormValid()\\\"\\n >\\n Update node\\n </button>\\n <button class=\\\"btn btn-default btn-sm\\\" type=\\\"button\\\" ng-click=\\\"ctrl.resetFormValues()\\\" ng-disabled=\\\"ctrl.isNoChangesMade()\\\"> Cancel </button>\\n </div>\\n </div>\\n\\n <!-- #endregion -->\\n </div>\\n </form>\\n </uib-tab>\\n <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n <uib-tab-heading>\\n <div class=\\\"flex-center gap-1\\\"> <pr-icon icon=\\\"'history'\\\" size=\\\"'sm'\\\"></pr-icon> Events </div>\\n <div class=\\\"flex-center gap-1\\\" ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning-alt'\\\" size=\\\"'sm'\\\"></pr-icon>\\n {{ ctrl.state.eventWarningCount }} warning(s)\\n </div>\\n </uib-tab-heading>\\n <kubernetes-events-datatable\\n title-text=\\\"Events\\\"\\n dataset=\\\"ctrl.events\\\"\\n table-key=\\\"kubernetes.node.events\\\"\\n order-by=\\\"Date\\\"\\n reverse-order=\\\"true\\\"\\n loading=\\\"ctrl.state.eventsLoading\\\"\\n refresh-callback=\\\"ctrl.getEvents\\\"\\n >\\n </kubernetes-events-datatable>\\n </uib-tab>\\n <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.node.Yaml\\\" select=\\\"ctrl.showEditor()\\\" classes=\\\"btn-sm\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\">\\n <div class=\\\"flex-center gap-1\\\"> <pr-icon icon=\\\"'code'\\\" size=\\\"'sm'\\\"></pr-icon> YAML </div>\\n </uib-tab-heading>\\n <div style=\\\"padding-right: 25px\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n <kubernetes-yaml-inspector key=\\\"node-yaml\\\" data=\\\"ctrl.node.Yaml\\\"> </kubernetes-yaml-inspector>\\n </div>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.applications && ctrl.applications.length > 0\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-node-applications-datatable\\n dataset=\\\"ctrl.applications\\\"\\n table-key=\\\"kubernetes.node.applications\\\"\\n order-by=\\\"Name\\\"\\n refresh-callback=\\\"ctrl.getApplications\\\"\\n loading=\\\"ctrl.state.applicationsLoading\\\"\\n title-text=\\\"Applications running on this node\\\"\\n >\\n </kubernetes-node-applications-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/cluster/node/node.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Node stats'\\\"\\n breadcrumbs=\\\"[\\n{ label:'Cluster', link:'kubernetes.cluster' },\\n{\\n label:ctrl.state.transition.nodeName,\\n link: 'kubernetes.cluster.node',\\n linkParams:{name: ctrl.state.transition.nodeName}\\n},\\n ctrl.state.transition.nodeName,\\n ]\\\"\\n reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<information-panel ng-if=\\\"!ctrl.state.getMetrics\\\" title-text=\\\"Unable to retrieve node metrics\\\">\\n <span class=\\\"small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Portainer was unable to retrieve any metrics associated to that node. Please contact your administrator to ensure that the Kubernetes metrics feature is properly configured.\\n </span>\\n</information-panel>\\n<div class=\\\"row\\\" ng-if=\\\"ctrl.state.getMetrics\\\">\\n <div class=\\\"col-md-12\\\">\\n <rd-widget>\\n <div class=\\\"toolBar px-5 pt-5\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'info'\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\"> About statistics </span>\\n </div>\\n </div>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">\\n This view displays real-time statistics about the node <b>{{ ctrl.state.transition.nodeName }}</b\\n >.\\n </span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"refreshRate\\\" class=\\\"col-sm-3 col-md-2 col-lg-2 margin-sm-top control-label text-left\\\"> Refresh rate </label>\\n <div class=\\\"col-sm-3 col-md-2\\\">\\n <select id=\\\"refreshRate\\\" ng-model=\\\"ctrl.state.refreshRate\\\" ng-change=\\\"ctrl.changeUpdateRepeater()\\\" class=\\\"form-control\\\">\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">60s</option>\\n </select>\\n </div>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\" ng-show=\\\"ctrl.state.getMetrics\\\">\\n <div class=\\\"col-lg-6 col-md-12 col-sm-12\\\">\\n <rd-widget>\\n <div class=\\\"toolBar px-5 pt-5\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'svg-memory'\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\"> Memory usage </span>\\n </div>\\n </div>\\n <rd-widget-body>\\n <div class=\\\"chart-node\\\" style=\\\"position: relative\\\">\\n <canvas id=\\\"memoryChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n <div class=\\\"col-lg-6 col-md-12 col-sm-12\\\">\\n <rd-widget>\\n <div class=\\\"toolBar px-5 pt-5\\\">\\n <div class=\\\"toolBarTitle flex\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'cpu'\\\"></pr-icon>\\n </div>\\n <span class=\\\"vertical-center\\\"> CPU usage </span>\\n </div>\\n </div>\\n <rd-widget-body>\\n <div class=\\\"chart-node\\\" style=\\\"position: relative\\\">\\n <canvas id=\\\"cpuChart\\\" width=\\\"770\\\" height=\\\"300\\\"></canvas>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/cluster/node/stats/stats.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Create ConfigMap'\\\"\\n breadcrumbs=\\\"[{ label:'ConfigMaps and Secrets', link:'kubernetes.configurations', linkParams:{ tab: 'configmaps' } }, 'Create a ConfigMap']\\\"\\n reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"kubernetesConfigurationCreationForm\\\" autocomplete=\\\"off\\\">\\n <!-- resource-pool -->\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Namespace</label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <select\\n class=\\\"form-control\\\"\\n id=\\\"resource-pool-selector\\\"\\n ng-model=\\\"ctrl.formValues.ResourcePool\\\"\\n ng-options=\\\"resourcePool.Namespace.Name for resourcePool in ctrl.resourcePools\\\"\\n ng-change=\\\"ctrl.onResourcePoolSelectionChange()\\\"\\n data-cy=\\\"k8sConfigCreate-namespaceDropdown\\\"\\n ></select>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded() && ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 small text-warning vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This namespace has exhausted its resource capacity and you will not be able to deploy the configuration. Contact your administrator to expand the capacity of the\\n namespace.\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 small text-warning vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n </div>\\n </div>\\n <!-- !resource-pool -->\\n\\n <!-- name -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"configuration_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-8 col-lg-9 mb-0\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"configuration_name\\\"\\n ng-model=\\\"ctrl.formValues.Name\\\"\\n ng-pattern=\\\"/^[a-z0-9]([a-z0-9-.]{0,61}[a-z0-9])?$/\\\"\\n ng-change=\\\"ctrl.onChangeName()\\\"\\n placeholder=\\\"my-configmap\\\"\\n auto-focus\\n required\\n data-cy=\\\"k8sConfigCreate-nameInput\\\"\\n />\\n <div ng-show=\\\"kubernetesConfigurationCreationForm.configuration_name.$invalid || ctrl.state.alreadyExist\\\">\\n <div class=\\\"help-block small text-warning\\\">\\n <div ng-messages=\\\"kubernetesConfigurationCreationForm.configuration_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon> This field must consist of lower case alphanumeric characters, '-' or\\n '.', and contain at most 63 characters, and must start and end with an alphanumeric character.</p\\n >\\n </div>\\n <p ng-if=\\\"ctrl.state.alreadyExist\\\" class=\\\"vertical-center\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> A configuration with the same name already exists inside the selected namespace.</p\\n >\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name -->\\n\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <annotations-be-teaser></annotations-be-teaser>\\n </div>\\n\\n <div ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <kubernetes-configuration-data\\n ng-if=\\\"ctrl.formValues\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n is-docker-config=\\\"ctrl.state.isDockerConfig\\\"\\n is-valid=\\\"ctrl.state.isDataValid\\\"\\n on-change-validation=\\\"ctrl.isFormValid()\\\"\\n is-creation=\\\"true\\\"\\n type=\\\"'configmap'\\\"\\n is-editor-dirty=\\\"ctrl.state.isEditorDirty\\\"\\n ></kubernetes-configuration-data>\\n </div>\\n\\n <!-- summary -->\\n <kubernetes-summary-view\\n ng-if=\\\"!(!kubernetesConfigurationCreationForm.$valid || !ctrl.isFormValid() || ctrl.state.actionInProgress)\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n ></kubernetes-summary-view>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!kubernetesConfigurationCreationForm.$valid || !ctrl.isFormValid() || ctrl.state.actionInProgress || !ctrl.formValues.ResourcePool\\\"\\n ng-click=\\\"ctrl.createConfiguration()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n data-cy=\\\"k8sConfigCreate-CreateConfigButton\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Create {{ ctrl.formValues.Kind | kubernetesConfigurationKindText }}</span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Creation in progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configurations/configmap/create/createConfigMap.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'ConfigMap details'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.configuration.Namespace,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{ id: ctrl.configuration.Namespace }\\n },\\n { label:'ConfigMaps and Secrets', link:'kubernetes.configurations', linkParams:{ tab: 'configmaps' } },\\n ctrl.configuration.Name,\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\" data-cy=\\\"k8sConfigDetail-configTab\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'file-code'\\\"></pr-icon>\\n ConfigMap\\n </uib-tab-heading>\\n <div style=\\\"padding: 20px\\\">\\n <table class=\\\"table\\\" data-cy=\\\"k8sConfigDetail-configTable\\\">\\n <tbody>\\n <tr>\\n <td class=\\\"w-[40%] !border-none !pl-0\\\">Name</td>\\n <td class=\\\"!border-none\\\">\\n {{ ctrl.configuration.Name }}\\n </td>\\n </tr>\\n <tr>\\n <td class=\\\"!pl-0\\\">Namespace</td>\\n <td>\\n <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: ctrl.configuration.Namespace })\\\">{{ ctrl.configuration.Namespace }}</a>\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.isSystemNamespace()\\\">system</span>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </uib-tab>\\n <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\" data-cy=\\\"k8sConfigDetail-eventsTab\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'history'\\\"></pr-icon>\\n Events\\n <div ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n {{ ctrl.state.eventWarningCount }} warning(s)\\n </div>\\n </uib-tab-heading>\\n <kubernetes-events-datatable\\n title-text=\\\"Events\\\"\\n title-icon=\\\"history\\\"\\n dataset=\\\"ctrl.events\\\"\\n table-key=\\\"kubernetes.configuration.events\\\"\\n order-by=\\\"Date\\\"\\n reverse-order=\\\"true\\\"\\n loading=\\\"ctrl.state.eventsLoading\\\"\\n refresh-callback=\\\"ctrl.getEvents\\\"\\n >\\n </kubernetes-events-datatable>\\n </uib-tab>\\n <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.configuration.Yaml\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.showEditor()\\\" data-cy=\\\"k8sConfigDetail-yamlTab\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'code'\\\"></pr-icon>\\n YAML\\n </uib-tab-heading>\\n <div class=\\\"px-5 !pt-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n <kubernetes-yaml-inspector key=\\\"configuration-yaml\\\" data=\\\"ctrl.configuration.Yaml\\\"></kubernetes-yaml-inspector>\\n </div>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form ng-if=\\\"!ctrl.isSystemConfig()\\\" class=\\\"form-horizontal\\\" name=\\\"kubernetesConfigurationCreationForm\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <annotations-be-teaser></annotations-be-teaser>\\n </div>\\n\\n <kubernetes-configuration-data\\n ng-if=\\\"ctrl.formValues\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n is-docker-config=\\\"false\\\"\\n is-valid=\\\"ctrl.state.isDataValid\\\"\\n on-change-validation=\\\"ctrl.isFormValid()\\\"\\n is-creation=\\\"false\\\"\\n type=\\\"'configmap'\\\"\\n is-editor-dirty=\\\"ctrl.state.isEditorDirty\\\"\\n ></kubernetes-configuration-data>\\n\\n <!-- summary -->\\n <kubernetes-summary-view\\n ng-if=\\\"!(!ctrl.isFormValid() || !kubernetesConfigurationCreationForm.$valid || ctrl.state.actionInProgress)\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n ></kubernetes-summary-view>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!ctrl.isFormValid() || !kubernetesConfigurationCreationForm.$valid || ctrl.state.actionInProgress\\\"\\n ng-click=\\\"ctrl.updateConfiguration()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n data-cy=\\\"k8sConfigDetail-updateConfig\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Update {{ ctrl.configuration.Kind | kubernetesConfigurationKindText }}</span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Update in progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n <div ng-if=\\\"ctrl.isSystemConfig()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> Data </div>\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr class=\\\"text-muted\\\">\\n <td style=\\\"width: 10%; border-top: none\\\">Key</td>\\n <td style=\\\"width: 90%; border-top: none\\\">Value</td>\\n </tr>\\n\\n <tr ng-repeat=\\\"item in ctrl.formValues.Data track by $index\\\">\\n <td>{{ item.Key }}</td>\\n <td>\\n <div style=\\\"white-space: pre-wrap\\\">{{ item.Value }}</div>\\n <div style=\\\"margin-top: 2px\\\">\\n <span class=\\\"btn btn-primary btn-xs\\\" ng-click=\\\"ctrl.copyConfigurationValue($index)\\\"> <pr-icon icon=\\\"'copy'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>Copy </span>\\n <span id=\\\"copyValueNotification_{{ $index }}\\\" style=\\\"display: none; color: #23ae89; margin-left: 5px\\\" class=\\\"small\\\">\\n <pr-icon icon=\\\"'check'\\\"></pr-icon> copied\\n </span>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.configuration.Used\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-integrated-applications-datatable\\n dataset=\\\"ctrl.configuration.Applications\\\"\\n table-key=\\\"kubernetes.configurations.applications\\\"\\n order-by=\\\"Name\\\"\\n refresh-callback=\\\"ctrl.getApplications\\\"\\n title-text=\\\"Applications using this ConfigMap\\\"\\n title-icon=\\\"svg-laptopcode\\\"\\n >\\n </kubernetes-integrated-applications-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configurations/configmap/edit/configMap.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Create Secret'\\\"\\n breadcrumbs=\\\"[{ label:'ConfigMaps and Secrets', link:'kubernetes.configurations', linkParams:{ tab: 'secrets' } }, 'Create a Secret']\\\"\\n reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"kubernetesConfigurationCreationForm\\\" autocomplete=\\\"off\\\">\\n <!-- resource-pool -->\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <label for=\\\"resource-pool-selector\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Namespace</label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <select\\n class=\\\"form-control\\\"\\n id=\\\"resource-pool-selector\\\"\\n ng-model=\\\"ctrl.formValues.ResourcePool\\\"\\n ng-options=\\\"resourcePool.Namespace.Name for resourcePool in ctrl.resourcePools\\\"\\n ng-change=\\\"ctrl.onResourcePoolSelectionChange()\\\"\\n data-cy=\\\"k8sConfigCreate-namespaceDropdown\\\"\\n ></select>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.resourcePoolHasQuota && ctrl.resourceQuotaCapacityExceeded() && ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 small text-warning vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This namespace has exhausted its resource capacity and you will not be able to deploy the configuration. Contact your administrator to expand the capacity of the\\n namespace.\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 small text-warning vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n </div>\\n </div>\\n <!-- !resource-pool -->\\n\\n <!-- name -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"configuration_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-8 col-lg-9 mb-0\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"configuration_name\\\"\\n ng-model=\\\"ctrl.formValues.Name\\\"\\n ng-pattern=\\\"/^[a-z0-9]([a-z0-9-.]{0,61}[a-z0-9])?$/\\\"\\n ng-change=\\\"ctrl.onChangeName()\\\"\\n placeholder=\\\"my-secret\\\"\\n auto-focus\\n required\\n data-cy=\\\"k8sConfigCreate-nameInput\\\"\\n />\\n <div ng-show=\\\"kubernetesConfigurationCreationForm.configuration_name.$invalid || ctrl.state.alreadyExist\\\">\\n <div class=\\\"help-block small text-warning\\\">\\n <div ng-messages=\\\"kubernetesConfigurationCreationForm.configuration_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon> This field must consist of lower case alphanumeric characters, '-' or\\n '.', and contain at most 63 characters, and must start and end with an alphanumeric character.</p\\n >\\n </div>\\n <p ng-if=\\\"ctrl.state.alreadyExist\\\" class=\\\"vertical-center\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> A configuration with the same name already exists inside the selected namespace.</p\\n >\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name -->\\n\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <annotations-be-teaser></annotations-be-teaser>\\n </div>\\n\\n <div ng-if=\\\"ctrl.formValues.ResourcePool\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Information </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span>\\n More information about types of secret can be found in the official\\n <a class=\\\"hyperlink\\\" href=\\\"https://kubernetes.io/docs/concepts/configuration/secret/#secret-types\\\" target=\\\"_blank\\\">Kubernetes documentation</a>.\\n </span>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"configuration_data_type\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Type</label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <select\\n class=\\\"form-control\\\"\\n id=\\\"configuration_data_type\\\"\\n ng-model=\\\"ctrl.formValues.Type\\\"\\n ng-options=\\\"value.value as value.name for (name, value) in ctrl.KubernetesSecretTypeOptions\\\"\\n ng-change=\\\"ctrl.onSecretTypeChange()\\\"\\n ></select>\\n\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n </div>\\n <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value\\\" class=\\\"col-sm-12 small text-warning vertical-center pt-5\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span\\n >You should only create a service account token Secret object if you can't use the TokenRequest API to obtain a token, and the security exposure of persisting a\\n non-expiring token credential in a readable API object is acceptable to you. <br />See\\n <a href=\\\"https://kubernetes.io/docs/concepts/configuration/secret/#service-account-token-secrets\\\" target=\\\"_blank\\\">service account token secrets</a> in the\\n kubernetes documentation.</span\\n >\\n </div>\\n <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.DOCKERCFG.value\\\" class=\\\"col-sm-12 small text-muted vertical-center pt-5\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span>Ensure the Secret data field contains a <code>.dockercfg</code> key whose value is content of a legacy <code>~/.dockercfg</code> file.</span>\\n </div>\\n <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.DOCKERCONFIGJSON.value\\\" class=\\\"col-sm-12 small text-muted vertical-center pt-5\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span>Ensure the Secret data field contains a <code>.dockerconfigjson</code> key whose value is content of a <code>~/.docker/config.json</code> file.</span>\\n </div>\\n <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.TLS.value\\\" class=\\\"col-sm-12 small text-muted vertical-center pt-5\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span>Ensure the Secret data field contains a <code>tls.key</code> key and a <code>tls.crt</code> key.</span>\\n </div>\\n <div ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.BOOTSTRAPTOKEN.value\\\" class=\\\"col-sm-12 small text-muted vertical-center pt-5\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n <span\\n >Ensure the Secret data field contains a <code>token-id</code> key and a <code>token-secret</code> key. See\\n <a href=\\\"https://kubernetes.io/docs/concepts/configuration/secret/#bootstrap-token-secrets\\\" target=\\\"_blank\\\">bootstrap token secrets</a> in the kubernetes\\n documentation for optional keys.</span\\n >\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.CUSTOM.value\\\">\\n <label for=\\\"configuration_data_customtype\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Custom Type</label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <input\\n type=\\\"text\\\"\\n name=\\\"custom_type\\\"\\n class=\\\"form-control\\\"\\n id=\\\"configuration_data_customtype\\\"\\n ng-model=\\\"ctrl.formValues.customType\\\"\\n ng-pattern=\\\"/^[a-z0-9]([a-z0-9-.]{0,61}[a-z0-9])?$/\\\"\\n required\\n />\\n <div ng-show=\\\"kubernetesConfigurationCreationForm.custom_type.$invalid\\\">\\n <div class=\\\"help-block small text-warning\\\">\\n <div ng-messages=\\\"kubernetesConfigurationCreationForm.custom_type.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class=\\\"vertical-center\\\"></pr-icon> This field must consist of lower case alphanumeric characters, '-'\\n or '.', and contain at most 63 characters, and must start and end with an alphanumeric character.</p\\n >\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Type === ctrl.KubernetesSecretTypeOptions.SERVICEACCOUNTTOKEN.value\\\">\\n <label for=\\\"service_account\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Service Account</label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <select\\n class=\\\"form-control\\\"\\n id=\\\"service_account\\\"\\n ng-selected=\\\"$first\\\"\\n ng-model=\\\"ctrl.formValues.ServiceAccountName\\\"\\n ng-options=\\\"value.metadata.name as value.metadata.name for (name, value) in ctrl.availableServiceAccounts\\\"\\n data-cy=\\\"k8sConfigCreate-serviceAccountDropdown\\\"\\n ng-change=\\\"ctrl.onChangeServiceAccount()\\\"\\n required\\n ></select>\\n <div class=\\\"help-block small text-warning\\\" ng-messages=\\\"kubernetesConfigurationCreationForm.service_account.$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>This field is required.</p>\\n </div>\\n </div>\\n </div>\\n\\n <kubernetes-configuration-data\\n ng-if=\\\"ctrl.formValues\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n is-docker-config=\\\"ctrl.state.isDockerConfig\\\"\\n is-valid=\\\"ctrl.state.isDataValid\\\"\\n on-change-validation=\\\"ctrl.isFormValid()\\\"\\n is-creation=\\\"true\\\"\\n type=\\\"'secret'\\\"\\n is-editor-dirty=\\\"ctrl.state.isEditorDirty\\\"\\n ></kubernetes-configuration-data>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.secretWarningMessage\\\">\\n <div class=\\\"col-sm-12 small text-warning vertical-center pt-5\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span>{{ ctrl.state.secretWarningMessage }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <!-- summary -->\\n <kubernetes-summary-view\\n ng-if=\\\"!(!kubernetesConfigurationCreationForm.$valid || !ctrl.isFormValid() || ctrl.state.actionInProgress)\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n ></kubernetes-summary-view>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!kubernetesConfigurationCreationForm.$valid || !ctrl.isFormValid() || ctrl.state.actionInProgress || !ctrl.formValues.ResourcePool\\\"\\n ng-click=\\\"ctrl.createConfiguration()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n data-cy=\\\"k8sConfigCreate-CreateConfigButton\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Create {{ ctrl.formValues.Kind | kubernetesConfigurationKindText }}</span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Creation in progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configurations/secret/create/createSecret.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Secret details'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.configuration.Namespace,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{ id: ctrl.configuration.Namespace }\\n },\\n { label:'ConfigMaps and Secrets', link:'kubernetes.configurations', linkParams:{ tab: 'secrets' } },\\n ctrl.configuration.Name,\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\" data-cy=\\\"k8sConfigDetail-configTab\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'lock'\\\"></pr-icon>\\n Secret\\n </uib-tab-heading>\\n <div style=\\\"padding: 20px\\\">\\n <table class=\\\"table\\\" data-cy=\\\"k8sConfigDetail-configTable\\\">\\n <tbody>\\n <tr>\\n <td class=\\\"w-[40%] !border-none !pl-0\\\">Name</td>\\n <td class=\\\"!border-none\\\">\\n {{ ctrl.configuration.Name }}\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.configuration.IsRegistrySecret\\\">system</span>\\n </td>\\n </tr>\\n <tr>\\n <td class=\\\"!pl-0\\\">Namespace</td>\\n <td>\\n <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: ctrl.configuration.Namespace })\\\">{{ ctrl.configuration.Namespace }}</a>\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.isSystemNamespace()\\\">system</span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"ctrl.secretTypeName\\\">\\n <td class=\\\"!pl-0\\\">Secret Type</td>\\n <td>\\n {{ ctrl.secretTypeName }}\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </uib-tab>\\n <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\" data-cy=\\\"k8sConfigDetail-eventsTab\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'history'\\\"></pr-icon>\\n Events\\n <div ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n {{ ctrl.state.eventWarningCount }} warning(s)\\n </div>\\n </uib-tab-heading>\\n <kubernetes-events-datatable\\n title-text=\\\"Events\\\"\\n title-icon=\\\"history\\\"\\n dataset=\\\"ctrl.events\\\"\\n table-key=\\\"kubernetes.configuration.events\\\"\\n order-by=\\\"Date\\\"\\n reverse-order=\\\"true\\\"\\n loading=\\\"ctrl.state.eventsLoading\\\"\\n refresh-callback=\\\"ctrl.getEvents\\\"\\n >\\n </kubernetes-events-datatable>\\n </uib-tab>\\n <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.configuration.Yaml\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.showEditor()\\\" data-cy=\\\"k8sConfigDetail-yamlTab\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'code'\\\"></pr-icon>\\n YAML\\n </uib-tab-heading>\\n <div class=\\\"px-5 !pt-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n <kubernetes-yaml-inspector key=\\\"configuration-yaml\\\" data=\\\"ctrl.configuration.Yaml\\\"></kubernetes-yaml-inspector>\\n </div>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form ng-if=\\\"!ctrl.isSystemConfig()\\\" class=\\\"form-horizontal\\\" name=\\\"kubernetesConfigurationCreationForm\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <annotations-be-teaser></annotations-be-teaser>\\n </div>\\n\\n <kubernetes-configuration-data\\n ng-if=\\\"ctrl.formValues\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n is-docker-config=\\\"ctrl.state.isDockerConfig\\\"\\n is-valid=\\\"ctrl.state.isDataValid\\\"\\n on-change-validation=\\\"ctrl.isFormValid()\\\"\\n is-creation=\\\"false\\\"\\n type=\\\"'secret'\\\"\\n is-editor-dirty=\\\"ctrl.state.isEditorDirty\\\"\\n ></kubernetes-configuration-data>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.secretWarningMessage\\\">\\n <div class=\\\"col-sm-12 small text-warning vertical-center pt-5\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span>{{ ctrl.state.secretWarningMessage }}</span>\\n </div>\\n </div>\\n\\n <!-- summary -->\\n <kubernetes-summary-view\\n ng-if=\\\"!(!ctrl.isFormValid() || !kubernetesConfigurationCreationForm.$valid || ctrl.state.actionInProgress)\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n ></kubernetes-summary-view>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!ctrl.isFormValid() || !kubernetesConfigurationCreationForm.$valid || ctrl.state.actionInProgress\\\"\\n ng-click=\\\"ctrl.updateConfiguration()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n data-cy=\\\"k8sConfigDetail-updateConfig\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Update {{ ctrl.configuration.Kind | kubernetesConfigurationKindText }}</span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Update in progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n <div ng-if=\\\"ctrl.isSystemConfig()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px\\\"> Data </div>\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr class=\\\"text-muted\\\">\\n <td style=\\\"width: 10%; border-top: none\\\">Key</td>\\n <td style=\\\"width: 90%; border-top: none\\\">Value</td>\\n </tr>\\n\\n <tr ng-repeat=\\\"item in ctrl.formValues.Data track by $index\\\">\\n <td>{{ item.Key }}</td>\\n <td>\\n <div style=\\\"white-space: pre-wrap\\\">{{ item.Value }}</div>\\n <div style=\\\"margin-top: 2px\\\">\\n <span class=\\\"btn btn-primary btn-xs\\\" ng-click=\\\"ctrl.copyConfigurationValue($index)\\\"> <pr-icon icon=\\\"'copy'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>Copy </span>\\n <span id=\\\"copyValueNotification_{{ $index }}\\\" style=\\\"display: none; color: #23ae89; margin-left: 5px\\\" class=\\\"small\\\">\\n <pr-icon icon=\\\"'check'\\\"></pr-icon> copied\\n </span>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.configuration.Used\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-integrated-applications-datatable\\n dataset=\\\"ctrl.configuration.Applications\\\"\\n table-key=\\\"kubernetes.configurations.applications\\\"\\n order-by=\\\"Name\\\"\\n refresh-callback=\\\"ctrl.getApplications\\\"\\n title-text=\\\"Applications using this secret\\\"\\n title-icon=\\\"svg-laptopcode\\\"\\n >\\n </kubernetes-integrated-applications-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configurations/secret/edit/secret.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Kubernetes features configuration'\\\"\\n breadcrumbs=\\\"[\\n { label:'Environments', link:'portainer.endpoints' },\\n {\\n label:ctrl.endpoint.Name,\\n link: 'portainer.endpoints.endpoint',\\n linkParams:{id: ctrl.endpoint.Id}\\n },\\n 'Kubernetes configuration'\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"kubernetesClusterSetupForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Networking - Services </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 text-muted small\\\">\\n <p> Enabling the load balancer feature will allow users to expose application they deploy over an external IP address assigned by cloud provider. </p>\\n <div class=\\\"!inline-flex gap-1 !align-top\\\">\\n <div class=\\\"icon icon-sm\\\"><pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon></div>\\n <div>Ensure that your cloud provider allows you to create load balancers if you want to use this feature. Might incur costs.</div>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 mt-4\\\">\\n <label class=\\\"control-label col-sm-5 col-lg-4 px-0 text-left\\\"> Allow users to use external load balancer </label>\\n <label class=\\\"switch col-sm-8 mb-0\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.formValues.UseLoadBalancer\\\" /><span class=\\\"slider round\\\" data-cy=\\\"kubeSetup-loadBalancerToggle\\\"></span>\\n </label>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Networking - Ingresses </div>\\n\\n <ingress-class-datatable\\n on-change-controllers=\\\"(ctrl.onChangeControllers)\\\"\\n allow-none-ingress-class=\\\"ctrl.formValues.AllowNoneIngressClass\\\"\\n ingress-controllers=\\\"ctrl.originalIngressControllers\\\"\\n is-loading=\\\"ctrl.isIngressControllersLoading\\\"\\n description=\\\"'Enabling ingress controllers in your cluster allows them to be available in the Portainer UI for users to publish applications over HTTP/HTTPS. A controller must have a class name for it to be included here.'\\\"\\n no-ingress-controller-label=\\\"'No supported ingress controllers found.'\\\"\\n view=\\\"'cluster'\\\"\\n ></ingress-class-datatable>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"ctrl.formValues.AllowNoneIngressClass\\\"\\n name=\\\"'allowNoIngressClass'\\\"\\n label=\\\"'Allow ingress class to be set to "none"'\\\"\\n tooltip=\\\"'This allows users setting up ingresses to select "none" as the ingress class.'\\\"\\n on-change=\\\"(ctrl.onToggleAllowNoneIngressClass)\\\"\\n label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n switch-class=\\\"'col-sm-8'\\\"\\n >\\n </por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"ctrl.formValues.IngressAvailabilityPerNamespace\\\"\\n name=\\\"'ingressAvailabilityPerNamespace'\\\"\\n label=\\\"'Configure ingress controller availability per namespace'\\\"\\n tooltip=\\\"'This allows an administrator to configure, in each namespace, which ingress controllers will be available for users to select when setting up ingresses for applications.'\\\"\\n on-change=\\\"(ctrl.onToggleIngressAvailabilityPerNamespace)\\\"\\n label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n switch-class=\\\"'col-sm-8'\\\"\\n >\\n </por-switch-field>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"ctrl.formValues.RestrictStandardUserIngressW\\\"\\n name=\\\"'restrictStandardUserIngressW'\\\"\\n label=\\\"'Only allow admins to deploy ingresses'\\\"\\n feature-id=\\\"ctrl.limitedFeatureIngressDeploy\\\"\\n tooltip=\\\"'Enforces only allowing admins to deploy ingresses (and disallows standard users from doing so).'\\\"\\n on-change=\\\"(ctrl.onToggleRestrictStandardUserIngressW)\\\"\\n label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n switch-class=\\\"'col-sm-8 text-muted'\\\"\\n data-cy=\\\"kubeSetup-restrictStandardUserIngressWToggle\\\"\\n disabled=\\\"!ctrl.isRBACEnabled\\\"\\n >\\n </por-switch-field>\\n </div>\\n </div>\\n\\n <div class=\\\"mb-4 !inline-flex gap-1 !align-top\\\">\\n <div class=\\\"icon icon-sm\\\"><pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\"></pr-icon></div>\\n <div class=\\\"text-muted small\\\"\\n >You may set up ingress defaults (hostnames and annotations) via Create/Edit ingress. Users may then select them via the hostname dropdown in Create/Edit\\n application.</div\\n >\\n </div>\\n\\n <!-- auto update window -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Change Window Settings </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"ctrl.state.autoUpdateSettings.Enabled\\\"\\n name=\\\"'disableSysctlSettingForRegularUsers'\\\"\\n label=\\\"'Enable Change Window'\\\"\\n feature-id=\\\"ctrl.limitedFeatureAutoWindow\\\"\\n tooltip=\\\"'GitOps updates to stacks or applications outside the defined change window will not occur.'\\\"\\n on-change=\\\"(ctrl.onToggleAutoUpdate)\\\"\\n label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n switch-class=\\\"'col-sm-8 text-muted'\\\"\\n >\\n </por-switch-field>\\n </div>\\n </div>\\n\\n <time-window-picker ng-show=\\\"ctrl.state.autoUpdateSettings.Enabled\\\" time-window=\\\"ctrl.state.autoUpdateSettings\\\" time-zone=\\\"ctrl.state.timeZone\\\"></time-window-picker>\\n\\n <!-- #region SECURITY -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Security </div>\\n\\n <div\\n ng-if=\\\"!ctrl.isRBACEnabled\\\"\\n class=\\\"small mt-1 mb-6 flex w-full gap-1 rounded-lg border border-solid border-warning-5 bg-warning-2 p-4 text-warning-8 th-highcontrast:bg-yellow-11 th-highcontrast:text-white th-dark:bg-yellow-11 th-dark:text-white\\\"\\n >\\n <div class=\\\"mt-0.5\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" class-name=\\\"'text-warning-7 th-dark:text-white th-highcontrast:text-white'\\\"></pr-icon>\\n </div>\\n <div>\\n <p> Your cluster does not have Kubernetes role-based access control (RBAC) enabled. </p>\\n <p> This means you can't use Portainer RBAC functionality to regulate access to environment resources based on user roles. </p>\\n <p class=\\\"mb-0\\\">\\n To enable RBAC, start the <a\\n class=\\\"th-highcontrast:text-blue-4 th-dark:text-blue-7\\\"\\n href=\\\"https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver\\\"\\n target=\\\"_blank\\\"\\n >API server</a\\n > with the <code class=\\\"bg-gray-4 box-decoration-clone th-highcontrast:bg-black th-dark:bg-black\\\">--authorization-mode</code> flag set to a\\n comma-separated list that includes <code class=\\\"bg-gray-4 th-highcontrast:bg-black th-dark:bg-black\\\">RBAC</code>, for example: \\n <code class=\\\"bg-gray-4 box-decoration-clone th-highcontrast:bg-black th-dark:bg-black\\\">kube-apiserver --authorization-mode=Example1,RBAC,Example2</code>.\\n </p>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n By default, all the users have access to the default namespace. Enable this option to set accesses on the default namespace.\\n </span>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"ctrl.formValues.RestrictDefaultNamespace\\\"\\n name=\\\"'restrictDefaultNs'\\\"\\n label=\\\"'Restrict access to the default namespace'\\\"\\n on-change=\\\"(ctrl.onToggleRestrictNs)\\\"\\n label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n switch-class=\\\"'col-sm-8 text-muted'\\\"\\n data-cy=\\\"kubeSetup-restrictDefaultNsToggle\\\"\\n disabled=\\\"!ctrl.isRBACEnabled\\\"\\n >\\n </por-switch-field>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Resources and Metrics </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 text-muted small\\\">\\n <p>\\n By ENABLING resource over-commit, you are able to assign more resources to namespaces than is physically available in the cluster. This may lead to unexpected\\n deployment failures if there is insufficient resource to service demand.\\n </p>\\n <div class=\\\"mt-1 inline-flex gap-1 !align-top\\\">\\n <div class=\\\"icon icon-sm\\\"><pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon></div>\\n <div\\n >By DISABLING resource over-commit (highly recommended), you are only able to assign resources to namespaces that are less (in aggregate) than the cluster total\\n minus any system resource reservation.</div\\n >\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 mt-2\\\">\\n <por-switch-field\\n data-cy=\\\"'kubeSetup-resourceOverCommitToggle'\\\"\\n label=\\\"'Allow resource over-commit'\\\"\\n name=\\\"'resource-over-commit-switch'\\\"\\n feature-id=\\\"ctrl.limitedFeature\\\"\\n checked=\\\"ctrl.formValues.EnableResourceOverCommit\\\"\\n on-change=\\\"(ctrl.onChangeEnableResourceOverCommit)\\\"\\n label-class=\\\"'col-sm-5 col-lg-4 px-0 !m-0'\\\"\\n switch-class=\\\"'col-sm-8'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 text-muted small\\\">\\n <p> Enabling this feature will allow users to use specific features like autoscaling and to see container and node resource usage. </p>\\n <div class=\\\"mt-1 !inline-flex gap-1 !align-top\\\">\\n <div class=\\\"icon icon-small\\\"><pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon></div>\\n <div\\n >Ensure that\\n <a href=\\\"https://kubernetes.io/docs/tasks/debug-application-cluster/resource-metrics-pipeline/#metrics-server\\\" target=\\\"_blank\\\">metrics server</a> or\\n <a href=\\\"https://github.com/kubernetes-sigs/prometheus-adapter\\\" target=\\\"_blank\\\">prometheus</a> is running inside your cluster.</div\\n >\\n </div>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label col-sm-5 col-lg-4 px-0 text-left\\\"> Enable features using the metrics API </label>\\n <label class=\\\"switch col-sm-8\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.formValues.UseServerMetrics\\\" ng-change=\\\"ctrl.enableMetricsServer()\\\" />\\n <span class=\\\"slider round\\\" data-cy=\\\"kubeSetup-metricsToggle\\\"></span>\\n </label>\\n </div>\\n <div ng-if=\\\"ctrl.state.metrics.pending && ctrl.state.metrics.userClick\\\" class=\\\"col-sm-12 small text-muted\\\" style=\\\"margin-top: 5px\\\">\\n Checking metrics API... <pr-icon icon=\\\"'loader'\\\" class-name=\\\"'ml-0.5'\\\"></pr-icon>\\n </div>\\n <div\\n ng-if=\\\"!ctrl.state.metrics.pending && ctrl.state.metrics.isServerRunning && ctrl.state.metrics.userClick\\\"\\n class=\\\"col-sm-12 small text-muted vertical-center\\\"\\n style=\\\"margin-top: 5px\\\"\\n >\\n <pr-icon icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon> Successfully reached metrics API\\n </div>\\n <div\\n ng-if=\\\"!ctrl.state.metrics.pending && !ctrl.state.metrics.isServerRunning && ctrl.state.metrics.userClick\\\"\\n class=\\\"col-sm-12 small text-muted vertical-center mt-2\\\"\\n >\\n <pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\"></pr-icon> Unable to reach metrics API, make sure metrics server is properly deployed inside that cluster.\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Available storage options </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.storageClassAvailable()\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Unable to detect any storage class available to persist data. Users won't be able to persist application data inside this cluster.\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.storageClassAvailable()\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n <p>\\n Select which storage options will be available for use when deploying applications. Have a look at your storage driver documentation to figure out which access\\n policy to configure and if the volume expansion capability is supported.\\n </p>\\n <p>\\n You can find more information about access modes\\n <a href=\\\"https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes\\\" target=\\\"_blank\\\">in the official Kubernetes documentation</a>.\\n </p>\\n </span>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.storageClassAvailable()\\\">\\n <div style=\\\"margin-top: 10px\\\" class=\\\"col-sm-12\\\">\\n <table class=\\\"table\\\" style=\\\"table-layout: fixed\\\">\\n <tbody>\\n <tr class=\\\"text-muted\\\">\\n <td>Storage</td>\\n <td>Shared access policy</td>\\n <td>Volume expansion</td>\\n </tr>\\n <tr ng-repeat=\\\"class in ctrl.StorageClasses\\\">\\n <td>\\n <div class=\\\"flex h-full flex-row items-center\\\">\\n <label class=\\\"switch mr-2 mb-0\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"class.selected\\\" /><span class=\\\"slider round\\\" data-cy=\\\"kubeSetup-storageToggle{{ class.Name }}\\\"></span>\\n </label>\\n <span>{{ class.Name }}</span>\\n </div>\\n </td>\\n <td>\\n <storage-access-mode-selector\\n options=\\\"ctrl.availableAccessModes\\\"\\n value=\\\"class.AccessModes\\\"\\n on-change=\\\"(ctrl.onChangeStorageClassAccessMode)\\\"\\n storage-class-name=\\\"class.Name\\\"\\n ></storage-access-mode-selector>\\n </td>\\n <td>\\n <div class=\\\"flex h-full flex-row items-center\\\">\\n <label class=\\\"switch mr-2 mb-0\\\"\\n ><input type=\\\"checkbox\\\" ng-model=\\\"class.AllowVolumeExpansion\\\" /><span\\n class=\\\"slider round\\\"\\n data-cy=\\\"kubeSetup-storageExpansionToggle{{ class.Name }}\\\"\\n ></span>\\n </label>\\n </div>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <span ng-if=\\\"!ctrl.hasValidStorageConfiguration()\\\" class=\\\"text-muted small vertical-center mt-2\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Shared access policy configuration required\\n </span>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-click=\\\"ctrl.configure()\\\"\\n ng-disabled=\\\"ctrl.state.actionInProgress || !kubernetesClusterSetupForm.$valid || !ctrl.hasValidStorageConfiguration()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n analytics-on\\n analytics-if=\\\"ctrl.restrictDefaultToggledOn()\\\"\\n analytics-category=\\\"kubernetes\\\"\\n analytics-event=\\\"kubernetes-configure\\\"\\n analytics-properties=\\\"{ metadata: { restrictAccessToDefaultNamespace: ctrl.formValues.RestrictDefaultNamespace } }\\\"\\n data-cy=\\\"kubeSetup-saveConfigurationButton\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Save configuration</span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Saving configuration...</span>\\n </button>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/configure/configure.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Advanced deployment'\\\" breadcrumbs=\\\"['Deploy Kubernetes resources']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <kubernetes-feedback-panel></kubernetes-feedback-panel>\\n\\n <div class=\\\"row kubernetes-deploy\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\">\\n <uib-tab-heading> <pr-icon icon=\\\"'code'\\\"></pr-icon> Deploy </uib-tab-heading>\\n <form class=\\\"form-horizontal mt-6\\\" name=\\\"ctrl.deploymentForm\\\">\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Namespace\\\">\\n <label for=\\\"toggle_logo\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left\\\">\\n Use namespace(s) specified from manifest\\n <portainer-tooltip message=\\\"'If you have defined namespaces in your deployment file turning this on will enforce the use of those only in the deployment'\\\">\\n </portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 vertical-center pt-3\\\">\\n <label class=\\\"switch\\\">\\n <input type=\\\"checkbox\\\" name=\\\"toggle_logo\\\" ng-model=\\\"ctrl.formValues.namespace_toggle\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n <!-- <span class=\\\"ml-2 mb-1 switch-values\\\" ng-if=\\\"ctrl.formValues.namespace_toggle\\\">Yes</span>\\n <span class=\\\"ml-2 mb-1 switch-values\\\" ng-if=\\\"!ctrl.formValues.namespace_toggle\\\">No</span> -->\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.formValues.Namespace\\\">\\n <label for=\\\"target_node\\\" class=\\\"col-lg-2 col-sm-3 control-label text-left\\\">Namespace</label>\\n <div class=\\\"col-sm-8\\\">\\n <select\\n ng-disabled=\\\"ctrl.formValues.namespace_toggle\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"ctrl.formValues.Namespace\\\"\\n ng-options=\\\"namespace.Name as namespace.Name for namespace in ctrl.namespaces\\\"\\n ></select>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.formValues.Namespace\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n You do not have access to any namespace. Contact your administrator to get access to a namespace.\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"stack_name\\\" class=\\\"col-lg-2 col-sm-3 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"ctrl.formValues.StackName\\\" id=\\\"stack_name\\\" placeholder=\\\"my-app\\\" auto-focus />\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n <box-selector\\n slim=\\\"true\\\"\\n radio-name=\\\"'method'\\\"\\n value=\\\"ctrl.state.BuildMethod\\\"\\n options=\\\"ctrl.methodOptions\\\"\\n data-cy=\\\"k8sAppDeploy-buildSelector\\\"\\n on-change=\\\"(ctrl.onChangeMethod)\\\"\\n ></box-selector>\\n\\n <div ng-if=\\\"ctrl.state.BuildMethod !== ctrl.BuildMethods.CUSTOM_TEMPLATE\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Deployment type </div>\\n <box-selector\\n radio-name=\\\"'deploy'\\\"\\n value=\\\"ctrl.state.DeployType\\\"\\n options=\\\"ctrl.deployOptions\\\"\\n data-cy=\\\"k8sAppDeploy-deploymentSelector\\\"\\n on-change=\\\"(ctrl.onChangeDeployType)\\\"\\n ></box-selector>\\n </div>\\n\\n <!-- repository -->\\n <git-form\\n ng-if=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.GIT\\\"\\n value=\\\"ctrl.formValues\\\"\\n on-change=\\\"(ctrl.onChangeFormValues)\\\"\\n environment-type=\\\"KUBERNETES\\\"\\n is-force-pull-visible=\\\"false\\\"\\n is-additional-files-field-visible=\\\"true\\\"\\n is-auth-explanation-visible=\\\"true\\\"\\n deploy-method=\\\"{{ ctrl.state.DeployType === ctrl.ManifestDeployTypes.COMPOSE ? 'compose' : 'manifest' }}\\\"\\n base-webhook-url=\\\"{{ ctrl.state.baseWebhookUrl }}\\\"\\n webhook-id=\\\"{{ ctrl.state.webhookId }}\\\"\\n webhooks-docs=\\\"https://docs.portainer.io/user/kubernetes/applications/webhooks\\\"\\n ></git-form>\\n <!-- !repository -->\\n\\n <div ng-show=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.CUSTOM_TEMPLATE\\\">\\n <custom-template-selector\\n new-template-path=\\\"kubernetes.templates.custom.new\\\"\\n stack-type=\\\"3\\\"\\n on-change=\\\"(ctrl.onChangeTemplateId)\\\"\\n value=\\\"ctrl.state.templateId\\\"\\n ></custom-template-selector>\\n\\n <custom-templates-variables-field\\n ng-if=\\\"ctrl.isTemplateVariablesEnabled && ctrl.state.template\\\"\\n definitions=\\\"ctrl.state.template.Variables\\\"\\n value=\\\"ctrl.formValues.Variables\\\"\\n on-change=\\\"(ctrl.onChangeTemplateVariables)\\\"\\n ></custom-templates-variables-field>\\n </div>\\n\\n <span ng-if=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.CUSTOM_TEMPLATE && ctrl.state.templateId && ctrl.state.templateLoadFailed\\\">\\n <p class=\\\"small vertical-center text-danger mb-5\\\" ng-if=\\\"ctrl.currentUser.isAdmin || ctrl.currentUser.id === ctrl.state.template.CreatedByUserId\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>Custom template could not be loaded, please\\n <a ui-sref=\\\"kubernetes.templates.custom.edit({id: ctrl.state.templateId})\\\">click here</a> for configuration.</p\\n >\\n <p class=\\\"small vertical-center text-danger mb-5\\\" ng-if=\\\"!(ctrl.currentUser.isAdmin || ctrl.currentUser.id === ctrl.state.template.CreatedByUserId)\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>Custom template could not be loaded, please contact your administrator.</p\\n >\\n </span>\\n\\n <!-- editor -->\\n <div class=\\\"mt-4\\\">\\n <web-editor-form\\n ng-if=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.WEB_EDITOR || (ctrl.state.BuildMethod === ctrl.BuildMethods.CUSTOM_TEMPLATE && ctrl.state.templateId)\\\"\\n identifier=\\\"kubernetes-deploy-editor\\\"\\n value=\\\"ctrl.formValues.EditorContent\\\"\\n on-change=\\\"(ctrl.onChangeFileContent)\\\"\\n ng-required=\\\"true\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your manifest file here\\\"\\n read-only=\\\"ctrl.state.isEditorReadOnly\\\"\\n >\\n <editor-description>\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n This feature allows you to deploy any kind of Kubernetes resource in this environment (Deployment, Secret, ConfigMap...).\\n </p>\\n <p>\\n You can get more information about Kubernetes file format in the\\n <a href=\\\"https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/\\\" target=\\\"_blank\\\">official documentation</a>.\\n </p>\\n </editor-description>\\n </web-editor-form>\\n </div>\\n <!-- !editor -->\\n\\n <!-- url -->\\n <div ng-show=\\\"ctrl.state.BuildMethod === ctrl.BuildMethods.URL\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> URL </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> Indicate the URL to the manifest. </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"manifest_url\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">URL</label>\\n <div class=\\\"col-sm-8\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"ctrl.formValues.ManifestURL\\\"\\n id=\\\"manifest_url\\\"\\n placeholder=\\\"https://raw.githubusercontent.com/kubernetes/website/main/content/en/examples/controllers/nginx-deployment.yaml\\\"\\n data-cy=\\\"k8sAppDeploy-urlFileUrl\\\"\\n />\\n </div>\\n </div>\\n </div>\\n <!-- !url -->\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!ctrl.deploymentForm.$valid || ctrl.disableDeploy()\\\"\\n ng-click=\\\"ctrl.deploy()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n data-cy=\\\"k8sAppDeploy-deployButton\\\"\\n analytics-on\\n analytics-category=\\\"kubernetes\\\"\\n analytics-event=\\\"kubernetes-application-advanced-deployment\\\"\\n analytics-properties=\\\"ctrl.buildAnalyticsProperties()\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.actionInProgress\\\">Deploy</span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Deployment in progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </uib-tab>\\n\\n <uib-tab index=\\\"1\\\" disable=\\\"ctrl.state.tabLogsDisabled\\\">\\n <uib-tab-heading> <pr-icon icon=\\\"'file-text'\\\"></pr-icon> Logs </uib-tab-heading>\\n <form class=\\\"form-horizontal mt-3\\\">\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.activeTab === 1\\\">\\n <div class=\\\"col-sm-12\\\">\\n <code-editor identifier=\\\"kubernetes-deploy-logs\\\" yml=\\\"true\\\" read-only=\\\"true\\\" value=\\\"ctrl.errorLog\\\"></code-editor>\\n </div>\\n </div>\\n </form>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/deploy/deploy.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Namespace access management'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.pool.Namespace.Name,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{id: ctrl.pool.Namespace.Name}\\n },\\n 'Access management'\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.pool\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"layers\\\" title-text=\\\"Namespace\\\"></rd-widget-header>\\n <rd-widget-body>\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td class=\\\"!pl-0\\\">Name</td>\\n <td>\\n {{ ctrl.pool.Namespace.Name }}\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget ng-if=\\\"ctrl.availableUsersAndTeams\\\">\\n <rd-widget-header icon=\\\"user-x\\\" title-text=\\\"Create access\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <div\\n ng-if=\\\"!ctrl.isRBACEnabled\\\"\\n class=\\\"small mx-[15px] mb-6 flex gap-1 rounded-lg border border-solid border-warning-5 bg-warning-2 p-4 text-warning-8 th-highcontrast:bg-yellow-11 th-highcontrast:text-white th-dark:bg-yellow-11 th-dark:text-white\\\"\\n >\\n <div class=\\\"mt-0.5\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" feather=\\\"true\\\" class-name=\\\"'text-warning-7 th-dark:text-white th-highcontrast:text-white'\\\"></pr-icon>\\n </div>\\n <div>\\n <p> Your cluster does not have Kubernetes role-based access control (RBAC) enabled. </p>\\n <p> This means you can't use Portainer RBAC functionality to regulate access to environment resources based on user roles. </p>\\n <p class=\\\"mb-0\\\">\\n To enable RBAC, start the <a\\n class=\\\"th-highcontrast:text-blue-4 th-dark:text-blue-7\\\"\\n href=\\\"https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver\\\"\\n target=\\\"_blank\\\"\\n >API server</a\\n > with the <code class=\\\"bg-gray-4 box-decoration-clone th-highcontrast:bg-black th-dark:bg-black\\\">--authorization-mode</code> flag set to a\\n comma-separated list that includes <code class=\\\"bg-gray-4 th-highcontrast:bg-black th-dark:bg-black\\\">RBAC</code>, for example: \\n <code class=\\\"bg-gray-4 box-decoration-clone th-highcontrast:bg-black th-dark:bg-black\\\">kube-apiserver --authorization-mode=Example1,RBAC,Example2</code>.\\n </p>\\n </div>\\n </div>\\n <span class=\\\"col-sm-12 small text-warning\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Adding user access will require the affected user(s) to logout and login for the changes to be taken into account.\\n </p>\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" for=\\\"users-selector\\\"> Select user(s) and/or team(s) </label>\\n <div class=\\\"col-sm-9 col-lg-4\\\">\\n <span class=\\\"small text-muted\\\" ng-if=\\\"ctrl.availableUsersAndTeams.length === 0\\\">\\n No user nor team access has been set on the environment. Head over to the\\n <a ui-sref=\\\"portainer.endpoints\\\">Environments view</a> to manage them.\\n </span>\\n <namespace-access-users-selector\\n ng-if=\\\"ctrl.availableUsersAndTeams.length > 0\\\"\\n input-id=\\\"users-selector\\\"\\n value=\\\"ctrl.formValues.multiselectOutput\\\"\\n options=\\\"ctrl.availableUsersAndTeams\\\"\\n on-change=\\\"(ctrl.onUsersAndTeamsChange)\\\"\\n ></namespace-access-users-selector>\\n </div>\\n </div>\\n\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm vertical-center !ml-0\\\"\\n ng-disabled=\\\"ctrl.formValues.multiselectOutput.length === 0 || ctrl.actionInProgress\\\"\\n ng-click=\\\"ctrl.authorizeAccess()\\\"\\n button-spinner=\\\"ctrl.actionInProgress\\\"\\n >\\n <span class=\\\"vertical-center\\\" ng-hide=\\\"ctrl.state.actionInProgress\\\"><pr-icon icon=\\\"'plus'\\\" class=\\\"vertical-center\\\"></pr-icon> Create access</span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Creating access...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <access-datatable\\n ng-if=\\\"ctrl.authorizedUsersAndTeams\\\"\\n title-text=\\\"Namespace access\\\"\\n title-icon=\\\"user-x\\\"\\n table-key=\\\"kubernetes_resourcepool_access\\\"\\n order-by=\\\"Name\\\"\\n dataset=\\\"ctrl.authorizedUsersAndTeams\\\"\\n remove-action=\\\"ctrl.unauthorizeAccess\\\"\\n >\\n </access-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/access/resourcePoolAccess.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n data-cy=\\\"'k8sNamespaceCreate-enableQuotaToggle'\\\"\\n label=\\\"'Enable quota'\\\"\\n label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n name=\\\"'k8s-resourcepool-storagequota'\\\"\\n feature-id=\\\"$ctrl.featureId\\\"\\n checked=\\\"$ctrl.value\\\"\\n on-change=\\\"($ctrl.handleChange)\\\"\\n ></por-switch-field>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/components/storage-class-switch/storage-class-switch.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"$ctrl.state.viewReady\\\"\\n title=\\\"'Create a namespace'\\\"\\n breadcrumbs=\\\"[{ label:'Namespaces', link:'kubernetes.resourcePools' }, 'Create a namespace']\\\"\\n reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"$ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"$ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\" name=\\\"resourcePoolCreationForm\\\">\\n <!-- #region NAME INPUT -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"pool_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-8\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"pool_name\\\"\\n ng-model=\\\"$ctrl.formValues.Name\\\"\\n ng-pattern=\\\"/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/\\\"\\n ng-change=\\\"$ctrl.onChangeName()\\\"\\n placeholder=\\\"my-project\\\"\\n data-cy=\\\"k8sNamespaceCreate-namespaceNameInput\\\"\\n required\\n auto-focus\\n />\\n <span class=\\\"help-block\\\">\\n <div class=\\\"form-group\\\" ng-show=\\\"resourcePoolCreationForm.pool_name.$invalid || $ctrl.state.isAlreadyExist || $ctrl.state.hasPrefixKube\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"resourcePoolCreationForm.pool_name.$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>This field is required.</p>\\n <p class=\\\"vertical-center\\\" ng-message=\\\"pattern\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field must consist of lower case alphanumeric characters or '-', and contain at most 63\\n characters, and must start and end with an alphanumeric character.</p\\n >\\n </div>\\n <p class=\\\"vertical-center\\\" ng-if=\\\"$ctrl.state.hasPrefixKube\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Prefix \\\"kube-\\\" is reserved for Kubernetes system namespaces.</p\\n >\\n <p class=\\\"vertical-center\\\" ng-if=\\\"$ctrl.state.isAlreadyExist\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> A namespace with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <annotations-be-teaser></annotations-be-teaser>\\n </div>\\n\\n <!-- #endregion -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Quota </div>\\n <!-- #region QUOTA -->\\n <!-- quotas-switch -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n A namespace segments the underlying physical Kubernetes cluster into smaller virtual clusters. You should assign a capped limit of resources to this namespace or\\n disable for the safe operation of your platform.\\n </p>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n data-cy=\\\"'k8sNamespaceCreate-resourceAssignmentToggle'\\\"\\n label=\\\"'Resource assignment'\\\"\\n label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n name=\\\"'k8s-resourcepool-resourcequota'\\\"\\n checked=\\\"$ctrl.formValues.HasQuota\\\"\\n on-change=\\\"($ctrl.onToggleResourceQuota)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !quotas-switch -->\\n <div ng-if=\\\"$ctrl.formValues.HasQuota\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Resource limits </div>\\n <div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 small text-warning\\\" ng-switch on=\\\"$ctrl.formValues.HasQuota && !$ctrl.isQuotaValid()\\\">\\n <p class=\\\"vertical-center mb-0\\\" ng-switch-when=\\\"true\\\"\\n ><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> At least a single limit must be set for the quota to be valid.\\n </p>\\n <p class=\\\"vertical-center mb-0\\\" ng-switch-default></p>\\n </span>\\n </div>\\n\\n <!-- memory-limit-input -->\\n <div class=\\\"form-group !mb-0 flex flex-row\\\">\\n <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Memory limit (MB) </label>\\n <div class=\\\"col-xs-6\\\">\\n <por-slider\\n min=\\\"$ctrl.defaults.MemoryLimit\\\"\\n max=\\\"$ctrl.state.sliderMaxMemory\\\"\\n step=\\\"128\\\"\\n ng-if=\\\"$ctrl.state.sliderMaxMemory\\\"\\n value=\\\"$ctrl.formValues.MemoryLimit\\\"\\n on-change=\\\"($ctrl.handleMemoryLimitChange)\\\"\\n visible-tooltip=\\\"true\\\"\\n data-cy=\\\"k8sNamespaceCreate-memoryLimitSlider\\\"\\n ></por-slider>\\n </div>\\n <div class=\\\"col-sm-2 vertical-center pt-6\\\">\\n <input\\n name=\\\"memory_limit\\\"\\n type=\\\"number\\\"\\n min=\\\"{{ $ctrl.defaults.MemoryLimit }}\\\"\\n max=\\\"{{ $ctrl.state.sliderMaxMemory }}\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.formValues.MemoryLimit\\\"\\n id=\\\"memory-limit\\\"\\n data-cy=\\\"k8sNamespaceCreate-memoryLimitInput\\\"\\n required\\n />\\n </div>\\n </div>\\n <div class=\\\"flex w-full flex-row\\\">\\n <span class=\\\"col-sm-3 col-lg-2\\\"></span>\\n <span class=\\\"help-block col-sm-9 col-lg-10\\\">\\n <div ng-show=\\\"resourcePoolCreationForm.memory_limit.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"resourcePoolCreationForm.pool_name.$error\\\">\\n <p class=\\\"vertical-center\\\"\\n ><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Value must be between {{ $ctrl.defaults.MemoryLimit }} and\\n {{ $ctrl.state.sliderMaxMemory }}\\n </p>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n <!-- !memory-limit-input -->\\n <!-- cpu-limit-input -->\\n <div class=\\\"form-group flex flex-row\\\">\\n <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> CPU limit </label>\\n <div class=\\\"col-xs-8\\\">\\n <por-slider\\n min=\\\"$ctrl.defaults.CpuLimit\\\"\\n max=\\\"$ctrl.state.sliderMaxCpu\\\"\\n step=\\\"0.1\\\"\\n ng-if=\\\"$ctrl.state.sliderMaxCpu\\\"\\n value=\\\"$ctrl.formValues.CpuLimit\\\"\\n on-change=\\\"($ctrl.handleCpuLimitChange)\\\"\\n data-cy=\\\"k8sNamespaceCreate-cpuLimitSlider\\\"\\n visible-tooltip=\\\"true\\\"\\n ></por-slider>\\n </div>\\n </div>\\n <!-- !cpu-limit-input -->\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region LOAD-BALANCERS -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Load balancers </div>\\n\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n You can set a quota on the amount of external load balancers that can be created inside this namespace. Set this quota to 0 to effectively disable the use of load\\n balancers in this namespace.\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n data-cy=\\\"'k8sNamespaceCreate-loadBalancerQuotaToggle'\\\"\\n label=\\\"'Load Balancer quota'\\\"\\n label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n name=\\\"'k8s-resourcepool-lbquota'\\\"\\n feature-id=\\\"$ctrl.LBQuotaFeatureId\\\"\\n checked=\\\"$ctrl.formValues.UseLoadBalancersQuota\\\"\\n on-change=\\\"($ctrl.onToggleLoadBalancerQuota)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <div ng-if=\\\"$ctrl.state.ingressAvailabilityPerNamespace\\\">\\n <!-- #region INGRESSES -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Networking </div>\\n <ingress-class-datatable\\n ng-if=\\\"$ctrl.state.ingressAvailabilityPerNamespace\\\"\\n on-change-controllers=\\\"($ctrl.onChangeIngressControllerAvailability)\\\"\\n ingress-controllers=\\\"$ctrl.ingressControllers\\\"\\n description=\\\"'Enable the ingress controllers that users can select when publishing applications in this namespace.'\\\"\\n no-ingress-controller-label=\\\"'No ingress controllers found in the cluster. Go to the cluster setup view to configure and allow the use of ingress controllers in the cluster.'\\\"\\n view=\\\"'namespace'\\\"\\n ></ingress-class-datatable>\\n <!-- #endregion -->\\n </div>\\n\\n <!-- #region REGISTRIES -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Registries </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Define which registries can be used by users who have access to this namespace.\\n </p>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label !pt-0 text-left\\\" for=\\\"registries-selector\\\"> Select registries </label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <span class=\\\"small text-muted\\\" ng-if=\\\"!$ctrl.registries.length && $ctrl.state.isAdmin\\\">\\n No registries available. Head over to the <a ui-sref=\\\"portainer.registries\\\">registry view</a> to define a container registry.\\n </span>\\n <span class=\\\"small text-muted\\\" ng-if=\\\"!$ctrl.registries.length && !$ctrl.state.isAdmin\\\">\\n No registries available. Contact your administrator to create a container registry.\\n </span>\\n <create-namespace-registries-selector\\n input-id=\\\"'registries-selector'\\\"\\n value=\\\"$ctrl.formValues.Registries\\\"\\n on-change=\\\"($ctrl.onRegistriesChange)\\\"\\n options=\\\"$ctrl.registries\\\"\\n >\\n </create-namespace-registries-selector>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region STORAGES -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Storage </div>\\n\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Quotas can be set on each storage option to prevent users from exceeding a specific threshold when deploying applications. You can set a quota to 0 to effectively\\n prevent the usage of a specific storage option inside this namespace.\\n </span>\\n </div>\\n <div class=\\\"col-sm-12 form-section-title vertical-center\\\">\\n <pr-icon icon=\\\"'svg-route'\\\"></pr-icon>\\n standard\\n </div>\\n\\n <storage-class-switch value=\\\"sc.Selected\\\" name=\\\"sc.Name\\\" on-change=\\\"(ctrl.onToggleStorageQuota)\\\" authorization=\\\"K8sResourcePoolDetailsW\\\"></storage-class-switch>\\n\\n <!-- #endregion -->\\n\\n <!-- summary -->\\n <kubernetes-summary-view ng-if=\\\"resourcePoolCreationForm.$valid && !$ctrl.isCreateButtonDisabled()\\\" form-values=\\\"$ctrl.formValues\\\"></kubernetes-summary-view>\\n <!-- !summary -->\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <!-- #region ACTIONS -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"!resourcePoolCreationForm.$valid || $ctrl.isCreateButtonDisabled()\\\"\\n ng-click=\\\"$ctrl.createResourcePool()\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\" data-cy=\\\"k8sNamespace-createNamespaceButton\\\">Create namespace</span>\\n <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Creation in progress...</span>\\n </button>\\n </div>\\n </div>\\n\\n <!-- #endregion -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/create/createResourcePool.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"searchIcon\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for an ingress...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"settings\\\">\\n <span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle><pr-icon icon=\\\"'more-vertical'\\\"></pr-icon></span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" style=\\\"display: none\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th ng-if=\\\"$ctrl.hasExpandableItems()\\\" class=\\\"datatable-wide dropdown\\\">\\n <div class=\\\"vertical-center cursor-pointer\\\" ng-click=\\\"$ctrl.expandAll()\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n pagination-id=\\\"$ctrl.tableKey\\\"\\n >\\n <td ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n <div ng-if=\\\"$ctrl.itemCanExpand(item)\\\" class=\\\"vertical-center\\\">\\n <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </div>\\n </td>\\n <td>{{ item.Name }}</td>\\n <td>{{ item.Size }}</td>\\n </tr>\\n <tr\\n dir-paginate-end\\n ng-show=\\\"item.Expanded\\\"\\n ng-repeat=\\\"path in item.Paths\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td>\\n <a style=\\\"margin-left: 15px\\\" ng-href=\\\"http://{{ path.Host ? path.Host : path.IP }}{{ path.Path }}\\\" target=\\\"_blank\\\">\\n {{ path.Host ? path.Host : path.IP }}{{ path.Path }}\\n </a>\\n <span ng-if=\\\"path.ApplicationName !== '-'\\\">\\n <pr-icon icon=\\\"'arrow-right'\\\" class-name=\\\"'m-0.5'\\\"></pr-icon>\\n <a ui-sref=\\\"kubernetes.applications.application({ name: path.ApplicationName, namespace: item.Namespace })\\\">{{ path.ApplicationName }}</a>\\n </span>\\n <span class=\\\"label label-warning image-tag label-margins\\\" ng-if=\\\"path.ApplicationName === '-'\\\">unused</span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">No ingresses available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/edit/components/ingresses-datatable/template.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Namespace details'\\\"\\n breadcrumbs=\\\"[{ label:'Namespaces', link:'kubernetes.resourcePools' }, ctrl.pool.Namespace.Name]\\\"\\n reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'layers'\\\"></pr-icon> Namespace </uib-tab-heading>\\n <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\" name=\\\"resourcePoolEditForm\\\" style=\\\"padding: 20px; margin-top: 10px\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Name</td>\\n <td>\\n {{ ctrl.pool.Namespace.Name }}\\n <span class=\\\"label label-info image-tag label-margins\\\" ng-if=\\\"ctrl.isSystem\\\">system</span>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 !p-0\\\">\\n <annotations-be-teaser></annotations-be-teaser>\\n </div>\\n\\n <!-- !name-input -->\\n <div ng-if=\\\"ctrl.isAdmin && ctrl.isEditable\\\" class=\\\"col-sm-12 form-section-title\\\">Resource quota</div>\\n <!-- quotas-switch -->\\n <div ng-if=\\\"ctrl.isAdmin && ctrl.isEditable\\\" class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 mt-2\\\" ng-if=\\\"ctrl.state.resourceOverCommitEnabled\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\">\\n <label class=\\\"control-label text-left\\\"> Resource assignment </label>\\n </div>\\n <div class=\\\"col-sm-9 pt-2\\\">\\n <label class=\\\"switch\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.formValues.HasQuota\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div ng-if=\\\"ctrl.formValues.HasQuota\\\">\\n <kubernetes-resource-reservation\\n ng-if=\\\"ctrl.pool.Quota\\\"\\n description=\\\"Resource reservation represents the total amount of resource assigned to all the applications deployed inside this namespace.\\\"\\n cpu-reservation=\\\"ctrl.state.resourceReservation.CPU\\\"\\n memory-reservation=\\\"ctrl.state.resourceReservation.Memory\\\"\\n cpu-limit=\\\"ctrl.formValues.CpuLimit\\\"\\n memory-limit=\\\"ctrl.formValues.MemoryLimit\\\"\\n display-usage=\\\"ctrl.state.useServerMetrics\\\"\\n cpu-usage=\\\"ctrl.state.resourceUsage.CPU\\\"\\n memory-usage=\\\"ctrl.state.resourceUsage.Memory\\\"\\n >\\n </kubernetes-resource-reservation>\\n </div>\\n <!-- !quotas-switch -->\\n <div ng-if=\\\"ctrl.formValues.HasQuota && ctrl.isAdmin && ctrl.isEditable\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Resource limits </div>\\n <div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 small text-warning\\\" ng-switch on=\\\"ctrl.formValues.HasQuota && ctrl.isAdmin && ctrl.isEditable && !ctrl.isQuotaValid()\\\">\\n <p class=\\\"vertical-center mb-0\\\" ng-switch-when=\\\"true\\\"\\n ><pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> At least a single limit must be set for the quota to be valid.\\n </p>\\n <p class=\\\"vertical-center mb-0\\\" ng-switch-default></p>\\n </span>\\n </div>\\n <!-- memory-limit-input -->\\n <div class=\\\"form-group flex\\\">\\n <label for=\\\"memory-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label vertical-center text-left\\\"> Memory limit (MB) </label>\\n <div class=\\\"col-sm-6\\\">\\n <por-slider\\n min=\\\"ctrl.ResourceQuotaDefaults.MemoryLimit\\\"\\n max=\\\"ctrl.state.sliderMaxMemory\\\"\\n step=\\\"128\\\"\\n ng-if=\\\"ctrl.state.sliderMaxMemory\\\"\\n value=\\\"ctrl.formValues.MemoryLimit\\\"\\n on-change=\\\"(ctrl.handleMemoryLimitChange)\\\"\\n visible-tooltip=\\\"true\\\"\\n data-cy=\\\"k8sNamespaceEdit-memoryLimitSlider\\\"\\n ></por-slider>\\n </div>\\n <div class=\\\"col-sm-2 vertical-center pt-6\\\">\\n <input\\n name=\\\"memory_limit\\\"\\n type=\\\"number\\\"\\n min=\\\"{{ ctrl.ResourceQuotaDefaults.MemoryLimit }}\\\"\\n max=\\\"{{ ctrl.state.sliderMaxMemory }}\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"ctrl.formValues.MemoryLimit\\\"\\n id=\\\"memory-limit\\\"\\n data-cy=\\\"k8sNamespaceEdit-memoryLimitInput\\\"\\n required\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"resourcePoolEditForm.memory_limit.$invalid\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8 small text-warning\\\">\\n <div ng-messages=\\\"resourcePoolEditForm.pool_name.$error\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Value must be between {{ ctrl.ResourceQuotaDefaults.MemoryLimit }} and\\n {{ ctrl.state.sliderMaxMemory }}.\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- !memory-limit-input -->\\n <!-- cpu-limit-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"cpu-limit\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"margin-top: 20px\\\"> CPU limit </label>\\n <div class=\\\"col-sm-8\\\">\\n <por-slider\\n min=\\\"ctrl.ResourceQuotaDefaults.CpuLimit\\\"\\n max=\\\"ctrl.state.sliderMaxCpu\\\"\\n step=\\\"0.1\\\"\\n ng-if=\\\"ctrl.state.sliderMaxCpu\\\"\\n value=\\\"ctrl.formValues.CpuLimit\\\"\\n on-change=\\\"(ctrl.handleCpuLimitChange)\\\"\\n data-cy=\\\"k8sNamespaceEdit-cpuLimitSlider\\\"\\n visible-tooltip=\\\"true\\\"\\n ></por-slider>\\n </div>\\n </div>\\n <!-- !cpu-limit-input -->\\n </div>\\n </div>\\n <!-- #region LOADBALANCERS -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Load balancers </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n You can set a quota on the amount of external load balancers that can be created inside this namespace. Set this quota to 0 to effectively disable the use of\\n load balancers in this namespace.\\n </p>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n data-cy=\\\"'k8sNamespaceCreate-loadBalancerQuotaToggle'\\\"\\n label=\\\"'Load Balancer quota'\\\"\\n label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n name=\\\"'k8s-resourcepool-Lbquota'\\\"\\n feature-id=\\\"ctrl.LBQuotaFeatureId\\\"\\n checked=\\\"ctrl.formValues.UseLoadBalancersQuota\\\"\\n on-change=\\\"(ctrl.onToggleLoadBalancersQuota)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- #endregion -->\\n <div ng-if=\\\"ctrl.isAdmin && ctrl.isEditable && ctrl.state.ingressAvailabilityPerNamespace\\\">\\n <!-- #region INGRESSES -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Networking </div>\\n <ingress-class-datatable\\n ng-if=\\\"ctrl.state.ingressAvailabilityPerNamespace\\\"\\n on-change-controllers=\\\"(ctrl.onChangeIngressControllerAvailability)\\\"\\n ingress-controllers=\\\"ctrl.ingressControllers\\\"\\n description=\\\"'Enable the ingress controllers that users can select when publishing applications in this namespace.'\\\"\\n no-ingress-controller-label=\\\"'No ingress controllers found in the cluster. Go to the cluster setup view to configure and allow the use of ingress controllers in the cluster.'\\\"\\n view=\\\"'namespace'\\\"\\n ></ingress-class-datatable>\\n\\n <!-- #endregion -->\\n </div>\\n <!-- #region REGISTRIES -->\\n <div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Registries </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"!ctrl.isAdmin || ctrl.isSystem\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"padding-top: 0\\\"> Selected registries </label>\\n <div class=\\\"col-sm-9 col-lg-4\\\">\\n {{ ctrl.selectedRegistries ? ctrl.selectedRegistries : 'None' }}\\n </div>\\n </div>\\n\\n <div ng-if=\\\"ctrl.isAdmin && !ctrl.isSystem\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Define which registries can be used by users who have access to this namespace.\\n </p>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label !pt-0 text-left\\\" for=\\\"registries-selector\\\"> Select registries </label>\\n <div class=\\\"col-sm-9 col-lg-4\\\">\\n <span class=\\\"small text-muted\\\" ng-if=\\\"!ctrl.registries.length && ctrl.isAdmin\\\">\\n No registries available. Head over to the <a ui-sref=\\\"portainer.registries\\\">registry view</a> to define a container registry.\\n </span>\\n <span class=\\\"small text-muted\\\" ng-if=\\\"!ctrl.registries.length && !ctrl.isAdmin\\\">\\n No registries available. Contact your administrator to create a container registry.\\n </span>\\n <create-namespace-registries-selector\\n input-id=\\\"'registries-selector'\\\"\\n value=\\\"ctrl.formValues.Registries\\\"\\n on-change=\\\"(ctrl.onRegistriesChange)\\\"\\n options=\\\"ctrl.registries\\\"\\n >\\n </create-namespace-registries-selector>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- #endregion -->\\n\\n <!-- #region STORAGES -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Storage </div>\\n\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Quotas can be set on each storage option to prevent users from exceeding a specific threshold when deploying applications. You can set a quota to 0 to\\n effectively prevent the usage of a specific storage option inside this namespace.\\n </p>\\n </span>\\n </div>\\n\\n <div class=\\\"form-section-title text-muted col-sm-12\\\" style=\\\"width: 100%\\\">\\n <div class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'svg-route'\\\"></pr-icon>standard </div>\\n <hr />\\n </div>\\n\\n <storage-class-switch value=\\\"sc.Selected\\\" name=\\\"sc.Name\\\" on-change=\\\"(ctrl.onToggleStorageQuota)\\\" authorization=\\\"K8sResourcePoolDetailsW\\\"> </storage-class-switch>\\n\\n <!-- #endregion -->\\n\\n <!-- summary -->\\n <kubernetes-summary-view\\n ng-if=\\\"resourcePoolEditForm.$valid && !ctrl.isUpdateButtonDisabled()\\\"\\n form-values=\\\"ctrl.formValues\\\"\\n old-form-values=\\\"ctrl.savedFormValues\\\"\\n ></kubernetes-summary-view>\\n <!-- !summary -->\\n\\n <!-- actions -->\\n <div ng-if=\\\"ctrl.isAdmin\\\" class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div ng-if=\\\"ctrl.isAdmin\\\" class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n ng-if=\\\"!ctrl.isSystem\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0 !mr-1\\\"\\n ng-disabled=\\\"!resourcePoolEditForm.$valid || ctrl.isUpdateButtonDisabled()\\\"\\n ng-click=\\\"ctrl.updateResourcePool()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.actionInProgress\\\" data-cy=\\\"k8sNamespaceEdit-updateNamespaceButton\\\">Update namespace</span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Update in progress...</span>\\n </button>\\n <button\\n ng-if=\\\"!ctrl.isDefaultNamespace\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-light btn-sm !ml-0\\\"\\n ng-click=\\\"ctrl.markUnmarkAsSystem()\\\"\\n button-spinner=\\\"ctrl.state.actionInProgress\\\"\\n data-cy=\\\"k8sNamespaceEdit-markSystem\\\"\\n >\\n <span ng-if=\\\"ctrl.isSystem\\\">Unmark as system</span>\\n <span ng-if=\\\"!ctrl.isSystem\\\">Mark as system</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </uib-tab>\\n <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'history'\\\"></pr-icon> Events\\n <div ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n {{ ctrl.state.eventWarningCount }} warning(s)\\n </div>\\n </uib-tab-heading>\\n <kubernetes-events-datatable\\n title-text=\\\"Events\\\"\\n dataset=\\\"ctrl.events\\\"\\n table-key=\\\"kubernetes.resourcepool.events\\\"\\n order-by=\\\"Date\\\"\\n reverse-order=\\\"true\\\"\\n loading=\\\"ctrl.state.eventsLoading\\\"\\n refresh-callback=\\\"ctrl.getEvents\\\"\\n ></kubernetes-events-datatable>\\n </uib-tab>\\n <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.pool.Yaml\\\" select=\\\"ctrl.showEditor()\\\" classes=\\\"btn-sm\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\"><pr-icon icon=\\\"'code'\\\"></pr-icon> YAML </uib-tab-heading>\\n <div class=\\\"px-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n <kubernetes-yaml-inspector key=\\\"resource-pool-yaml\\\" data=\\\"ctrl.pool.Yaml\\\"></kubernetes-yaml-inspector>\\n </div>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.applications && ctrl.applications.length > 0\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-resource-pool-applications-datatable\\n dataset=\\\"ctrl.applications\\\"\\n table-key=\\\"kubernetes.resourcepool.applications\\\"\\n order-by=\\\"Name\\\"\\n refresh-callback=\\\"ctrl.getApplications\\\"\\n loading=\\\"ctrl.state.applicationsLoading\\\"\\n title-text=\\\"Applications running in this namespace\\\"\\n title-icon=\\\"code\\\"\\n >\\n </kubernetes-resource-pool-applications-datatable>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.ingresses && ctrl.ingresses.length > 0\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-resource-pool-ingresses-datatable\\n dataset=\\\"ctrl.ingresses\\\"\\n table-key=\\\"kubernetes.resourcepool.ingresses\\\"\\n order-by=\\\"Name\\\"\\n refresh-callback=\\\"ctrl.getIngresses\\\"\\n loading=\\\"ctrl.state.ingressesLoading\\\"\\n title-text=\\\"Ingress routes and applications\\\"\\n title-icon=\\\"svg-route\\\"\\n >\\n </kubernetes-resource-pool-ingresses-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/edit/resourcePool.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Namespace list'\\\" breadcrumbs=\\\"['Namespaces']\\\" on-reload=\\\"(ctrl.onReload)\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-resource-pools-datatable\\n restrict-default-namespace=\\\"ctrl.endpoint.Kubernetes.Configuration.RestrictDefaultNamespace\\\"\\n dataset=\\\"ctrl.resourcePools\\\"\\n table-key=\\\"kubernetes.resourcePools\\\"\\n order-by=\\\"Name\\\"\\n remove-action=\\\"ctrl.removeAction\\\"\\n refresh-callback=\\\"ctrl.getResourcePools\\\"\\n endpoint=\\\"ctrl.endpoint\\\"\\n data-cy=\\\"k8sNamespace-namespaceTable\\\"\\n ></kubernetes-resource-pools-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/resource-pools/resourcePools.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"state.viewReady\\\"\\n title=\\\"'Kubernetes security constraints'\\\"\\n breadcrumbs=\\\"[\\n{ label:'Environments', link:'portainer.endpoints' }, \\n{ label:endpoint.Name, link:'portainer.endpoints.endpoint', linkParams:{id: endpoint.Id} }, \\n'Security constraints'\\n]\\\"\\n reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"shield\\\" title-text=\\\"Pod security constraints\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"kubernetesSecurityConstraintForm\\\">\\n <!-- main toggle -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n checked=\\\"formValues.enabled\\\"\\n name=\\\"'disableSysctlSettingForRegularUsers'\\\"\\n label=\\\"'Enable pod security constraints'\\\"\\n feature-id=\\\"limitedFeaturePodSecurityPolicy\\\"\\n label-class=\\\"'col-sm-3 col-lg-2 px-0'\\\"\\n switch-class=\\\"'col-sm-8'\\\"\\n >\\n </por-switch-field>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/security-constraint/constraint.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Stacks logs'\\\"\\n breadcrumbs=\\\"[\\n{ label:'Namespaces', link:'kubernetes.resourcePools' },\\n{ label:ctrl.state.transition.namespace, link:'kubernetes.resourcePools.resourcePool', linkParams:{ id: ctrl.state.transition.namespace } },\\n{ label:'Applications', link:'kubernetes.applications' },\\n'Stacks',\\nctrl.state.transition.name,\\n'Logs'\\n]\\\"\\n reload=\\\"true\\\"\\n></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" autocomplete=\\\"off\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <!-- auto-refresh -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"control-label col-sm-3 col-lg-2 vertical-center !py-2 text-left\\\">\\n Auto-refresh\\n <portainer-tooltip message=\\\"'Automatically refresh logs every 30 seconds'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-sm-9 vertical-center\\\">\\n <label class=\\\"switch col-sm-8 col-sm-9 vertical-center !mb-0\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"ctrl.state.autoRefresh\\\" ng-change=\\\"ctrl.updateAutoRefresh()\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n </div>\\n <!-- !auto-refresh -->\\n <!-- search -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"logs_search\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Search </label>\\n <div class=\\\"col-sm-8 col-lg-9\\\">\\n <input\\n class=\\\"form-control\\\"\\n type=\\\"text\\\"\\n name=\\\"logs_search\\\"\\n ng-model=\\\"ctrl.state.search\\\"\\n ng-change=\\\"ctrl.state.selectedLines.length = 0;\\\"\\n placeholder=\\\"Filter...\\\"\\n auto-focus\\n />\\n </div>\\n </div>\\n <!-- !search -->\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button class=\\\"btn btn-primary btn-sm vertical-center !ml-0\\\" type=\\\"button\\\" ng-click=\\\"ctrl.downloadLogs()\\\">\\n <pr-icon icon=\\\"'download'\\\"></pr-icon>\\n Download logs\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12 h-[max(400px,calc(100vh-380px))]\\\">\\n <pre class=\\\"log_viewer\\\">\\n <div ng-repeat=\\\"log in ctrl.state.filteredLogs = (ctrl.stackLogs | filter:{ 'line': ctrl.state.search }) track by $index\\\" class=\\\"line\\\" ng-if=\\\"log.line\\\"><p class=\\\"inner_line\\\"><span ng-style=\\\"{'color': log.appColor, 'font-weight': 'bold'};\\\">{{ log.appName }}</span> <span ng-repeat=\\\"span in log.spans track by $index\\\" ng-style=\\\"{ 'color': span.fgColor, 'background-color': span.bgColor, 'font-weight': span.fontWeight }\\\">{{ span.text }}</span></p></div>\\n <div ng-if=\\\"ctrl.stackLogs.length && !ctrl.state.filteredLogs.length\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No log line matching the '{{ ctrl.state.search }}' filter</p></div>\\n <div ng-if=\\\"ctrl.stackLogs.length === 0\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No logs available</p></div>\\n </pre>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/stacks/logs/logs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"form-section-title interactive flex items-center justify-start\\\" ng-click=\\\"$ctrl.toggleSummary()\\\" ng-if=\\\"$ctrl.state.resources.length > 0\\\">\\n <pr-icon icon=\\\"$ctrl.state.expandedTemplate ? 'chevron-down' : 'chevron-right'\\\" class=\\\"vertical-center !mr-1\\\"></pr-icon>\\n Summary\\n</div>\\n\\n<div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.expandedTemplate\\\">\\n <div class=\\\"col-sm-12 small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Portainer will execute the following Kubernetes actions.\\n </div>\\n\\n <div class=\\\"col-sm-12 small text-muted\\\" style=\\\"padding-top: 1em\\\" ng-if=\\\"$ctrl.state.resources.length > 0\\\">\\n <ul class=\\\"ml-5\\\">\\n <li ng-repeat=\\\"summary in $ctrl.state.resources\\\" ng-if=\\\"summary.action && summary.kind && summary.name\\\">\\n {{ summary.action }}\\n {{ $ctrl.getArticle(summary.kind, summary.action) }}\\n <span class=\\\"bold\\\">{{ summary.kind }}</span> named <code>{{ summary.name }}</code>\\n <span ng-if=\\\"summary.type\\\">\\n of type <code>{{ summary.type }}</code></span\\n >\\n </li>\\n <li ng-if=\\\"$ctrl.state.limits.memory\\\">\\n Set the memory resources limits and requests to <code>{{ $ctrl.state.limits.memory }}M</code>\\n </li>\\n <li ng-if=\\\"$ctrl.state.limits.cpu\\\">\\n Set the CPU resources limits and requests to <code>{{ $ctrl.state.limits.cpu }}</code>\\n </li>\\n </ul>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/summary/summary.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <!-- toolbar header actions and settings -->\\n <div class=\\\"toolBar !flex-col gap-1\\\">\\n <div class=\\\"toolBar vertical-center w-full flex-wrap !gap-x-5 !gap-y-1 !p-0\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'hard-drive'\\\"></pr-icon>\\n </div>\\n Storage\\n </div>\\n <div class=\\\"searchBar vertical-center !mr-0\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for storage...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"settings\\\">\\n <div class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\" class-name=\\\"'!mr-0 !h-4'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th class=\\\"datatable-wide dropdown\\\" ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n <div class=\\\"vertical-center cursor-pointer\\\" ng-click=\\\"$ctrl.expandAll()\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.expandAll\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.expandAll\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </div>\\n </th>\\n <th style=\\\"width: 60%\\\">\\n <table-column-header\\n col-title=\\\"'Storage'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th style=\\\"width: 38%\\\">\\n <table-column-header\\n col-title=\\\"'Usage'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Size'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Size' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Size')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate-start=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit: $ctrl.tableKey))\\\"\\n ng-class=\\\"{ active: item.Checked, 'datatable-highlighted': item.Highlighted }\\\"\\n ng-click=\\\"$ctrl.expandItem(item, !item.Expanded)\\\"\\n pagination-id=\\\"$ctrl.tableKey\\\"\\n >\\n <td ng-if=\\\"$ctrl.hasExpandableItems()\\\">\\n <div ng-if=\\\"$ctrl.itemCanExpand(item)\\\" class=\\\"vertical-center\\\">\\n <pr-icon ng-if=\\\"item.Expanded\\\" icon=\\\"'chevron-down'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!item.Expanded\\\" icon=\\\"'chevron-right'\\\"></pr-icon>\\n </div>\\n </td>\\n <td>{{ item.Name }}</td>\\n <td>{{ item.Size }}</td>\\n </tr>\\n <tr\\n dir-paginate-end\\n ng-show=\\\"item.Expanded\\\"\\n ng-repeat=\\\"vol in item.Volumes\\\"\\n ng-class=\\\"{ 'datatable-highlighted': item.Highlighted, 'datatable-unhighlighted': !item.Highlighted }\\\"\\n >\\n <td></td>\\n <td>\\n <a ui-sref=\\\"kubernetes.volumes.volume({ name: vol.PersistentVolumeClaim.Name, namespace: vol.PersistentVolumeClaim.Namespace })\\\">\\n {{ vol.PersistentVolumeClaim.Name }}\\n </a>\\n </td>\\n <td>\\n {{ vol.PersistentVolumeClaim.Storage }}\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No storage available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" pagination-id=\\\"$ctrl.tableKey\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/volumes/components/volumes-storages-datatable/template.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n ng-if=\\\"ctrl.state.viewReady\\\"\\n title=\\\"'Volume details'\\\"\\n breadcrumbs=\\\"[\\n { label:'Namespaces', link:'kubernetes.resourcePools' },\\n {\\n label:ctrl.volume.ResourcePool.Namespace.Name,\\n link: 'kubernetes.resourcePools.resourcePool',\\n linkParams:{ id: ctrl.volume.ResourcePool.Namespace.Name }\\n },\\n { label:'Volumes', link:'kubernetes.volumes' },\\n ctrl.volume.PersistentVolumeClaim.Name,\\n ]\\\"\\n reload=\\\"true\\\"\\n>\\n</page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\" data-cy=\\\"k8sVolDetail-volTab\\\">\\n <pr-icon icon=\\\"'database'\\\"></pr-icon>\\n Volume\\n </uib-tab-heading>\\n <div style=\\\"padding: 20px\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Name</td>\\n <td data-cy=\\\"k8sVolDetail-volName\\\">\\n {{ ctrl.volume.PersistentVolumeClaim.Name }}\\n <span class=\\\"label label-primary image-tag label-margins\\\" ng-if=\\\"!ctrl.isSystemNamespace() && ctrl.isExternalVolume()\\\">external</span>\\n <span class=\\\"label label-warning image-tag label-margins\\\" ng-if=\\\"!ctrl.isSystemNamespace() && !ctrl.isUsed()\\\">unused</span>\\n </td>\\n </tr>\\n <tr>\\n <td>Namespace</td>\\n <td>\\n <a ui-sref=\\\"kubernetes.resourcePools.resourcePool({ id: ctrl.volume.ResourcePool.Namespace.Name })\\\" data-cy=\\\"k8sVolDetail-volNamespace\\\">{{\\n ctrl.volume.ResourcePool.Namespace.Name\\n }}</a>\\n <span style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\" ng-if=\\\"ctrl.isSystemNamespace()\\\">system</span>\\n </td>\\n </tr>\\n <tr>\\n <td>Storage</td>\\n <td data-cy=\\\"k8sVolDetail-volStorageClassname\\\">{{ ctrl.volume.PersistentVolumeClaim.StorageClass.Name }}</td>\\n </tr>\\n <tr>\\n <td>Shared Access Policy</td>\\n <td data-cy=\\\"k8sVolDetail-volAccessPolicy\\\"\\n >{{ ctrl.state.volumeSharedAccessPolicy }}\\n <portainer-tooltip ng-if=\\\"ctrl.state.volumeSharedAccessPolicyTooltip\\\" message=\\\"ctrl.state.volumeSharedAccessPolicyTooltip\\\"></portainer-tooltip\\n ></td>\\n </tr>\\n <tr>\\n <td>Provisioner</td>\\n <td data-cy=\\\"k8sVolDetail-volProvisioner\\\">{{\\n ctrl.volume.PersistentVolumeClaim.StorageClass.Provisioner ? ctrl.volume.PersistentVolumeClaim.StorageClass.Provisioner : '-'\\n }}</td>\\n </tr>\\n <tr>\\n <td>Creation date</td>\\n <td data-cy=\\\"k8sVolDetail-volCreatedAt\\\">{{ ctrl.volume.PersistentVolumeClaim.CreationDate | getisodate }}</td>\\n </tr>\\n <tr>\\n <td>Size</td>\\n <td ng-if=\\\"!ctrl.state.increaseSize\\\">\\n {{ ctrl.volume.PersistentVolumeClaim.Storage }}\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-click=\\\"ctrl.state.increaseSize = true\\\"\\n ng-if=\\\"ctrl.volume.PersistentVolumeClaim.StorageClass.AllowVolumeExpansion\\\"\\n data-cy=\\\"k8sVolDetail-increaseSizeButton\\\"\\n >Increase size</button\\n >\\n </td>\\n <td ng-if=\\\"ctrl.state.increaseSize\\\">\\n <form name=\\\"kubernetesVolumeUpdateForm\\\">\\n <div class=\\\"form-inline\\\">\\n <div class=\\\"input-group input-group-sm\\\">\\n <input\\n type=\\\"number\\\"\\n class=\\\"form-control\\\"\\n name=\\\"size\\\"\\n ng-model=\\\"ctrl.state.volumeSize\\\"\\n placeholder=\\\"20\\\"\\n ng-min=\\\"0\\\"\\n min=\\\"0\\\"\\n ng-change=\\\"ctrl.onChangeSize()\\\"\\n required\\n data-cy=\\\"k8sVolDetail-increaseSizeInput\\\"\\n />\\n <span class=\\\"input-group-addon\\\" style=\\\"padding: 0\\\">\\n <select\\n ng-model=\\\"ctrl.state.volumeSizeUnit\\\"\\n ng-change=\\\"ctrl.onChangeSize()\\\"\\n ng-options=\\\"unit for unit in ctrl.state.availableSizeUnits\\\"\\n style=\\\"width: 100%; height: 100%\\\"\\n data-cy=\\\"k8sVolDetail-increaseSizeUnits\\\"\\n ></select>\\n </span>\\n </div>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-disabled=\\\"!ctrl.sizeIsValid()\\\"\\n ng-click=\\\"ctrl.updateVolume()\\\"\\n data-cy=\\\"k8sVolDetail-updateSizeConfirm\\\"\\n >\\n Update size\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-default\\\" ng-click=\\\"ctrl.state.increaseSize = false\\\" data-cy=\\\"k8sVolDetail-cancelUpdateSize\\\">\\n Cancel\\n </button>\\n </div>\\n\\n <div class=\\\"form-inline\\\">\\n <div class=\\\"small text-warning\\\" style=\\\"margin-top: 5px\\\" ng-show=\\\"ctrl.state.errors.volumeSize || kubernetesVolumeUpdateForm.size.$invalid\\\">\\n <div class=\\\"vertical-center\\\" ng-messages=\\\"kubernetesVolumeUpdateForm.size.$error\\\">\\n <p ng-message=\\\"required\\\"><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> This field is required.</p>\\n </div>\\n <p class=\\\"vertical-center\\\" ng-show=\\\"ctrl.state.errors.volumeSize\\\"\\n ><pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> The new size must be greater than the actual size.</p\\n >\\n </div>\\n </div>\\n </form>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </uib-tab>\\n\\n <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\" data-cy=\\\"k8sVolDetail-volEventsTab\\\">\\n <pr-icon icon=\\\"'history'\\\"></pr-icon> Events\\n <div ng-if=\\\"ctrl.hasEventWarnings()\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n {{ ctrl.state.eventWarningCount }} warning(s)\\n </div>\\n </uib-tab-heading>\\n <kubernetes-events-datatable\\n title-text=\\\"Events\\\"\\n title-icon=\\\"file-text\\\"\\n dataset=\\\"ctrl.events\\\"\\n table-key=\\\"kubernetes.volume.events\\\"\\n order-by=\\\"Date\\\"\\n reverse-order=\\\"true\\\"\\n loading=\\\"ctrl.state.eventsLoading\\\"\\n refresh-callback=\\\"ctrl.getEvents\\\"\\n >\\n </kubernetes-events-datatable>\\n </uib-tab>\\n\\n <uib-tab index=\\\"2\\\" ng-if=\\\"ctrl.volume.PersistentVolumeClaim.Yaml\\\" select=\\\"ctrl.showEditor()\\\" classes=\\\"btn-sm\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\" data-cy=\\\"k8sVolDetail-volYamlTab\\\"> <pr-icon icon=\\\"'code'\\\"></pr-icon> YAML </uib-tab-heading>\\n <div class=\\\"px-5\\\" ng-if=\\\"ctrl.state.showEditorTab\\\">\\n <kubernetes-yaml-inspector key=\\\"volume-yaml\\\" data=\\\"ctrl.volume.PersistentVolumeClaim.Yaml\\\"></kubernetes-yaml-inspector>\\n </div>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <div class=\\\"row\\\" ng-if=\\\"ctrl.isUsed(item)\\\">\\n <div class=\\\"col-sm-12\\\">\\n <kubernetes-integrated-applications-datatable\\n dataset=\\\"ctrl.volume.Applications\\\"\\n table-key=\\\"kubernetes.volume.applications\\\"\\n order-by=\\\"Name\\\"\\n refresh-callback=\\\"ctrl.getVolume\\\"\\n title-text=\\\"Applications using this volume\\\"\\n title-icon=\\\"svg-laptopcode\\\"\\n >\\n </kubernetes-integrated-applications-datatable>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/volumes/edit/volume.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header ng-if=\\\"ctrl.state.viewReady\\\" title=\\\"'Volume list'\\\" breadcrumbs=\\\"['Volumes']\\\" reload=\\\"true\\\"></page-header>\\n\\n<kubernetes-view-loading view-ready=\\\"ctrl.state.viewReady\\\"></kubernetes-view-loading>\\n\\n<div ng-if=\\\"ctrl.state.viewReady\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <uib-tabset active=\\\"ctrl.state.activeTab\\\" justified=\\\"true\\\" type=\\\"pills\\\">\\n <uib-tab index=\\\"0\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(0)\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'database'\\\"></pr-icon>\\n Volumes\\n </uib-tab-heading>\\n <kubernetes-volumes-datatable\\n dataset=\\\"ctrl.volumes\\\"\\n table-key=\\\"kubernetes.volumes\\\"\\n order-by=\\\"PersistentVolumeClaim.Name\\\"\\n remove-action=\\\"ctrl.removeAction\\\"\\n refresh-callback=\\\"ctrl.getVolumes\\\"\\n data-cy=\\\"k8s-volumes-datatable\\\"\\n >\\n </kubernetes-volumes-datatable>\\n </uib-tab>\\n <uib-tab index=\\\"1\\\" classes=\\\"btn-sm\\\" select=\\\"ctrl.selectTab(1)\\\">\\n <uib-tab-heading class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'hard-drive'\\\"></pr-icon>\\n Storage\\n </uib-tab-heading>\\n <kubernetes-volumes-storages-datatable dataset=\\\"ctrl.storages\\\" table-key=\\\"kubernetes.volumes.storages\\\" order-by=\\\"Name\\\" refresh-callback=\\\"ctrl.getVolumes\\\">\\n </kubernetes-volumes-storages-datatable>\\n </uib-tab>\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/kubernetes/views/volumes/volumes.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Task logs'\\\" breadcrumbs=\\\"[{label:'Nomad Jobs', link:'nomad.jobs'}, jobID, taskName, 'Logs']\\\"> </page-header>\\n\\n<nomad-log-viewer stderr-log=\\\"stderrLog\\\" stdout-log=\\\"stdoutLog\\\" resource-name=\\\"taskName\\\" log-collection-change=\\\"changeLogCollection\\\"></nomad-log-viewer>\\n\";;\nvar path = 'app/nomad/logs/logs.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"file-text\\\" title-text=\\\"Nomad Log viewer settings\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"repository_mechanism\\\" class=\\\"col-sm-1 control-label text-left\\\"> Log type </label>\\n <div class=\\\"col-sm-11\\\">\\n <div class=\\\"input-group col-sm-10 input-group-sm\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-primary\\\" ng-click=\\\"$ctrl.onChangeLogType($ctrl.model.logType)\\\" ng-model=\\\"$ctrl.model.logType\\\" uib-btn-radio=\\\"'stderr'\\\">stderr</label>\\n <label class=\\\"btn btn-primary\\\" ng-click=\\\"$ctrl.onChangeLogType($ctrl.model.logType)\\\" ng-model=\\\"$ctrl.model.logType\\\" uib-btn-radio=\\\"'stdout'\\\">stdout</label>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-1\\\">\\n <label for=\\\"tls\\\" class=\\\"control-label text-left\\\">\\n Auto-refresh\\n <portainer-tooltip message=\\\"'Disabling this option allows you to pause the log collection process and the auto-scrolling.'\\\"></portainer-tooltip>\\n </label>\\n </div>\\n <div class=\\\"col-sm-11\\\">\\n <label class=\\\"switch\\\">\\n <input\\n type=\\\"checkbox\\\"\\n ng-model=\\\"$ctrl.state.logCollection\\\"\\n ng-change=\\\"$ctrl.state.autoScroll = $ctrl.state.logCollection; $ctrl.logCollectionChange($ctrl.state.logCollection)\\\"\\n /><i></i>\\n </label>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"logs_search\\\" class=\\\"col-sm-1 control-label text-left\\\"> Search </label>\\n <div class=\\\"col-sm-11\\\">\\n <input class=\\\"form-control\\\" type=\\\"text\\\" name=\\\"logs_search\\\" ng-model=\\\"$ctrl.state.search\\\" ng-change=\\\"$ctrl.state.selectedLines.length = 0;\\\" placeholder=\\\"Filter...\\\" />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-1\\\">\\n <label for=\\\"tls\\\" class=\\\"control-label text-left\\\"> Wrap lines </label>\\n </div>\\n <div class=\\\"col-sm-11\\\">\\n <label class=\\\"switch\\\"> <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.wrapLines\\\" /><i></i> </label>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.copySupported\\\">\\n <label class=\\\"col-sm-1 control-label text-left\\\"> Actions </label>\\n <div class=\\\"col-sm-11\\\">\\n <button class=\\\"btn btn-primary btn-sm\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.downloadLogs()\\\" style=\\\"margin-left: 0\\\">\\n <pr-icon icon=\\\"'download'\\\"></pr-icon>\\n Download logs</button\\n >\\n <button\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-click=\\\"$ctrl.copy()\\\"\\n ng-disabled=\\\"($ctrl.state[$ctrl.model.logType].filteredLogs.length === 1 && !$ctrl.state[$ctrl.model.logType].filteredLogs[0].line) || !$ctrl.state[$ctrl.model.logType].filteredLogs.length\\\"\\n >\\n <pr-icon icon=\\\"'copy'\\\"></pr-icon>\\n Copy</button\\n >\\n <button\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-click=\\\"$ctrl.copySelection()\\\"\\n ng-disabled=\\\"($ctrl.state[$ctrl.model.logType].filteredLogs.length === 1 && !$ctrl.state[$ctrl.model.logType].filteredLogs[0].line) || !$ctrl.state[$ctrl.model.logType].filteredLogs.length || !$ctrl.state[$ctrl.model.logType].selectedLines.length\\\"\\n >\\n <pr-icon icon=\\\"'copy'\\\"></pr-icon>\\n Copy selected lines</button\\n >\\n <button class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"$ctrl.clearSelection()\\\" ng-disabled=\\\"$ctrl.state[$ctrl.model.logType].selectedLines.length === 0\\\">\\n <pr-icon icon=\\\"'x'\\\"></pr-icon>\\n Unselect</button\\n >\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\" style=\\\"height: 54%\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"height: 100%\\\" ng-if=\\\"$ctrl.model.logType === $ctrl.NomadLogType.STDERR\\\">\\n <pre ng-class=\\\"{ wrap_lines: $ctrl.state.wrapLines }\\\" class=\\\"log_viewer\\\" scroll-glue=\\\"$ctrl.state.autoScroll\\\" force-glue>\\n <div ng-if=\\\"$ctrl.stderrLog.length === 0 && $ctrl.state.stderr.filteredLogs.length === 0 && !$ctrl.state.logCollection\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No logs available</p></div>\\n <div ng-repeat=\\\"log in $ctrl.state.stderr.filteredLogs = ($ctrl.stderrLog | filter:{ 'line': $ctrl.state.search }) track by $index\\\" class=\\\"line\\\" ng-if=\\\"log.line\\\"><p class=\\\"inner_line\\\" ng-click=\\\"$ctrl.selectLine(log.line)\\\" ng-class=\\\"{ 'line_selected': $ctrl.state.stderr.selectedLines.indexOf(log.line) > -1 }\\\"><span ng-repeat=\\\"span in log.spans\\\" ng-style=\\\"{ 'color': span.foregroundColor, 'background-color': span.backgroundColor }\\\">{{ span.text }}</span></p></div>\\n <div ng-if=\\\"$ctrl.stderrLog.length !== 0 && !$ctrl.state.stderr.filteredLogs.length && $ctrl.state.search\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No log line matching the '{{ $ctrl.state.search }}' filter</p></div>\\n </pre>\\n </div>\\n\\n <div class=\\\"col-sm-12\\\" style=\\\"height: 100%\\\" ng-if=\\\"$ctrl.model.logType === $ctrl.NomadLogType.STDOUT\\\">\\n <pre ng-class=\\\"{ wrap_lines: $ctrl.state.wrapLines }\\\" class=\\\"log_viewer\\\" scroll-glue=\\\"$ctrl.state.autoScroll\\\" force-glue>\\n <div ng-if=\\\"$ctrl.stdoutLog.length === 0 && $ctrl.state.stdout.filteredLogs.length === 0 && !$ctrl.state.logCollection\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No logs available</p></div>\\n <div ng-repeat=\\\"log in $ctrl.state.stdout.filteredLogs = ($ctrl.stdoutLog | filter:{ 'line': $ctrl.state.search }) track by $index\\\" class=\\\"line\\\" ng-if=\\\"log.line\\\"><p class=\\\"inner_line\\\" ng-click=\\\"$ctrl.selectLine(log.line)\\\" ng-class=\\\"{ 'line_selected': $ctrl.state.stdout.selectedLines.indexOf(log.line) > -1 }\\\"><span ng-repeat=\\\"span in log.spans\\\" ng-style=\\\"{ 'color': span.foregroundColor, 'background-color': span.backgroundColor }\\\">{{ span.text }}</span></p></div>\\n <div ng-if=\\\"$ctrl.stdoutLog.length !== 0 && !$ctrl.state.stdout.filteredLogs.length && $ctrl.state.search\\\" class=\\\"line\\\"><p class=\\\"inner_line\\\">No log line matching the '{{ $ctrl.state.search }}' filter</p></div>\\n </pre>\\n </div>\\n</div>\\n\";;\nvar path = 'app/nomad/logs/nomad-log-viewer/nomadLogViewer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<a class=\\\"vertical-center be-indicator ml-5\\\" href=\\\"{{ $ctrl.url }}\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\" ng-if=\\\"$ctrl.limitedToBE\\\">\\n <ng-transclude></ng-transclude>\\n <pr-icon icon=\\\"'briefcase'\\\" class-name=\\\"'space-right be-indicator-icon'\\\"></pr-icon>\\n <span class=\\\"be-indicator-label\\\">Business Feature</span>\\n</a>\\n\";;\nvar path = 'app/portainer/components/BEFeatureIndicator/BEFeatureIndicator.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <div class=\\\"col-sm-12 form-section-title\\\">\\n <span style=\\\"float: left\\\">\\n {{ $ctrl.titleText }}\\n </span>\\n <span class=\\\"small\\\" style=\\\"float: right\\\" ng-if=\\\"$ctrl.dismissAction\\\">\\n <a ng-click=\\\"$ctrl.dismissAction()\\\">\\n <pr-icon icon=\\\"'x'\\\"></pr-icon>\\n dismiss</a\\n >\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <ng-transclude></ng-transclude>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/InformationPanel/InformationPanelAngular.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"actionBar\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Remove\\n </button>\\n </div>\\n </div>\\n\\n <div class=\\\"small text-muted mx-4 mb-4\\\">\\n <div class=\\\"\\\" ng-if=\\\"$ctrl.inheritFrom\\\">\\n Access tagged as <code>inherited</code> are inherited from the group access. They cannot be removed or modified at the environment level but they can be overridden.\\n </div>\\n <div class=\\\"\\\" ng-if=\\\"$ctrl.inheritFrom\\\"> Access tagged as <code>override</code> are overriding the group access for the related users/teams. </div>\\n </div>\\n\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Type'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Type'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Type' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Type')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-disabled=\\\"$ctrl.disableRemove(item)\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n {{ item.Name }}\\n <span ng-if=\\\"$ctrl.inheritFrom && item.Inherited\\\" class=\\\"text-muted small\\\" style=\\\"margin-left: 2px\\\"><code style=\\\"font-size: 85% !important\\\">inherited</code></span>\\n <span ng-if=\\\"$ctrl.inheritFrom && item.Override\\\" class=\\\"text-muted small\\\" style=\\\"margin-left: 2px\\\"><code style=\\\"font-size: 85% !important\\\">override</code></span>\\n </td>\\n <td>{{ item.Type }}</td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"4\\\" class=\\\"text-muted text-center\\\">No authorized users or teams.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/access-datatable/accessDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <table class=\\\"table-hover table\\\">\\n <div class=\\\"col-sm-12\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <thead>\\n <tr>\\n <th>\\n <a ng-click=\\\"$ctrl.changeOrderBy('Name')\\\">\\n Name\\n <span ng-show=\\\"$ctrl.state.orderBy == 'Name' && !$ctrl.state.reverseOrder\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></span>\\n <span ng-show=\\\"$ctrl.state.orderBy == 'Name' && $ctrl.state.reverseOrder\\\" class=\\\"glyphicon glyphicon-chevron-up\\\"></span>\\n </a>\\n </th>\\n <th>\\n <a ng-click=\\\"$ctrl.changeOrderBy('Type')\\\">\\n Type\\n <span ng-show=\\\"$ctrl.state.orderBy == 'Type' && !$ctrl.state.reverseOrder\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></span>\\n <span ng-show=\\\"$ctrl.state.orderBy == 'Type' && $ctrl.state.reverseOrder\\\" class=\\\"glyphicon glyphicon-chevron-up\\\"></span>\\n </a>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n ng-click=\\\"!item.Inherited && $ctrl.entryClick(item)\\\"\\n ng-class=\\\"{ interactive: !item.Inherited }\\\"\\n dir-paginate=\\\"item in $ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit\\\"\\n >\\n <td>\\n {{ item.Name }}\\n <!-- <span class=\\\"image-tag label label-\\\">inherited</span> -->\\n <span ng-if=\\\"item.Inherited\\\" class=\\\"text-muted small\\\" style=\\\"margin-left: 2px\\\"><code style=\\\"font-size: 85% !important\\\">inherited</code></span>\\n </td>\\n <td>\\n <pr-icon ng-if=\\\"item.Type === 'user'\\\" icon=\\\"'user'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!item.Type === 'user'\\\" icon=\\\"'users'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n {{ item.Type }}\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"2\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr\\n ng-if=\\\"\\n $ctrl.dataset.length === 0 ||\\n ($ctrl.dataset | filter : $ctrl.state.textFilter | orderBy : $ctrl.state.orderBy : $ctrl.state.reverseOrder | itemsPerPage : $ctrl.state.paginatedItemLimit).length === 0\\n \\\"\\n >\\n <td colspan=\\\"2\\\" class=\\\"text-muted text-center\\\">{{ $ctrl.emptyDatasetMessage }}</td>\\n </tr>\\n </tbody>\\n </table>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select ng-model=\\\"$ctrl.state.paginatedItemLimit\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/access-table/accessTable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <div ng-if=\\\"!$ctrl.hideTitle\\\" class=\\\"col-sm-12 form-section-title\\\"> Access control </div>\\n <!-- access-control-switch -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"$ctrl.formData.AccessControlEnabled\\\"\\n label=\\\"'Enable access control'\\\"\\n tooltip=\\\"'When enabled, you can restrict the access and management of this resource.'\\\"\\n on-change=\\\"($ctrl.onChangeEnablement)\\\"\\n data-cy=\\\"portainer-accessMgmtToggle\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !access-control-switch -->\\n <!-- restricted-access -->\\n\\n <access-type-selector\\n ng-if=\\\"$ctrl.formData.AccessControlEnabled\\\"\\n value=\\\"$ctrl.formData.Ownership\\\"\\n on-change=\\\"($ctrl.onChangeOwnership)\\\"\\n is-admin=\\\"$ctrl.isAdmin\\\"\\n name=\\\"Ownership\\\"\\n teams=\\\"$ctrl.availableTeams\\\"\\n ></access-type-selector>\\n\\n <!-- restricted-access -->\\n <!-- authorized-teams -->\\n <div\\n class=\\\"form-group mt-4\\\"\\n ng-if=\\\"$ctrl.formData.AccessControlEnabled && $ctrl.formData.Ownership === $ctrl.RCO.RESTRICTED && ($ctrl.isAdmin || (!$ctrl.isAdmin && $ctrl.availableTeams.length > 1))\\\"\\n >\\n <div class=\\\"vertical-center w-full\\\">\\n <label for=\\\"group-access\\\" class=\\\"control-label col-sm-3 col-lg-2 !pt-0 text-left\\\">\\n Authorized teams\\n <portainer-tooltip\\n ng-if=\\\"$ctrl.isAdmin && $ctrl.availableTeams.length > 0\\\"\\n message=\\\"'You can select which teams(s) will be able to manage this resource.'\\\"\\n ></portainer-tooltip>\\n <portainer-tooltip\\n ng-if=\\\"!$ctrl.isAdmin && $ctrl.availableTeams.length > 1\\\"\\n message=\\\"'As you are a member of multiple teams, you can select which teams(s) will be able to manage this resource.'\\\"\\n ></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <span ng-if=\\\"$ctrl.isAdmin && $ctrl.availableTeams.length === 0\\\" class=\\\"small text-muted\\\">\\n You have not yet created any teams. Head over to the <a ui-sref=\\\"portainer.teams\\\">Teams view</a> to manage teams.\\n </span>\\n\\n <por-access-control-form-team-selector\\n ng-if=\\\"($ctrl.isAdmin && $ctrl.availableTeams.length > 0) || (!$ctrl.isAdmin && $ctrl.availableTeams.length > 1)\\\"\\n options=\\\"$ctrl.availableTeams\\\"\\n value=\\\"$ctrl.formData.AuthorizedTeams\\\"\\n input-id=\\\"'teams-selector'\\\"\\n on-change=\\\"($ctrl.onAuthorizedTeamsChange)\\\"\\n ></por-access-control-form-team-selector>\\n </div>\\n </div>\\n </div>\\n\\n <!-- !authorized-teams -->\\n <!-- authorized-users -->\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formData.AccessControlEnabled && $ctrl.formData.Ownership === $ctrl.RCO.RESTRICTED && $ctrl.isAdmin\\\">\\n <div class=\\\"vertical-center w-full\\\">\\n <label for=\\\"group-access\\\" class=\\\"control-label col-sm-3 col-lg-2 !pt-0 text-left\\\">\\n Authorized users\\n <portainer-tooltip\\n ng-if=\\\"$ctrl.isAdmin && $ctrl.availableUsers.length > 0\\\"\\n message=\\\"'You can select which user(s) will be able to manage this resource.'\\\"\\n ></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <span ng-if=\\\"$ctrl.availableUsers.length === 0\\\" class=\\\"small text-muted\\\">\\n You have not yet created any users. Head over to the <a ui-sref=\\\"portainer.users\\\">Users view</a> to manage users.\\n </span>\\n\\n <por-access-control-form-user-selector\\n ng-if=\\\"$ctrl.availableUsers.length > 0\\\"\\n options=\\\"$ctrl.availableUsers\\\"\\n value=\\\"$ctrl.formData.AuthorizedUsers\\\"\\n input-id=\\\"'users-selector'\\\"\\n on-change=\\\"($ctrl.onAuthorizedUsersChange)\\\"\\n ></por-access-control-form-user-selector>\\n </div>\\n </div>\\n </div>\\n <!-- !authorized-users -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/accessControlForm/porAccessControlForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget ng-if=\\\"ctrl.availableUsersAndTeams && ctrl.accessControlledEntity\\\">\\n <rd-widget-header icon=\\\"user-check\\\" title-text=\\\"Create access\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div ng-if=\\\"ctrl.entityType !== 'registry'\\\" class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 small text-warning\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Adding user access will require the affected user(s) to logout and login for the changes to be taken into account.\\n </p>\\n </span>\\n </div>\\n\\n <por-access-management-users-selector\\n options=\\\"ctrl.availableUsersAndTeams\\\"\\n value=\\\"ctrl.formValues.multiselectOutput\\\"\\n on-change=\\\"(ctrl.onChangeUsersAndTeams)\\\"\\n ></por-access-management-users-selector>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.entityType !== 'registry'\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Role </label>\\n <div class=\\\"col-sm-9 col-lg-6\\\">\\n <div class=\\\"flex items-center\\\">\\n <div>\\n <select\\n class=\\\"form-control\\\"\\n ng-model=\\\"ctrl.formValues.selectedRole\\\"\\n ng-options=\\\"role as ctrl.roleLabel(role) disable when ctrl.isRoleLimitedToBE(role) for role in ctrl.roles\\\"\\n >\\n </select>\\n </div>\\n <be-feature-indicator feature=\\\"ctrl.limitedFeature\\\" class=\\\"space-left\\\"></be-feature-indicator>\\n </div>\\n </div>\\n </div>\\n\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm vertical-center\\\"\\n ng-disabled=\\\"ctrl.formValues.multiselectOutput.length === 0 || ctrl.actionInProgress\\\"\\n ng-click=\\\"ctrl.authorizeAccess()\\\"\\n button-spinner=\\\"ctrl.actionInProgress\\\"\\n data-cy=\\\"access-createAccess\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.actionInProgress\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>\\n Create access\\n </span>\\n <span ng-show=\\\"ctrl.state.actionInProgress\\\">Creating access...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <access-datatable\\n ng-if=\\\"ctrl.authorizedUsersAndTeams\\\"\\n title-text=\\\"Access\\\"\\n title-icon=\\\"user-x\\\"\\n table-key=\\\"{{ 'access_' + ctrl.entityType }}\\\"\\n order-by=\\\"Name\\\"\\n show-warning=\\\"ctrl.entityType !== 'registry'\\\"\\n is-update-enabled=\\\"ctrl.entityType !== 'registry'\\\"\\n show-roles=\\\"ctrl.entityType !== 'registry'\\\"\\n roles=\\\"ctrl.roles\\\"\\n inherit-from=\\\"ctrl.inheritFrom\\\"\\n dataset=\\\"ctrl.authorizedUsersAndTeams\\\"\\n update-action=\\\"ctrl.updateAction\\\"\\n remove-action=\\\"ctrl.unauthorizeAccess\\\"\\n >\\n </access-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/accessManagement/porAccessManagement.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<react-code-editor\\n id=\\\"$ctrl.identifier\\\"\\n placeholder=\\\"$ctrl.placeholder\\\"\\n yaml=\\\"$ctrl.yml\\\"\\n docker-file=\\\"$ctrl.dockerFile\\\"\\n shell=\\\"$ctrl.shell\\\"\\n readonly=\\\"$ctrl.readOnly\\\"\\n on-change=\\\"($ctrl.handleChange)\\\"\\n value=\\\"$ctrl.value\\\"\\n height=\\\"$ctrl.height || undefined\\\"\\n></react-code-editor>\\n\";;\nvar path = 'app/portainer/components/code-editor/code-editor.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<span>\\n <button type=\\\"button\\\" class=\\\"btn btn-link nopadding\\\" ng-click=\\\"$ctrl.copyValueText()\\\" title=\\\"Copy Value\\\">\\n <pr-icon icon=\\\"'clipboard'\\\"></pr-icon>\\n Copy\\n </button>\\n <span ng-class=\\\"{ 'copy-button-fadeout': $ctrl.state.isFading }\\\" class=\\\"copy-button-copy-text\\\">\\n <pr-icon icon=\\\"'check'\\\"></pr-icon>\\n copied\\n </span>\\n</span>\\n\";;\nvar path = 'app/portainer/components/copy-button/copy-button.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form name=\\\"commonCustomTemplateForm\\\">\\n <!-- title-input -->\\n <div class=\\\"form-group mb-0\\\">\\n <label for=\\\"template_title\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\"> Title </label>\\n <div class=\\\"col-sm-8\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.formValues.Title\\\"\\n ng-pattern=\\\"$ctrl.nameRegex\\\"\\n id=\\\"template_title\\\"\\n name=\\\"template_title\\\"\\n placeholder=\\\"e.g. mytemplate\\\"\\n auto-focus\\n required\\n />\\n <span class=\\\"help-block\\\">\\n <div ng-show=\\\"commonCustomTemplateForm.template_title.$invalid\\\">\\n <div class=\\\"small text-warning mt-2\\\">\\n <div ng-messages=\\\"commonCustomTemplateForm.template_title.$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Title is required. </p>\\n <p class=\\\"vertical-center\\\" ng-message=\\\"pattern\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n {{ $ctrl.nameRegexError }}\\n </p>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <!-- !title-input -->\\n\\n <!-- description-input -->\\n <div class=\\\"form-group mb-0\\\">\\n <label for=\\\"description\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Description</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"description\\\" ng-model=\\\"$ctrl.formValues.Description\\\" name=\\\"description\\\" required />\\n <span class=\\\"help-block\\\">\\n <div class=\\\"small text-warning mt-2\\\">\\n <div ng-show=\\\"commonCustomTemplateForm.description.$invalid\\\">\\n <div ng-messages=\\\"commonCustomTemplateForm.description.$error\\\">\\n <p class=\\\"vertical-center\\\" ng-message=\\\"required\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon> Description is required.</p>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n <!-- !description-input -->\\n\\n <!-- note-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"note\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Note</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"note\\\" ng-model=\\\"$ctrl.formValues.Note\\\" />\\n </div>\\n </div>\\n <!-- !note-input -->\\n\\n <!-- icon-url-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"icon-url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Icon URL</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"icon-url\\\" ng-model=\\\"$ctrl.formValues.Logo\\\" />\\n </div>\\n </div>\\n <!-- !icon-url-input -->\\n\\n <!-- platform-input -->\\n <div ng-if=\\\"$ctrl.showPlatformField\\\" class=\\\"form-group\\\">\\n <label for=\\\"platform\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Platform</label>\\n <div class=\\\"col-sm-8\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.formValues.Platform\\\" ng-options=\\\"+(opt.value) as opt.label for opt in $ctrl.platformTypes\\\"> </select>\\n </div>\\n </div>\\n <!-- !platform-input -->\\n\\n <!-- platform-input -->\\n <div ng-if=\\\"$ctrl.showTypeField\\\" class=\\\"form-group\\\">\\n <label for=\\\"platform\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Type</label>\\n <div class=\\\"col-sm-8\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.formValues.Type\\\" ng-options=\\\"+(opt.value) as opt.label for opt in $ctrl.templateTypes\\\"> </select>\\n </div>\\n </div>\\n <!-- !platform-input -->\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/custom-template-common-fields/customTemplateCommonFields.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <div class=\\\"form-group pt-3\\\">\\n <label for=\\\"stack_template\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Template </label>\\n <div class=\\\"col-sm-8 vertical-center\\\">\\n <select\\n ng-if=\\\"$ctrl.templates.length\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"$ctrl.value\\\"\\n ng-options=\\\"template.Id as template.label for template in $ctrl.templates\\\"\\n ng-change=\\\"$ctrl.handleChangeTemplate($ctrl.value)\\\"\\n >\\n <option value=\\\"\\\" label=\\\"Select a Custom template\\\" disabled selected=\\\"selected\\\"> </option>\\n </select>\\n <span class=\\\"small text-muted pt-[7px]\\\" ng-if=\\\"!$ctrl.templates.length\\\">\\n No custom templates are available. Head over to the <a ui-state=\\\"$ctrl.newTemplatePath\\\">custom template view</a> to create one.\\n </span>\\n </div>\\n </div>\\n\\n <!-- description -->\\n <div ng-if=\\\"$ctrl.selectedTemplate.note\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Information </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"template-note\\\" ng-bind-html=\\\"$ctrl.selectedTemplate.note\\\"></div>\\n </div>\\n </div>\\n </div>\\n <!-- !description -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/custom-template-selector/custom-template-selector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar vertical-center flex-wrap !gap-x-5 !gap-y-1\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n Custom Templates\\n </div>\\n <div class=\\\"searchBar vertical-center !mr-0\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a template...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"actionBar\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ui-state=\\\"$ctrl.createPath\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>\\n Add Custom Template\\n </button>\\n </div>\\n </div>\\n\\n <div class=\\\"blocklist gap-y-2 !px-[20px] !pb-[20px]\\\">\\n <template-item\\n ng-repeat=\\\"template in $ctrl.templates | filter:$ctrl.state.textFilter\\\"\\n model=\\\"template\\\"\\n type-label=\\\"{{ $ctrl.typeLabel(template.Type) }}\\\"\\n on-select=\\\"($ctrl.onSelectClick)\\\"\\n >\\n <template-item-actions>\\n <div ng-if=\\\"$ctrl.isEditAllowed(template)\\\" class=\\\"vertical-center\\\">\\n <a ui-state=\\\"$ctrl.editPath\\\" ui-state-params=\\\"{id: template.Id}\\\" ng-click=\\\"$event.stopPropagation();\\\" class=\\\"btn btn-secondary btn-sm vertical-center\\\">\\n <pr-icon icon=\\\"'edit'\\\"></pr-icon>\\n Edit\\n </a>\\n <button class=\\\"btn btn-dangerlight btn-sm vertical-center\\\" ng-click=\\\"$ctrl.onDeleteClick(template.Id); $event.stopPropagation();\\\">\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Delete\\n </button>\\n </div>\\n </template-item-actions>\\n </template-item>\\n <div ng-if=\\\"!$ctrl.templates\\\" class=\\\"text-muted text-center\\\"> Loading... </div>\\n <div ng-if=\\\"($ctrl.templates | filter : $ctrl.state.textFilter).length === 0\\\" class=\\\"text-muted text-center\\\"> No templates available. </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/custom-templates-list/customTemplatesList.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\" style=\\\"margin-top: 25px\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar vertical-center\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n <span>{{ $ctrl.titleText }}</span>\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"searchIcon\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"actionBar\\\">\\n <button\\n ng-if=\\\"!$ctrl.endpointType\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-white'\\\"></pr-icon>\\n <span>Remove</span>\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary vertical-center\\\" ng-click=\\\"$ctrl.onClickAdd()\\\">\\n <pr-icon icon=\\\"'plus'\\\" class-name=\\\"'icon-white'\\\"></pr-icon>\\n <span>Add access token</span>\\n </button>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Description'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'description'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'description' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('description')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Prefix'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'prefix'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'prefix' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('prefix')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Created'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'dateCreated'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'dateCreated' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('dateCreated')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Last Used'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'lastUsed'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'lastUsed' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('lastUsed')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n {{ item.description }}\\n </td>\\n <td>\\n {{ item.prefix }}\\n </td>\\n <td>\\n {{ item.dateCreated | getisodatefromtimestamp }}\\n </td>\\n <td>\\n <span ng-if=\\\"item.lastUsed > 0\\\">{{ item.lastUsed | getisodatefromtimestamp }}</span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/access-tokens-datatable/access-tokens-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<span class=\\\"setting\\\" ng-class=\\\"{ 'setting-active': $ctrl.state.isOpen }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.state.isOpen\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Columns\\\">\\n <pr-icon icon=\\\"'columns'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Show / Hide Columns </div>\\n <div class=\\\"menuContent\\\">\\n <div class=\\\"md-checkbox\\\" ng-repeat=\\\"(key, value) in $ctrl.columns\\\">\\n <input id=\\\"col_vis_{{::key}}\\\" ng-change=\\\"$ctrl.onChange($ctrl.columns)\\\" type=\\\"checkbox\\\" ng-model=\\\"value.display\\\" />\\n <label for=\\\"col_vis_{{::key}}\\\">{{ value.label }}</label>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.state.isOpen = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n</span>\\n\";;\nvar path = 'app/portainer/components/datatables/datatable-columns-visibility/datatable-columns-visibility.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div uib-dropdown dropdown-append-to-body auto-close=\\\"outsideClick\\\" is-open=\\\"$ctrl.isOpen\\\">\\n <span ng-transclude></span>\\n <div class=\\\"filter-button\\\">\\n <span uib-dropdown-toggle class=\\\"table-filter vertical-center\\\" ng-class=\\\"{ 'filter-active': $ctrl.isEnabled() }\\\">\\n Filter\\n <pr-icon ng-if=\\\"$ctrl.isEnabled()\\\" icon=\\\"'check'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.isEnabled()\\\" icon=\\\"'filter'\\\"></pr-icon>\\n </span>\\n </div>\\n <div class=\\\"dropdown-menu\\\" style=\\\"min-width: 0\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuContent\\\">\\n <div class=\\\"md-checkbox\\\" ng-repeat=\\\"filter in $ctrl.labels track by filter.value\\\">\\n <input\\n id=\\\"filter_{{ $ctrl.filterKey }}_{{ $index }}\\\"\\n type=\\\"checkbox\\\"\\n ng-value=\\\"filter.value\\\"\\n ng-checked=\\\"$ctrl.state.includes(filter.value)\\\"\\n ng-click=\\\"$ctrl.onChangeItem(filter.value)\\\"\\n />\\n <label for=\\\"filter_{{ $ctrl.filterKey }}_{{ $index }}\\\">\\n {{ filter.label }}\\n </label>\\n </div>\\n </div>\\n <div>\\n <a class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.isOpen = false;\\\"> Close </a>\\n </div>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/filter/datatable-filter.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a group...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"endpointGroup-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !gap-3\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight h-fit\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"endpointGroup-removeGroupButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Remove\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary h-fit\\\" ui-sref=\\\"portainer.groups.new\\\" data-cy=\\\"endpointGroup-addGroupButton\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>Add group\\n </button>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\" data-cy=\\\"endpointGroup-endpointGroupTable\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" data-cy=\\\"endpointGroup-selectAllCheckbox\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"portainer.groups.group({id: item.Id})\\\">{{ item.Name }}</a>\\n </td>\\n <td>\\n <div class=\\\"vertical-center\\\">\\n <a ui-sref=\\\"portainer.groups.group.access({id: item.Id})\\\">\\n <pr-icon icon=\\\"'users'\\\"></pr-icon>\\n Manage access\\n </a>\\n </div>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">No group available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/groups-datatable/groupsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.limit\\\" ng-change=\\\"$ctrl.onChangeLimit($ctrl.limit)\\\">\\n <option ng-if=\\\"$ctrl.enableNoLimit\\\" ng-value=\\\"0\\\">All</option>\\n <option ng-value=\\\"10\\\">10</option>\\n <option ng-value=\\\"25\\\">25</option>\\n <option ng-value=\\\"50\\\">50</option>\\n <option ng-value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\" on-page-change=\\\"$ctrl.onChangePage(newPageNumber)\\\"> </dir-pagination-controls>\\n </form>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/pagination/pagination.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a registry...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"registry-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !gap-3\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n <button\\n ng-if=\\\"!$ctrl.endpointType\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"registry-removeRegistryButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary vertical-center !ml-0 h-fit\\\" ui-sref=\\\"portainer.registries.new\\\" data-cy=\\\"registry-addRegistryButton\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>Add registry\\n </button>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox vertical-center\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.endpointType\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'URL'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'URL'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'URL' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('URL')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header col-title=\\\"'Actions'\\\" can-sort=\\\"false\\\"></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr>\\n <td>\\n <span class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.endpointType\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" disabled />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <span><default-registry-name></default-registry-name></span>\\n </td>\\n <td> <default-registry-domain></default-registry-domain> </td>\\n <td>\\n <default-registry-action ng-if=\\\"$ctrl.isAdmin && !$ctrl.endpointType\\\"></default-registry-action>\\n </td>\\n </tr>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin && !$ctrl.endpointType\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"!$ctrl.allowSelection(item)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"portainer.registries.registry({id: item.Id})\\\" ng-if=\\\"$ctrl.enableGoToLink(item)\\\">{{ item.Name }}</a>\\n <span ng-if=\\\"!$ctrl.enableGoToLink(item)\\\">{{ item.Name }}</span>\\n <span ng-if=\\\"item.Authentication\\\" style=\\\"margin-left: 5px\\\" class=\\\"label label-info image-tag\\\">authentication-enabled</span>\\n </td>\\n <td>\\n {{ item.URL }}\\n </td>\\n <td>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-link vertical-center !ml-0 px-0 hover:no-underline\\\"\\n ng-if=\\\"$ctrl.canManageAccess(item)\\\"\\n ng-click=\\\"$ctrl.redirectToManageAccess(item)\\\"\\n >\\n <pr-icon icon=\\\"'users'\\\"></pr-icon>Manage access\\n </button>\\n <be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\" ng-if=\\\"$ctrl.canBrowse(item)\\\">\\n <span class=\\\"text-muted\\\" style=\\\"padding-right: 5px\\\"> <pr-icon icon=\\\"'search'\\\"></pr-icon> Browse </span>\\n </be-feature-indicator>\\n\\n <span ng-if=\\\"!$ctrl.canBrowse(item) && !$ctrl.canManageAccess(item)\\\"> - </span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/registries-datatable/registriesDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\" ng-if=\\\"$ctrl.createEnabled\\\">\\n <div class=\\\"toolBar vertical-center flex-wrap !gap-x-5 !gap-y-1\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'layers'\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center !mr-0\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a stack...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"stack-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !gap-3\\\" authorization=\\\"PortainerStackCreate, PortainerStackDelete\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n authorization=\\\"PortainerStackDelete\\\"\\n ng-disabled=\\\"!$ctrl.createEnabled || $ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"stack-removeStackButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n <button\\n ng-disabled=\\\"!$ctrl.createEnabled\\\"\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary vertical-center !ml-0 h-fit\\\"\\n ui-sref=\\\"docker.stacks.newstack\\\"\\n authorization=\\\"PortainerStackCreate\\\"\\n data-cy=\\\"stack-addStackButton\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>Add stack\\n </button>\\n </div>\\n <div class=\\\"settings\\\">\\n <datatable-columns-visibility columns=\\\"$ctrl.columnVisibility.columns\\\" on-change=\\\"($ctrl.onColumnVisibilityChange)\\\"></datatable-columns-visibility>\\n <span class=\\\"setting ml-2\\\" ng-class=\\\"{ 'setting-active': $ctrl.settings.open }\\\" uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.settings.open\\\">\\n <span uib-dropdown-toggle aria-label=\\\"Settings\\\">\\n <pr-icon icon=\\\"'more-vertical'\\\"></pr-icon>\\n </span>\\n <div class=\\\"dropdown-menu dropdown-menu-right\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Table settings </div>\\n <div class=\\\"menuContent\\\">\\n <div>\\n <div class=\\\"md-checkbox\\\" ng-if=\\\"$ctrl.isAdmin\\\">\\n <input id=\\\"setting_all_orphaned_stacks\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.allOrphanedStacks\\\" ng-change=\\\"$ctrl.onSettingsAllOrphanedStacksChange()\\\" />\\n <label for=\\\"setting_all_orphaned_stacks\\\">Show all orphaned stacks</label>\\n </div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"setting_auto_refresh\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.repeater.autoRefresh\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" />\\n <label for=\\\"setting_auto_refresh\\\">Auto refresh</label>\\n </div>\\n <div ng-if=\\\"$ctrl.settings.repeater.autoRefresh\\\">\\n <label for=\\\"settings_refresh_rate\\\"> Refresh rate </label>\\n <select id=\\\"settings_refresh_rate\\\" ng-model=\\\"$ctrl.settings.repeater.refreshRate\\\" ng-change=\\\"$ctrl.onSettingsRepeaterChange()\\\" class=\\\"small-select\\\">\\n <option value=\\\"10\\\">10s</option>\\n <option value=\\\"30\\\">30s</option>\\n <option value=\\\"60\\\">1min</option>\\n <option value=\\\"120\\\">2min</option>\\n <option value=\\\"300\\\">5min</option>\\n </select>\\n <span>\\n <pr-icon id=\\\"refreshRateChange\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\" style=\\\"display: none\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.settings.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </span>\\n </div>\\n </div>\\n\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\" data-cy=\\\"stack-stackTable\\\">\\n <thead>\\n <tr>\\n <th uib-dropdown dropdown-append-to-body auto-close=\\\"disabled\\\" is-open=\\\"$ctrl.filters.state.open\\\">\\n <div class=\\\"flex-no-wrap flex flex-row gap-1\\\">\\n <span class=\\\"md-checkbox\\\" authorization=\\\"PortainerStackCreate, PortainerStackDelete\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n <div>\\n <span uib-dropdown-toggle ng-class=\\\"['table-filter vertical-center !ml-1', { 'filter-active': $ctrl.filters.state.enabled }]\\\">\\n Filter\\n <pr-icon ng-if=\\\"$ctrl.filters.state.enabled\\\" icon=\\\"'check'\\\" size=\\\"'sm'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.filters.state.enabled\\\" icon=\\\"'filter'\\\" size=\\\"'sm'\\\"></pr-icon>\\n </span>\\n </div>\\n <div class=\\\"dropdown-menu\\\" uib-dropdown-menu>\\n <div class=\\\"tableMenu\\\">\\n <div class=\\\"menuHeader\\\"> Filter by activity </div>\\n <div class=\\\"menuContent\\\">\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"filter_usage_activeStacks\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showActiveStacks\\\" ng-change=\\\"$ctrl.onFilterChange()\\\" />\\n <label for=\\\"filter_usage_activeStacks\\\">Active stacks</label>\\n </div>\\n <div class=\\\"md-checkbox\\\">\\n <input id=\\\"filter_usage_unactiveStacks\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.filters.state.showUnactiveStacks\\\" ng-change=\\\"$ctrl.onFilterChange()\\\" />\\n <label for=\\\"filter_usage_unactiveStacks\\\">Inactive stacks</label>\\n </div>\\n </div>\\n <div>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ng-click=\\\"$ctrl.filters.state.open = false;\\\">Close</a>\\n </div>\\n </div>\\n </div>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Type'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Type'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Type' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Type')\\\"\\n ></table-column-header>\\n </th>\\n <th><table-column-header col-title=\\\"'Control'\\\" can-sort=\\\"false\\\"></table-column-header></th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Created'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.CreationDate'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.CreationDate' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.CreationDate')\\\"\\n ></table-column-header>\\n </th>\\n <th ng-if=\\\"$ctrl.columnVisibility.columns.updated.display\\\">\\n <table-column-header\\n col-title=\\\"'Updated'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.UpdateDate'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.UpdateDate' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.UpdateDate')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Ownership'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'ResourceControl.Ownership' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('ResourceControl.Ownership')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter: $ctrl.applyFilters | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\" authorization=\\\"PortainerStackCreate, PortainerStackDelete\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"!$ctrl.allowSelection(item)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a\\n ng-if=\\\"$ctrl.createEnabled\\\"\\n ui-sref=\\\"docker.stacks.stack({ name: item.Name, id: item.Id, type: item.Type, regular: item.Regular, external: item.External, orphaned: item.Orphaned, orphanedRunning: item.OrphanedRunning })\\\"\\n >{{ item.Name }}</a\\n >\\n <span ng-if=\\\"item.Regular && item.Status == 2\\\" class=\\\"label label-warning image-tag ml-2\\\">Inactive</span>\\n </td>\\n <td>{{ item.Type === 1 ? 'Swarm' : 'Compose' }}</td>\\n <td>\\n <span\\n ng-if=\\\"item.Orphaned\\\"\\n class=\\\"interactive vertical-center\\\"\\n tooltip-append-to-body=\\\"true\\\"\\n tooltip-placement=\\\"bottom\\\"\\n tooltip-class=\\\"portainer-tooltip\\\"\\n uib-tooltip=\\\"This stack was created inside an environment that is no longer registered inside Portainer.\\\"\\n >\\n Orphaned\\n <pr-icon icon=\\\"'alert-circle'\\\" class-name=\\\"'ml-0.5'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n </span>\\n <span\\n ng-if=\\\"item.External\\\"\\n class=\\\"interactive vertical-center\\\"\\n tooltip-append-to-body=\\\"true\\\"\\n tooltip-placement=\\\"bottom\\\"\\n tooltip-class=\\\"portainer-tooltip\\\"\\n uib-tooltip=\\\"This stack was created outside of Portainer. Control over this stack is limited.\\\"\\n >\\n Limited\\n <pr-icon icon=\\\"'alert-circle'\\\" class-name=\\\"'ml-0.5'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n </span>\\n <span ng-if=\\\"item.Regular\\\">Total</span>\\n </td>\\n <td>\\n <span ng-if=\\\"item.CreationDate\\\">{{ item.CreationDate | getisodatefromtimestamp }} {{ item.CreatedBy ? 'by ' + item.CreatedBy : '' }}</span>\\n <span ng-if=\\\"!item.CreationDate\\\"> - </span>\\n </td>\\n <td ng-if=\\\"$ctrl.columnVisibility.columns.updated.display\\\">\\n <span ng-if=\\\"item.UpdateDate\\\">{{ item.UpdateDate | getisodatefromtimestamp }} {{ item.UpdatedBy ? 'by ' + item.UpdatedBy : '' }}</span>\\n <span ng-if=\\\"!item.UpdateDate\\\"> - </span>\\n </td>\\n <td>\\n <span class=\\\"vertical-center\\\">\\n <pr-icon ng-attr-icon=\\\"item.ResourceControl.Ownership | ownershipicon\\\" class-name=\\\"'icon ml-0.5'\\\"></pr-icon>\\n {{ item.ResourceControl.Ownership ? item.ResourceControl.Ownership : item.ResourceControl.Ownership = $ctrl.RCO.ADMINISTRATORS }}\\n </span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\" data-cy=\\\"stacks-loadingTableRow\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\" data-cy=\\\"stacks-noStackTableRow\\\">\\n <td colspan=\\\"6\\\" class=\\\"text-muted text-center\\\">No stack available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer pl-5\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar !ml-0\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\">\\n {{ $ctrl.state.selectedItemCount }}\\n item(s) selected\\n </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span class=\\\"mr-1\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/stacks-datatable/stacksDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <div class=\\\"toolBar vertical-center relative w-full flex-wrap !gap-x-5 !gap-y-1\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"actionBar\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.onRemove($ctrl.state.selectedItems)\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n </div>\\n </div>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"$ctrl.columnHeader\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n style=\\\"display: inline-block\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n ng-class=\\\"{ active: $ctrl.state.selectedItems.includes(item) }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input\\n id=\\\"select_{{ $index }}\\\"\\n type=\\\"checkbox\\\"\\n ng-checked=\\\"$ctrl.state.selectedItems.includes(item)\\\"\\n ng-disabled=\\\"$ctrl.disableRemove(item)\\\"\\n ng-click=\\\"$ctrl.selectItem(item, $event)\\\"\\n />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n {{ item.value }}\\n </td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td class=\\\"text-muted text-center\\\">{{ $ctrl.emptyDatasetMessage }}</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/strings-datatable/strings-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a tag...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !gap-3\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-dangerlight h-fit\\\" ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\" ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n {{ item.Name }}\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"1\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"1\\\" class=\\\"text-muted text-center\\\">No tag available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline vertical-center\\\">\\n <span class=\\\"limitSelector\\\">\\n <span class=\\\"space-right\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/tags-datatable/tagsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle\\\">\\n <pr-icon icon=\\\"$ctrl.icon\\\" class-name=\\\"'space-right'\\\"></pr-icon>\\n {{ $ctrl.title }}\\n <be-feature-indicator feature=\\\"$ctrl.feature\\\"></be-feature-indicator>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/titlebar/datatable-titlebar.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar vertical-center flex-wrap !gap-x-5 !gap-y-1\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n\\n <div class=\\\"actionBar !gap-3\\\" ng-show=\\\"$ctrl.isAdmin\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-dangerlight vertical-center !ml-0 h-fit\\\"\\n ng-disabled=\\\"$ctrl.state.selectedItemCount === 0\\\"\\n ng-click=\\\"$ctrl.removeAction($ctrl.state.selectedItems)\\\"\\n data-cy=\\\"user-removeUserButton\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>Remove\\n </button>\\n </div>\\n </div>\\n\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\" data-cy=\\\"user-userTable\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox\\\" ng-show=\\\"$ctrl.isAdmin\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Username'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Username' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Username')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Role'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'RoleName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'RoleName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('RoleName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Authentication'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'AuthenticationMethod'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'AuthenticationMethod' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('AuthenticationMethod')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\" ng-show=\\\"$ctrl.isAdmin\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"!$ctrl.allowSelection(item)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n <a ui-sref=\\\"portainer.users.user({id: item.Id})\\\" ng-show=\\\"$ctrl.isAdmin\\\">{{ item.Username }}</a>\\n <span ng-show=\\\"!$ctrl.isAdmin\\\">{{ item.Username }}</span>\\n </td>\\n <td>\\n <span class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'user'\\\" ng-if=\\\"item.Role === 1 && !item.isTeamLeader\\\"></pr-icon>\\n <pr-icon icon=\\\"'user'\\\" ng-if=\\\"item.Role !== 1 && item.isTeamLeader\\\"></pr-icon>\\n <pr-icon icon=\\\"'user-plus'\\\" ng-if=\\\"item.Role !== 1 && !item.isTeamLeader\\\"></pr-icon>\\n {{ item.RoleName ? item.RoleName : '-' }}\\n </span>\\n </td>\\n <td>\\n <span ng-if=\\\"item.Id === 1 || ($ctrl.authenticationMethod !== 2 && $ctrl.authenticationMethod !== 3)\\\">Internal</span>\\n <span ng-if=\\\"item.Id !== 1 && $ctrl.authenticationMethod === 2\\\">LDAP</span>\\n <span ng-if=\\\"item.Id !== 1 && $ctrl.authenticationMethod === 3\\\">OAuth</span>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">No user available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/datatables/users-datatable/usersDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\" ng-if=\\\"$ctrl.isDemo\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"alert-triangle\\\" title-text=\\\"Feature not available\\\"> </rd-widget-header>\\n <rd-widget-body>\\n <span class=\\\"small text-muted\\\">{{ $ctrl.content }}</span>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/demo-feature-indicator/demo-feature-indicator.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <!-- tls-checkbox -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'TLS'\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n checked=\\\"$ctrl.formData.TLS\\\"\\n on-change=\\\"($ctrl.onToggleTLS)\\\"\\n tooltip=\\\"'Enable this option if you need to connect to the Docker environment with TLS.'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !tls-checkbox -->\\n <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"$ctrl.formData.TLS\\\"> TLS mode </div>\\n <!-- note -->\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formData.TLS\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\">\\n You can find out more information about how to protect a Docker environment with TLS in the\\n <a href=\\\"https://docs.docker.com/engine/security/https/\\\" target=\\\"_blank\\\">Docker documentation</a>.\\n </span>\\n </div>\\n </div>\\n\\n <box-selector\\n ng-if=\\\"$ctrl.formData.TLS\\\"\\n slim=\\\"true\\\"\\n radio-name=\\\"'tls_mode'\\\"\\n options=\\\"$ctrl.tlsOptions\\\"\\n value=\\\"$ctrl.formData.TLSMode\\\"\\n on-change=\\\"($ctrl.onChangeTLSMode)\\\"\\n ></box-selector>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\" ng-if=\\\"$ctrl.formData.TLS && $ctrl.formData.TLSMode !== 'tls_only'\\\"> Required TLS files </div>\\n <!-- tls-file-upload -->\\n <div ng-if=\\\"$ctrl.formData.TLS\\\">\\n <!-- tls-file-ca -->\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.formData.TLSMode === 'tls_client_ca' || $ctrl.formData.TLSMode === 'tls_ca'\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">TLS CA certificate</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formData.TLSCACert\\\">Select file</button>\\n <span class=\\\"space-left\\\">\\n {{ $ctrl.formData.TLSCACert.name }}\\n <pr-icon icon=\\\"'check'\\\" ng-if=\\\"$ctrl.formData.TLSCACert && $ctrl.formData.TLSCACert === $ctrl.endpoint.TLSConfig.TLSCACert\\\" mode=\\\"'success'\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" ng-if=\\\"!$ctrl.formData.TLSCACert\\\" mode=\\\"'danger'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n <!-- !tls-file-ca -->\\n <!-- tls-files-cert-key -->\\n <div ng-if=\\\"$ctrl.formData.TLSMode === 'tls_client_ca' || $ctrl.formData.TLSMode === 'tls_client_noca'\\\">\\n <!-- tls-file-cert -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"tls_cert\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">TLS certificate</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formData.TLSCert\\\">Select file</button>\\n <span class=\\\"space-left\\\">\\n {{ $ctrl.formData.TLSCert.name }}\\n <pr-icon icon=\\\"'check'\\\" ng-if=\\\"$ctrl.formData.TLSCert && $ctrl.formData.TLSCert === $ctrl.endpoint.TLSConfig.TLSCert\\\" mode=\\\"'success'\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" ng-if=\\\"!$ctrl.formData.TLSCert\\\" mode=\\\"'danger'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n <!-- !tls-file-cert -->\\n <!-- tls-file-key -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">TLS key</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formData.TLSKey\\\">Select file</button>\\n <span class=\\\"space-left\\\">\\n {{ $ctrl.formData.TLSKey.name }}\\n <pr-icon icon=\\\"'check'\\\" ng-if=\\\"$ctrl.formData.TLSKey && $ctrl.formData.TLSKey === $ctrl.endpoint.TLSConfig.TLSKey\\\" mode=\\\"'success'\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" ng-if=\\\"!$ctrl.formData.TLSKey\\\" mode=\\\"'danger'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n <!-- !tls-file-key -->\\n </div>\\n <!-- tls-files-cert-key -->\\n </div>\\n <!-- !tls-file-upload -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/endpointSecurity/porEndpointSecurity.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form class=\\\"file-upload-form\\\" name=\\\"$ctrl.fileUploadForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Upload </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\" ng-transclude=\\\"description\\\"> </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <file-upload-field on-change=\\\"($ctrl.onChange)\\\" required=\\\"($ctrl.ngRequired)\\\" value=\\\"($ctrl.file)\\\"></file-upload-field>\\n </div>\\n </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/form-components/file-upload-form/file-upload-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form name=\\\"$ctrl.webEditorForm\\\">\\n <div class=\\\"web-editor overflow-x-hidden\\\">\\n <div ng-if=\\\"!$ctrl.hideTitle\\\" class=\\\"col-sm-12 form-section-title pr-0\\\"\\n >Web editor\\n <div class=\\\"text-muted small vertical-center float-right mt-0\\\">\\n <span ng-if=\\\"$ctrl.BROWSER_OS_PLATFORM !== 'mac'\\\" class=\\\"vertical-center\\\">Ctrl+F for search</span>\\n <span ng-if=\\\"$ctrl.BROWSER_OS_PLATFORM === 'mac'\\\" class=\\\"vertical-center\\\">Cmd+F for search</span>\\n <portainer-tooltip\\n ng-if=\\\"$ctrl.BROWSER_OS_PLATFORM !== 'mac'\\\"\\n message=\\\"'Ctrl+F - Start searching <br />\\n Ctrl+G - Find next <br />\\n Ctrl+Shift+G - Find previous <br />\\n Ctrl+Shift+F - Replace <br />\\n Ctrl+Shift+R - Replace all <br />\\n Alt+G - Jump to line <br />\\n Alt+F - Persistent search: <br />\\n Enter - Find next <br />\\n Shift+Enter - Find previous <br />'\\\"\\n class-name=\\\"'[&>span]:!text-left'\\\"\\n set-html-message=\\\"true\\\"\\n >\\n </portainer-tooltip>\\n <portainer-tooltip\\n ng-if=\\\"$ctrl.BROWSER_OS_PLATFORM === 'mac'\\\"\\n message=\\\"'Cmd+F - Start searching <br />\\n Cmd+G - Find next <br />\\n Cmd+Shift+G - Find previous <br />\\n Cmd+Option+F - Replace <br />\\n Cmd+Option+R - Replace all <br />\\n Option+G - Jump to line <br />\\n Option+F - Persistent search: <br />\\n Enter - Find next <br />\\n Shift+Enter - Find previous <br />'\\\"\\n class-name=\\\"'[&>span]:!text-left'\\\"\\n set-html-message=\\\"true\\\"\\n >\\n </portainer-tooltip>\\n </div>\\n </div>\\n <div class=\\\"trancluded-item form-group col-sm-9 col-lg-10 text-muted small\\\" ng-transclude=\\\"description\\\"></div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 col-lg-12\\\">\\n <code-editor\\n identifier=\\\"{{ $ctrl.identifier }}\\\"\\n placeholder=\\\"{{ $ctrl.placeholder }}\\\"\\n read-only=\\\"$ctrl.readOnly\\\"\\n yml=\\\"$ctrl.yml\\\"\\n value=\\\"$ctrl.value\\\"\\n on-change=\\\"($ctrl.onChange)\\\"\\n height=\\\"{{ $ctrl.height }}\\\"\\n ></code-editor>\\n </div>\\n </div>\\n </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/form-components/web-editor-form/web-editor-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"endpointGroupForm\\\" ng-if=\\\"$ctrl.model\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"group_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"group_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"e.g. my-group\\\" required auto-focus />\\n <div class=\\\"help-block\\\" ng-show=\\\"endpointGroupForm.group_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"endpointGroupForm.group_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- description-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"group_description\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Description</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"group_description\\\" ng-model=\\\"$ctrl.model.Description\\\" placeholder=\\\"e.g. production environments...\\\" />\\n </div>\\n </div>\\n <!-- !description-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Metadata </div>\\n\\n <tag-selector ng-if=\\\"$ctrl.model.TagIds\\\" value=\\\"$ctrl.model.TagIds\\\" on-change=\\\"($ctrl.onChangeTags)\\\" allow-create=\\\"$ctrl.state.allowCreateTag\\\"> </tag-selector>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.model.Id !== 1\\\">\\n <associated-endpoints-selector value=\\\"$ctrl.associatedEndpoints\\\" on-change=\\\"($ctrl.onChangeEnvironments)\\\"></associated-endpoints-selector>\\n </div>\\n\\n <div class=\\\"-mx-[15px]\\\">\\n <group-association-table\\n ng-if=\\\"$ctrl.model.Id === 1\\\"\\n title=\\\"'Unassociated environments'\\\"\\n empty-content-message=\\\"'No environment available'\\\"\\n query=\\\"$ctrl.unassociatedQuery\\\"\\n ></group-association-table>\\n </div>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-click=\\\"$ctrl.formAction()\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !endpointGroupForm.$valid\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/group-form/groupForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form name=\\\"$ctrl.redeployGitForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Redeploy from git repository </div>\\n <div class=\\\"form-group text-muted\\\">\\n <div class=\\\"col-sm-12\\\">\\n <p> Pull the latest manifest from git and redeploy the application. </p>\\n </div>\\n </div>\\n <git-form-auto-update-fieldset\\n value=\\\"$ctrl.formValues.AutoUpdate\\\"\\n on-change=\\\"($ctrl.onChangeAutoUpdate)\\\"\\n environment-type=\\\"KUBERNETES\\\"\\n is-force-pull-visible=\\\"false\\\"\\n base-webhook-url=\\\"{{ $ctrl.state.baseWebhookUrl }}\\\"\\n webhook-id=\\\"{{ $ctrl.state.webhookId }}\\\"\\n webhooks-docs=\\\"https://docs.portainer.io/user/kubernetes/applications/webhooks\\\"\\n ></git-form-auto-update-fieldset>\\n <time-window-display></time-window-display>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <p>\\n <a class=\\\"small interactive\\\" ng-click=\\\"$ctrl.state.showConfig = !$ctrl.state.showConfig\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.showConfig\\\" icon=\\\"'minus'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.showConfig\\\" icon=\\\"'plus'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n {{ $ctrl.state.showConfig ? 'Hide' : 'Advanced' }} configuration\\n </a>\\n </p>\\n </div>\\n </div>\\n\\n <git-form-ref-field\\n ng-if=\\\"$ctrl.state.showConfig\\\"\\n value=\\\"$ctrl.formValues.RefName\\\"\\n on-change=\\\"($ctrl.onChangeRef)\\\"\\n model=\\\"$ctrl.formValues\\\"\\n is-url-valid=\\\"true\\\"\\n ></git-form-ref-field>\\n\\n <git-form-auth-fieldset\\n ng-if=\\\"$ctrl.state.showConfig\\\"\\n value=\\\"$ctrl.formValues\\\"\\n on-change=\\\"($ctrl.onChangeGitAuth)\\\"\\n is-auth-explanation-visible=\\\"true\\\"\\n is-auth-edit=\\\"$ctrl.state.isAuthEdit\\\"\\n ></git-form-auth-fieldset>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.showConfig\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n name=\\\"TLSSkipVerify\\\"\\n checked=\\\"$ctrl.formValues.TLSSkipVerify\\\"\\n tooltip=\\\"'Enabling this will allow skipping TLS validation for any self-signed certificate.'\\\"\\n label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n label=\\\"'Skip TLS Verification'\\\"\\n on-change=\\\"($ctrl.onChangeTLSSkipVerify)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <!-- #Git buttons -->\\n <button\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-click=\\\"$ctrl.pullAndRedeployApplication()\\\"\\n ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || $ctrl.state.hasUnsavedChanges|| !$ctrl.redeployGitForm.$valid\\\"\\n style=\\\"margin-top: 7px; margin-left: 0\\\"\\n button-spinner=\\\"$ctrl.state.redeployInProgress\\\"\\n analytics-on\\n analytics-category=\\\"kubernetes\\\"\\n analytics-event=\\\"kubernetes-application-edit-git-pull\\\"\\n >\\n <span ng-show=\\\"!$ctrl.state.redeployInProgress\\\">\\n <pr-icon icon=\\\"'refresh-cw'\\\" class=\\\"!mr-1\\\"></pr-icon>\\n Pull and update application\\n </span>\\n <span ng-show=\\\"$ctrl.state.redeployInProgress\\\">In progress...</span>\\n </button>\\n\\n <button\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-click=\\\"$ctrl.saveGitSettings()\\\"\\n ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || !$ctrl.state.hasUnsavedChanges|| !$ctrl.redeployGitForm.$valid\\\"\\n style=\\\"margin-top: 7px; margin-left: 0\\\"\\n button-spinner=\\\"$ctrl.state.saveGitSettingsInProgress\\\"\\n analytics-on\\n analytics-category=\\\"kubernetes\\\"\\n analytics-event=\\\"kubernetes-application-edit\\\"\\n analytics-properties=\\\"$ctrl.buildAnalyticsProperties()\\\"\\n >\\n <span ng-show=\\\"!$ctrl.state.saveGitSettingsInProgress\\\"> Save settings </span>\\n <span ng-show=\\\"$ctrl.state.saveGitSettingsInProgress\\\">In progress...</span>\\n </button>\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/kubernetes-redeploy-app-git-form/kubernetes-redeploy-app-git-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormEcr\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n For information on how to generate an Access Key, follow the\\n <a href=\\\"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console\\\" target=\\\"_blank\\\">AWS guide</a>.\\n </span>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> ECR connection details </div>\\n\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"my-ecr-registry\\\" required auto-focus />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormEcr.registry_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n A registry with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n\\n <!-- url-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n <span class=\\\"required\\\">Registry URL</span>\\n <portainer-tooltip message=\\\"'URL of an Amazon Elastic Container Registry, which contains an account id and region.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"registry_url\\\"\\n name=\\\"registry_url\\\"\\n ng-model=\\\"$ctrl.model.URL\\\"\\n placeholder=\\\"aws-account-id.dkr.ecr.us-east-1.amazonaws.com/\\\"\\n required\\n />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_url.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormEcr.registry_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- url-input -->\\n\\n <!-- authentication-checkbox -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Authentication'\\\"\\n label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n tooltip=\\\"'Enable this option if you need to specify credentials to connect to a private registry.'\\\"\\n name=\\\"'administrator'\\\"\\n checked=\\\"$ctrl.model.Authentication\\\"\\n on-change=\\\"($ctrl.toggleAuthentication)\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !authentication-checkbox -->\\n\\n <div ng-if=\\\"$ctrl.model.Authentication\\\">\\n <!-- aws-access-key -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_access_key\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">AWS Access Key</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_access_key\\\" name=\\\"registry_access_key\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_access_key.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormEcr.registry_access_key.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !aws-access-key -->\\n\\n <!-- aws-secret-access-key -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_secret_access_key\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">AWS Secret Access Key</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_secret_access_key\\\" name=\\\"registry_secret_access_key\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_secret_access_key.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormEcr.registry_secret_access_key.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !aws-secret-access-key -->\\n\\n <!-- region -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_region\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Region</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_region\\\" name=\\\"registry_region\\\" placeholder=\\\"us-west-1\\\" ng-model=\\\"$ctrl.model.Ecr.Region\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormEcr.registry_region.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormEcr.registry_region.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n A registry with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !region -->\\n </div>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormEcr.$valid\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n analytics-on\\n analytics-category=\\\"portainer\\\"\\n analytics-event=\\\"portainer-registry-creation\\\"\\n analytics-properties=\\\"{ metadata: { type: 'ecr' } }\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-aws-ecr/registry-form-ecr.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormAzure\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Azure registry details </div>\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"my-azure-registry\\\" required auto-focus />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormAzure.registry_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormAzure.registry_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n A registry with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- url-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n <span class=\\\"required\\\">Registry URL</span>\\n <portainer-tooltip message=\\\"'URL of an Azure Container Registry. Any protocol will be stripped.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_url\\\" name=\\\"registry_url\\\" ng-model=\\\"$ctrl.model.URL\\\" placeholder=\\\"myproject.azurecr.io\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormAzure.registry_url.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormAzure.registry_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- url-input -->\\n <!-- credentials-user -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Username</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormAzure.registry_username.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormAzure.registry_username.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-user -->\\n <!-- credentials-password -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Password</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormAzure.registry_password.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormAzure.registry_password.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-password -->\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormAzure.$valid\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n analytics-on\\n analytics-category=\\\"portainer\\\"\\n analytics-event=\\\"portainer-registry-creation\\\"\\n analytics-properties=\\\"{ metadata: { type: 'azure' } }\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-azure/registry-form-azure.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormCustom\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n Docker requires you to connect to a <a href=\\\"https://docs.docker.com/registry/deploying/#running-a-domain-registry\\\" target=\\\"_blank\\\">secure registry</a>. You can find more\\n information about how to connect to an insecure registry <a href=\\\"https://docs.docker.com/registry/insecure/\\\" target=\\\"_blank\\\">in the Docker documentation</a>.\\n </span>\\n </div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Custom registry details </div>\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"my-custom-registry\\\" required auto-focus />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormCustom.registry_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormCustom.registry_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n A registry with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- url-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">\\n Registry URL\\n <portainer-tooltip message=\\\"'URL or IP address of a Docker registry. Any protocol and trailing slash will be stripped if present.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_url\\\" name=\\\"registry_url\\\" ng-model=\\\"$ctrl.model.URL\\\" placeholder=\\\"10.0.0.10:5000 or myregistry.domain.tld\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormCustom.registry_url.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormCustom.registry_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- url-input -->\\n <!-- authentication-checkbox -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Authentication'\\\"\\n label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n tooltip=\\\"'Enable this option if you need to specify credentials to connect to this registry.'\\\"\\n name=\\\"'administrator'\\\"\\n checked=\\\"$ctrl.model.Authentication\\\"\\n on-change=\\\"($ctrl.toggleAuthentication)\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !authentication-checkbox -->\\n <div ng-if=\\\"$ctrl.model.Authentication\\\">\\n <!-- credentials-user -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Username</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormCustom.registry_username.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormCustom.registry_username.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-user -->\\n <!-- credentials-password -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Password</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormCustom.registry_password.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormCustom.registry_password.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-password -->\\n </div>\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormCustom.$valid\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n analytics-on\\n analytics-category=\\\"portainer\\\"\\n analytics-event=\\\"portainer-registry-creation\\\"\\n analytics-properties=\\\"{ metadata: { type: 'custom' }}\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-custom/registry-form-custom.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormDockerhub\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n <p>\\n For information on how to generate a DockerHub Access Token, follow the\\n <a href=\\\"https://docs.docker.com/docker-hub/access-tokens/\\\" target=\\\"_blank\\\">dockerhub guide</a>.\\n </p>\\n </span>\\n </div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> DockerHub account details </div>\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"dockerhub-prod-us\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormDockerhub.registry_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormDockerhub.registry_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n A registry with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- credentials-user -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">DockerHub username</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormDockerhub.registry_username.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormDockerhub.registry_username.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-user -->\\n <!-- credentials-password -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">DockerHub access token</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormDockerhub.registry_password.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormDockerhub.registry_password.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-password -->\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormDockerhub.$valid\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n analytics-on\\n analytics-category=\\\"portainer\\\"\\n analytics-event=\\\"portainer-registry-creation\\\"\\n analytics-properties=\\\"{ metadata: { type: 'dockerhub' } }\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-dockerhub/registry-form-dockerhub.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar vertical-center\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\" class-name=\\\"'icon-blue'\\\"></pr-icon>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"searchIcon\\\"></pr-icon>\\n <input type=\\\"text\\\" class=\\\"searchInput\\\" ng-model=\\\"$ctrl.state.textFilter\\\" ng-change=\\\"$ctrl.onTextFilterChange()\\\" placeholder=\\\"Search...\\\" auto-focus />\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <span class=\\\"md-checkbox vertical-center\\\">\\n <input id=\\\"select_all\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.state.selectAll\\\" ng-change=\\\"$ctrl.selectAll()\\\" />\\n <label for=\\\"select_all\\\"></label>\\n </span>\\n <table-column-header\\n col-title=\\\"'Namespace'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Namespace'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Namespace' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Namespace')\\\"\\n ></table-column-header>\\n </div>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'PathWithNamespace'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'PathWithNamespace'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'PathWithNamespace' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('PathWithNamespace')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header col-title=\\\"'Description'\\\" can-sort=\\\"false\\\"></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <span class=\\\"md-checkbox\\\">\\n <input id=\\\"select_{{ $index }}\\\" type=\\\"checkbox\\\" ng-model=\\\"item.Checked\\\" ng-click=\\\"$ctrl.selectItem(item, $event)\\\" ng-disabled=\\\"$ctrl.disableSelection(item)\\\" />\\n <label for=\\\"select_{{ $index }}\\\"></label>\\n </span>\\n {{ item.Namespace }}\\n </td>\\n <td>\\n {{ item.Name }}\\n </td>\\n <td>\\n {{ item.PathWithNamespace }}\\n </td>\\n <td>\\n {{ item.Description }}\\n </td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">No projects available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\" data-cy=\\\"component-paginationSelect\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-gitlab/gitlab-projects-datatable/gitlabProjectsDatatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"registryFormGitlab\\\" ng-submit=\\\"$ctrl.retrieveRegistries()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n <p>\\n For information on how to generate a GitLab Personal Access Token, follow the\\n <a href=\\\"https://gitlab.com/help/user/profile/personal_access_tokens.md\\\" target=\\\"_blank\\\">GitLab guide</a>.\\n </p>\\n </span>\\n </div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> GitLab registry connection details </div>\\n <!-- credentials-user -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Username</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"registryFormGitlab.registry_username.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"registryFormGitlab.registry_username.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-user -->\\n <!-- credentials-pat -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_perso_acc_token\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Personal Access Token </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_perso_acc_token\\\" name=\\\"registry_perso_acc_token\\\" ng-model=\\\"$ctrl.model.Token\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"registryFormGitlab.registry_perso_acc_token.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"registryFormGitlab.registry_perso_acc_token.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-pat -->\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-link btn-sm !ml-0 p-0 hover:no-underline\\\"\\n ng-if=\\\"!$ctrl.state.overrideConfiguration\\\"\\n ng-click=\\\"$ctrl.state.overrideConfiguration = true;\\\"\\n >\\n <pr-icon icon=\\\"'wrench'\\\"></pr-icon>\\n Override default configuration\\n </button>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-link btn-sm !ml-0 p-0 hover:no-underline\\\"\\n ng-if=\\\"$ctrl.state.overrideConfiguration\\\"\\n ng-click=\\\"$ctrl.state.overrideConfiguration = false; $ctrl.resetDefaults()\\\"\\n >\\n <pr-icon icon=\\\"'settings'\\\"></pr-icon>\\n Use default configuration\\n </button>\\n </div>\\n </div>\\n\\n <!-- url-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.overrideConfiguration\\\">\\n <label for=\\\"instance_url\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">\\n Instance URL\\n <portainer-tooltip message=\\\"'URL of Gitlab instance.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"instance_url\\\" name=\\\"instance_url\\\" ng-model=\\\"$ctrl.model.Gitlab.InstanceURL\\\" placeholder=\\\"https://gitlab.com\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"registryFormGitlab.instance_url.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"registryFormGitlab.instance_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !url-input -->\\n <!-- url-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.overrideConfiguration\\\">\\n <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">\\n Registry URL\\n <portainer-tooltip message=\\\"'URL of Gitlab registry instance.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_url\\\" name=\\\"registry_url\\\" ng-model=\\\"$ctrl.model.URL\\\" placeholder=\\\"https://registry.gitlab.com\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"registryFormGitlab.registry_url.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"registryFormGitlab.registry_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !url-input -->\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"submit\\\" class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"$ctrl.actionInProgress || !registryFormGitlab.$valid\\\" button-spinner=\\\"$ctrl.actionInProgress\\\">\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">Retrieve projects</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n</form>\\n<div class=\\\"form-horizontal\\\" ng-if=\\\"$ctrl.projects\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> GitLab projects </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> Select the project's registries you want to manage. Portainer will create one registry for each selected project. </span>\\n <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-warning'\\\"></pr-icon>\\n If you can't select a project, make sure that registry feature is activated on it.\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <gitlab-projects-datatable\\n title-text=\\\"GitLab projects\\\"\\n title-icon=\\\"list\\\"\\n dataset=\\\"$ctrl.projects\\\"\\n table-key=\\\"gitlab_projects\\\"\\n state=\\\"$ctrl.state.gitlab\\\"\\n order-by=\\\"Name\\\"\\n ></gitlab-projects-datatable>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n ng-click=\\\"$ctrl.createRegistries()\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.state.gitlab.selectedItemCount\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n analytics-on\\n analytics-category=\\\"portainer\\\"\\n analytics-event=\\\"portainer-registry-creation\\\"\\n analytics-properties=\\\"{ metadata: { type: 'gitlab' } }\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">Create registries</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-gitlab/registry-form-gitlab.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormProGet\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Important notice </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 text-muted small\\\">\\n Any Portainer user that has access to this registry will be able to use the Registry Manager features against the content of any Feed in the ProGet registry that the ProGet\\n user has access to.\\n </div>\\n </div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> ProGet registry details </div>\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"proget-registry\\\" required auto-focus />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormProGet.registry_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n A registry with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- url-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n <span class=\\\"required\\\">Registry URL</span>\\n <portainer-tooltip message=\\\"'The URL of the ProGet registry including the Feed name'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_url\\\" name=\\\"registry_url\\\" ng-model=\\\"$ctrl.model.URL\\\" placeholder=\\\"proget.example.com/example-registry\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_url.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormProGet.registry_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- url-input -->\\n <!-- base-url-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_base_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n <span class=\\\"required\\\">Base URL</span>\\n <portainer-tooltip message=\\\"'The base URL of the ProGet registry'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_base_url\\\" name=\\\"registry_base_url\\\" ng-model=\\\"$ctrl.model.BaseURL\\\" placeholder=\\\"proget.example.com\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_base_url.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormProGet.registry_base_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !base-url-input -->\\n <div>\\n <!-- credentials-user -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Username</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_username.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormProGet.registry_username.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-user -->\\n <!-- credentials-password -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Password</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormProGet.registry_password.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormProGet.registry_password.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-password -->\\n </div>\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormProGet.$valid\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n analytics-on\\n analytics-category=\\\"portainer\\\"\\n analytics-event=\\\"portainer-registry-creation\\\"\\n analytics-properties=\\\"{ metadata: { type: 'proget' } }\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-proget/registry-form-proget.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form class=\\\"form-horizontal\\\" name=\\\"$ctrl.registryFormQuay\\\" ng-submit=\\\"$ctrl.formAction()\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Quay account details </div>\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_name\\\" name=\\\"registry_name\\\" ng-model=\\\"$ctrl.model.Name\\\" placeholder=\\\"Quay\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormQuay.registry_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormQuay.registry_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p ng-message=\\\"used\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n A registry with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- credentials-user -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_username\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Username</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_username\\\" name=\\\"registry_username\\\" ng-model=\\\"$ctrl.model.Username\\\" required auto-focus />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormQuay.registry_username.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormQuay.registry_username.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-user -->\\n <!-- credentials-password -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_password\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Password</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"registry_password\\\" name=\\\"registry_password\\\" ng-model=\\\"$ctrl.model.Password\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormQuay.registry_password.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormQuay.registry_password.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-password -->\\n\\n <!-- organization-checkbox -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Use organization registry'\\\"\\n checked=\\\"$ctrl.model.Quay.useOrganisation\\\"\\n on-change=\\\"($ctrl.toggleOrganisation)\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !organisation-checkbox -->\\n <div ng-if=\\\"$ctrl.model.Quay.useOrganisation\\\">\\n <!-- organisation_name -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"organisation_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Organization name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"organisation_name\\\" name=\\\"organisation_name\\\" ng-model=\\\"$ctrl.model.Quay.organisationName\\\" required />\\n <div class=\\\"help-block\\\" ng-show=\\\"$ctrl.registryFormQuay.organisation_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"$ctrl.registryFormQuay.organisation_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !organisation_name -->\\n </div>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || !$ctrl.registryFormQuay.$valid\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n analytics-on\\n analytics-category=\\\"portainer\\\"\\n analytics-event=\\\"portainer-registry-creation\\\"\\n analytics-properties=\\\"{ metadata: { type: 'quay' } }\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">{{ $ctrl.formActionLabel }}</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">In progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/registry-form-quay/registry-form-quay.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-custom-header icon=\\\"$ctrl.template.Logo\\\" title-text=\\\"$ctrl.template.Title\\\"></rd-widget-custom-header>\\n <rd-widget-body classes=\\\"padding\\\">\\n <form class=\\\"form-horizontal\\\" name=\\\"stackTemplateForm\\\">\\n <!-- description -->\\n <div ng-if=\\\"$ctrl.template.Note\\\">\\n <div class=\\\"form-section-title\\\"> Information </div>\\n <div class=\\\"col-sm-12 form-group\\\">\\n <div class=\\\"template-note\\\" ng-bind-html=\\\"$ctrl.template.Note\\\"></div>\\n </div>\\n </div>\\n <!-- !description -->\\n <div class=\\\"form-section-title\\\"> Configuration </div>\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"template_name\\\" class=\\\"col-sm-2 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-6\\\">\\n <input type=\\\"text\\\" name=\\\"template_name\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.formValues.name\\\" ng-pattern=\\\"$ctrl.nameRegex\\\" placeholder=\\\"e.g. myStack\\\" required />\\n <div class=\\\"form-group\\\" ng-if=\\\"stackTemplateForm.template_name.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"stackTemplateForm.template_name.$error\\\">\\n <p ng-message=\\\"pattern\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span>This field must consist of lower case alphanumeric characters, '_' or '-' (e.g. 'my-name', or 'abc-123').</span>\\n </p>\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>This field is required. </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <!-- !name-input -->\\n <!-- env -->\\n <div ng-repeat=\\\"var in $ctrl.template.Env\\\" ng-if=\\\"!var.preset || var.select\\\" class=\\\"form-group\\\">\\n <label for=\\\"field_{{ $index }}\\\" class=\\\"col-sm-2 control-label text-left\\\">\\n {{ var.label }}\\n <portainer-tooltip ng-if=\\\"var.description\\\" message=\\\"var.description\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-6\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-if=\\\"!var.select\\\" ng-model=\\\"var.value\\\" id=\\\"field_{{ $index }}\\\" />\\n <select class=\\\"form-control\\\" ng-if=\\\"var.select\\\" ng-model=\\\"var.value\\\" id=\\\"field_{{ $index }}\\\">\\n <option selected disabled hidden value=\\\"\\\">Select value</option>\\n <option ng-repeat=\\\"choice in var.select\\\" value=\\\"{{ choice.value }}\\\">{{ choice.text }}</option>\\n </select>\\n </div>\\n </div>\\n <!-- !env -->\\n <ng-transclude ng-transclude-slot=\\\"advanced\\\"></ng-transclude>\\n\\n <!-- access-control -->\\n <por-access-control-form form-data=\\\"$ctrl.formValues.AccessControlData\\\"></por-access-control-form>\\n <!-- !access-control -->\\n <!-- actions -->\\n <div class=\\\"form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary\\\"\\n ng-disabled=\\\"$ctrl.state.actionInProgress || !$ctrl.formValues.name || !$ctrl.state.deployable || stackTemplateForm.$invalid\\\"\\n ng-click=\\\"$ctrl.createTemplate()\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">Deploy the stack</span>\\n <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Deployment in progress...</span>\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"$ctrl.unselectTemplate($ctrl.template)\\\">Hide</button>\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">\\n <div class=\\\"col-sm-12 small text-danger\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">\\n <p class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>{{ $ctrl.state.formValidationError }} </p>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.state.deployable\\\">\\n <div class=\\\"col-sm-12 small text-danger\\\" ng-if=\\\"!$ctrl.state.deployable\\\">\\n <p class=\\\"vertical-center\\\"> <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>This template type cannot be deployed on this environment. </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/forms/stack-from-template-form/stackFromTemplateForm.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<form name=\\\"$ctrl.redeployGitForm\\\" class=\\\"form-horizontal my-8\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Redeploy from git repository </div>\\n\\n <git-form-info-panel\\n class-name=\\\"'text-muted small'\\\"\\n url=\\\"$ctrl.model.URL\\\"\\n type=\\\"'stack'\\\"\\n config-file-path=\\\"$ctrl.model.ConfigFilePath\\\"\\n additional-files=\\\"$ctrl.stack.AdditionalFiles\\\"\\n ></git-form-info-panel>\\n\\n <git-form-auto-update-fieldset\\n value=\\\"$ctrl.formValues.AutoUpdate\\\"\\n on-change=\\\"($ctrl.onChangeAutoUpdate)\\\"\\n environment-type=\\\"DOCKER\\\"\\n is-force-pull-visible=\\\"$ctrl.stack.Type !== 3\\\"\\n base-webhook-url=\\\"{{ $ctrl.state.baseWebhookUrl }}\\\"\\n webhook-id=\\\"{{ $ctrl.state.webhookId }}\\\"\\n webhooks-docs=\\\"https://docs.portainer.io/user/docker/stacks/webhooks\\\"\\n ></git-form-auto-update-fieldset>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <p>\\n <a class=\\\"small interactive\\\" ng-click=\\\"$ctrl.state.showConfig = !$ctrl.state.showConfig\\\">\\n <pr-icon ng-if=\\\"$ctrl.state.showConfig\\\" icon=\\\"'minus'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"!$ctrl.state.showConfig\\\" icon=\\\"'plus'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n {{ $ctrl.state.showConfig ? 'Hide' : 'Advanced' }} configuration\\n </a>\\n </p>\\n </div>\\n </div>\\n\\n <git-form-ref-field\\n ng-if=\\\"$ctrl.state.showConfig\\\"\\n value=\\\"$ctrl.formValues.RefName\\\"\\n on-change=\\\"($ctrl.onChangeRef)\\\"\\n model=\\\"$ctrl.formValues\\\"\\n is-url-valid=\\\"true\\\"\\n stack-id=\\\"$ctrl.gitStackId\\\"\\n ></git-form-ref-field>\\n\\n <git-form-auth-fieldset\\n ng-if=\\\"$ctrl.state.showConfig\\\"\\n value=\\\"$ctrl.formValues\\\"\\n on-change=\\\"($ctrl.onChangeGitAuth)\\\"\\n is-auth-explanation-visible=\\\"true\\\"\\n is-auth-edit=\\\"$ctrl.state.isAuthEdit\\\"\\n ></git-form-auth-fieldset>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.showConfig\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n name=\\\"TLSSkipVerify\\\"\\n checked=\\\"$ctrl.formValues.TLSSkipVerify\\\"\\n tooltip=\\\"'Enabling this will allow skipping TLS validation for any self-signed certificate.'\\\"\\n label-class=\\\"'col-sm-3 col-lg-2'\\\"\\n label=\\\"'Skip TLS Verification'\\\"\\n on-change=\\\"($ctrl.onChangeTLSSkipVerify)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n\\n <environment-variables-panel\\n values=\\\"$ctrl.formValues.Env\\\"\\n explanation=\\\"'These values will be used as substitutions in the stack file. To reference the .env file in your compose file, use ‘stack.env’.'\\\"\\n on-change=\\\"($ctrl.onChangeEnvVar)\\\"\\n show-help-message=\\\"true\\\"\\n ></environment-variables-panel>\\n\\n <option-panel ng-if=\\\"$ctrl.stack.Type === 1 && $ctrl.endpoint.apiVersion >= 1.27\\\" ng-model=\\\"$ctrl.formValues.Option\\\" on-change=\\\"($ctrl.onChangeOption)\\\"></option-panel>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n\\n <button\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-click=\\\"$ctrl.submit()\\\"\\n ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || $ctrl.state.hasUnsavedChanges || !$ctrl.redeployGitForm.$valid\\\"\\n style=\\\"margin-top: 7px; margin-left: 0\\\"\\n button-spinner=\\\"$ctrl.state.redeployInProgress\\\"\\n analytics-on\\n analytics-event=\\\"docker-stack-pull-redeploy\\\"\\n analytics-category=\\\"docker\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.redeployInProgress\\\">\\n <pr-icon icon=\\\"'refresh-cw'\\\" class=\\\"!mr-1\\\"></pr-icon>\\n Pull and redeploy\\n </span>\\n <span ng-show=\\\"$ctrl.state.redeployInProgress\\\">In progress...</span>\\n </button>\\n\\n <button\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-click=\\\"$ctrl.saveGitSettings()\\\"\\n ng-disabled=\\\"$ctrl.isSubmitButtonDisabled() || !$ctrl.state.hasUnsavedChanges || !$ctrl.redeployGitForm.$valid\\\"\\n style=\\\"margin-top: 7px; margin-left: 0\\\"\\n button-spinner=\\\"$ctrl.state.inProgress\\\"\\n analytics-on\\n analytics-event=\\\"docker-stack-update-git-settings\\\"\\n analytics-category=\\\"docker\\\"\\n analytics-properties=\\\"$ctrl.buildAnalyticsProperties()\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.inProgress\\\"> Save settings </span>\\n <span ng-show=\\\"$ctrl.state.inProgress\\\">In progress...</span>\\n </button>\\n</form>\\n\";;\nvar path = 'app/portainer/components/forms/stack-redeploy-git-form/stack-redeploy-git-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form class=\\\"form-horizontal\\\" name=\\\"$ctrl.optionForm\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\" style=\\\"margin-top: 10px; margin-left: 15px; width: 98%\\\"> Options </div>\\n\\n <!-- Prune service -->\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">\\n Prune services\\n <portainer-tooltip position=\\\"'top'\\\" message=\\\"'Prune services that are no longer referenced.'\\\"></portainer-tooltip>\\n </label>\\n <label class=\\\"switch\\\" style=\\\"margin-left: 20px\\\"> <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.ngModel.Prune\\\" ng-change=\\\"$ctrl.switchPruneService()\\\" /><i></i> </label>\\n </div>\\n <!-- !Prune service -->\\n </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/components/option-panel/option-panel.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<!-- extension -->\\n<div class=\\\"blocklist-item\\\" ng-click=\\\"$ctrl.goTo($ctrl.model)\\\">\\n <div class=\\\"blocklist-item-box\\\">\\n <!-- extension-image -->\\n <span class=\\\"blocklist-item-logo\\\">\\n <img class=\\\"blocklist-item-logo\\\" ng-if=\\\"$ctrl.model.Id == 1 || $ctrl.model.Id == 2 || $ctrl.model.Id == 3\\\" src=\\\"\" + require(\"@/assets/images/support_1.png\") + \"\\\" />\\n <img class=\\\"blocklist-item-logo\\\" ng-if=\\\"$ctrl.model.Id == 4 || $ctrl.model.Id == 5\\\" src=\\\"\" + require(\"@/assets/images/support_2.png\") + \"\\\" />\\n </span>\\n <!-- !extension-image -->\\n <!-- extension-details -->\\n <span class=\\\"col-sm-12\\\">\\n <!-- blocklist-item-line1 -->\\n <div class=\\\"blocklist-item-line\\\">\\n <span>\\n <span class=\\\"blocklist-item-title\\\">\\n {{ $ctrl.model.Name }}\\n </span>\\n </span>\\n </div>\\n <!-- !blocklist-item-line1 -->\\n <!-- blocklist-item-line2 -->\\n <div class=\\\"blocklist-item-line\\\">\\n <span>\\n <span class=\\\"blocklist-item-desc\\\">\\n {{ $ctrl.model.ShortDescription }}\\n </span>\\n </span>\\n </div>\\n <!-- !blocklist-item-line2 -->\\n </span>\\n <!-- !extension-details -->\\n </div>\\n <!-- !extension -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/product-list/product-item/productItem.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle\\\">\\n <pr-icon icon=\\\"'zap'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n {{ $ctrl.titleText }}\\n </div>\\n </div>\\n\\n <div class=\\\"blocklist\\\">\\n <product-item ng-repeat=\\\"product in $ctrl.products\\\" model=\\\"product\\\" go-to=\\\"$ctrl.goTo\\\"></product-item>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/product-list/productList.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"row\\\" ng-if=\\\"$ctrl.registry\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"radio\\\" title-text=\\\"Registry\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td style=\\\"padding-left: 20px\\\">Name</td>\\n <td>\\n {{ $ctrl.registry.Name }}\\n </td>\\n </tr>\\n <tr>\\n <td style=\\\"padding-left: 20px\\\">URL</td>\\n <td>\\n {{ $ctrl.registry.URL }}\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/components/registry-details/registry-details.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"sensitive-details-container\\\">\\n <div class=\\\"text-wrap\\\">{{ $ctrl.key }}</div>\\n <show-hide class=\\\"show-hide-container\\\" value=\\\"$ctrl.value\\\" use-asterisk=\\\"true\\\"></show-hide>\\n <copy-button value=\\\"$ctrl.value\\\"></copy-button>\\n</div>\\n\";;\nvar path = 'app/portainer/components/sensitive-details/sensitive-details.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"small text-muted text-wrap\\\">\\n <span ng-if=\\\"!$ctrl.show && $ctrl.useAsterisk\\\">********</span>\\n <span ng-if=\\\"$ctrl.show\\\">{{ $ctrl.value }}</span>\\n</div>\\n\\n<button type=\\\"button\\\" class=\\\"btn btn-link nopadding\\\" ng-click=\\\"$ctrl.show = !$ctrl.show\\\" title=\\\"Show/Hide value\\\">\\n <div ng-if=\\\"!$ctrl.show\\\">\\n <pr-icon icon=\\\"'eye-off'\\\"></pr-icon>\\n Show</div\\n >\\n <div ng-if=\\\"$ctrl.show\\\">\\n <pr-icon icon=\\\"'eye'\\\"></pr-icon>\\n Hide</div\\n >\\n</button>\\n\";;\nvar path = 'app/portainer/components/show-hide/show-hide.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <rzslider rz-slider-options=\\\"$ctrl.options\\\" rz-slider-model=\\\"$ctrl.model\\\"></rzslider>\\n</div>\\n\";;\nvar path = 'app/portainer/components/slider/slider.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div authorization=\\\"PortainerStackMigrate\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Stack duplication / migration </div>\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"dupStackForm\\\">\\n <div class=\\\"form-group\\\">\\n <span class=\\\"small\\\" style=\\\"margin-top: 10px\\\">\\n <p class=\\\"text-muted\\\"> This feature allows you to duplicate or migrate this stack. </p>\\n </span>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <input\\n class=\\\"form-control\\\"\\n placeholder=\\\"Stack name (optional for migration)\\\"\\n aria-placeholder=\\\"Stack name\\\"\\n name=\\\"new_stack_name\\\"\\n ng-pattern=\\\"$ctrl.STACK_NAME_VALIDATION_REGEX\\\"\\n ng-model=\\\"$ctrl.formValues.newName\\\"\\n />\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"dupStackForm.new_stack_name.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"dupStackForm.new_stack_name.$error\\\">\\n <p ng-message=\\\"pattern\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span>This field must consist of lower case alphanumeric characters, '_' or '-' (e.g. 'my-name', or 'abc-123').</span>\\n </p>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.endpoints && $ctrl.groups\\\">\\n <por-select value=\\\"$ctrl.formValues.endpointId\\\" on-change=\\\"($ctrl.onChangeEnvironment)\\\" options=\\\"$ctrl.environmentSelectorOptions\\\"></por-select>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <button\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-click=\\\"$ctrl.migrateStack()\\\"\\n ng-disabled=\\\"$ctrl.isMigrationButtonDisabled()\\\"\\n style=\\\"margin-top: 7px; margin-left: 0\\\"\\n button-spinner=\\\"$ctrl.state.migrationInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.migrationInProgress\\\">\\n <pr-icon icon=\\\"'arrow-right'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n Migrate\\n </span>\\n <span ng-show=\\\"$ctrl.state.migrationInProgress\\\">Migration in progress...</span>\\n </button>\\n <button\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-click=\\\"$ctrl.duplicateStack()\\\"\\n ng-disabled=\\\"!$ctrl.isFormValidForDuplication() || $ctrl.state.duplicationInProgress || $ctrl.state.migrationInProgress\\\"\\n style=\\\"margin-top: 7px; margin-left: 0\\\"\\n button-spinner=\\\"$ctrl.state.duplicationInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.duplicationInProgress\\\">\\n <pr-icon icon=\\\"'copy'\\\" class-name=\\\"'space-right'\\\"></pr-icon>\\n Duplicate\\n </span>\\n <span ng-show=\\\"$ctrl.state.duplicationInProgress\\\">Duplication in progress...</span>\\n </button>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div ng-if=\\\"$ctrl.yamlError && $ctrl.isEndpointSelected()\\\">\\n <span class=\\\"text-danger small\\\">{{ $ctrl.yamlError }}</span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/stack-duplication-form/stack-duplication-form.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<i aria-hidden=\\\"true\\\" ng-class=\\\"['status-indicator', { ok: $ctrl.ok }]\\\"></i>\\n\";;\nvar path = 'app/portainer/components/status-indicator/status-indicator.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<!-- template -->\\n<div ng-class=\\\"{ 'blocklist-item--selected': $ctrl.model.Selected }\\\" class=\\\"blocklist-item template-item !my-0 !mr-0\\\" ng-click=\\\"$ctrl.onSelect($ctrl.model)\\\">\\n <div class=\\\"blocklist-item-box\\\">\\n <!-- template-image -->\\n <div class=\\\"vertical-center min-w-[56px] justify-center\\\">\\n <fallback-image src=\\\"$ctrl.model.Logo\\\" fallback-icon=\\\"'rocket'\\\" class-name=\\\"'blocklist-item-logo'\\\" size=\\\"'3xl'\\\"></fallback-image>\\n </div>\\n <!-- !template-image -->\\n <!-- template-details -->\\n <div class=\\\"col-sm-12 template-item-details\\\">\\n <!-- blocklist-item-line1 -->\\n <div class=\\\"blocklist-item-line gap-2\\\">\\n <span class=\\\"blocklist-item-title\\\">\\n {{ $ctrl.model.Title }}\\n </span>\\n <div class=\\\"space-left blocklist-item-subtitle inline-flex items-center\\\">\\n <div ng-if=\\\"$ctrl.typeLabel !== 'manifest'\\\" class=\\\"vertical-center gap-1\\\">\\n <pr-icon ng-if=\\\"$ctrl.model.Platform === 1 || $ctrl.model.Platform === 'linux' || !$ctrl.model.Platform\\\" icon=\\\"'svg-linux'\\\" class=\\\"mr-1\\\"></pr-icon>\\n <pr-icon\\n icon=\\\"'svg-microsoft'\\\"\\n ng-if=\\\"$ctrl.model.Platform === 2 || $ctrl.model.Platform === 'windows' || !$ctrl.model.Platform\\\"\\n class-name=\\\"'[&>*]:flex [&>*]:items-center'\\\"\\n size=\\\"'lg'\\\"\\n ></pr-icon>\\n </div>\\n <!-- currently only kubernetes uses the typeLabel of 'manifest' -->\\n <div ng-if=\\\"$ctrl.typeLabel === 'manifest'\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'svg-kubernetes'\\\" size=\\\"'lg'\\\" class=\\\"align-bottom\\\" class-name=\\\"'[&>*]:flex [&>*]:items-center'\\\"></pr-icon>\\n </div>\\n {{ $ctrl.typeLabel }}\\n </div>\\n </div>\\n <!-- !blocklist-item-line1 -->\\n <span class=\\\"blocklist-item-actions\\\" ng-transclude=\\\"actions\\\"></span>\\n <!-- blocklist-item-line2 -->\\n <div class=\\\"blocklist-item-line template-item-details-sub\\\">\\n <span class=\\\"blocklist-item-desc\\\">\\n {{ $ctrl.model.Description }}\\n </span>\\n <span class=\\\"small text-muted\\\" ng-if=\\\"$ctrl.model.Categories.length > 0\\\">\\n {{ $ctrl.model.Categories.join(', ') }}\\n </span>\\n </div>\\n <!-- !blocklist-item-line2 -->\\n </div>\\n <!-- !template-details -->\\n </div>\\n <!-- !template -->\\n</div>\\n\";;\nvar path = 'app/portainer/components/template-list/template-item/templateItem.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class-name=\\\"'searchIcon'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search for a template...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n data-cy=\\\"template-searchInput\\\"\\n />\\n </div>\\n <div class=\\\"actionBar !gap-3\\\" ng-if=\\\"$ctrl.showAddAction\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary vertical-center !ml-0 h-fit\\\" ui-sref=\\\"docker.templates.new\\\" data-cy=\\\"template-addTemplateButton\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>Add template\\n </button>\\n </div>\\n </div>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"actionBar\\\">\\n <div class=\\\"row\\\">\\n <div class=\\\"col-sm-3\\\">\\n <template-list-dropdown\\n options=\\\"$ctrl.state.categories\\\"\\n on-change=\\\"($ctrl.applyCategoriesFilter)\\\"\\n placeholder=\\\"'Category'\\\"\\n value=\\\"$ctrl.state.selectedCategory\\\"\\n ></template-list-dropdown>\\n </div>\\n <div class=\\\"col-sm-3\\\">\\n <template-list-dropdown\\n options=\\\"$ctrl.state.typeFilters\\\"\\n on-change=\\\"($ctrl.applyTypeFilter)\\\"\\n placeholder=\\\"'Type'\\\"\\n value=\\\"$ctrl.state.filterByType\\\"\\n ></template-list-dropdown>\\n </div>\\n <div class=\\\"col-sm-3 col-sm-offset-3\\\">\\n <template-list-sort\\n on-change=\\\"($ctrl.changeOrderBy)\\\"\\n on-descending=\\\"($ctrl.invertOrder)\\\"\\n options=\\\"$ctrl.state.orderByFields\\\"\\n sort-by-button=\\\"true\\\"\\n sort-by-descending=\\\"$ctrl.state.orderDesc\\\"\\n placeholder=\\\"'Sort By'\\\"\\n value=\\\"$ctrl.state.selectedOrderBy\\\"\\n ></template-list-sort>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"blocklist gap-y-2 !px-[20px] !pb-[20px]\\\">\\n <template-item\\n ng-repeat=\\\"template in $ctrl.templates | filter: $ctrl.filterByTemplateType | filter:$ctrl.filterByCategory | filter:$ctrl.state.textFilter\\\"\\n model=\\\"template\\\"\\n type-label=\\\"{{ template.Type === 1 ? 'container' : 'stack' }}\\\"\\n on-select=\\\"($ctrl.selectAction)\\\"\\n >\\n <template-item-actions ng-if=\\\"template.Type === 2 || template.Type === 3\\\">\\n <button ng-click=\\\"$event.stopPropagation(); $ctrl.duplicateTemplate(template)\\\" class=\\\"btn btn-primary btn-xs\\\"> Copy as Custom </button>\\n </template-item-actions>\\n </template-item>\\n <div ng-if=\\\"!$ctrl.templates\\\" class=\\\"text-muted text-center\\\"> Loading... </div>\\n <div\\n ng-if=\\\"($ctrl.templates | filter : $ctrl.filterByTemplateType | filter : $ctrl.filterByCategory | filter : $ctrl.state.textFilter).length === 0\\\"\\n class=\\\"text-muted text-center\\\"\\n >\\n No templates available.\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/template-list/templateList.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"mt-6\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"sliders\\\" title-text=\\\"User theme\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <box-selector radio-name=\\\"'theme'\\\" value=\\\"$ctrl.state.themeColor\\\" options=\\\"$ctrl.state.availableThemes\\\" on-change=\\\"($ctrl.setThemeColor)\\\"></box-selector>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/components/theme/theme-settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Azure configuration </div>\\n <!-- applicationId-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"azure_credential_appid\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Application ID</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"azure_credential_appid\\\" ng-model=\\\"$ctrl.applicationId\\\" placeholder=\\\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\\" required />\\n </div>\\n </div>\\n <!-- !applicationId-input -->\\n <!-- tenantId-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"azure_credential_tenantid\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Tenant ID</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"azure_credential_tenantid\\\" ng-model=\\\"$ctrl.tenantId\\\" placeholder=\\\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\\" required />\\n </div>\\n </div>\\n <!-- !tenantId-input -->\\n <!-- authenticationkey-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"azure_credential_authkey\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Authentication key</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"azure_credential_authkey\\\"\\n ng-model=\\\"$ctrl.authenticationKey\\\"\\n placeholder=\\\"cOrXoK/1D35w8YQ8nH1/8ZGwzz45JIYD5jxHKXEQknk=\\\"\\n required\\n />\\n </div>\\n </div>\\n <!-- !authenticationkey-input -->\\n</div>\\n\";;\nvar path = 'app/portainer/environments/azure-endpoint-config/azureEndpointConfig.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Provider </div>\\n\\n<box-selector value=\\\"$ctrl.value\\\" options=\\\"$ctrl.options\\\" on-change=\\\"($ctrl.onChange)\\\" radio-name=\\\"'oauth_provider'\\\"></box-selector>\\n\";;\nvar path = 'app/portainer/oauth/components/oauth-providers-selector/oauth-providers-selector.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form name=\\\"oauthSettingsForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Single Sign-On </div>\\n\\n <!-- SSO -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Use SSO'\\\"\\n tooltip=\\\"'When using SSO the OAuth provider is not forced to prompt for credentials.'\\\"\\n name=\\\"'use-sso'\\\"\\n checked=\\\"$ctrl.settings.SSO\\\"\\n on-change=\\\"($ctrl.updateSSO)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !SSO -->\\n\\n <!-- HideInternalAuth -->\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.settings.SSO\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Hide internal authentication prompt'\\\"\\n name=\\\"'hide-internal-auth'\\\"\\n feature-id=\\\"$ctrl.limitedFeature\\\"\\n checked=\\\"$ctrl.settings.HideInternalAuth\\\"\\n on-change=\\\"($ctrl.onChangeHideInternalAuth)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !HideInternalAuth -->\\n\\n <auto-user-provision-toggle ng-model=\\\"$ctrl.settings.OAuthAutoCreateUsers\\\">\\n <field-description>\\n With automatic user provisioning enabled, Portainer will create user(s) automatically with the standard user role. If disabled, users must be created beforehand in Portainer\\n in order to login.\\n </field-description>\\n </auto-user-provision-toggle>\\n\\n <div ng-if=\\\"$ctrl.settings.OAuthAutoCreateUsers\\\">\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n <p>The users created by the automatic provisioning feature can be added to a default team on creation.</p>\\n <p>\\n By assigning newly created users to a team, they will be able to access the environments associated to that team. This setting is optional and if not set, newly created\\n users won't be able to access any environments.\\n </p>\\n </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Default team</label>\\n <span class=\\\"small text-muted\\\" style=\\\"margin-left: 20px\\\" ng-if=\\\"$ctrl.teams.length === 0\\\">\\n You have not yet created any teams. Head over to the <a ui-sref=\\\"portainer.teams\\\">Teams view</a> to manage teams.\\n </span>\\n\\n <div class=\\\"col-sm-9\\\" ng-if=\\\"$ctrl.teams.length > 0\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n The default team option will be disabled when automatic team membership is enabled\\n </p>\\n </div>\\n <div class=\\\"col-xs-12 vertical-center\\\">\\n <select\\n class=\\\"form-control\\\"\\n ng-disabled=\\\"$ctrl.settings.OAuthAutoMapTeamMemberships\\\"\\n ng-model=\\\"$ctrl.settings.DefaultTeamID\\\"\\n ng-options=\\\"team.Id as team.Name for team in $ctrl.teams\\\"\\n >\\n <option value=\\\"\\\">No team</option>\\n </select>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-md btn-danger\\\"\\n ng-click=\\\"$ctrl.settings.DefaultTeamID = null\\\"\\n ng-disabled=\\\"!$ctrl.settings.DefaultTeamID || $ctrl.settings.OAuthAutoMapTeamMemberships\\\"\\n ng-if=\\\"$ctrl.teams.length > 0\\\"\\n >\\n <pr-icon icon=\\\"'x'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Team membership </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 text-muted small\\\"> Automatic team membership synchronizes the team membership based on a custom claim in the token from the OAuth provider. </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label=\\\"'Automatic team membership'\\\"\\n name=\\\"'tls'\\\"\\n feature-id=\\\"$ctrl.limitedFeature\\\"\\n checked=\\\"$ctrl.settings.OAuthAutoMapTeamMemberships\\\"\\n on-change=\\\"($ctrl.onToggleAutoTeamMembership)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n\\n <div ng-if=\\\"$ctrl.settings.OAuthAutoMapTeamMemberships\\\">\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Claim name\\n <portainer-tooltip message=\\\"'The OpenID Connect UserInfo Claim name that contains the team identifier the user belongs to.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <div class=\\\"col-xs-11 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"oauth_token_claim_name\\\" ng-model=\\\"$ctrl.settings.TeamMemberships.OAuthClaimName\\\" placeholder=\\\"groups\\\" />\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Statically assigned teams </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <span class=\\\"label label-default interactive vertical-center ml-4\\\" ng-click=\\\"$ctrl.addTeamMembershipMapping()\\\">\\n <pr-icon icon=\\\"'plus-circle'\\\"></pr-icon>\\n add team mapping\\n </span>\\n\\n <div class=\\\"col-sm-12 form-inline\\\" ng-repeat=\\\"mapping in $ctrl.settings.TeamMemberships.OAuthClaimMappings\\\" style=\\\"margin-top: 0.75em\\\">\\n <div class=\\\"input-group input-group-sm col-sm-5\\\">\\n <span class=\\\"input-group-addon\\\">claim value regex</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"mapping.ClaimValRegex\\\" />\\n </div>\\n <span style=\\\"margin: 0px 0.5em\\\">maps to</span>\\n <div class=\\\"input-group input-group-sm col-sm-3 col-lg-4\\\">\\n <span class=\\\"input-group-addon\\\">team</span>\\n <select\\n class=\\\"form-control\\\"\\n ng-init=\\\"mapping.Team = mapping.Team || $ctrl.settings.DefaultTeamID\\\"\\n ng-model=\\\"mapping.Team\\\"\\n ng-options=\\\"team.Id as team.Name for team in $ctrl.teams\\\"\\n >\\n <option selected value=\\\"\\\">Select a team</option>\\n </select>\\n </div>\\n <button type=\\\"button\\\" class=\\\"btn btn-md btn-danger\\\" ng-click=\\\"$ctrl.removeTeamMembership($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n\\n <div>\\n <div class=\\\"small text-warning vertical-center mt-1\\\" ng-show=\\\"!mapping.ClaimValRegex\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n Claim value regex is required.\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 text-muted small\\\" style=\\\"margin-bottom: 0.5em\\\"> The default team will be assigned when the user does not belong to any other team </div>\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Default team</label>\\n <span class=\\\"small text-muted\\\" style=\\\"margin-left: 20px\\\" ng-if=\\\"$ctrl.teams.length === 0\\\">\\n You have not yet created any teams. Head over to the <a ui-sref=\\\"portainer.teams\\\">Teams view</a> to manage teams.\\n </span>\\n\\n <div class=\\\"col-sm-9\\\" ng-if=\\\"$ctrl.teams.length > 0\\\">\\n <div class=\\\"col-xs-11\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.settings.DefaultTeamID\\\" ng-options=\\\"team.Id as team.Name for team in $ctrl.teams\\\">\\n <option value=\\\"\\\">No team</option>\\n </select>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <oauth-providers-selector on-change=\\\"($ctrl.onSelectProvider)\\\" value=\\\"$ctrl.state.provider\\\"></oauth-providers-selector>\\n\\n <div ng-if=\\\"$ctrl.state.provider == 'custom' || $ctrl.state.overrideConfiguration\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\">OAuth Configuration</div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_client_id\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n {{ $ctrl.state.provider == 'microsoft' ? 'Application ID' : 'Client ID' }}\\n <portainer-tooltip message=\\\"'Public identifier of the OAuth application'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n id=\\\"oauth_client_id\\\"\\n ng-model=\\\"$ctrl.settings.ClientID\\\"\\n placeholder=\\\"xxxxxxxxxxxxxxxxxxxx\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n tabindex=\\\"{{ $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' ? -1 : 0 }}\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_client_secret\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n {{ $ctrl.state.provider == 'microsoft' ? 'Application key' : 'Client secret' }}\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"password\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_client_secret\\\"\\n ng-model=\\\"$ctrl.settings.ClientSecret\\\"\\n placeholder=\\\"xxxxxxxxxxxxxxxxxxxx\\\"\\n autocomplete=\\\"new-password\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n tabindex=\\\"{{ $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' ? -1 : 0 }}\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_authorization_uri\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Authorization URL\\n <portainer-tooltip message=\\\"'URL used to authenticate against the OAuth provider. Will redirect the user to the OAuth provider login view'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_authorization_uri\\\"\\n ng-model=\\\"$ctrl.settings.AuthorizationURI\\\"\\n placeholder=\\\"https://example.com/oauth/authorize\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_access_token_uri\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Access token URL\\n <portainer-tooltip message=\\\"'URL used by Portainer to exchange a valid OAuth authentication code for an access token'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_access_token_uri\\\"\\n ng-model=\\\"$ctrl.settings.AccessTokenURI\\\"\\n placeholder=\\\"https://example.com/oauth/token\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_resource_uri\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Resource URL\\n <portainer-tooltip message=\\\"'URL used by Portainer to retrieve information about the authenticated user'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_resource_uri\\\"\\n ng-model=\\\"$ctrl.settings.ResourceURI\\\"\\n placeholder=\\\"https://example.com/user\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_redirect_uri\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Redirect URL\\n <portainer-tooltip\\n message=\\\"'URL used by the OAuth provider to redirect the user after successful authentication. Should be set to your Portainer instance URL'\\\"\\n ></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_redirect_uri\\\"\\n ng-model=\\\"$ctrl.settings.RedirectURI\\\"\\n placeholder=\\\"http://yourportainer.com/\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_logout_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Logout URL\\n <portainer-tooltip\\n message=\\\"'URL used by Portainer to redirect the user to the OAuth provider in order to log the user out of the identity provider session.'\\\"\\n ></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_logout_url\\\"\\n ng-model=\\\"$ctrl.settings.LogoutURI\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_user_identifier\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n User identifier\\n <portainer-tooltip\\n message=\\\"'Identifier that will be used by Portainer to create an account for the authenticated user. Retrieved from the resource server specified via the Resource URL field'\\\"\\n ></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_user_identifier\\\"\\n ng-model=\\\"$ctrl.settings.UserIdentifier\\\"\\n placeholder=\\\"id\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_scopes\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Scopes\\n <portainer-tooltip\\n message=\\\"'Scopes required by the OAuth provider to retrieve information about the authenticated user. Refer to your OAuth provider documentation for more information about this'\\\"\\n ></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_scopes\\\"\\n ng-model=\\\"$ctrl.settings.Scopes\\\"\\n placeholder=\\\"id,email,name\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n />\\n </div>\\n </div>\\n <save-auth-settings-button\\n on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n save-button-disabled=\\\"!$ctrl.isOAuthTeamMembershipFormValid() || oauthSettingsForm.$invalid\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeature\\\"\\n limited-feature-class=\\\"$ctrl.limitedFeatureClass\\\"\\n class-name=\\\"'oauth-save-settings-button'\\\"\\n ></save-auth-settings-button>\\n </div>\\n\\n <div ng-if=\\\"$ctrl.state.provider != 'custom'\\\" class=\\\"limited-be be-indicator-container\\\">\\n <div class=\\\"limited-be-link vertical-center\\\"><be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator></div>\\n <div class=\\\"limited-be-content\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\">OAuth Configuration</div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.provider == 'microsoft'\\\">\\n <label for=\\\"oauth_microsoft_tenant_id\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Tenant ID\\n <portainer-tooltip message=\\\"'ID of the Azure Directory you wish to authenticate against. Also known as the Directory ID'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_microsoft_tenant_id\\\"\\n placeholder=\\\"xxxxxxxxxxxxxxxxxxxx\\\"\\n ng-model=\\\"$ctrl.state.microsoftTenantID\\\"\\n ng-change=\\\"$ctrl.onMicrosoftTenantIDChange()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeature}}\\\"\\n limited-feature-class=\\\"limited-be\\\"\\n limited-feature-disabled\\n limited-feature-tabindex=\\\"-1\\\"\\n required\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_client_id\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n {{ $ctrl.state.provider == 'microsoft' ? 'Application ID' : 'Client ID' }}\\n <portainer-tooltip message=\\\"'Public identifier of the OAuth application'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n id=\\\"oauth_client_id\\\"\\n ng-model=\\\"$ctrl.settings.ClientID\\\"\\n placeholder=\\\"xxxxxxxxxxxxxxxxxxxx\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n tabindex=\\\"{{ $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' ? -1 : 0 }}\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"oauth_client_secret\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n {{ $ctrl.state.provider == 'microsoft' ? 'Application key' : 'Client secret' }}\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"password\\\"\\n class=\\\"form-control\\\"\\n id=\\\"oauth_client_secret\\\"\\n ng-model=\\\"$ctrl.settings.ClientSecret\\\"\\n placeholder=\\\"xxxxxxxxxxxxxxxxxxxx\\\"\\n autocomplete=\\\"new-password\\\"\\n ng-class=\\\"['form-control', { 'limited-be': $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' }]\\\"\\n ng-disabled=\\\"$ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom'\\\"\\n tabindex=\\\"{{ $ctrl.isLimitedToBE && $ctrl.state.provider !== 'custom' ? -1 : 0 }}\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <a class=\\\"small interactive vertical-center\\\" ng-if=\\\"!$ctrl.state.overrideConfiguration\\\" ng-click=\\\"$ctrl.state.overrideConfiguration = true;\\\">\\n <pr-icon icon=\\\"'wrench'\\\"></pr-icon>\\n Override default configuration\\n </a>\\n <a class=\\\"small interactive vertical-center\\\" ng-if=\\\"$ctrl.state.overrideConfiguration\\\" ng-click=\\\"$ctrl.useDefaultProviderConfiguration($ctrl.state.provider)\\\">\\n <pr-icon icon=\\\"'settings'\\\"></pr-icon>\\n Use default configuration\\n </a>\\n </div>\\n </div>\\n <save-auth-settings-button\\n on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n save-button-disabled=\\\"!$ctrl.isOAuthTeamMembershipFormValid() || oauthSettingsForm.$invalid\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeature\\\"\\n limited-feature-class=\\\"$ctrl.limitedFeatureClass\\\"\\n class-name=\\\"'oauth-save-settings-button'\\\"\\n ></save-auth-settings-button>\\n </div>\\n </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/oauth/components/oauth-settings/oauth-settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable access-viewer-datatable\\\">\\n <div class=\\\"toolBar vertical-center pl-0 pr-0\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div>\\n <div class=\\\"form-section-title mb-1\\\">Access</div>\\n <div class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" size=\\\"'sm'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n <span class=\\\"small text-muted\\\"> Effective role for each environment will be displayed for the selected user </span>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput ml-1\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Environment'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'EndpointName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'EndpointName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('EndpointName')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Role'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'RoleName'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'RoleName' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('RoleName')\\\"\\n ></table-column-header>\\n </th>\\n <th>Access origin</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n >\\n <td>{{ item.EndpointName }}</td>\\n <td>{{ item.RoleName }}</td>\\n <td\\n >{{ item.TeamName ? 'Team' : 'User' }} <code ng-if=\\\"item.TeamName\\\">{{ item.TeamName }}</code> access defined on {{ item.AccessLocation }}\\n <code ng-if=\\\"item.GroupName\\\">{{ item.GroupName }}</code>\\n <a ng-if=\\\"!item.GroupName && $ctrl.isAdmin\\\" ui-sref=\\\"portainer.endpoints.endpoint.access({id: item.EndpointId})\\\"><pr-icon icon=\\\"'users'\\\"></pr-icon> Manage access </a>\\n <a ng-if=\\\"item.GroupName && $ctrl.isAdmin\\\" ui-sref=\\\"portainer.groups.group.access({id: item.GroupId})\\\"><pr-icon icon=\\\"'users'\\\"></pr-icon> Manage access </a>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Select a user to show associated access and role</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">The selected user does not have access to any environment(s)</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/rbac/components/access-viewer/access-viewer-datatable/access-viewer-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12\\\" style=\\\"margin-bottom: 0px\\\">\\n <div class=\\\"be-indicator-container limited-be\\\">\\n <div class=\\\"limited-be-link vertical-center\\\"><be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator></div>\\n <div class=\\\"limited-be-content\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"user-x\\\">\\n <header-title> Effective access viewer </header-title>\\n </rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> User </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\" ng-if=\\\"$ctrl.users.length === 0\\\"> No user available </span>\\n\\n <por-select ng-if=\\\"$ctrl.users.length > 0\\\" value=\\\"$ctrl.selectedUserId\\\" options=\\\"$ctrl.users\\\" on-change=\\\"($ctrl.onUserSelect)\\\" placeholder=\\\"'Select a user'\\\">\\n </por-select>\\n </div>\\n </div>\\n <access-viewer-datatable table-key=\\\"access_viewer\\\" dataset=\\\"$ctrl.userRoles\\\" order-by=\\\"EndpointName\\\" is-admin=\\\"$ctrl.isAdmin\\\"> </access-viewer-datatable>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/rbac/components/access-viewer/access-viewer.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar vertical-center\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'file-code'\\\"></pr-icon>\\n </div>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\" class=\\\"vertical-center\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput ml-1\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header\\n col-title=\\\"'Description'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Description'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Description' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Description')\\\"\\n ></table-column-header>\\n </th>\\n <th class=\\\"be-visual-indicator-col\\\"></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>{{ item.Name }}</td>\\n <td>{{ item.Description }}</td>\\n <td class=\\\"be-visual-indicator-col\\\" ng-switch on=\\\"$ctrl.isDefaultItem(item)\\\">\\n <span ng-switch-when=\\\"false\\\">\\n <be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator>\\n </span>\\n <b ng-switch-when=\\\"true\\\">Default</b>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">No role available.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"infoBar\\\" ng-if=\\\"$ctrl.state.selectedItemCount !== 0\\\"> {{ $ctrl.state.selectedItemCount }} item(s) selected </div>\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/rbac/components/roles-datatable/roles-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Roles'\\\" breadcrumbs=\\\"['Role management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <roles-datatable title-text=\\\"Roles\\\" dataset=\\\"$ctrl.roles\\\" table-key=\\\"roles\\\"></roles-datatable>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <access-viewer> </access-viewer>\\n</div>\\n\";;\nvar path = 'app/portainer/rbac/views/roles/roles.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Automatic user provisioning </div>\\n<div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\" ng-transclude=\\\"description\\\"> </span>\\n</div>\\n<div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <label for=\\\"tls\\\" class=\\\"control-label !pt-0 text-left\\\"> Automatic user provisioning </label>\\n <label class=\\\"switch my-0 ml-6\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.ngModel\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/auto-user-provision-toggle/auto-user-provision-toggle.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form class=\\\"ad-settings\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-class=\\\"limited-be\\\">\\n <div class=\\\"be-indicator-container\\\">\\n <div class=\\\"limited-be-link vertical-center\\\"><be-feature-indicator feature=\\\"$ctrl.limitedFeatureId\\\"></be-feature-indicator></div>\\n <div class=\\\"limited-be-content\\\">\\n <auto-user-provision-toggle ng-model=\\\"$ctrl.settings.AutoCreateUsers\\\">\\n <field-description>\\n With automatic user provisioning enabled, Portainer will create user(s) automatically with standard user role and assign them to team(s) which matches to LDAP group\\n name(s). If disabled, users must be created in Portainer beforehand.\\n </field-description>\\n </auto-user-provision-toggle>\\n\\n <div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Information </div>\\n <div class=\\\"form-group col-sm-12 text-muted small\\\">\\n When using Microsoft AD authentication, Portainer will delegate user authentication to the Domain Controller(s) configured below; if there is no connectivity, Portainer\\n will fallback to internal authentication.\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> AD configuration </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n You can configure multiple AD Controllers for authentication fallback. Make sure all servers are using the same configuration (i.e. if TLS is enabled, they should all\\n use the same certificates).\\n </p>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"display: flex; flex-wrap: wrap\\\">\\n AD Controller\\n <button\\n type=\\\"button\\\"\\n class=\\\"label label-default interactive vertical-center\\\"\\n style=\\\"border: 0\\\"\\n ng-click=\\\"$ctrl.addLDAPUrl()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'plus-circle'\\\"></pr-icon>\\n Add additional server\\n </button>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <div ng-repeat=\\\"url in $ctrl.settings.URLs track by $index\\\" style=\\\"display: flex; margin-bottom: 10px\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_url\\\"\\n ng-model=\\\"$ctrl.settings.URLs[$index]\\\"\\n placeholder=\\\"e.g. 10.0.0.10:389 or myldap.domain.tld:389\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n <button\\n ng-if=\\\"$index > 0\\\"\\n class=\\\"btn btn-sm btn-danger\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"$ctrl.removeLDAPUrl($index)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_username\\\" class=\\\"col-sm-3 control-label text-left\\\">\\n Service Account\\n <portainer-tooltip message=\\\"'Account that will be used to search for users.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_username\\\"\\n ng-model=\\\"$ctrl.settings.ReaderDN\\\"\\n placeholder=\\\"reader@domain.tld\\\"\\n ng-change=\\\"$ctrl.onAccountChange($ctrl.settings.ReaderDN)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_password\\\" class=\\\"col-sm-3 control-label text-left\\\">\\n Service Account Password\\n <portainer-tooltip message=\\\"'If you do not enter a password, Portainer will leave the current password unchanged.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9\\\">\\n <input\\n type=\\\"password\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_password\\\"\\n ng-model=\\\"$ctrl.settings.Password\\\"\\n placeholder=\\\"password\\\"\\n autocomplete=\\\"new-password\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n </div>\\n\\n <ldap-connectivity-check\\n ng-if=\\\"!$ctrl.settings.TLSConfig.TLS && !$ctrl.settings.StartTLS\\\"\\n settings=\\\"$ctrl.settings\\\"\\n state=\\\"$ctrl.state\\\"\\n connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-connectivity-check>\\n\\n <ldap-settings-security\\n title=\\\"AD Connectivity Security\\\"\\n settings=\\\"$ctrl.settings\\\"\\n tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n upload-in-progress=\\\"$ctrl.state.uploadInProgress\\\"\\n on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-settings-security>\\n\\n <ldap-connectivity-check\\n ng-if=\\\"$ctrl.settings.TLSConfig.TLS || $ctrl.settings.StartTLS\\\"\\n settings=\\\"$ctrl.settings\\\"\\n state=\\\"$ctrl.state\\\"\\n connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-connectivity-check>\\n\\n <ldap-user-search\\n style=\\\"margin-top: 5px\\\"\\n show-username-format=\\\"true\\\"\\n settings=\\\"$ctrl.settings.SearchSettings\\\"\\n domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n base-filter=\\\"(objectClass=user)\\\"\\n on-search-click=\\\"($ctrl.searchUsers)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-user-search>\\n\\n <ldap-group-search\\n style=\\\"margin-top: 5px\\\"\\n settings=\\\"$ctrl.settings.GroupSearchSettings\\\"\\n domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n base-filter=\\\"(objectClass=group)\\\"\\n on-search-click=\\\"($ctrl.searchGroups)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-group-search>\\n\\n <ldap-custom-admin-group\\n style=\\\"margin-top: 5px\\\"\\n settings=\\\"$ctrl.settings\\\"\\n on-search-click=\\\"($ctrl.onSearchAdminGroupsClick)\\\"\\n selected-admin-groups=\\\"$ctrl.selectedAdminGroups\\\"\\n default-admin-group-search-filter=\\\"'(objectClass=groupOfNames)'\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n is-limited-feature-self-contained=\\\"false\\\"\\n ></ldap-custom-admin-group>\\n\\n <ldap-settings-test-login settings=\\\"$ctrl.settings\\\" limited-feature-id=\\\"$ctrl.limitedFeatureId\\\" is-limited-feature-self-contained=\\\"false\\\"></ldap-settings-test-login>\\n <save-auth-settings-button\\n on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n save-button-disabled=\\\"($ctrl.isSaveSettingButtonDisabled())\\\"\\n ></save-auth-settings-button>\\n </div>\\n </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ad-settings/ad-settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"form-group\\\">\\n <label for=\\\"ldap_password\\\" class=\\\"col-sm-3 col-lg-2 control-label vertical-center text-left\\\">\\n Connectivity check\\n <pr-icon icon=\\\"'check'\\\" mode=\\\"'success'\\\" ng-if=\\\"$ctrl.state.successfulConnectivityCheck\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\" ng-if=\\\"$ctrl.state.failedConnectivityCheck\\\"></pr-icon>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"($ctrl.state.connectivityCheckInProgress) || (!$ctrl.settings.URLs.length) || ((!$ctrl.settings.ReaderDN || !$ctrl.settings.Password) && !$ctrl.settings.AnonymousMode)\\\"\\n ng-click=\\\"$ctrl.connectivityCheck()\\\"\\n button-spinner=\\\"$ctrl.state.connectivityCheckInProgress\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.connectivityCheckInProgress\\\">Test connectivity</span>\\n <span ng-show=\\\"$ctrl.state.connectivityCheckInProgress\\\">Testing connectivity...</span>\\n </button>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-connectivity-check/ldap-connectivity-check.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title flex items-center\\\" style=\\\"float: initial\\\">\\n Auto-populate team admins <be-feature-indicator feature=\\\"$ctrl.limitedFeatureId\\\" class=\\\"space-left\\\" ng-if=\\\"$ctrl.isLimitedFeatureSelfContained\\\"></be-feature-indicator>\\n</div>\\n\\n<rd-widget>\\n <rd-widget-body>\\n <div class=\\\"w-full pt-3\\\" ng-repeat=\\\"config in $ctrl.settings.AdminGroupSearchSettings | limitTo: (1 - $ctrl.settings.AdminGroupSearchSettings)\\\">\\n <div class=\\\"form-group mb-3\\\" ng-if=\\\"$index > 0\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> Extra search configuration </span>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_admin_group_basedn_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n Group Base DN\\n <portainer-tooltip message=\\\"'The distinguished name of the element from which the LDAP server will search for groups.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-4\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_admin_group_basedn_{{ $index }}\\\"\\n ng-model=\\\"config.GroupBaseDN\\\"\\n placeholder=\\\"dc=ldap,dc=domain,dc=tld\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n\\n <label for=\\\"ldap_admin_group_att_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n Group Membership Attribute\\n <portainer-tooltip message=\\\"'LDAP attribute which denotes the group membership.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-4\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_admin_group_att_{{ $index }}\\\"\\n ng-model=\\\"config.GroupAttribute\\\"\\n placeholder=\\\"member\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_admin_group_filter_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n Group Filter\\n <portainer-tooltip message=\\\"'The LDAP search filter used to select group elements, optional.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-10 vertical-center\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_admin_group_filter_{{ $index }}\\\"\\n ng-model=\\\"config.GroupFilter\\\"\\n placeholder=\\\"(objectClass=groupOfNames)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n <button class=\\\"btn btn-md btn-danger\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.onRemoveClick($index)\\\" ng-if=\\\"$index > 0\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group mt-3\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button disabled class=\\\"btn btn-sm btn-light vertical-center !ml-0\\\" ng-click=\\\"$ctrl.onAddClick()\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>\\n Add group search configuration\\n </button>\\n </div>\\n <div class=\\\"col-sm-12 vertical-center mt-2\\\">\\n <button\\n class=\\\"btn btm-sm btn-primary !ml-0\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"$ctrl.search()\\\"\\n limited-feature-dir=\\\"{{ $ctrl.limitedFeatureId }}\\\"\\n limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n Fetch Admin Group(s)\\n </button>\\n <span ng-if=\\\"$ctrl.groups && $ctrl.groups.length === 0\\\" class=\\\"vertical-center ml-6\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n No groups found\\n </span>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <label for=\\\"admin-auto-populate\\\" class=\\\"control-label text-muted !pt-0 text-left\\\" ng-class=\\\"{ 'text-muted': !$ctrl.enableAssignAdminGroup }\\\">\\n Assign admin rights to group(s)\\n </label>\\n <label class=\\\"switch my-0 ml-7\\\" ng-class=\\\"{ 'business limited': $ctrl.isLimitedFeatureSelfContained }\\\">\\n <input id=\\\"admin-auto-populate\\\" ng-disabled=\\\"!$ctrl.enableAssignAdminGroup\\\" name=\\\"admin-auto-populate\\\" type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.AdminAutoPopulate\\\" />\\n <span class=\\\"slider round before:content-['']\\\"></span>\\n </label>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.settings.AdminAutoPopulate && $ctrl.groups\\\">\\n <label for=\\\"group-access\\\" class=\\\"control-label col-sm-2 text-left\\\"> Select Group(s) </label>\\n <div class=\\\"col-sm-8\\\">\\n <por-select\\n data-cy=\\\"'group-access-selector'\\\"\\n input-id=\\\"'group-access'\\\"\\n value=\\\"$ctrl.selectedAdminGroups\\\"\\n on-change=\\\"($ctrl.onAdminGroupChange)\\\"\\n options=\\\"$ctrl.groups\\\"\\n placeholder=\\\"'Select one or more groups'\\\"\\n is-multi=\\\"true\\\"\\n >\\n </por-select>\\n </div>\\n </div>\\n </rd-widget-body>\\n</rd-widget>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-custom-admin-group/ldap-custom-admin-group.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" style=\\\"float: initial\\\"> Group search configurations </div>\\n\\n<rd-widget ng-repeat=\\\"config in $ctrl.settings | limitTo: (1 - $ctrl.settings)\\\" style=\\\"display: block; margin-bottom: 10px\\\">\\n <rd-widget-body>\\n <div class=\\\"form-group\\\" ng-if=\\\"$index > 0\\\" style=\\\"margin-bottom: 10px\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> Extra search configuration </span>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_group_basedn_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n Group Base DN\\n <portainer-tooltip message=\\\"'The distinguished name of the element from which the LDAP server will search for groups.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-4\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_group_basedn_{{ $index }}\\\" ng-model=\\\"config.GroupBaseDN\\\" placeholder=\\\"dc=ldap,dc=domain,dc=tld\\\" />\\n </div>\\n\\n <label for=\\\"ldap_group_att_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n Group Membership Attribute\\n <portainer-tooltip message=\\\"'LDAP attribute which denotes the group membership.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-4\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_group_att_{{ $index }}\\\" ng-model=\\\"config.GroupAttribute\\\" placeholder=\\\"member\\\" />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_group_filter_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n Group Filter\\n <portainer-tooltip message=\\\"'The LDAP search filter used to select group elements, optional.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-10 vertical-center\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_group_filter_{{ $index }}\\\" ng-model=\\\"config.GroupFilter\\\" placeholder=\\\"(objectClass=account)\\\" />\\n <button class=\\\"btn btn-md btn-danger\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.onRemoveClick($index)\\\" ng-if=\\\"$index > 0\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 small\\\" style=\\\"color: #ffa719\\\">\\n <pr-icon icon=\\\"'briefcase'\\\" class-name=\\\"'icon icon-xs vertical-center'\\\"></pr-icon>\\n Users removal synchronize between groups and teams only available in\\n <a href=\\\"https://www.portainer.io/features?from=custom-login-banner\\\" target=\\\"_blank\\\">business edition.</a>\\n <portainer-tooltip\\n class=\\\"text-muted align-bottom\\\"\\n message=\\\"'Groups allows users to automatically be added to Portainer teams. However, automatically removing users from teams to keep it fully in sync is available in the Business Edition.'\\\"\\n ></portainer-tooltip>\\n </span>\\n </div>\\n </rd-widget-body>\\n</rd-widget>\\n\\n<div class=\\\"form-group\\\" style=\\\"margin-top: 10px\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button class=\\\"btn btn-sm btn-light vertical-center !ml-0\\\" ng-click=\\\"$ctrl.onAddClick()\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>\\n Add group search configuration\\n </button>\\n </div>\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n <be-teaser-button\\n feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n heading=\\\"'Display User/Group matching'\\\"\\n message=\\\"'Show the list of users and groups that match the Portainer search configurations.'\\\"\\n button-text=\\\"'Display User/Group matching'\\\"\\n button-class-name=\\\"'!ml-0'\\\"\\n ></be-teaser-button>\\n </div>\\n</div>\\n\\n<div ng-if=\\\"$ctrl.showTable\\\">\\n <div class=\\\"form-group col-sm-12\\\">\\n <ldap-groups-datatable dataset=\\\"$ctrl.groups\\\" title-text=\\\"Groups\\\" title-icon=\\\"users\\\" table-key=\\\"ldapGroups\\\"></ldap-groups-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-custom-group-search/ldap-custom-group-search.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" style=\\\"float: initial\\\"> User search configurations </div>\\n\\n<rd-widget ng-repeat=\\\"config in $ctrl.settings | limitTo: (1 - $ctrl.settings)\\\" style=\\\"display: block; margin-bottom: 10px\\\">\\n <rd-widget-body>\\n <div class=\\\"form-group\\\" ng-if=\\\"$index > 0\\\" style=\\\"margin-bottom: 10px\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> Extra search configuration </span>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_basedn_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n Base DN\\n <portainer-tooltip message=\\\"'The distinguished name of the element from which the LDAP server will search for users.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-4\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_basedn_{{ $index }}\\\" ng-model=\\\"config.BaseDN\\\" placeholder=\\\"dc=ldap,dc=domain,dc=tld\\\" />\\n </div>\\n\\n <label for=\\\"ldap_username_att_{{ $index }}\\\" class=\\\"col-sm-4 col-md-3 col-lg-2 control-label text-left\\\">\\n Username attribute\\n <portainer-tooltip message=\\\"'LDAP attribute which denotes the username.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-3 col-lg-4\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_username_att_{{ $index }}\\\" ng-model=\\\"config.UserNameAttribute\\\" placeholder=\\\"uid\\\" />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_filter_{{ $index }}\\\" class=\\\"col-sm-4 col-md-2 control-label text-left\\\">\\n Filter\\n <portainer-tooltip message=\\\"'The LDAP search filter used to select user elements, optional.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8 col-md-10 vertical-center\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_filter_{{ $index }}\\\" ng-model=\\\"config.Filter\\\" placeholder=\\\"(objectClass=account)\\\" />\\n <button class=\\\"btn btn-md btn-danger\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.onRemoveClick($index)\\\" ng-if=\\\"$index > 0\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </rd-widget-body>\\n</rd-widget>\\n\\n<div class=\\\"form-group\\\" style=\\\"margin-top: 10px\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button class=\\\"btn btn-sm btn-light vertical-center !ml-0\\\" ng-click=\\\"$ctrl.onAddClick()\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>\\n Add user search configuration\\n </button>\\n </div>\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n <be-teaser-button\\n feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n heading=\\\"'Display Users'\\\"\\n message=\\\"'Allows you to display users from your LDAP server.'\\\"\\n button-text=\\\"'Display Users'\\\"\\n button-class-name=\\\"'!ml-0'\\\"\\n ></be-teaser-button>\\n </div>\\n</div>\\n\\n<div ng-if=\\\"$ctrl.showTable\\\">\\n <div class=\\\"form-group col-sm-12\\\">\\n <ldap-users-datatable dataset=\\\"$ctrl.users\\\" title-text=\\\"Users\\\" title-icon=\\\"users\\\" table-key=\\\"ldapUsers\\\" order-by=\\\"\\\" reverse-order=\\\"\\\"></ldap-users-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-custom-user-search/ldap-custom-user-search.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"w-full px-5 pt-3\\\">\\n <div ng-if=\\\"$ctrl.index > 0\\\" style=\\\"margin-bottom: 10px\\\">\\n <span class=\\\"text-muted small\\\"> Extra search configuration </span>\\n <button\\n class=\\\"btn btn-sm btn-danger\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"$ctrl.onRemoveClick($ctrl.index)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n </button>\\n </div>\\n\\n <ldap-settings-dn-builder\\n label=\\\"Group Search Path (optional)\\\"\\n suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n ng-model=\\\"$ctrl.config.GroupBaseDN\\\"\\n on-change=\\\"($ctrl.onChangeBaseDN)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-settings-dn-builder>\\n\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-4 col-md-2 control-label text-left\\\"> Group Base DN </label>\\n <div class=\\\"col-sm-8 col-md-10\\\">\\n {{ $ctrl.config.GroupBaseDN }}\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\" style=\\\"margin-bottom: 5px\\\">\\n <label class=\\\"control-label !pt-0 text-left\\\">Groups</label>\\n <span class=\\\"label label-default interactive vertical-center\\\" style=\\\"margin-left: 10px\\\" ng-click=\\\"$ctrl.addGroup()\\\">\\n <pr-icon icon=\\\"'plus-circle'\\\"></pr-icon>\\n add another group\\n </span>\\n </div>\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.groups.length\\\">\\n <div class=\\\"w-full px-5 pt-3\\\">\\n <div class=\\\"form-group no-margin-last-child\\\" ng-repeat=\\\"entry in $ctrl.groups\\\">\\n <div class=\\\"col-sm-4\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"entry.type\\\" ng-change=\\\"$ctrl.onGroupsChange()\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\">\\n <option value=\\\"ou\\\">OU Name</option>\\n <option value=\\\"cn\\\">Folder Name</option>\\n </select>\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <input\\n class=\\\"form-control\\\"\\n ng-model=\\\"entry.value\\\"\\n ng-change=\\\"$ctrl.onGroupsChange()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n <div class=\\\"col-sm-3 text-right\\\">\\n <button\\n class=\\\"btn btn-md btn-danger\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"$ctrl.removeGroup($index)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group no-margin-last-child\\\">\\n <label class=\\\"col-sm-4 col-md-2 control-label text-left\\\"> Group Filter </label>\\n <div class=\\\"col-sm-8 col-md-10\\\">\\n {{ $ctrl.config.GroupFilter }}\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-group-search-item/ldap-group-search-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" style=\\\"float: initial\\\"> Group search configurations </div>\\n\\n<div style=\\\"margin-top: 10px\\\" ng-repeat=\\\"config in $ctrl.settings | limitTo: (1 - $ctrl.settings)\\\">\\n <ldap-group-search-item\\n config=\\\"config\\\"\\n domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n index=\\\"$index\\\"\\n base-filter=\\\"{{ $ctrl.baseFilter }}\\\"\\n on-remove-click=\\\"($ctrl.onRemoveClick)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-group-search-item>\\n</div>\\n\\n<div class=\\\"form-group\\\" style=\\\"margin-top: 10px\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button class=\\\"btn btn-sm btn-light vertical-center !ml-0\\\" ng-click=\\\"$ctrl.onAddClick()\\\" disabled>\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>\\n Add group search configuration\\n </button>\\n </div>\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n <button class=\\\"btn btm-sm btn-primary\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.search()\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\">\\n Display User/Group matching\\n </button>\\n </div>\\n</div>\\n\\n<div ng-if=\\\"$ctrl.showTable\\\">\\n <div class=\\\"form-group col-sm-12\\\">\\n <ldap-groups-datatable dataset=\\\"$ctrl.groups\\\" title-text=\\\"Groups\\\" title-icon=\\\"users\\\" table-key=\\\"ldapGroups\\\"></ldap-groups-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-group-search/ldap-group-search.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'User Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n <th>\\n <table-column-header col-title=\\\"'Groups'\\\" can-sort=\\\"false\\\"></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit))\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n {{ item.Name }}\\n </td>\\n <td>\\n <p ng-repeat=\\\"group in item.Groups\\\" style=\\\"margin: 0\\\">{{ group }}</p>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No groups found.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-groups-datatable/ldap-groups-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Information </div>\\n <div class=\\\"form-group col-sm-12 text-muted small\\\">\\n When using LDAP authentication, Portainer will delegate user authentication to a LDAP server and fallback to internal authentication if LDAP authentication fails.\\n </div>\\n</div>\\n\\n<div class=\\\"col-sm-12 form-section-title\\\"> LDAP configuration </div>\\n\\n<div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n You can configure multiple LDAP Servers for authentication fallback. Make sure all servers are using the same configuration (i.e. if TLS is enabled, they should all use the\\n same certificates).\\n </p>\\n </div>\\n</div>\\n\\n<div class=\\\"form-group\\\">\\n <label for=\\\"ldap_url\\\" class=\\\"col-sm-3 col-lg-2 control-label flex flex-wrap text-left\\\"> LDAP Server </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <div class=\\\"mb-3 flex\\\" ng-repeat=\\\"url in $ctrl.settings.URLs track by $index\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_url\\\" ng-model=\\\"$ctrl.settings.URLs[$index]\\\" placeholder=\\\"e.g. 10.0.0.10:389 or myldap.domain.tld:389\\\" required />\\n <button ng-if=\\\"$index > 0\\\" class=\\\"btn btn-sm btn-danger\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.removeLDAPUrl($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <be-teaser-button\\n feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n heading=\\\"'Add additional server'\\\"\\n message=\\\"'Allows you to add an additional LDAP server.'\\\"\\n button-text=\\\"'Add additional server'\\\"\\n button-class-name=\\\"'!ml-0'\\\"\\n ></be-teaser-button>\\n </div>\\n</div>\\n\\n<div class=\\\"form-group\\\">\\n <label for=\\\"anonymous_mode\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\">\\n Anonymous mode\\n <portainer-tooltip message=\\\"'Enable this option if the server is configured for Anonymous access.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <label class=\\\"switch\\\">\\n <input type=\\\"checkbox\\\" id=\\\"anonymous_mode\\\" ng-model=\\\"$ctrl.settings.AnonymousMode\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n</div>\\n<!-- !Anonymous mode-->\\n\\n<div ng-if=\\\"!$ctrl.settings.AnonymousMode\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Reader DN\\n <portainer-tooltip message=\\\"'Account that will be used to search for users.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"ldap_username\\\" ng-model=\\\"$ctrl.settings.ReaderDN\\\" placeholder=\\\"cn=user,dc=domain,dc=tld\\\" />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Password\\n <portainer-tooltip message=\\\"'If you do not enter a password, Portainer will leave the current password unchanged.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" id=\\\"ldap_password\\\" ng-model=\\\"$ctrl.settings.Password\\\" placeholder=\\\"password\\\" autocomplete=\\\"new-password\\\" />\\n </div>\\n </div>\\n</div>\\n\\n<ldap-connectivity-check\\n ng-if=\\\"!$ctrl.settings.TLSConfig.TLS && !$ctrl.settings.StartTLS\\\"\\n settings=\\\"$ctrl.settings\\\"\\n state=\\\"$ctrl.state\\\"\\n connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n></ldap-connectivity-check>\\n\\n<ldap-settings-security\\n settings=\\\"$ctrl.settings\\\"\\n tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n upload-in-progress=\\\"$ctrl.state.uploadInProgress\\\"\\n on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n></ldap-settings-security>\\n\\n<ldap-connectivity-check\\n ng-if=\\\"$ctrl.settings.TLSConfig.TLS || $ctrl.settings.StartTLS\\\"\\n settings=\\\"$ctrl.settings\\\"\\n state=\\\"$ctrl.state\\\"\\n connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n></ldap-connectivity-check>\\n\\n<div class=\\\"space-y-10\\\">\\n <ldap-custom-user-search\\n class=\\\"block\\\"\\n settings=\\\"$ctrl.settings.SearchSettings\\\"\\n on-search-click=\\\"($ctrl.onSearchUsersClick)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-custom-user-search>\\n\\n <ldap-custom-group-search\\n class=\\\"block\\\"\\n settings=\\\"$ctrl.settings.GroupSearchSettings\\\"\\n on-search-click=\\\"($ctrl.onSearchGroupsClick)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-custom-group-search>\\n\\n <ldap-custom-admin-group\\n class=\\\"block\\\"\\n settings=\\\"$ctrl.settings\\\"\\n on-search-click=\\\"($ctrl.onSearchAdminGroupsClick)\\\"\\n selected-admin-groups=\\\"$ctrl.selectedAdminGroups\\\"\\n default-admin-group-search-filter=\\\"'(objectClass=groupOfNames)'\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n is-limited-feature-self-contained=\\\"true\\\"\\n ></ldap-custom-admin-group>\\n\\n <ldap-settings-test-login\\n class=\\\"block\\\"\\n settings=\\\"$ctrl.settings\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n show-be-indicator-if-needed=\\\"true\\\"\\n is-limited-feature-self-contained=\\\"true\\\"\\n ></ldap-settings-test-login>\\n</div>\\n\\n<save-auth-settings-button\\n on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n save-button-disabled=\\\"!$ctrl.saveButtonDisabled()\\\"\\n limited-feature-dir=\\\"{{ $ctrl.limitedFeatureId }}\\\"\\n></save-auth-settings-button>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-custom/ldap-settings-custom.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"form-group ldap-dn-builder\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-bottom: 5px\\\">\\n <label class=\\\"control-label text-left\\\">{{ $ctrl.label || 'DN entries' }}</label>\\n <button\\n type=\\\"button\\\"\\n class=\\\"label label-default interactive vertical-center\\\"\\n style=\\\"margin-left: 10px; border: 0\\\"\\n ng-click=\\\"$ctrl.addEntry()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'plus-circle'\\\"></pr-icon>\\n add another entry\\n </button>\\n </div>\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.entries.length\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <div class=\\\"form-group no-margin-last-child\\\" ng-repeat=\\\"entry in $ctrl.entries\\\">\\n <div class=\\\"col-sm-4\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"entry.type\\\" ng-change=\\\"$ctrl.onEntriesChange()\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\">\\n <option value=\\\"ou\\\">OU Name</option>\\n <option value=\\\"cn\\\">Folder Name</option>\\n </select>\\n </div>\\n <div class=\\\"col-sm-5\\\">\\n <input\\n class=\\\"form-control\\\"\\n ng-model=\\\"entry.value\\\"\\n ng-change=\\\"$ctrl.onEntriesChange()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n <div class=\\\"col-sm-3 text-right\\\">\\n <button\\n class=\\\"btn btn-md btn-primary\\\"\\n type=\\\"button\\\"\\n ng-disabled=\\\"$first\\\"\\n ng-click=\\\"$ctrl.moveUp($index)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'arrow-up'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n <button\\n class=\\\"btn btn-md btn-primary\\\"\\n type=\\\"button\\\"\\n ng-disabled=\\\"$last\\\"\\n ng-click=\\\"$ctrl.moveDown($index)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'arrow-down'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n <button\\n class=\\\"btn btn-md btn-danger\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"$ctrl.removeEntry($index)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-dn-builder/ldap-settings-dn-builder.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"form-group\\\">\\n <label for=\\\"group-name-input\\\" class=\\\"col-sm-4 control-label text-left\\\"> Group Name </label>\\n <div class=\\\"col-sm-7\\\" style=\\\"padding-left: 0\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"group-name-input\\\"\\n ng-model=\\\"$ctrl.groupName\\\"\\n ng-change=\\\"$ctrl.onGroupNameChange()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n <div class=\\\"col-sm-1\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-danger btn-md vertical-center\\\"\\n ng-if=\\\"$ctrl.onRemoveClick\\\"\\n ng-click=\\\"$ctrl.onRemoveClick()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n</div>\\n\\n<ldap-settings-dn-builder\\n ng-model=\\\"$ctrl.entries\\\"\\n label=\\\"Path to group\\\"\\n suffix=\\\"{{ $ctrl.suffix }}\\\"\\n on-change=\\\"($ctrl.onEntriesChange)\\\"\\n on-remove-click=\\\"($ctrl.removeGroup)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n></ldap-settings-dn-builder>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-group-dn-builder/ldap-settings-group-dn-builder.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<ng-form limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-class=\\\"limited-be\\\" class=\\\"ldap-settings-openldap\\\">\\n <div class=\\\"be-indicator-container\\\">\\n <div class=\\\"limited-be-link vertical-center\\\"><be-feature-indicator feature=\\\"$ctrl.limitedFeatureId\\\"></be-feature-indicator></div>\\n <div class=\\\"limited-be-content\\\">\\n <div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Information </div>\\n <div class=\\\"form-group col-sm-12 text-muted small\\\">\\n When using LDAP authentication, Portainer will delegate user authentication to a LDAP server and fallback to internal authentication if LDAP authentication fails.\\n </div>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> LDAP configuration </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n You can configure multiple LDAP Servers for authentication fallback. Make sure all servers are using the same configuration (i.e. if TLS is enabled, they should all use\\n the same certificates).\\n </p>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" style=\\\"display: flex; flex-wrap: wrap\\\">\\n LDAP Server\\n <button\\n type=\\\"button\\\"\\n class=\\\"label label-default interactive vertical-center\\\"\\n style=\\\"border: 0\\\"\\n ng-click=\\\"$ctrl.addLDAPUrl()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'plus-circle'\\\"></pr-icon>\\n Add additional server\\n </button>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <div ng-repeat=\\\"url in $ctrl.settings.URLs track by $index\\\" style=\\\"display: flex; margin-bottom: 10px\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_url\\\"\\n ng-model=\\\"$ctrl.settings.URLs[$index]\\\"\\n placeholder=\\\"e.g. 10.0.0.10:389 or myldap.domain.tld:389\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n <button\\n ng-if=\\\"$index > 0\\\"\\n class=\\\"btn btn-sm btn-danger\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"$ctrl.removeLDAPUrl($index)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n </div>\\n\\n <!-- Anonymous mode-->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label for=\\\"anonymous_mode\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\">\\n Anonymous mode\\n <portainer-tooltip message=\\\"'Enable this option if the server is configured for Anonymous access.'\\\"></portainer-tooltip>\\n </label>\\n\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <label class=\\\"switch\\\">\\n <input type=\\\"checkbox\\\" id=\\\"anonymous_mode\\\" ng-model=\\\"$ctrl.settings.AnonymousMode\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n </div>\\n </div>\\n <!-- !Anonymous mode-->\\n\\n <div ng-if=\\\"!$ctrl.settings.AnonymousMode\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_username\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Reader DN\\n <portainer-tooltip message=\\\"'Account that will be used to search for users.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_username\\\"\\n ng-model=\\\"$ctrl.settings.ReaderDN\\\"\\n placeholder=\\\"cn=user,dc=domain,dc=tld\\\"\\n ng-change=\\\"$ctrl.onAccountChange($ctrl.settings.ReaderDN)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"ldap_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Password\\n <portainer-tooltip message=\\\"'If you do not enter a password, Portainer will leave the current password unchanged.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9\\\">\\n <input\\n type=\\\"password\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_password\\\"\\n ng-model=\\\"$ctrl.settings.Password\\\"\\n placeholder=\\\"password\\\"\\n autocomplete=\\\"new-password\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.settings.AnonymousMode\\\">\\n <label for=\\\"ldap_domain_root\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Domain root </label>\\n <div class=\\\"col-sm-9\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_domain_root\\\"\\n ng-model=\\\"$ctrl.domainSuffix\\\"\\n placeholder=\\\"dc=domain,dc=tld\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n </div>\\n\\n <ldap-connectivity-check\\n ng-if=\\\"!$ctrl.settings.TLSConfig.TLS && !$ctrl.settings.StartTLS\\\"\\n settings=\\\"$ctrl.settings\\\"\\n state=\\\"$ctrl.state\\\"\\n connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-connectivity-check>\\n\\n <ldap-settings-security\\n title=\\\"Connectivity Security\\\"\\n settings=\\\"$ctrl.settings\\\"\\n tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n upload-in-progress=\\\"$ctrl.state.uploadInProgress\\\"\\n on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-settings-security>\\n\\n <ldap-connectivity-check\\n ng-if=\\\"$ctrl.settings.TLSConfig.TLS || $ctrl.settings.StartTLS\\\"\\n settings=\\\"$ctrl.settings\\\"\\n state=\\\"$ctrl.state\\\"\\n connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-connectivity-check>\\n\\n <ldap-user-search\\n style=\\\"margin-top: 5px\\\"\\n settings=\\\"$ctrl.settings.SearchSettings\\\"\\n domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n base-filter=\\\"(objectClass=inetOrgPerson)\\\"\\n on-search-click=\\\"($ctrl.onSearchUsersClick)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-user-search>\\n\\n <ldap-group-search\\n style=\\\"margin-top: 5px\\\"\\n settings=\\\"$ctrl.settings.GroupSearchSettings\\\"\\n domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n base-filter=\\\"(objectClass=groupOfNames)\\\"\\n on-search-click=\\\"($ctrl.onSearchGroupsClick)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-group-search>\\n\\n <ldap-settings-test-login settings=\\\"$ctrl.settings\\\" limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"></ldap-settings-test-login>\\n <save-auth-settings-button\\n on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n save-button-disabled=\\\"!$ctrl.saveButtonDisabled()\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></save-auth-settings-button>\\n </div>\\n </div>\\n</ng-form>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-openldap/ldap-settings-openldap.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\">\\n {{ $ctrl.title || 'LDAP security' }}\\n</div>\\n\\n<!-- starttls -->\\n<div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.settings.TLSConfig.TLS\\\">\\n <label for=\\\"tls\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\" style=\\\"padding-top: 0\\\">\\n Use StartTLS\\n <portainer-tooltip message=\\\"'Enable this option if want to use StartTLS to secure the connection to the server. Ignored if Use TLS is selected.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <label class=\\\"switch\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.StartTLS\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n</div>\\n<!-- !starttls -->\\n\\n<!-- tls-checkbox -->\\n<div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.settings.StartTLS\\\">\\n <label for=\\\"tls\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\" style=\\\"padding-top: 0\\\">\\n Use TLS\\n <portainer-tooltip message=\\\"'Enable this option if you need to specify TLS certificates to connect to the LDAP server.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <label class=\\\"switch\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.TLSConfig.TLS\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n</div>\\n<!-- !tls-checkbox -->\\n\\n<!-- tls-skip-verify -->\\n<div class=\\\"form-group\\\">\\n <label for=\\\"tls\\\" class=\\\"control-label col-sm-3 col-lg-2 text-left\\\" style=\\\"padding-top: 0\\\">\\n Skip verification of server certificate\\n <portainer-tooltip message=\\\"'Skip the verification of the server TLS certificate. Not recommended on unsecured networks.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <label class=\\\"switch\\\">\\n <input type=\\\"checkbox\\\" ng-model=\\\"$ctrl.settings.TLSConfig.TLSSkipVerify\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\" />\\n <span class=\\\"slider round\\\"></span>\\n </label>\\n </div>\\n</div>\\n<!-- !tls-skip-verify -->\\n\\n<!-- ca-input -->\\n<div class=\\\"form-group\\\" ng-if=\\\"$ctrl.settings.TLSConfig.TLS || ($ctrl.settings.StartTLS && !$ctrl.settings.TLSConfig.TLSSkipVerify)\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">TLS CA certificate</label>\\n <div class=\\\"col-sm-9 col-lg-10 vertical-center\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary\\\"\\n ngf-select=\\\"$ctrl.onTlscaCertChange($file)\\\"\\n ng-model=\\\"$ctrl.tlscaCert\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n Select file\\n </button>\\n <span class=\\\"vertical-center\\\">\\n {{ $ctrl.tlscaCert.name }}\\n <pr-icon icon=\\\"'check'\\\" class=\\\"icon-success\\\" ng-if=\\\"$ctrl.tlscaCert && $ctrl.tlscaCert === $ctrl.settings.TLSConfig.TLSCACert\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" class=\\\"icon-danger\\\" ng-if=\\\"!$ctrl.tlscaCert\\\"></pr-icon>\\n <pr-icon icon=\\\"'loader-2'\\\" class-name=\\\"'animate-spin-slow ml-0.5'\\\" ng-if=\\\"$ctrl.uploadInProgress\\\"></pr-icon>\\n </span>\\n </div>\\n</div>\\n<!-- !ca-input -->\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-security/ldap-settings-security.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title flex items-center\\\" style=\\\"float: initial\\\">\\n Test login\\n <be-feature-indicator\\n ng-if=\\\"$ctrl.showBeIndicatorIfNeeded\\\"\\n feature=\\\"$ctrl.limitedFeatureId\\\"\\n class=\\\"space-left\\\"\\n ng-if=\\\"$ctrl.isLimitedFeatureSelfContained\\\"\\n ></be-feature-indicator>\\n</div>\\n\\n<rd-widget>\\n <rd-widget-body>\\n <div class=\\\"form-inline\\\">\\n <div class=\\\"form-group\\\" style=\\\"margin: 0\\\">\\n <label for=\\\"ldap_test_username\\\" style=\\\"font-size: 0.9em; margin-right: 5px\\\"> Username </label>\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_test_username\\\"\\n ng-model=\\\"$ctrl.username\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n\\n <div class=\\\"form-group no-margin\\\">\\n <label for=\\\"ldap_test_password\\\"> Password </label>\\n <input\\n type=\\\"password\\\"\\n class=\\\"form-control\\\"\\n id=\\\"ldap_test_password\\\"\\n ng-model=\\\"$ctrl.password\\\"\\n autocomplete=\\\"new-password\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n ng-disabled=\\\"{{ $ctrl.isLimitedFeatureSelfContained }}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n />\\n </div>\\n\\n <div class=\\\"form-group !ml-0\\\">\\n <div class=\\\"vertical-center\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary\\\"\\n ng-disabled=\\\"$ctrl.state.testStatus === $ctrl.TEST_STATUS.LOADING || !$ctrl.username || !$ctrl.password\\\"\\n ng-click=\\\"$ctrl.testLogin($ctrl.username, $ctrl.password)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-class=\\\" {{ $ctrl.isLimitedFeatureSelfContained && 'limited-be' }}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <span ng-if=\\\"$ctrl.state.testStatus !== $ctrl.TEST_STATUS.LOADING\\\">Test</span>\\n <span ng-if=\\\"$ctrl.state.testStatus === $ctrl.TEST_STATUS.LOADING\\\">Testing...</span>\\n </button>\\n <pr-icon icon=\\\"'check'\\\" class=\\\"icon-success\\\" ng-if=\\\"$ctrl.state.testStatus === $ctrl.TEST_STATUS.SUCCESS\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" class=\\\"icon-danger\\\" ng-if=\\\"$ctrl.state.testStatus === $ctrl.TEST_STATUS.FAILURE\\\"></pr-icon>\\n </div>\\n </div>\\n </div>\\n </rd-widget-body>\\n</rd-widget>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings-test-login/ldap-settings-test-login.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div>\\n <auto-user-provision-toggle ng-model=\\\"$ctrl.settings.AutoCreateUsers\\\">\\n <field-description>\\n With automatic user provisioning enabled, Portainer will create user(s) automatically with standard user role and assign them to team(s) which matches to LDAP group name(s).\\n If disabled, users must be created in Portainer beforehand.\\n </field-description>\\n </auto-user-provision-toggle>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Server Type </div>\\n\\n <box-selector\\n style=\\\"margin-bottom: 0\\\"\\n radio-name=\\\"'ldap-server-type-selector'\\\"\\n value=\\\"$ctrl.settings.ServerType\\\"\\n options=\\\"$ctrl.boxSelectorOptions\\\"\\n on-change=\\\"($ctrl.onChangeServerType)\\\"\\n slim=\\\"true\\\"\\n ></box-selector>\\n\\n <ldap-settings-custom\\n ng-if=\\\"$ctrl.settings.ServerType === $ctrl.SERVER_TYPES.CUSTOM\\\"\\n settings=\\\"$ctrl.settings\\\"\\n tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n state=\\\"$ctrl.state\\\"\\n on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n on-search-users-click=\\\"($ctrl.searchUsers)\\\"\\n on-search-groups-click=\\\"($ctrl.searchGroups)\\\"\\n on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n save-button-disabled=\\\"$ctrl.isLdapFormValid\\\"\\n ></ldap-settings-custom>\\n <ldap-settings-open-ldap\\n ng-if=\\\"$ctrl.settings.ServerType === $ctrl.SERVER_TYPES.OPEN_LDAP\\\"\\n settings=\\\"$ctrl.settings\\\"\\n tlsca-cert=\\\"$ctrl.tlscaCert\\\"\\n state=\\\"$ctrl.state\\\"\\n on-tlsca-cert-change=\\\"($ctrl.onTlscaCertChange)\\\"\\n connectivity-check=\\\"$ctrl.connectivityCheck\\\"\\n on-search-users-click=\\\"($ctrl.searchUsers)\\\"\\n on-search-groups-click=\\\"($ctrl.searchGroups)\\\"\\n on-save-settings=\\\"($ctrl.onSaveSettings)\\\"\\n save-button-state=\\\"($ctrl.saveButtonState)\\\"\\n save-button-disabled=\\\"$ctrl.isLdapFormValid\\\"\\n ></ldap-settings-open-ldap>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-settings/ldap-settings.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"w-full px-5 pt-3\\\">\\n <div ng-if=\\\"$ctrl.index > 0\\\" style=\\\"margin-bottom: 10px\\\">\\n <span class=\\\"text-muted small\\\"> Extra search configuration </span>\\n <button\\n ng-if=\\\"$ctrl.index > 0\\\"\\n class=\\\"btn btn-sm btn-danger\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"$ctrl.onRemoveClick($ctrl.index)\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n </button>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.showUsernameFormat\\\">\\n <div class=\\\"col-sm-4\\\" style=\\\"margin-bottom: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Username Format</label>\\n </div>\\n <div class=\\\"col-sm-8\\\">\\n <div class=\\\"input-group\\\">\\n <div class=\\\"input-group-btn\\\">\\n <button\\n class=\\\"btn btn-primary\\\"\\n ng-model=\\\"$ctrl.config.UserNameAttribute\\\"\\n uib-btn-radio=\\\"'sAMAccountName'\\\"\\n style=\\\"margin-left: 0px\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >username</button\\n >\\n <button\\n class=\\\"btn btn-primary\\\"\\n ng-model=\\\"$ctrl.config.UserNameAttribute\\\"\\n uib-btn-radio=\\\"'userPrincipalName'\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >user@domainname</button\\n >\\n </div>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-4 control-label text-left\\\"> Root Domain </label>\\n <div class=\\\"col-sm-8\\\">\\n {{ $ctrl.config.BaseDN }}\\n </div>\\n </div>\\n\\n <ldap-settings-dn-builder\\n ng-model=\\\"$ctrl.config.BaseDN\\\"\\n label=\\\"User Search Path (optional)\\\"\\n suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n on-change=\\\"($ctrl.onBaseDNChange)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-settings-dn-builder>\\n\\n <div class=\\\"form-group no-margin-last-child\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-bottom: 5px\\\">\\n <label class=\\\"control-label text-left\\\">Allowed Groups (optional)</label>\\n <button\\n type=\\\"button\\\"\\n class=\\\"label label-default interactive vertical-center\\\"\\n style=\\\"margin-left: 10px; border: 0\\\"\\n ng-click=\\\"$ctrl.addGroup()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'plus-circle'\\\"></pr-icon>\\n add another group\\n </button>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <div ng-repeat=\\\"group in $ctrl.groups track by $index\\\" style=\\\"margin-bottom: 10px\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <ldap-settings-group-dn-builder\\n ng-model=\\\"group\\\"\\n index=\\\"$index\\\"\\n suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n on-change=\\\"($ctrl.onGroupChange)\\\"\\n on-remove-click=\\\"($ctrl.removeGroup)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-settings-group-dn-builder>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-4 control-label text-left\\\"> User Filter </label>\\n <div class=\\\"col-sm-8\\\">\\n {{ $ctrl.config.Filter }}\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-user-search-item/ldap-user-search-item.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\" style=\\\"float: initial\\\"> User search configurations </div>\\n\\n<div style=\\\"margin-top: 10px\\\" ng-repeat=\\\"config in $ctrl.settings | limitTo: (1 - $ctrl.settings)\\\">\\n <ldap-user-search-item\\n index=\\\"$index\\\"\\n config=\\\"config\\\"\\n domain-suffix=\\\"{{ $ctrl.domainSuffix }}\\\"\\n show-username-format=\\\"$ctrl.showUsernameFormat\\\"\\n base-filter=\\\"{{ $ctrl.baseFilter }}\\\"\\n on-remove-click=\\\"($ctrl.onRemoveClick)\\\"\\n limited-feature-id=\\\"$ctrl.limitedFeatureId\\\"\\n ></ldap-user-search-item>\\n</div>\\n\\n<div class=\\\"form-group\\\" style=\\\"margin-top: 10px\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n class=\\\"label label-default interactive vertical-center\\\"\\n style=\\\"border: 0\\\"\\n ng-click=\\\"$ctrl.onAddClick()\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-tabindex=\\\"-1\\\"\\n >\\n <pr-icon icon=\\\"'plus-circle'\\\"></pr-icon>\\n Add user search configuration\\n </button>\\n </div>\\n <div class=\\\"col-sm-12\\\" style=\\\"margin-top: 10px\\\">\\n <button class=\\\"btn btm-sm btn-primary\\\" type=\\\"button\\\" ng-click=\\\"$ctrl.search()\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\" limited-feature-tabindex=\\\"-1\\\">\\n Display Users\\n </button>\\n </div>\\n</div>\\n\\n<div ng-if=\\\"$ctrl.showTable\\\">\\n <div class=\\\"form-group col-sm-12\\\">\\n <ldap-users-datatable dataset=\\\"$ctrl.users\\\" title-text=\\\"Users\\\" title-icon=\\\"users\\\" table-key=\\\"ldapUsers\\\" order-by=\\\"\\\" reverse-order=\\\"\\\"></ldap-users-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-user-search/ldap-user-search.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <pr-icon icon=\\\"$ctrl.titleIcon\\\"></pr-icon>\\n {{ $ctrl.titleText }}\\n </div>\\n <div class=\\\"searchBar vertical-center\\\">\\n <pr-icon icon=\\\"'search'\\\"></pr-icon>\\n <input\\n type=\\\"text\\\"\\n class=\\\"searchInput\\\"\\n ng-model=\\\"$ctrl.state.textFilter\\\"\\n ng-change=\\\"$ctrl.onTextFilterChange()\\\"\\n placeholder=\\\"Search...\\\"\\n auto-focus\\n ng-model-options=\\\"{ debounce: 300 }\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <table-column-header\\n col-title=\\\"'Name'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.state.orderBy === 'Name'\\\"\\n is-sorted-desc=\\\"$ctrl.state.orderBy === 'Name' && $ctrl.state.reverseOrder\\\"\\n ng-click=\\\"$ctrl.changeOrderBy('Name')\\\"\\n ></table-column-header>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr\\n dir-paginate=\\\"item in ($ctrl.state.filteredDataSet = ($ctrl.dataset | filter:$ctrl.state.textFilter | orderBy:$ctrl.state.orderBy:$ctrl.state.reverseOrder | itemsPerPage: $ctrl.state.paginatedItemLimit)) track by $index\\\"\\n ng-class=\\\"{ active: item.Checked }\\\"\\n >\\n <td>\\n <a ui-sref=\\\"portainer.groups.group({id: item.Id})\\\">{{ item }}</a>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.dataset\\\">\\n <td colspan=\\\"3\\\" class=\\\"text-muted text-center\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.filteredDataSet.length === 0\\\">\\n <td colspan=\\\"5\\\" class=\\\"text-muted text-center\\\">No users found.</td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.dataset\\\">\\n <div class=\\\"paginationControls\\\">\\n <form class=\\\"form-inline\\\">\\n <span class=\\\"limitSelector\\\">\\n <span style=\\\"margin-right: 5px\\\"> Items per page </span>\\n <select class=\\\"form-control\\\" ng-model=\\\"$ctrl.state.paginatedItemLimit\\\" ng-change=\\\"$ctrl.changePaginationLimit()\\\">\\n <option value=\\\"0\\\">All</option>\\n <option value=\\\"10\\\">10</option>\\n <option value=\\\"25\\\">25</option>\\n <option value=\\\"50\\\">50</option>\\n <option value=\\\"100\\\">100</option>\\n </select>\\n </span>\\n <dir-pagination-controls max-size=\\\"5\\\"></dir-pagination-controls>\\n </form>\\n </div>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/ldap/ldap-users-datatable/ldap-users-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n<div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n ng-class=\\\"[$ctrl.className, 'btn btn-primary btn-sm !ml-0']\\\"\\n ng-click=\\\"$ctrl.onSaveSettings()\\\"\\n ng-disabled=\\\"$ctrl.saveButtonDisabled || $ctrl.saveButtonState\\\"\\n button-spinner=\\\"$ctrl.saveButtonState\\\"\\n limited-feature-dir=\\\"{{::$ctrl.limitedFeatureId}}\\\"\\n limited-feature-class=\\\"{{::$ctrl.limitedFeatureClass}}\\\"\\n >\\n <span ng-hide=\\\"$ctrl.saveButtonState\\\">Save settings</span>\\n <span ng-show=\\\"$ctrl.saveButtonState\\\">Saving...</span>\\n </button>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/settings/authentication/save-auth-settings-button/save-auth-settings-button.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable datatable-empty\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar vertical-center flex-wrap !gap-x-5 !gap-y-1\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'history'\\\"></pr-icon>\\n </div>\\n Activity Logs\\n </div>\\n <div class=\\\"vertical-center\\\">\\n <datatable-searchbar on-change=\\\"($ctrl.onChangeKeyword)\\\" value=\\\"$ctrl.keyword\\\"></datatable-searchbar>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover table\\\">\\n <thead>\\n <tr>\\n <th class=\\\"small-column\\\">\\n <div class=\\\"vertical-center\\\">\\n <table-column-header\\n col-title=\\\"'Time'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.sort.key === 'Timestamp'\\\"\\n is-sorted-desc=\\\"$ctrl.sort.key === 'Timestamp' && $ctrl.sort.desc\\\"\\n ng-click=\\\"$ctrl.changeSort('Timestamp')\\\"\\n >\\n </table-column-header>\\n </div>\\n </th>\\n <th class=\\\"small-column\\\">\\n <div class=\\\"vertical-center\\\">\\n <table-column-header\\n col-title=\\\"'User'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.sort.key === 'Username'\\\"\\n is-sorted-desc=\\\"$ctrl.sort.key === 'Username' && $ctrl.sort.desc\\\"\\n ng-click=\\\"$ctrl.changeSort('Username')\\\"\\n >\\n </table-column-header>\\n </div>\\n </th>\\n <th class=\\\"small-column\\\">\\n <div class=\\\"vertical-center\\\">\\n <table-column-header\\n col-title=\\\"'Environment'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.sort.key === 'Context'\\\"\\n is-sorted-desc=\\\"$ctrl.sort.key === 'Context' && $ctrl.sort.desc\\\"\\n ng-click=\\\"$ctrl.changeSort('Context')\\\"\\n >\\n </table-column-header>\\n </div>\\n </th>\\n\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <table-column-header col-title=\\\"'Action'\\\" can-sort=\\\"false\\\"> </table-column-header>\\n </div>\\n </th>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <table-column-header col-title=\\\"'Payload'\\\" can-sort=\\\"false\\\"> </table-column-header>\\n </div>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr dir-paginate-start=\\\"item in $ctrl.logs | itemsPerPage: $ctrl.limit\\\" total-items=\\\"$ctrl.totalItems\\\" current-page=\\\"$ctrl.currentPage\\\">\\n <td></td>\\n <td></td>\\n <td></td>\\n <td></td>\\n <td></td>\\n </tr>\\n <tr dir-paginate-end ng-show=\\\"item.Expanded\\\">\\n <td colspan=\\\"5\\\">\\n <json-tree object=\\\"item.payload\\\" root-name=\\\"containerInfo.Id\\\" start-expanded=\\\"true\\\"></json-tree>\\n </td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.logs\\\">\\n <td class=\\\"text-muted text-center\\\" colspan=\\\"5\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.logs.length === 0\\\">\\n <td class=\\\"text-muted text-center\\\" colspan=\\\"8\\\"> No logs available. </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.logs\\\">\\n <datatable-pagination limit=\\\"$ctrl.limit\\\" on-change-limit=\\\"($ctrl.handleChangeLimit)\\\" on-change-page=\\\"($ctrl.onChangePage)\\\"></datatable-pagination>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/user-activity/activity-logs-view/activity-logs-datatable/activity-logs-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'User Activity'\\\" breadcrumbs=\\\"['Activity Logs']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"be-indicator-container limited-be mx-4\\\">\\n <div>\\n <div class=\\\"limited-be-link vertical-center\\\"><be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator></div>\\n <div class=\\\"limited-be-content\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <div class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"dateRangeInput\\\" class=\\\"col-sm-2 control-label text-left\\\">Date Range</label>\\n <div class=\\\"col-sm-6\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" disabled />\\n </div>\\n </div>\\n </div>\\n <p class=\\\"text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" class-name=\\\"'icon icon-sm icon-primary'\\\"></pr-icon>\\n Portainer user activity logs have a maximum retention of 7 days.\\n </p>\\n <div>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeature}}\\\" limited-feature-class=\\\"limited-be\\\" limited-feature-disabled>\\n <pr-icon icon=\\\"'download'\\\" class-name=\\\"'icon icon-sm'\\\"></pr-icon>\\n Export as CSV\\n </button>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n <div class=\\\"row mt-5\\\">\\n <activity-logs-datatable\\n logs=\\\"$ctrl.state.logs\\\"\\n keyword=\\\"$ctrl.state.keyword\\\"\\n sort=\\\"$ctrl.state.sort\\\"\\n limit=\\\"$ctrl.state.limit\\\"\\n context-filter=\\\"$ctrl.state.contextFilter\\\"\\n total-items=\\\"$ctrl.state.totalItems\\\"\\n current-page=\\\"$ctrl.state.currentPage\\\"\\n feature=\\\"{{:: $ctrl.limitedFeature}}\\\"\\n on-change-keyword=\\\"($ctrl.onChangeKeyword)\\\"\\n on-change-sort=\\\"($ctrl.onChangeSort)\\\"\\n on-change-limit=\\\"($ctrl.onChangeLimit)\\\"\\n on-change-page=\\\"($ctrl.onChangePage)\\\"\\n ></activity-logs-datatable>\\n </div>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/user-activity/activity-logs-view/activity-logs-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"datatable datatable-empty\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar vertical-center flex-wrap !gap-x-5 !gap-y-1\\\">\\n <div class=\\\"toolBarTitle vertical-center\\\">\\n <div class=\\\"widget-icon space-right\\\">\\n <pr-icon icon=\\\"'history'\\\"></pr-icon>\\n </div>\\n Authentication Events\\n </div>\\n <div class=\\\"vertical-center\\\">\\n <datatable-searchbar on-change=\\\"($ctrl.onChangeKeyword)\\\"></datatable-searchbar>\\n </div>\\n </div>\\n <div class=\\\"table-responsive\\\">\\n <table class=\\\"table-hover nowrap-cells table\\\">\\n <thead>\\n <tr>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <table-column-header\\n col-title=\\\"'Time'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.sort.key === 'Timestamp'\\\"\\n is-sorted-desc=\\\"$ctrl.sort.key === 'Timestamp' && $ctrl.sort.desc\\\"\\n ng-click=\\\"$ctrl.changeSort('Timestamp')\\\"\\n >\\n </table-column-header>\\n </div>\\n </th>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <table-column-header\\n col-title=\\\"'Origin'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.sort.key === 'Origin'\\\"\\n is-sorted-desc=\\\"$ctrl.sort.key === 'Origin' && $ctrl.sort.desc\\\"\\n ng-click=\\\"$ctrl.changeSort('Origin')\\\"\\n >\\n </table-column-header>\\n </div>\\n </th>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <table-column-header\\n col-title=\\\"'Context'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.sort.key === 'Context'\\\"\\n is-sorted-desc=\\\"$ctrl.sort.key === 'Context' && $ctrl.sort.desc\\\"\\n ng-click=\\\"$ctrl.changeSort('Context')\\\"\\n >\\n </table-column-header>\\n <datatable-filter labels=\\\"$ctrl.contextFilterLabels\\\" filter-key=\\\"context\\\" state=\\\"$ctrl.contextFilter\\\" on-change=\\\"($ctrl.onChangeContextFilter)\\\">\\n </datatable-filter>\\n </div>\\n </th>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <table-column-header\\n col-title=\\\"'User'\\\"\\n can-sort=\\\"true\\\"\\n is-sorted=\\\"$ctrl.sort.key === 'Username'\\\"\\n is-sorted-desc=\\\"$ctrl.sort.key === 'Username' && $ctrl.sort.desc\\\"\\n ng-click=\\\"$ctrl.changeSort('Username')\\\"\\n >\\n </table-column-header>\\n </div>\\n </th>\\n <th>\\n <div class=\\\"vertical-center\\\">\\n <table-column-header col-title=\\\"'Result'\\\" can-sort=\\\"false\\\"> </table-column-header>\\n <datatable-filter labels=\\\"$ctrl.typeFilterLabels\\\" filter-key=\\\"type\\\" state=\\\"$ctrl.typeFilter\\\" on-change=\\\"($ctrl.onChangeTypeFilter)\\\"> </datatable-filter>\\n </div>\\n </th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr dir-paginate=\\\"item in $ctrl.logs | itemsPerPage: $ctrl.limit\\\" total-items=\\\"$ctrl.totalItems\\\" current-page=\\\"$ctrl.currentPage\\\">\\n <td></td>\\n <td></td>\\n <td></td>\\n <td></td>\\n <td></td>\\n </tr>\\n <tr ng-if=\\\"!$ctrl.logs\\\">\\n <td class=\\\"text-muted text-center\\\" colspan=\\\"5\\\">Loading...</td>\\n </tr>\\n <tr ng-if=\\\"$ctrl.state.logs.length === 0\\\">\\n <td class=\\\"text-muted text-center\\\" colspan=\\\"8\\\"> No logs available. </td>\\n </tr>\\n </tbody>\\n </table>\\n </div>\\n <div class=\\\"footer\\\" ng-if=\\\"$ctrl.logs\\\">\\n <datatable-pagination limit=\\\"$ctrl.limit\\\" on-change-limit=\\\"($ctrl.handleChangeLimit)\\\" on-change-page=\\\"($ctrl.onChangePage)\\\"></datatable-pagination>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n</div>\\n\";;\nvar path = 'app/portainer/user-activity/auth-logs-view/auth-logs-datatable/auth-logs-datatable.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'User Activity'\\\" breadcrumbs=\\\"['User authentication activity']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"be-indicator-container limited-be mx-4\\\">\\n <div>\\n <div class=\\\"limited-be-link vertical-center\\\"><be-feature-indicator feature=\\\"$ctrl.limitedFeature\\\"></be-feature-indicator></div>\\n <div class=\\\"limited-be-content\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <div class=\\\"form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"dateRangeInput\\\" class=\\\"col-sm-2 control-label text-left\\\">Date Range</label>\\n <div class=\\\"col-sm-6\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" disabled />\\n </div>\\n </div>\\n </div>\\n <p class=\\\"text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'info'\\\" class-name=\\\"'icon icon-sm icon-primary'\\\"></pr-icon>\\n Portainer user authentication activity logs have a maximum retention of 7 days.\\n </p>\\n <div>\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" limited-feature-dir=\\\"{{::$ctrl.limitedFeature}}\\\" limited-feature-class=\\\"limited-be\\\" limited-feature-disabled\\n ><pr-icon icon=\\\"'download'\\\" class-name=\\\"'icon icon-sm'\\\"></pr-icon>Export as CSV\\n </button>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n <div class=\\\"row mt-5\\\">\\n <auth-logs-datatable\\n logs=\\\"$ctrl.state.logs\\\"\\n keyword=\\\"$ctrl.state.keyword\\\"\\n sort=\\\"$ctrl.state.sort\\\"\\n limit=\\\"$ctrl.state.limit\\\"\\n context-filter=\\\"$ctrl.state.contextFilter\\\"\\n type-filter=\\\"$ctrl.state.typeFilter\\\"\\n total-items=\\\"$ctrl.state.totalItems\\\"\\n current-page=\\\"$ctrl.state.currentPage\\\"\\n feature=\\\"{{:: $ctrl.limitedFeature}}\\\"\\n on-change-context-filter=\\\"($ctrl.onChangeContextFilter)\\\"\\n on-change-type-filter=\\\"($ctrl.onChangeTypeFilter)\\\"\\n on-change-keyword=\\\"($ctrl.onChangeKeyword)\\\"\\n on-change-sort=\\\"($ctrl.onChangeSort)\\\"\\n on-change-limit=\\\"($ctrl.onChangeLimit)\\\"\\n on-change-page=\\\"($ctrl.onChangePage)\\\"\\n ></auth-logs-datatable>\\n </div>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/user-activity/auth-logs-view/auth-logs-view.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'User settings'\\\" breadcrumbs=\\\"['User settings']\\\"> </page-header>\\n\\n<demo-feature-indicator ng-if=\\\"isDemoUser\\\" content=\\\"'You cannot change the password of this account in the demo version of Portainer.'\\\"> </demo-feature-indicator>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"lock\\\" title-text=\\\"Change user password\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form name=\\\"form\\\" class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <!-- current-password-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"current_password\\\" class=\\\"col-sm-2 control-label required text-left\\\">Current password</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.currentPassword\\\" id=\\\"current_password\\\" />\\n </div>\\n </div>\\n <!-- !current-password-input -->\\n <!-- new-password-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"new_password\\\" class=\\\"col-sm-2 control-label required text-left\\\">New password</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.newPassword\\\" ng-minlength=\\\"requiredPasswordLength\\\" id=\\\"new_password\\\" name=\\\"new_password\\\" />\\n </div>\\n </div>\\n <!-- !new-password-input -->\\n\\n <!-- confirm-password-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"confirm_password\\\" class=\\\"col-sm-2 control-label required text-left\\\">Confirm password</label>\\n <div class=\\\"col-sm-8\\\">\\n <div class=\\\"input-group\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.confirmPassword\\\" id=\\\"confirm_password\\\" />\\n <span class=\\\"input-group-addon\\\">\\n <pr-icon icon=\\\"'check'\\\" class=\\\"icon-success\\\" ng-if=\\\"formValues.newPassword === formValues.confirmPassword\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" class=\\\"icon-danger\\\" ng-if=\\\"!(formValues.newPassword === formValues.confirmPassword)\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8\\\">\\n <password-check-hint password-valid=\\\"form.new_password.$valid && formValues.newPassword\\\" force-change-password=\\\"forceChangePassword\\\"></password-check-hint>\\n </div>\\n </div>\\n <!-- !confirm-password-input -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"isDemoUser || (AuthenticationMethod !== 1 && !isInitialAdmin) || !formValues.currentPassword || !formValues.newPassword || form.$invalid || formValues.newPassword !== formValues.confirmPassword\\\"\\n ng-click=\\\"updatePassword()\\\"\\n >\\n Update password\\n </button>\\n <button type=\\\"submit\\\" class=\\\"btn btn-primary btn-sm\\\" ng-click=\\\"skipPasswordChange()\\\" ng-if=\\\"forceChangePassword && timesPasswordChangeSkipped < 2\\\">\\n Remind me later\\n </button>\\n <span class=\\\"text-muted small vertical-center\\\" style=\\\"margin-left: 5px\\\" ng-if=\\\"AuthenticationMethod === 2 && !isInitialAdmin\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n You cannot change your password when using LDAP authentication.\\n </span>\\n <span class=\\\"text-muted small vertical-center\\\" style=\\\"margin-left: 5px\\\" ng-if=\\\"AuthenticationMethod === 3 && !isInitialAdmin\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n You cannot change your password when using OAuth authentication.\\n </span>\\n </div>\\n </div>\\n <div ng-if=\\\"userRole === 1\\\">\\n <p class=\\\"text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon>\\n Minimum password length is set <a ui-sref=\\\"portainer.settings.authentication\\\">here.</a>\\n </p>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <access-tokens-datatable\\n title-text=\\\"Access tokens\\\"\\n title-icon=\\\"key\\\"\\n dataset=\\\"tokens\\\"\\n table-key=\\\"tokens\\\"\\n order-by=\\\"Description\\\"\\n remove-action=\\\"removeAction\\\"\\n ui-can-exit=\\\"uiCanExit\\\"\\n ></access-tokens-datatable>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <theme-settings></theme-settings>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/account/account.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create access token'\\\" breadcrumbs=\\\"[{label:'User settings', link:'portainer.account'}, 'Add access token']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <!-- mount react feature/view -->\\n <create-access-token user-id=\\\"$ctrl.state.userId\\\" on-submit=\\\"($ctrl.onSubmit)\\\" on-success=\\\"($ctrl.onSuccess)\\\" on-error=\\\"($ctrl.onError)\\\"></create-access-token>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/account/create-user-access-token/create-user-access-token.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"page-wrapper\\\">\\n <!-- login box -->\\n <div class=\\\"simple-box container\\\">\\n <div class=\\\"col-sm-4 col-sm-offset-4\\\">\\n <!-- login box logo -->\\n <div class=\\\"row\\\">\\n <img ng-if=\\\"!ctrl.logo\\\" src=\\\"\" + require(\"@/assets/images/logo_alt.svg\") + \"\\\" class=\\\"simple-box-logo\\\" alt=\\\"Portainer\\\" />\\n <img ng-if=\\\"ctrl.logo\\\" ng-src=\\\"{{ ctrl.logo }}\\\" class=\\\"simple-box-logo\\\" />\\n </div>\\n <!-- !login box logo -->\\n\\n <div class=\\\"row p-5 text-center\\\">\\n <p class=\\\"text-xl\\\">Log in to your account</p>\\n <p class=\\\"text-md text-muted fw-bold\\\">Welcome back! Please enter your details</p>\\n </div>\\n\\n <!-- login panel -->\\n <div class=\\\"panel panel-default\\\" ng-if=\\\"!ctrl.state.loginInProgress\\\">\\n <div class=\\\"panel-body\\\">\\n <!-- login form -->\\n <form class=\\\"simple-box-form form-horizontal\\\">\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"display: flex; justify-content: center\\\" ng-if=\\\"ctrl.state.showOAuthLogin\\\">\\n <a ng-href=\\\"{{ ctrl.OAuthLoginURI }}\\\">\\n <div class=\\\"btn btn-primary btn-lg btn-block\\\" ng-if=\\\"ctrl.state.OAuthProvider === 'Microsoft'\\\">\\n <pr-icon icon=\\\"'svg-microsoft'\\\"></pr-icon>\\n Login with Microsoft\\n </div>\\n <div class=\\\"btn btn-primary btn-lg btn-block\\\" ng-if=\\\"ctrl.state.OAuthProvider === 'Google'\\\">\\n <pr-icon icon=\\\"'svg-google'\\\"></pr-icon>\\n Login with Google\\n </div>\\n <div class=\\\"btn btn-primary btn-lg btn-block\\\" ng-if=\\\"ctrl.state.OAuthProvider === 'Github'\\\">\\n <pr-icon icon=\\\"'svg-github'\\\"></pr-icon>\\n Login with GitHub\\n </div>\\n <div class=\\\"btn btn-primary btn-lg btn-block\\\" ng-if=\\\"ctrl.state.OAuthProvider === 'OAuth'\\\">\\n <pr-icon icon=\\\"'log-in'\\\"></pr-icon>\\n Login with OAuth\\n </div>\\n </a>\\n </div>\\n </div>\\n\\n <!-- divider -->\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.showOAuthLogin\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"display: flex; align-items: center; justify-content: center\\\">\\n <div class=\\\"striketext small text-muted\\\" style=\\\"display: flex; align-items: center; justify-content: center; width: 90%\\\">or</div>\\n </div>\\n </div>\\n\\n <!-- use internal auth button -->\\n <div class=\\\"form-group\\\" ng-if=\\\"ctrl.state.showOAuthLogin && !ctrl.state.showStandardLogin\\\">\\n <div class=\\\"col-sm-12\\\" style=\\\"display: flex; justify-content: center\\\">\\n <div class=\\\"btn btn-primary btn-md btn-block\\\" style=\\\"margin-left: 2px\\\" ng-click=\\\"ctrl.toggleStandardLogin()\\\"> Use internal authentication </div>\\n </div>\\n </div>\\n\\n <!-- !username input -->\\n <div ng-if=\\\"ctrl.state.showStandardLogin\\\">\\n <div class=\\\"pb-2\\\">Username</div>\\n <input\\n id=\\\"username\\\"\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"username\\\"\\n ng-model=\\\"ctrl.formValues.Username\\\"\\n auto-focus\\n data-cy=\\\"auth-usernameInput\\\"\\n placeholder=\\\"Enter your username\\\"\\n />\\n </div>\\n\\n <!-- password input -->\\n <div ng-if=\\\"ctrl.state.showStandardLogin\\\">\\n <div class=\\\"pb-2\\\">Password</div>\\n <div class=\\\"relative\\\">\\n <input\\n id=\\\"password\\\"\\n ng-attr-type=\\\"{{ ctrl.state.passwordInputType }}\\\"\\n class=\\\"form-control pr-10\\\"\\n name=\\\"password\\\"\\n ng-model=\\\"ctrl.formValues.Password\\\"\\n autocomplete=\\\"off\\\"\\n data-cy=\\\"auth-passwordInput\\\"\\n placeholder=\\\"Enter your password\\\"\\n ng-trim=\\\"false\\\"\\n />\\n <button\\n data-cy=\\\"auth-passwordInputToggle\\\"\\n type=\\\"button\\\"\\n ng-click=\\\"ctrl.toggleShowPassword()\\\"\\n class=\\\"absolute top-0 right-0 flex h-[34px] w-[50px] items-center justify-center border-none bg-transparent\\\"\\n tooltip-append-to-body=\\\"true\\\"\\n tooltip-placement=\\\"top\\\"\\n tooltip-class=\\\"portainer-tooltip\\\"\\n uib-tooltip=\\\"{{ ctrl.state.passwordInputType === 'password' ? 'Show password' : 'Hide password' }}\\\"\\n >\\n <pr-icon icon=\\\"ctrl.state.passwordInputType === 'password' ? 'eye-off' : 'eye'\\\" size=\\\"'md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group overflow-auto\\\" ng-if=\\\"ctrl.state.showStandardLogin\\\">\\n <!-- login button -->\\n <div class=\\\"col-sm-12 d-flex py-1\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-lg btn-block\\\"\\n ng-click=\\\"ctrl.authenticateUser()\\\"\\n button-spinner=\\\"ctrl.state.loginInProgress\\\"\\n ng-disabled=\\\"ctrl.state.loginInProgress\\\"\\n data-cy=\\\"auth-loginButton\\\"\\n >\\n <span ng-hide=\\\"ctrl.state.loginInProgress\\\">Login</span>\\n <span ng-show=\\\"ctrl.state.loginInProgress\\\">Login in progress...</span>\\n </button>\\n </div>\\n </div>\\n </form>\\n <!-- !login form -->\\n\\n <!-- error message -->\\n <div class=\\\"pull-right\\\" ng-if=\\\"ctrl.state.AuthenticationError\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n <span class=\\\"small text-danger\\\">{{ ctrl.state.AuthenticationError }}</span>\\n </div>\\n </div>\\n </div>\\n\\n <!-- !login panel -->\\n <div class=\\\"panel panel-default\\\" ng-show=\\\"ctrl.state.loginInProgress\\\">\\n <div class=\\\"panel-body\\\">\\n <div class=\\\"form-group text-center\\\">\\n <span class=\\\"small text-muted\\\">Authentication in progress... <span button-spinner=\\\"true\\\"></span></span>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !login box -->\\n</div>\\n\";;\nvar path = 'app/portainer/views/auth/auth.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create Custom template'\\\" breadcrumbs=\\\"[{label:'Custom Templates', link:'docker.templates.custom'}, 'Create Custom template']\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"!$ctrl.state.loading\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"customTemplateForm\\\">\\n <custom-template-common-fields\\n form-values=\\\"$ctrl.formValues\\\"\\n show-platform-field=\\\"true\\\"\\n show-type-field=\\\"true\\\"\\n name-regex=\\\"$ctrl.state.templateNameRegex\\\"\\n name-regex-error=\\\"'This field must consist of lower-case alphanumeric characters, \\\\'_\\\\' or \\\\'-\\\\' (e.g. \\\\'my-name\\\\', or \\\\'abc-123\\\\').'\\\"\\n ></custom-template-common-fields>\\n\\n <!-- build-method -->\\n <div ng-if=\\\"!$ctrl.state.fromStack\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n\\n <box-selector\\n slim=\\\"true\\\"\\n options=\\\"$ctrl.buildMethods\\\"\\n value=\\\"$ctrl.state.Method\\\"\\n on-change=\\\"($ctrl.onChangeMethod)\\\"\\n radio-name=\\\"'buildMethod'\\\"\\n slim=\\\"true\\\"\\n ></box-selector>\\n </div>\\n <!-- !build-method -->\\n <!-- web-editor -->\\n <web-editor-form\\n ng-if=\\\"$ctrl.state.Method === 'editor'\\\"\\n identifier=\\\"custom-template-creation-editor\\\"\\n value=\\\"$ctrl.formValues.FileContent\\\"\\n on-change=\\\"($ctrl.editorUpdate)\\\"\\n ng-required=\\\"true\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your docker compose file here\\\"\\n >\\n <editor-description>\\n <p>\\n You can get more information about Compose file format in the\\n <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> official documentation </a>\\n .\\n </p>\\n </editor-description>\\n </web-editor-form>\\n <!-- !web-editor -->\\n <!-- upload -->\\n <div ng-show=\\\"$ctrl.state.Method === 'upload'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Upload </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> You can upload a Compose file from your computer. </span>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" ngf-select ng-model=\\\"$ctrl.formValues.File\\\"> Select file </button>\\n <span class=\\\"space-left\\\">\\n {{ $ctrl.formValues.File.name }}\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !upload -->\\n <!-- repository -->\\n <git-form\\n ng-if=\\\"$ctrl.state.Method === 'repository'\\\"\\n value=\\\"$ctrl.formValues\\\"\\n on-change=\\\"($ctrl.handleChange)\\\"\\n is-docker-standalone=\\\"$ctrl.isDockerStandalone\\\"\\n ></git-form>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.state.isTemplateValid\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"small text-warning\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'space-right'\\\"></pr-icon>\\n Template is invalid.\\n </div>\\n </div>\\n </div>\\n\\n <custom-templates-variables-definition-field\\n ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n value=\\\"$ctrl.formValues.Variables\\\"\\n on-change=\\\"($ctrl.onVariablesChange)\\\"\\n is-variables-names-from-parent=\\\"$ctrl.state.Method === 'editor'\\\"\\n ></custom-templates-variables-definition-field>\\n\\n <!-- !repository -->\\n <por-access-control-form form-data=\\\"$ctrl.formValues.AccessControlData\\\"></por-access-control-form>\\n\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"$ctrl.state.actionInProgress || customTemplateForm.$invalid\\n || ($ctrl.state.Method === 'editor' && !$ctrl.formValues.FileContent)\\n || ($ctrl.state.Method === 'upload' && !$ctrl.formValues.File)\\n || ($ctrl.state.Method === 'repository' && ((!$ctrl.formValues.RepositoryURL || !$ctrl.formValues.ComposeFilePathInRepository) || ($ctrl.formValues.RepositoryAuthentication && (!$ctrl.formValues.RepositoryUsername || !$ctrl.formValues.RepositoryPassword))))\\n || !$ctrl.formValues.Title\\n || !$ctrl.state.isTemplateValid\\\"\\n ng-click=\\\"$ctrl.createCustomTemplate()\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">Create custom template</span>\\n <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Creation in progress...</span>\\n </button>\\n <span class=\\\"text-danger space-left\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">\\n {{ $ctrl.state.formValidationError }}\\n </span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/custom-templates/create-custom-template-view/createCustomTemplateView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Custom Templates'\\\" breadcrumbs=\\\"['Custom Templates']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <stack-from-template-form\\n ng-if=\\\"$ctrl.state.selectedTemplate\\\"\\n template=\\\"$ctrl.state.selectedTemplate\\\"\\n form-values=\\\"$ctrl.formValues\\\"\\n name-regex=\\\"$ctrl.state.templateNameRegex\\\"\\n state=\\\"$ctrl.state\\\"\\n create-template=\\\"$ctrl.createStack\\\"\\n unselect-template=\\\"$ctrl.unselectTemplate\\\"\\n >\\n <advanced-form>\\n <custom-templates-variables-field\\n ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n definitions=\\\"$ctrl.state.selectedTemplate.Variables\\\"\\n value=\\\"$ctrl.formValues.variables\\\"\\n on-change=\\\"($ctrl.onChangeTemplateVariables)\\\"\\n ></custom-templates-variables-field>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"$ctrl.state.selectedTemplate && !$ctrl.state.templateLoadFailed\\\">\\n <div class=\\\"col-sm-12\\\">\\n <a class=\\\"small interactive vertical-center\\\" ng-show=\\\"!$ctrl.state.showAdvancedOptions\\\" ng-click=\\\"$ctrl.state.showAdvancedOptions = true;\\\">\\n <pr-icon icon=\\\"'plus'\\\" class-name=\\\"space-right\\\" feather=\\\"true\\\"></pr-icon> {{ $ctrl.state.selectedTemplate.GitConfig !== null ? 'View' : 'Customize' }} stack\\n </a>\\n <a class=\\\"small interactive vertical-center\\\" ng-show=\\\"$ctrl.state.showAdvancedOptions\\\" ng-click=\\\"$ctrl.state.showAdvancedOptions = false;\\\">\\n <pr-icon icon=\\\"'minus'\\\" class-name=\\\"space-right\\\" feather=\\\"true\\\"></pr-icon> Hide {{ $ctrl.state.selectedTemplate.GitConfig === null ? 'custom' : '' }} stack\\n </a>\\n </div>\\n </div>\\n\\n <span ng-if=\\\"$ctrl.state.selectedTemplate && $ctrl.state.templateLoadFailed\\\">\\n <p class=\\\"small vertical-center text-danger mb-5\\\" ng-if=\\\"$ctrl.currentUser.isAdmin || $ctrl.currentUser.id === $ctrl.state.selectedTemplate.CreatedByUserId\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>Custom template could not be loaded, please\\n <a ui-sref=\\\"docker.templates.custom.edit({id: $ctrl.state.selectedTemplate.Id})\\\">click here</a> for configuration.</p\\n >\\n <p class=\\\"small vertical-center text-danger mb-5\\\" ng-if=\\\"!($ctrl.currentUser.isAdmin || $ctrl.currentUser.id === $ctrl.state.selectedTemplate.CreatedByUserId)\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>Custom template could not be loaded, please contact your administrator.</p\\n >\\n </span>\\n\\n <!-- web-editor -->\\n <web-editor-form\\n ng-if=\\\"$ctrl.state.showAdvancedOptions\\\"\\n identifier=\\\"custom-template-creation-editor\\\"\\n value=\\\"$ctrl.formValues.fileContent\\\"\\n on-change=\\\"($ctrl.editorUpdate)\\\"\\n ng-required=\\\"true\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your docker compose file here\\\"\\n read-only=\\\"$ctrl.state.isEditorReadOnly\\\"\\n >\\n <editor-description>\\n <p>\\n You can get more information about Compose file format in the\\n <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> official documentation </a>\\n .\\n </p>\\n </editor-description>\\n </web-editor-form>\\n <!-- !web-editor -->\\n </advanced-form>\\n </stack-from-template-form>\\n</div>\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <custom-templates-list\\n ng-if=\\\"$ctrl.templates\\\"\\n title-text=\\\"Templates\\\"\\n title-icon=\\\"edit\\\"\\n templates=\\\"$ctrl.templates\\\"\\n table-key=\\\"customTemplates\\\"\\n create-path=\\\"docker.templates.custom.new\\\"\\n edit-path=\\\"docker.templates.custom.edit\\\"\\n is-edit-allowed=\\\"$ctrl.isEditAllowed\\\"\\n on-select-click=\\\"($ctrl.selectTemplate)\\\"\\n on-delete-click=\\\"($ctrl.confirmDelete)\\\"\\n ></custom-templates-list>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/custom-templates/custom-templates-view/customTemplatesView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Edit Custom Template'\\\" breadcrumbs=\\\"[{label:'Custom templates', link:'docker.templates.custom'}, $ctrl.formValues.Title]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"$ctrl.formValues\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"customTemplateForm\\\">\\n <custom-template-common-fields\\n form-values=\\\"$ctrl.formValues\\\"\\n show-platform-field=\\\"true\\\"\\n show-type-field=\\\"true\\\"\\n name-regex=\\\"$ctrl.state.templateNameRegex\\\"\\n name-regex-error=\\\"'This field must consist of lower-case alphanumeric characters, \\\\'_\\\\' or \\\\'-\\\\' (e.g. \\\\'my-name\\\\', or \\\\'abc-123\\\\').'\\\"\\n ></custom-template-common-fields>\\n\\n <git-form value=\\\"$ctrl.formValues\\\" on-change=\\\"($ctrl.handleChange)\\\" ng-if=\\\"$ctrl.formValues.GitConfig\\\"></git-form>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\"\\n ><button type=\\\"button\\\" class=\\\"btn btn-sm btn-light !ml-0\\\" ng-if=\\\"$ctrl.formValues.GitConfig\\\" ng-click=\\\"$ctrl.previewFileFromGitRepository()\\\">\\n <pr-icon icon=\\\"'refresh-cw'\\\" feather=\\\"true\\\"></pr-icon>Reload custom template</button\\n >\\n </div>\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.state.templatePreviewFailed\\\">\\n <p class=\\\"small vertical-center text-danger mt-5\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>\\n Custom template could not be loaded, {{ $ctrl.state.templatePreviewError }}.</p\\n >\\n </div>\\n </div>\\n\\n <!-- web-editor -->\\n <web-editor-form\\n identifier=\\\"custom-template-creation-editor\\\"\\n value=\\\"$ctrl.formValues.FileContent\\\"\\n on-change=\\\"($ctrl.editorUpdate)\\\"\\n ng-required=\\\"true\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your docker compose file here\\\"\\n read-only=\\\"$ctrl.state.isEditorReadOnly\\\"\\n >\\n <editor-description>\\n <p>\\n You can get more information about Compose file format in the\\n <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\"> official documentation </a>\\n .\\n </p>\\n </editor-description>\\n </web-editor-form>\\n <!-- !web-editor -->\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"!$ctrl.state.isTemplateValid\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"small text-warning\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'space-right'\\\"></pr-icon>\\n Template is invalid.\\n </div>\\n </div>\\n </div>\\n\\n <custom-templates-variables-definition-field\\n ng-if=\\\"$ctrl.isTemplateVariablesEnabled\\\"\\n value=\\\"$ctrl.formValues.Variables\\\"\\n on-change=\\\"($ctrl.onVariablesChange)\\\"\\n is-variables-names-from-parent=\\\"true\\\"\\n ></custom-templates-variables-definition-field>\\n\\n <por-access-control-form\\n form-data=\\\"$ctrl.formValues.AccessControlData\\\"\\n resource-control=\\\"$ctrl.formValues.ResourceControl\\\"\\n ng-if=\\\"$ctrl.formValues.AccessControlData\\\"\\n ></por-access-control-form>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"$ctrl.actionInProgress || customTemplateForm.$invalid\\n || !$ctrl.formValues.Title\\n || !$ctrl.formValues.FileContent\\n || !$ctrl.state.isTemplateValid\\n \\\"\\n ng-click=\\\"$ctrl.submitAction()\\\"\\n button-spinner=\\\"$ctrl.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.actionInProgress\\\">Update the template</span>\\n <span ng-show=\\\"$ctrl.actionInProgress\\\">Update in progress...</span>\\n </button>\\n <span class=\\\"text-danger space-left\\\" ng-if=\\\"$ctrl.state.formValidationError\\\">\\n {{ $ctrl.state.formValidationError }}\\n </span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/custom-templates/edit-custom-template-view/editCustomTemplateView.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'FDO Device Configuration'\\\" breadcrumbs=\\\"[{label:'Environments', link:'portainer.endpoints'}, 'Import FDO Device']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"wand-2\\\" title-text=\\\"Import Device Set up\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"fdoForm\\\">\\n <!-- info -->\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n You are setting up a Portainer Edge Agent that will initiate the communications with the Portainer instance and your FDO Devices.\\n </p>\\n </span>\\n <!-- !info -->\\n <!-- import voucher -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Import Voucher </div>\\n <div>\\n <div class=\\\"form-group\\\" ng-show=\\\"!state.vouchersUploaded\\\">\\n <span class=\\\"small col-sm-12\\\">\\n <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n Import one or more Manufacturer's Ownership Vouchers to initiate device attestation\\n </p>\\n </span>\\n <div class=\\\"col-sm-8\\\">\\n <button\\n style=\\\"margin-left: 0px !important\\\"\\n class=\\\"btn btn-sm btn-primary\\\"\\n ngf-select=\\\"onVoucherFilesChange()\\\"\\n ng-model=\\\"formValues.VoucherFiles\\\"\\n name=\\\"VoucherFiles\\\"\\n ng-disabled=\\\"state.vouchersUploading\\\"\\n button-spinner=\\\"state.vouchersUploading\\\"\\n multiple\\n >\\n <span ng-hide=\\\"state.vouchersUploading\\\"\\n >Upload\\n <pr-icon icon=\\\"'upload'\\\" class-name=\\\"'ml-1'\\\"></pr-icon>\\n </span>\\n <span ng-show=\\\"state.vouchersUploading\\\">Uploading Voucher...</span>\\n </button>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"state.vouchersUploading\\\">\\n <div class=\\\"col-sm-12 small text-success\\\">\\n <p>Connecting to the Owner service...</p>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"state.vouchersUploaded\\\">\\n <div class=\\\"col-sm-12\\\">\\n <p>Ownership Voucher Uploaded <pr-icon icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon></p>\\n </div>\\n </div>\\n </div>\\n <!-- !import voucher -->\\n <!-- device details -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Device details </div>\\n <div>\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n Device name will serve as your reference name in Portainer\\n </p>\\n </span>\\n <!-- device name input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"device_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Device Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"device_name\\\"\\n placeholder=\\\"e.g. FDO-Test01\\\"\\n ng-model=\\\"formValues.DeviceName\\\"\\n ng-required=\\\"state.vouchersUploaded\\\"\\n ng-disabled=\\\"!state.vouchersUploaded\\\"\\n auto-focus\\n data-cy=\\\"deviceImport-deviceNameInput\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"fdoForm.device_name.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"fdoForm.device_name.$error\\\">\\n <p ng-message=\\\"required\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.</p\\n >\\n </div>\\n </div>\\n </div>\\n <!-- !device name input -->\\n <!-- suffix input -->\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n Suffix starting number will be appended to the end of the Device name, if initiating multiple devices this will be incrementally increased\\n </p>\\n </span>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"suffix\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Suffix starting number </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"suffix\\\"\\n ng-model=\\\"formValues.Suffix\\\"\\n ng-required=\\\"state.vouchersUploaded\\\"\\n ng-disabled=\\\"!state.vouchersUploaded\\\"\\n ng-pattern=\\\"/^[0-9]+$/\\\"\\n placeholder=\\\"1\\\"\\n required\\n data-cy=\\\"deviceImport-suffixInput\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"fdoForm.suffix.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"fdoForm.suffix.$error\\\">\\n <p ng-message=\\\"required\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.</p\\n >\\n <p ng-message=\\\"pattern\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field needs to be a positive integer number.</p\\n >\\n </div>\\n </div>\\n </div>\\n <!-- !suffix input -->\\n <!-- portainer-instance-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"endpoint_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Portainer server URL\\n <portainer-tooltip message=\\\"'URL of the Portainer instance that the agent will use to initiate the communications.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"endpoint_url\\\"\\n ng-model=\\\"formValues.PortainerURL\\\"\\n ng-required=\\\"state.vouchersUploaded\\\"\\n ng-disabled=\\\"!state.vouchersUploaded\\\"\\n placeholder=\\\"e.g. https://10.0.0.10:9443\\\"\\n required\\n data-cy=\\\"deviceImport-portainerServerUrlInput\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"fdoForm.endpoint_url.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"fdoForm.endpoint_url.$error\\\">\\n <p ng-message=\\\"required\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.</p\\n >\\n </div>\\n </div>\\n </div>\\n <!-- !portainer-instance-input -->\\n </div>\\n <!-- device profile input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"device_profile\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Device Profile</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <select id=\\\"device_profile\\\" ng-model=\\\"formValues.DeviceProfile\\\" class=\\\"form-control\\\" ng-required=\\\"state.vouchersUploaded\\\" ng-disabled=\\\"!state.vouchersUploaded\\\">\\n <option selected disabled hidden value=\\\"\\\">Select a profile for your device</option>\\n <option ng-repeat=\\\"profile in profiles | orderBy: 'name'\\\" ng-value=\\\"profile.id\\\">{{ profile.name }}</option>\\n </select>\\n </div>\\n </div>\\n <!-- !device profile input -->\\n <!-- !device details -->\\n <!-- tags -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Set up Tags </div>\\n <div>\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted\\\" style=\\\"margin-top: 10px\\\">\\n <pr-icon icon=\\\"'info'\\\" mode=\\\"'primary'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n This is just an option if your device is under a certain group\\n </p>\\n </span>\\n <!-- group -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"device_group\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Group </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <select\\n class=\\\"form-control\\\"\\n ng-options=\\\"group.Id as group.Name for group in groups\\\"\\n ng-model=\\\"formValues.GroupId\\\"\\n id=\\\"device_group\\\"\\n ng-required=\\\"state.vouchersUploaded\\\"\\n ng-disabled=\\\"!state.vouchersUploaded\\\"\\n data-cy=\\\"deviceImport-deviceGroup\\\"\\n ></select>\\n </div>\\n </div>\\n <!-- !group -->\\n\\n <tag-selector ng-if=\\\"formValues\\\" value=\\\"formValues.TagIds\\\" allow-create=\\\"state.allowCreateTag\\\" on-change=\\\"(onChangeTags)\\\"> </tag-selector>\\n\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-click=\\\"createEndpointAndConfigureDevice()\\\"\\n ng-disabled=\\\"state.actionInProgress || !state.vouchersUploaded || !fdoForm.$valid\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n data-cy=\\\"deviceImport-saveDeviceButton\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Save Configuration</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Saving...</span>\\n </button>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.endpoints\\\">Cancel</a>\\n </div>\\n </div>\\n <!-- !actions -->\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/devices/import/importDevice.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create profile'\\\" breadcrumbs=\\\"[{label:'Settings', link:'portainer.settings'}, 'Edge Compute']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"createProfileForm\\\">\\n <!-- name-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\">Device Profile Details </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"stack_name\\\" class=\\\"col-sm-1 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.name\\\" id=\\\"profile_name\\\" name=\\\"profile_name\\\" placeholder=\\\"e.g. myprofile\\\" auto-focus />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- build-method -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Profile configuration </div>\\n <box-selector slim=\\\"true\\\" options=\\\"buildMethods\\\" value=\\\"state.method\\\"></box-selector>\\n\\n <!-- !build-method -->\\n\\n <web-editor-form\\n ng-if=\\\"state.method === 'editor'\\\"\\n identifier=\\\"profile-creation-editor\\\"\\n value=\\\"formValues.profileFileContent\\\"\\n on-change=\\\"(onChangeFileContent)\\\"\\n ng-required=\\\"true\\\"\\n >\\n </web-editor-form>\\n\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.settings.edgeCompute\\\">Cancel</a>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress\\n || !createProfileForm.$valid\\n || !formValues.profileFileContent\\n || !formValues.name\\\"\\n ng-click=\\\"createProfileAsync()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Save Profile</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Saving...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/devices/profiles/add/addProfile.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Edit profile'\\\" breadcrumbs=\\\"[{label:'Settings', link:'portainer.settings'}, 'Edge Compute']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"editProfileForm\\\">\\n <!-- name-input -->\\n <div class=\\\"col-sm-12 form-section-title\\\">Device Profile Details </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"stack_name\\\" class=\\\"col-sm-1 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-11\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.name\\\" id=\\\"profile_name\\\" name=\\\"profile_name\\\" placeholder=\\\"e.g. myprofile\\\" auto-focus />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- build-method -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Profile configuration </div>\\n\\n <box-selector slim=\\\"true\\\" options=\\\"buildMethods\\\" value=\\\"state.method\\\"></box-selector>\\n\\n <!-- !build-method -->\\n\\n <web-editor-form\\n ng-if=\\\"state.method === 'editor'\\\"\\n identifier=\\\"profile-creation-editor\\\"\\n value=\\\"formValues.profileFileContent\\\"\\n on-change=\\\"(onChangeFileContent)\\\"\\n ng-required=\\\"true\\\"\\n >\\n </web-editor-form>\\n\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.settings.edgeCompute\\\">Cancel</a>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress\\n || !editProfileForm.$valid\\n || !formValues.profileFileContent\\n || !formValues.name\\\"\\n ng-click=\\\"updateProfileAsync()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Update Profile</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Saving...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/devices/profiles/edit/editProfile.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Environment registries'\\\" breadcrumbs=\\\"['Registry management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <registries-datatable\\n title-text=\\\"Registries\\\"\\n title-icon=\\\"radio\\\"\\n dataset=\\\"$ctrl.registries\\\"\\n table-key=\\\"endpointRegistries\\\"\\n order-by=\\\"Name\\\"\\n endpoint-type=\\\"$ctrl.endpointType\\\"\\n can-manage-access=\\\"$ctrl.canManageAccess\\\"\\n can-browse=\\\"$ctrl.canBrowse\\\"\\n ></registries-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/endpoint-registries/registries.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Environment access'\\\"\\n breadcrumbs=\\\"[\\n { label:'Environments', link:'portainer.endpoints' },\\n {\\n label:ctrl.endpoint.Name,\\n link: 'portainer.endpoints.endpoint',\\n linkParams:{id: ctrl.endpoint.Id}\\n }, 'Access management']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"ctrl.endpoint\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"hard-drive\\\" title-text=\\\"Environment\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Name</td>\\n <td>\\n {{ ctrl.endpoint.Name }}\\n </td>\\n </tr>\\n <tr>\\n <td>URL</td>\\n <td>\\n {{ ctrl.endpoint.URL | stripprotocol }}\\n </td>\\n </tr>\\n <tr>\\n <td>Group</td>\\n <td>\\n <a ui-sref=\\\"portainer.groups.group({ id: ctrl.group.Id })\\\">{{ ctrl.group.Name }}</a>\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<por-access-management\\n ng-if=\\\"ctrl.endpoint && ctrl.group\\\"\\n access-controlled-entity=\\\"ctrl.endpoint\\\"\\n action-in-progress=\\\"ctrl.state.actionInProgress\\\"\\n entity-type=\\\"endpoint\\\"\\n inherit-from=\\\"ctrl.group\\\"\\n update-access=\\\"ctrl.updateAccess\\\"\\n limited-feature=\\\"ctrl.limitedFeature\\\"\\n>\\n</por-access-management>\\n\";;\nvar path = 'app/portainer/views/endpoints/access/endpointAccess.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header ng-if=\\\"endpoint\\\" title=\\\"'Environment details'\\\" breadcrumbs=\\\"[{label:'Environments', link:'portainer.endpoints'}, endpoint.Name]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div ng-if=\\\"state.edgeEndpoint\\\">\\n <information-panel ng-if=\\\"state.edgeAssociated\\\" title-text=\\\"Edge information\\\">\\n <span class=\\\"small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n This Edge environment is associated to an Edge environment {{ state.kubernetesEndpoint ? '(Kubernetes)' : '(Docker)' }}.\\n </p>\\n <p>\\n Edge key: <code>{{ endpoint.EdgeKey }}</code>\\n </p>\\n <p>\\n Edge identifier: <code>{{ endpoint.EdgeID }}</code>\\n </p>\\n <p>\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress\\\"\\n ng-click=\\\"onDisassociateEndpoint()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n analytics-on\\n analytics-event=\\\"edge-endpoint-disassociate\\\"\\n analytics-category=\\\"edge\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Disassociate</span>\\n </button>\\n </p>\\n </span>\\n </information-panel>\\n\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"!state.edgeAssociated\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <div class=\\\"col-sm-12 form-section-title\\\">Deploy an agent</div>\\n <span class=\\\"small text-muted\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n Refer to the platform related command below to deploy the Edge agent in your remote cluster.\\n </p>\\n <p>\\n The agent will communicate with Portainer via <u>{{ edgeKeyDetails.instanceURL }}</u> and <u>tcp://{{ edgeKeyDetails.tunnelServerAddr }}</u>\\n </p>\\n </span>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Edge agent deployment script </div>\\n <edge-script-form\\n edge-info=\\\"{ key: endpoint.EdgeKey, id: endpoint.EdgeID }\\\"\\n commands=\\\"state.edgeScriptCommands\\\"\\n is-nomad-token-visible=\\\"state.showNomad\\\"\\n async-mode=\\\"endpoint.Edge.AsyncMode\\\"\\n ></edge-script-form>\\n\\n <edge-key-display edge-key=\\\"endpoint.EdgeKey\\\"> </edge-key-display>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n\\n <information-panel ng-if=\\\"state.kubernetesEndpoint && (!state.edgeEndpoint || state.edgeAssociated)\\\" title-text=\\\"Kubernetes features configuration\\\">\\n <span class=\\\"small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'wrench'\\\" mode=\\\"'primary'\\\"></pr-icon>\\n You should configure the features available in this Kubernetes environment in the\\n <a ui-sref=\\\"kubernetes.cluster.setup({endpointId: endpoint.Id})\\\">Kubernetes configuration</a> view.\\n </span>\\n </information-panel>\\n</div>\\n\\n<div class=\\\"row mt-4\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"$ctrl.endpointForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Configuration </div>\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"container_name\\\" ng-model=\\\"endpoint.Name\\\" placeholder=\\\"e.g. kubernetes-cluster01 / docker-prod01\\\" />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- endpoint-url-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"!state.edgeEndpoint\\\">\\n <label for=\\\"endpoint_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n <span ng-if=\\\"!state.agentEndpoint\\\">Environment URL</span>\\n <span ng-if=\\\"state.agentEndpoint\\\">Environment address</span>\\n <portainer-tooltip\\n ng-if=\\\"!state.agentEndpoint\\\"\\n message=\\\"'URL or IP address of a Docker host. The Docker API must be exposed over a TCP port. Please refer to the Docker documentation to configure it.'\\\"\\n >\\n </portainer-tooltip>\\n <portainer-tooltip ng-if=\\\"state.agentEndpoint\\\" message=\\\"'The address for the Portainer agent in the format <HOST>:<PORT> or <IP>:<PORT>'\\\"> </portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n ng-disabled=\\\"endpointType === 'local' || state.azureEndpoint\\\"\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"endpoint_url\\\"\\n ng-model=\\\"endpoint.URL\\\"\\n placeholder=\\\"e.g. 10.0.0.10:2375 or mydocker.mydomain.com:2375\\\"\\n />\\n </div>\\n </div>\\n <!-- !endpoint-url-input -->\\n <!-- endpoint-public-url-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"!state.azureEndpoint\\\">\\n <label for=\\\"endpoint_public_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Public IP\\n <portainer-tooltip message=\\\"'URL or IP address where exposed containers will be reachable. This field is optional and will default to the environment URL.'\\\">\\n </portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"endpoint_public_url\\\" ng-model=\\\"endpoint.PublicURL\\\" placeholder=\\\"e.g. 10.0.0.10 or mydocker.mydomain.com\\\" />\\n </div>\\n </div>\\n\\n <div ng-if=\\\"endpoint && state.edgeEndpoint\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Check-in Intervals </div>\\n <edge-checkin-interval-field value=\\\"endpoint.EdgeCheckinInterval\\\" on-change=\\\"(onChangeCheckInInterval)\\\"></edge-checkin-interval-field>\\n </div>\\n\\n <!-- !endpoint-public-url-input -->\\n\\n <tls-fieldset\\n ng-if=\\\"!state.edgeEndpoint && endpoint.Status !== 4 && state.showTLSConfig\\\"\\n values=\\\"formValues.tlsConfig\\\"\\n on-change=\\\"(onChangeTLSConfigFormValues)\\\"\\n validation-data=\\\"{optionalCert: true}\\\"\\n ></tls-fieldset>\\n\\n <azure-endpoint-config\\n ng-if=\\\"state.azureEndpoint\\\"\\n application-id=\\\"endpoint.AzureCredentials.ApplicationID\\\"\\n tenant-id=\\\"endpoint.AzureCredentials.TenantID\\\"\\n authentication-key=\\\"endpoint.AzureCredentials.AuthenticationKey\\\"\\n ></azure-endpoint-config>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Metadata </div>\\n <!-- group -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"endpoint_group\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Group </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <select ng-options=\\\"group.Id as group.Name for group in groups\\\" ng-model=\\\"endpoint.GroupId\\\" id=\\\"endpoint_group\\\" class=\\\"form-control\\\"></select>\\n </div>\\n </div>\\n <!-- !group -->\\n\\n <tag-selector ng-if=\\\"endpoint\\\" value=\\\"endpoint.TagIds\\\" allow-create=\\\"state.allowCreate\\\" on-change=\\\"(onChangeTags)\\\"></tag-selector>\\n\\n <!-- open-amt info -->\\n <div ng-if=\\\"state.showAMTInfo\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Open Active Management Technology </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"endpoint_managementinfoVersion\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> AMT Version </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" ng-disabled=\\\"true\\\" class=\\\"form-control\\\" id=\\\"endpoint_managementinfoVersion\\\" ng-model=\\\"endpoint.ManagementInfo['AMT']\\\" placeholder=\\\"Loading...\\\" />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"endpoint_managementinfoUUID\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> UUID </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" ng-disabled=\\\"true\\\" class=\\\"form-control\\\" id=\\\"endpoint_managementinfoUUID\\\" ng-model=\\\"endpoint.ManagementInfo['UUID']\\\" placeholder=\\\"Loading...\\\" />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"endpoint_managementinfoBuildNumber\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Build Number </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n ng-disabled=\\\"true\\\"\\n class=\\\"form-control\\\"\\n id=\\\"endpoint_managementinfoBuildNumber\\\"\\n ng-model=\\\"endpoint.ManagementInfo['Build Number']\\\"\\n placeholder=\\\"Loading...\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"endpoint_managementinfoControlMode\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Control Mode </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n ng-disabled=\\\"true\\\"\\n class=\\\"form-control\\\"\\n id=\\\"endpoint_managementinfoControlMode\\\"\\n ng-model=\\\"endpoint.ManagementInfo['Control Mode']\\\"\\n placeholder=\\\"Loading...\\\"\\n />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <label for=\\\"endpoint_managementinfoDNSSuffix\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> DNS Suffix </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n ng-disabled=\\\"true\\\"\\n class=\\\"form-control\\\"\\n id=\\\"endpoint_managementinfoDNSSuffix\\\"\\n ng-model=\\\"endpoint.ManagementInfo['DNS Suffix']\\\"\\n placeholder=\\\"Loading...\\\"\\n />\\n </div>\\n </div>\\n </div>\\n <!-- !open-amt info -->\\n <!-- gpus info -->\\n <div class=\\\"mb-4\\\" ng-if=\\\"isDockerStandaloneEnv\\\">\\n <gpus-insights></gpus-insights>\\n </div>\\n <!-- gpus info -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"state.actionInProgress || !endpoint.Name || !endpoint.URL || !$ctrl.endpointForm.$valid\\\"\\n ng-click=\\\"updateEndpoint()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Update environment</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Updating environment...</span>\\n </button>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.endpoints\\\">Cancel</a>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/endpoints/edit/endpoint.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'KVM Control'\\\"\\n breadcrumbs=\\\"[\\n { label:'Environments', link:'portainer.endpoints' },\\n {\\n label:$state.endpoint.Name,\\n link: 'portainer.endpoints.endpoint',\\n linkParams:{id: $state.endpoint.Id}\\n },\\n $state.deviceName,\\n 'KVM Control']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <div class=\\\"datatable\\\" ng-class=\\\"{ 'kvm-maximized': $state.maximized }\\\">\\n <rd-widget>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <div class=\\\"toolBar\\\">\\n <div class=\\\"toolBarTitle\\\">KVM Control</div>\\n <pr-icon icon=\\\"'x'\\\" ui-sref=\\\"edge.devices\\\" class-name=\\\"'interactive pull-right'\\\" size=\\\"'lg'\\\"></pr-icon>\\n <pr-icon ng-click=\\\"maximize()\\\" title=\\\"Maximize\\\" icon=\\\"'maximize-2'\\\" class-name=\\\"'!mr-2 interactive pull-right'\\\" size=\\\"'lg'\\\"></pr-icon>\\n <pr-icon ng-click=\\\"minimize()\\\" title=\\\"Minimize\\\" icon=\\\"'minimize-2'\\\" class-name=\\\"'!mr-2 interactive pull-right'\\\" size=\\\"'lg'\\\"></pr-icon>\\n </div>\\n <div class=\\\"actionBar\\\">\\n <kvm-control device-id=\\\"$state.deviceId\\\" server=\\\"$state.mpsServer\\\" token=\\\"$state.mpsToken\\\"> </kvm-control>\\n </div>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/endpoints/kvm/endpointKVM.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header\\n title=\\\"'Environment group access'\\\"\\n breadcrumbs=\\\"[\\n { label:'Groups', link:'portainer.groups' },\\n {\\n label:group.Name,\\n link: 'portainer.groups.group',\\n linkParams:{id: group.Id}\\n }, 'Access management']\\\"\\n>\\n</page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"dice-4\\\" title-text=\\\"Group\\\"></rd-widget-header>\\n <rd-widget-body classes=\\\"no-padding\\\">\\n <table class=\\\"table\\\">\\n <tbody>\\n <tr>\\n <td>Name</td>\\n <td>\\n {{ group.Name }}\\n </td>\\n </tr>\\n </tbody>\\n </table>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<por-access-management\\n ng-if=\\\"group\\\"\\n access-controlled-entity=\\\"group\\\"\\n entity-type=\\\"group\\\"\\n action-in-progress=\\\"state.actionInProgress\\\"\\n update-access=\\\"updateAccess\\\"\\n limited-feature=\\\"limitedFeature\\\"\\n></por-access-management>\\n\";;\nvar path = 'app/portainer/views/groups/access/groupAccess.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create environment group'\\\" breadcrumbs=\\\"[{label:'Environment groups', link:'portainer.groups'}, 'Add group']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <group-form\\n loaded=\\\"loaded\\\"\\n model=\\\"model\\\"\\n associated-endpoints=\\\"associatedEndpoints\\\"\\n form-action=\\\"create\\\"\\n form-action-label=\\\"Create the group\\\"\\n action-in-progress=\\\"state.actionInProgress\\\"\\n on-change-environments=\\\"(onChangeEnvironments)\\\"\\n ></group-form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/groups/create/creategroup.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Environment group details'\\\" breadcrumbs=\\\"[{label:'Groups', link:'portainer.groups'}, group.Name]\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <group-form\\n loaded=\\\"loaded\\\"\\n model=\\\"group\\\"\\n associated-endpoints=\\\"associatedEndpoints\\\"\\n form-action=\\\"update\\\"\\n form-action-label=\\\"Update the group\\\"\\n action-in-progress=\\\"state.actionInProgress\\\"\\n on-change-environments=\\\"(onChangeEnvironments)\\\"\\n ></group-form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/groups/edit/group.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Environment groups'\\\" breadcrumbs=\\\"['Environment group management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <groups-datatable title-text=\\\"Environment groups\\\" title-icon=\\\"dice-4\\\" dataset=\\\"groups\\\" table-key=\\\"groups\\\" order-by=\\\"Name\\\" remove-action=\\\"removeAction\\\"></groups-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/groups/groups.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"page-wrapper\\\">\\n <!-- simple box -->\\n <div class=\\\"simple-box container\\\">\\n <div class=\\\"col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1\\\">\\n <!-- simple box logo -->\\n <div class=\\\"row\\\">\\n <img ng-if=\\\"logo\\\" ng-src=\\\"{{ logo }}\\\" class=\\\"simple-box-logo\\\" />\\n <img ng-if=\\\"!logo\\\" src=\\\"\" + require(\"@/assets/images/logo_alt.svg\") + \"\\\" class=\\\"simple-box-logo\\\" alt=\\\"Portainer\\\" />\\n </div>\\n <!-- !simple box logo -->\\n <!-- init password panel -->\\n <div class=\\\"panel panel-default\\\">\\n <div class=\\\"panel-body\\\">\\n <!-- toggle -->\\n <div>\\n <a ng-click=\\\"togglePanel()\\\" class=\\\"vertical-center\\\">\\n <span>\\n <pr-icon icon=\\\"'chevron-down'\\\" ng-if=\\\"state.showInitPassword\\\" size=\\\"'lg'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon>\\n <pr-icon icon=\\\"'chevron-right'\\\" ng-if=\\\"!state.showInitPassword\\\" size=\\\"'lg'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon>\\n </span>\\n <span class=\\\"form-section-title\\\">New Portainer installation</span>\\n </a>\\n </div>\\n <!-- !toggle -->\\n\\n <!-- init password form -->\\n <form name=\\\"form\\\" class=\\\"simple-box-form form-horizontal padding-top\\\" ng-if=\\\"state.showInitPassword\\\">\\n <!-- note -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\"> Please create the initial administrator user. </span>\\n </div>\\n </div>\\n <!-- !note -->\\n <!-- username-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"username\\\" class=\\\"col-sm-4 control-label text-left\\\"> Username </label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"username\\\" ng-model=\\\"formValues.Username\\\" placeholder=\\\"e.g. admin\\\" />\\n </div>\\n </div>\\n <!-- !username-input -->\\n <!-- new-password-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"password\\\" class=\\\"col-sm-4 control-label text-left\\\">Password</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Password\\\" id=\\\"password\\\" name=\\\"password\\\" ng-minlength=\\\"requiredPasswordLength\\\" auto-focus />\\n </div>\\n </div>\\n <!-- !new-password-input -->\\n <!-- confirm-password-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"confirm_password\\\" class=\\\"col-sm-4 control-label text-left\\\">Confirm password</label>\\n <div class=\\\"col-sm-8\\\">\\n <div class=\\\"input-group\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.ConfirmPassword\\\" id=\\\"confirm_password\\\" />\\n <span class=\\\"input-group-addon !rounded-r-[5px]\\\">\\n <pr-icon ng-if=\\\"form.password.$viewValue !== '' && form.password.$viewValue === formValues.ConfirmPassword\\\" icon=\\\"'check'\\\" mode=\\\"'success'\\\"></pr-icon>\\n <pr-icon ng-if=\\\"form.password.$viewValue === '' || form.password.$viewValue !== formValues.ConfirmPassword\\\" icon=\\\"'x'\\\" mode=\\\"'danger'\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !confirm-password-input -->\\n <!-- note -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 text-warning\\\">\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n <span>The password must be at least {{ requiredPasswordLength }} characters long.</span>\\n <pr-icon mode=\\\"'success'\\\" icon=\\\"'check'\\\" ng-if=\\\"form.password.$valid && formValues.Password\\\"></pr-icon>\\n </p>\\n </div>\\n </div>\\n <!-- !note -->\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress || form.$invalid || !formValues.Password || !formValues.ConfirmPassword || form.password.$viewValue !== formValues.ConfirmPassword\\\"\\n ng-click=\\\"createAdminUser()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Create user</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Creating user...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n <!-- enableTelemetry-->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <input type=\\\"checkbox\\\" name=\\\"toggle_enableTelemetry\\\" ng-model=\\\"formValues.enableTelemetry\\\" />\\n <span class=\\\"text-muted small\\\"\\n >Allow collection of anonymous statistics. You can find more information about this in our\\n <a class=\\\"hyperlink\\\" href=\\\"https://www.portainer.io/documentation/in-app-analytics-and-privacy-policy/\\\" target=\\\"_blank\\\">privacy policy</a>.</span\\n >\\n </div>\\n </div>\\n <!-- !enableTelemetry-->\\n </form>\\n <!-- !init password form -->\\n </div>\\n </div>\\n <!-- !init password panel -->\\n\\n <!-- restore backup panel -->\\n <div class=\\\"panel panel-default\\\">\\n <div class=\\\"panel-body\\\">\\n <!-- toggle -->\\n <div>\\n <a ng-click=\\\"togglePanel()\\\" data-cy=\\\"init-installPortainerFromBackup\\\" class=\\\"vertical-center\\\">\\n <span\\n ><pr-icon icon=\\\"'chevron-down'\\\" ng-if=\\\"state.showRestorePortainer\\\" size=\\\"'lg'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon>\\n <pr-icon icon=\\\"'chevron-right'\\\" ng-if=\\\"!state.showRestorePortainer\\\" size=\\\"'lg'\\\" class-name=\\\"'icon-primary'\\\"></pr-icon\\n ></span>\\n <span class=\\\"form-section-title\\\">Restore Portainer from backup</span>\\n </a>\\n </div>\\n <!-- !toggle -->\\n\\n <!-- restore form -->\\n <form class=\\\"simple-box-form form-horizontal padding-top\\\" ng-if=\\\"state.showRestorePortainer\\\">\\n <!-- note -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-9\\\">\\n <span class=\\\"small text-muted\\\">\\n This will restore the Portainer metadata which contains information about the environments, stacks and applications, as well as the configured users.\\n </span>\\n </div>\\n </div>\\n\\n <box-selector slim=\\\"true\\\" options=\\\"restoreOptions\\\" value=\\\"formValues.restoreFormType\\\" on-change=\\\"(onChangeRestoreType)\\\" radio-name=\\\"'restore-type'\\\"></box-selector>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\"> You can upload a backup file from your computer. </span>\\n </div>\\n </div>\\n <!-- !note -->\\n <!-- select-file-input -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12 vertical-center\\\">\\n <button\\n class=\\\"btn btn-sm btn-primary\\\"\\n ngf-select\\n accept=\\\".gz,.encrypted\\\"\\n ngf-accept=\\\"'application/x-tar,application/x-gzip'\\\"\\n ng-model=\\\"formValues.BackupFile\\\"\\n auto-focus\\n data-cy=\\\"init-selectBackupFileButton\\\"\\n >Select file</button\\n >\\n <span class=\\\"space-left vertical-center\\\">\\n {{ formValues.BackupFile.name }}\\n <pr-icon icon=\\\"'x-circle'\\\" class-name=\\\"'icon-danger'\\\" ng-if=\\\"!formValues.BackupFile\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n <!-- !select-file-input -->\\n <!-- password-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"password\\\" class=\\\"col-sm-3 control-label text-left\\\">\\n Password\\n <portainer-tooltip\\n message=\\\"'If the backup is password protected, provide the password in order to extract the backup file, otherwise this field can be left empty.'\\\"\\n ></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-4\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.Password\\\" id=\\\"password\\\" data-cy=\\\"init-backupPasswordInput\\\" />\\n </div>\\n </div>\\n <!-- !password-input -->\\n <!-- note -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\"> You are about to restore Portainer from this backup. </span>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted\\\"> After restoring has completed, please log in as a user that was known by the Portainer that was restored. </span>\\n </div>\\n </div>\\n <!-- !note -->\\n <!-- actions -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"!formValues.BackupFile || state.backupInProgress\\\"\\n ng-click=\\\"uploadBackup()\\\"\\n button-spinner=\\\"state.backupInProgress\\\"\\n data-cy=\\\"init-restorePortainerButton\\\"\\n >\\n <span ng-hide=\\\"state.backupInProgress\\\">Restore Portainer</span>\\n <span ng-show=\\\"state.backupInProgress\\\">Restoring Portainer...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n <!-- !restore backup form -->\\n </div>\\n </div>\\n <!-- !restore backup panel -->\\n </div>\\n </div>\\n <!-- !simple box -->\\n</div>\\n\";;\nvar path = 'app/portainer/views/init/admin/initAdmin.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<div class=\\\"page-wrapper\\\">\\n <!-- login box -->\\n <div class=\\\"simple-box container\\\">\\n <div class=\\\"col-md-6 col-md-offset-3 col-sm-6 col-sm-offset-3\\\">\\n <!-- login box logo -->\\n <div class=\\\"row\\\">\\n <img ng-if=\\\"!ctrl.logo\\\" src=\\\"\" + require(\"@/assets/images/logo_alt.svg\") + \"\\\" class=\\\"simple-box-logo\\\" alt=\\\"Portainer\\\" />\\n <img ng-if=\\\"ctrl.logo\\\" ng-src=\\\"{{ ctrl.logo }}\\\" class=\\\"simple-box-logo\\\" />\\n </div>\\n <div class=\\\"row text-center\\\">\\n Logout in progress...\\n <pr-icon icon=\\\"'settings'\\\" class-name=\\\"'animate-spin-slow space-left'\\\"></pr-icon>\\n </div>\\n </div>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/logout/logout.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create registry'\\\" breadcrumbs=\\\"[{label:'Registries', link:'portainer.registries'}, 'Add registry']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Registry provider </div>\\n\\n <box-selector radio-name=\\\"'availableRegistry'\\\" value=\\\"$ctrl.state.registryValue\\\" options=\\\"$ctrl.state.availableRegistry\\\" on-change=\\\"($ctrl.setRegistry)\\\"></box-selector>\\n\\n <registry-form-quay\\n ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.QUAY\\\"\\n model=\\\"$ctrl.model\\\"\\n form-action=\\\"$ctrl.createRegistry\\\"\\n form-action-label=\\\"Add registry\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n ></registry-form-quay>\\n\\n <registry-form-azure\\n ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.AZURE\\\"\\n model=\\\"$ctrl.model\\\"\\n form-action=\\\"$ctrl.createRegistry\\\"\\n form-action-label=\\\"Add registry\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n ></registry-form-azure>\\n\\n <registry-form-custom\\n ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.CUSTOM\\\"\\n model=\\\"$ctrl.model\\\"\\n form-action=\\\"$ctrl.createRegistry\\\"\\n form-action-label=\\\"Add registry\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n ></registry-form-custom>\\n\\n <registry-form-ecr\\n ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.ECR\\\"\\n model=\\\"$ctrl.model\\\"\\n form-action=\\\"$ctrl.createRegistry\\\"\\n form-action-label=\\\"Add registry\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n ></registry-form-ecr>\\n\\n <registry-form-proget\\n ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.PROGET\\\"\\n model=\\\"$ctrl.model\\\"\\n form-action=\\\"$ctrl.createRegistry\\\"\\n form-action-label=\\\"Add registry\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n ></registry-form-proget>\\n\\n <registry-form-gitlab\\n ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.GITLAB\\\"\\n model=\\\"$ctrl.model\\\"\\n retrieve-registries=\\\"$ctrl.retrieveGitlabRegistries\\\"\\n create-registries=\\\"$ctrl.createGitlabRegistries\\\"\\n projects=\\\"$ctrl.gitlabProjects\\\"\\n state=\\\"$ctrl.state\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n reset-defaults=\\\"$ctrl.useDefaultGitlabConfiguration\\\"\\n ></registry-form-gitlab>\\n <registry-form-dockerhub\\n ng-if=\\\"$ctrl.model.Type === $ctrl.RegistryTypes.DOCKERHUB\\\"\\n model=\\\"$ctrl.model\\\"\\n form-action=\\\"$ctrl.createRegistry\\\"\\n form-action-label=\\\"Add registry\\\"\\n action-in-progress=\\\"$ctrl.state.actionInProgress\\\"\\n name-is-used=\\\"($ctrl.nameIsUsed)\\\"\\n ></registry-form-dockerhub>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/registries/create/createRegistry.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Registry details'\\\" breadcrumbs=\\\"[{label:'Registries', link:'portainer.registries'}, $ctrl.registry.Name]\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"!$ctrl.state.loading\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"editRegistry\\\">\\n <!-- provider -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">Provider</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"$ctrl.provider\\\" disabled />\\n </div>\\n </div>\\n\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"registry_name\\\"\\n name=\\\"registry_name\\\"\\n ng-model=\\\"$ctrl.registry.Name\\\"\\n placeholder=\\\"e.g. my-registry\\\"\\n ng-change=\\\"$ctrl.onChangeName()\\\"\\n required\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"$ctrl.state.nameAlreadyExists\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div>\\n <p class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n A registry with the same name already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.registry_name.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"editRegistry.registry_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- registry-url-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n <span class=\\\"required\\\">Registry URL</span>\\n <portainer-tooltip message=\\\"'URL or IP address of a Docker registry. Any protocol or trailing slash will be stripped if present.'\\\"> </portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"registry_url\\\"\\n name=\\\"registry_url\\\"\\n ng-model=\\\"$ctrl.registry.URL\\\"\\n placeholder=\\\"e.g. 10.0.0.10:5000 or myregistry.domain.tld\\\"\\n ng-disabled=\\\"$ctrl.registry.Type === $ctrl.RegistryTypes.DOCKERHUB || $ctrl.registry.Type === $ctrl.RegistryTypes.QUAY || $ctrl.registry.Type === $ctrl.RegistryTypes.GITLAB\\\"\\n required\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.registry_url.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"editRegistry.registry_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n\\n <!-- base-url-input -->\\n <div ng-if=\\\"$ctrl.registry.Type === $ctrl.RegistryTypes.PROGET\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_base_url\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n <span class=\\\"required\\\">Base URL</span>\\n <portainer-tooltip message=\\\"'The base URL of the ProGet registry.'\\\"> </portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"registry_base_url\\\"\\n name=\\\"registry_base_url\\\"\\n ng-model=\\\"$ctrl.registry.BaseURL\\\"\\n placeholder=\\\"e.g. 10.0.0.10:5000 or myregistry.domain.tld\\\"\\n required\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.registry_base_url.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"editRegistry.registry_base_url.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !registry-url-input -->\\n\\n <!-- authentication-checkbox -->\\n <div\\n class=\\\"form-group\\\"\\n ng-if=\\\"\\n $ctrl.registry.Type !== $ctrl.RegistryTypes.DOCKERHUB &&\\n $ctrl.registry.Type !== $ctrl.RegistryTypes.QUAY &&\\n $ctrl.registry.Type !== $ctrl.RegistryTypes.PROGET &&\\n $ctrl.registry.Type !== $ctrl.RegistryTypes.AZURE &&\\n $ctrl.registry.Type !== $ctrl.RegistryTypes.GITLAB\\n \\\"\\n >\\n <label for=\\\"registry_auth\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n Authentication\\n <portainer-tooltip message=\\\"'Enable this option if you need to specify credentials to connect to this registry.'\\\"> </portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <por-switch-field checked=\\\"$ctrl.registry.Authentication\\\" on-change=\\\"($ctrl.toggleAuthentication)\\\" switch-values=\\\"{on:'Yes',off:'No'}\\\"></por-switch-field>\\n </div>\\n </div>\\n <!-- !authentication-checkbox -->\\n\\n <!-- authentication-credentials -->\\n <div ng-if=\\\"$ctrl.registry.Authentication\\\">\\n <!-- credentials-user -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"credentials_username\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">\\n {{ $ctrl.registry.Type === $ctrl.RegistryTypes.ECR ? 'AWS Access Key' : 'Username' }}\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"credentials_username\\\" name=\\\"credentials_username\\\" ng-model=\\\"$ctrl.registry.Username\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.credentials_username.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"editRegistry.credentials_username.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- !credentials-user -->\\n <!-- credentials-password -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"credentials_password\\\" class=\\\"col-sm-3 col-lg-2 control-label text-left\\\">\\n {{ $ctrl.passwordLabel() }}\\n </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input\\n type=\\\"password\\\"\\n class=\\\"form-control\\\"\\n id=\\\"credentials_password\\\"\\n name=\\\"credentials_password\\\"\\n placeholder=\\\"*******\\\"\\n ng-model=\\\"$ctrl.Password\\\"\\n autocomplete=\\\"off\\\"\\n />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.credentials_password.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"editRegistry.credentials_password.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- region -->\\n <div ng-if=\\\"$ctrl.registry.Type == $ctrl.RegistryTypes.ECR\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"registry_region\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Region</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"registry_region\\\" name=\\\"registry_region\\\" ng-model=\\\"$ctrl.registry.Ecr.Region\\\" placeholder=\\\"us-west-1\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.registry_region.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"editRegistry.registry_region.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !region -->\\n <!-- !credentials-password -->\\n </div>\\n <!-- !authentication-credentials -->\\n\\n <div ng-if=\\\"$ctrl.registry.Type == $ctrl.RegistryTypes.QUAY\\\">\\n <!-- organisation-checkbox -->\\n <div class=\\\"form-group\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\"> Use organization registry </label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <por-switch-field\\n checked=\\\"$ctrl.registry.Quay.UseOrganisation\\\"\\n on-change=\\\"($ctrl.toggleQuayUseOrganisation)\\\"\\n switch-values=\\\"{on:'Yes',off:'No'}\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !organisation-checkbox -->\\n <div ng-if=\\\"$ctrl.registry.Quay.UseOrganisation\\\">\\n <!-- organisation_name -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"organisation_name\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Organization name</label>\\n <div class=\\\"col-sm-9 col-lg-10\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" id=\\\"organisation_name\\\" name=\\\"organisation_name\\\" ng-model=\\\"$ctrl.registry.Quay.OrganisationName\\\" required />\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-show=\\\"editRegistry.organisation_name.$invalid\\\">\\n <div class=\\\"col-sm-12 small text-warning\\\">\\n <div ng-messages=\\\"editRegistry.organisation_name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n </div>\\n </div>\\n </div>\\n <!-- !organisation_name -->\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"$ctrl.isUpdateButtonDisabled() || editRegistry.$invalid\\\"\\n ng-click=\\\"$ctrl.updateRegistry()\\\"\\n button-spinner=\\\"$ctrl.state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"$ctrl.state.actionInProgress\\\">Update registry</span>\\n <span ng-show=\\\"$ctrl.state.actionInProgress\\\">Updating registry...</span>\\n </button>\\n <a type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\" ui-sref=\\\"portainer.registries\\\">Cancel</a>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/registries/edit/registry.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Registries'\\\" breadcrumbs=\\\"['Registry management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<information-panel title-text=\\\"Information\\\">\\n <span class=\\\"small text-muted\\\"> View registries via an environment to manage access for user(s) and/or team(s) </span>\\n</information-panel>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <registries-datatable\\n title-text=\\\"Registries\\\"\\n title-icon=\\\"radio\\\"\\n dataset=\\\"registries\\\"\\n table-key=\\\"registries\\\"\\n order-by=\\\"Name\\\"\\n remove-action=\\\"removeAction\\\"\\n can-browse=\\\"canBrowse\\\"\\n ></registries-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/registries/registries.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Authentication settings'\\\" breadcrumbs=\\\"[{label:'Settings', link:'portainer.settings'}, 'Authentication']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"users\\\" title-text=\\\"Authentication\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"authSettingsForm\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Configuration </div>\\n <div class=\\\"form-group\\\">\\n <label for=\\\"user_timeout\\\" class=\\\"col-sm-2 control-label text-left\\\">\\n Session lifetime\\n <portainer-tooltip message=\\\"'Time before users are forced to relogin.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-10\\\">\\n <select\\n id=\\\"user_timeout\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"settings.UserSessionTimeout\\\"\\n ng-options=\\\"opt.value as opt.key for opt in state.availableUserSessionTimeoutOptions\\\"\\n ></select>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-yellow'\\\"></pr-icon>\\n Changing from default is only recommended if you have additional layers of authentication in front of Portainer.\\n </span>\\n </div>\\n\\n <div class=\\\"col-sm-12 form-section-title\\\"> Authentication method </div>\\n\\n <box-selector radio-name=\\\"'authOptions'\\\" value=\\\"authMethod\\\" options=\\\"authOptions\\\" on-change=\\\"(onChangeAuthMethod)\\\"></box-selector>\\n\\n <internal-auth\\n ng-if=\\\"authenticationMethodSelected(1)\\\"\\n on-save-settings=\\\"(saveSettings)\\\"\\n is-loading=\\\"state.actionInProgress\\\"\\n value=\\\"settings.InternalAuthSettings\\\"\\n on-change=\\\"(onChangePasswordLength)\\\"\\n ></internal-auth>\\n\\n <ldap-settings\\n ng-if=\\\"authenticationMethodSelected(2)\\\"\\n settings=\\\"formValues.ldap.ldapSettings\\\"\\n tlsca-cert=\\\"formValues.TLSCACert\\\"\\n state=\\\"state\\\"\\n connectivity-check=\\\"LDAPConnectivityCheck\\\"\\n on-save-settings=\\\"(saveSettings)\\\"\\n save-button-state=\\\"state.actionInProgress\\\"\\n is-ldap-form-valid=\\\"isLDAPFormValid\\\"\\n ></ldap-settings>\\n\\n <ad-settings\\n ng-if=\\\"authenticationMethodSelected(4)\\\"\\n settings=\\\"formValues.ldap.adSettings\\\"\\n tlsca-cert=\\\"formValues.TLSCACert\\\"\\n state=\\\"state\\\"\\n connectivity-check=\\\"LDAPConnectivityCheck\\\"\\n on-save-settings=\\\"(saveSettings)\\\"\\n save-button-state=\\\"state.actionInProgress\\\"\\n is-ldap-form-valid=\\\"isLDAPFormValid()\\\"\\n ></ad-settings>\\n\\n <oauth-settings\\n ng-if=\\\"authenticationMethodSelected(3)\\\"\\n settings=\\\"OAuthSettings\\\"\\n teams=\\\"teams\\\"\\n on-save-settings=\\\"(saveSettings)\\\"\\n save-button-state=\\\"state.actionInProgress\\\"\\n ></oauth-settings>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/settings/authentication/settingsAuthentication.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Settings'\\\" breadcrumbs=\\\"[{label:'Settings', link:'portainer.settings'}, 'Edge Compute']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.settings\\\">\\n <settings-edge-compute on-submit=\\\"($ctrl.onSubmitEdgeCompute)\\\" settings=\\\"($ctrl.settings)\\\"></settings-edge-compute>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.settings\\\">\\n <settings-open-amt on-submit=\\\"($ctrl.onSubmitOpenAMT)\\\" settings=\\\"($ctrl.settings)\\\"></settings-open-amt>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"$ctrl.settings\\\">\\n <settings-fdo on-submit=\\\"($ctrl.onSubmitFDO)\\\" settings=\\\"($ctrl.settings)\\\"></settings-fdo>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/settings/edge-compute/settingsEdgeCompute.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Create stack'\\\" breadcrumbs=\\\"[{label:'Stacks', link:'docker.stacks'}, 'Add stack']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"createStackForm\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"stack_name\\\" class=\\\"col-sm-1 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-11\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"formValues.Name\\\"\\n id=\\\"stack_name\\\"\\n name=\\\"stack_name\\\"\\n placeholder=\\\"e.g. mystack\\\"\\n auto-focus\\n ng-pattern=\\\"STACK_NAME_VALIDATION_REGEX\\\"\\n />\\n <div class=\\\"help-block\\\" ng-show=\\\"createStackForm.stack_name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"createStackForm.stack_name.$error\\\">\\n <p ng-message=\\\"pattern\\\">\\n <span><pr-icon icon=\\\"'alert-triangle'\\\" class-name=\\\"'icon-sm icon-warning'\\\"></pr-icon></span>\\n This field must consist of lower case alphanumeric characters, '_' or '-' (e.g. 'my-name', or 'abc-123').\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\" ng-if=\\\"state.StackType === 1\\\">\\n This stack will be deployed using the equivalent of the <code>docker stack deploy</code> command.\\n </span>\\n <div class=\\\"col-sm-12 text-muted small\\\" ng-if=\\\"state.StackType === 2 && composeSyntaxMaxVersion == 2\\\">\\n <div style=\\\"margin-bottom: 7px\\\">\\n This stack will be deployed using the equivalent of <code>docker compose</code>. Only Compose file format version <b>2</b> is supported at the moment.\\n </div>\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n Note: Due to a limitation of libcompose, the name of the stack will be standardized to remove all special characters and uppercase letters.\\n </div>\\n <span class=\\\"col-sm-12 text-muted small\\\" ng-if=\\\"state.StackType === 2 && composeSyntaxMaxVersion > 2\\\">\\n This stack will be deployed using <code>docker compose</code>.\\n </span>\\n </div>\\n <!-- build-method -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Build method </div>\\n\\n <box-selector slim=\\\"true\\\" radio-name=\\\"'build-method'\\\" options=\\\"buildMethods\\\" value=\\\"state.Method\\\" on-change=\\\"(onBuildMethodChange)\\\" slim=\\\"true\\\"></box-selector>\\n\\n <!-- !build-method -->\\n\\n <!-- upload -->\\n <div ng-show=\\\"state.Method === 'upload'\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Upload </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\"> You can upload a Compose file from your computer. </span>\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"state.uploadYamlValidationError\\\"\\n ><span class=\\\"text-danger small\\\">{{ state.uploadYamlValidationError }}</span></div\\n >\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-sm btn-light\\\" ngf-select=\\\"uploadFile($file)\\\">\\n <pr-icon icon=\\\"'upload'\\\"></pr-icon>\\n Select file</button\\n >\\n <span style=\\\"margin-left: 5px\\\">\\n {{ formValues.StackFile.name }}\\n <pr-icon icon=\\\"'x'\\\" mode=\\\"'danger'\\\" ng-if=\\\"!formValues.StackFile\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !upload -->\\n <git-form\\n ng-if=\\\"state.Method === 'repository'\\\"\\n value=\\\"formValues\\\"\\n on-change=\\\"(onChangeFormValues)\\\"\\n is-docker-standalone=\\\"isDockerStandalone\\\"\\n is-additional-files-field-visible=\\\"true\\\"\\n is-auth-explanation-visible=\\\"true\\\"\\n is-force-pull-visible=\\\"true\\\"\\n base-webhook-url=\\\"{{ state.baseWebhookUrl }}\\\"\\n webhook-id=\\\"{{ state.webhookId }}\\\"\\n webhooks-docs=\\\"https://docs.portainer.io/user/docker/stacks/webhooks\\\"\\n ></git-form>\\n\\n <div ng-show=\\\"state.Method === 'template'\\\">\\n <div class=\\\"col-sm-12\\\">\\n <custom-template-selector\\n new-template-path=\\\"docker.templates.custom.new\\\"\\n stack-type=\\\"state.StackType\\\"\\n on-change=\\\"(onChangeTemplateId)\\\"\\n value=\\\"state.selectedTemplateId\\\"\\n ></custom-template-selector>\\n\\n <custom-templates-variables-field\\n ng-if=\\\"isTemplateVariablesEnabled && state.selectedTemplate\\\"\\n definitions=\\\"state.selectedTemplate.Variables\\\"\\n value=\\\"formValues.Variables\\\"\\n on-change=\\\"(onChangeTemplateVariables)\\\"\\n ></custom-templates-variables-field>\\n\\n <span ng-if=\\\"state.Method === 'template' && state.selectedTemplateId && state.templateLoadFailed\\\">\\n <p class=\\\"small vertical-center text-danger mb-5\\\" ng-if=\\\"currentUser.isAdmin || currentUser.id === state.selectedTemplate.CreatedByUserId\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>Custom template could not be loaded, please\\n <a ui-sref=\\\"docker.templates.custom.edit({id: state.selectedTemplateId})\\\">click here</a> for configuration.</p\\n >\\n <p class=\\\"small vertical-center text-danger mb-5\\\" ng-if=\\\"!(currentUser.isAdmin || currentUser.id === state.selectedTemplate.CreatedByUserId)\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'danger'\\\" size=\\\"'md'\\\" feather=\\\"true\\\"></pr-icon>Custom template could not be loaded, please contact your administrator.</p\\n >\\n </span>\\n </div>\\n </div>\\n\\n <web-editor-form\\n ng-if=\\\"state.Method === 'editor' || (state.Method === 'template' && state.selectedTemplateId)\\\"\\n identifier=\\\"stack-creation-editor\\\"\\n value=\\\"formValues.StackFileContent\\\"\\n on-change=\\\"(onChangeFileContent)\\\"\\n ng-required=\\\"true\\\"\\n yml=\\\"true\\\"\\n placeholder=\\\"Define or paste the content of your docker compose file here\\\"\\n read-only=\\\"state.isEditorReadOnly\\\"\\n >\\n <editor-description>\\n <p>\\n You can get more information about Compose file format in the <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\">official documentation</a>.\\n </p>\\n <p ng-if=\\\"state.editorYamlValidationError\\\" class=\\\"text-danger\\\">{{ state.editorYamlValidationError }}</p>\\n </editor-description>\\n </web-editor-form>\\n\\n <div ng-if=\\\"state.Method !== 'repository' && isAdmin && applicationState.endpoint.type !== 4\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\">\\n Webhooks\\n <por-switch-field\\n name=\\\"EnableWebhook\\\"\\n checked=\\\"formValues.EnableWebhook\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n tooltip=\\\"'Create a webhook (or callback URI) to automate the update of this stack. Sending a POST request to this callback URI (without requiring any authentication) will pull the most up-to-date version of the associated image and re-deploy this stack.'\\\"\\n label=\\\"'Create a Stack webhook'\\\"\\n on-change=\\\"(onEnableWebhookChange)\\\"\\n feature-id=\\\"'stack-webhook'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n\\n <!-- environment-variables -->\\n <environment-variables-panel\\n values=\\\"formValues.Env\\\"\\n explanation=\\\"'These values will be used as substitutions in the stack file. To reference the .env file in your compose file, use ‘stack.env’'\\\"\\n on-change=\\\"(handleEnvVarChange)\\\"\\n >\\n </environment-variables-panel>\\n <!-- !environment-variables -->\\n <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n <!-- actions -->\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress\\n || !createStackForm.$valid\\n || ((state.Method === 'editor' || state.Method === 'template') && (!formValues.StackFileContent || state.editorYamlValidationError))\\n || (state.Method === 'upload' && (!formValues.StackFile || state.uploadYamlValidationError))\\n || (state.Method === 'repository' && ((!formValues.RepositoryURL || !formValues.ComposeFilePathInRepository) || (formValues.RepositoryAuthentication && !formValues.RepositoryPassword)))\\n || !formValues.Name\\\"\\n ng-click=\\\"deployStack()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n analytics-on\\n analytics-category=\\\"docker\\\"\\n analytics-event=\\\"docker-stack-create\\\"\\n analytics-properties=\\\"buildAnalyticsProperties()\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Deploy the stack</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Deployment in progress...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/stacks/create/createstack.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Stack details'\\\" breadcrumbs=\\\"[{label:'Stacks', link:'docker.stacks'}, stackName]\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-body>\\n <uib-tabset active=\\\"state.activeTab\\\">\\n <!-- tab-info -->\\n <uib-tab index=\\\"0\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'list'\\\"></pr-icon>\\n Stack\\n </uib-tab-heading>\\n <div style=\\\"margin-top: 10px\\\">\\n <!-- stack-information -->\\n <div ng-if=\\\"external || orphaned\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Information </div>\\n <div class=\\\"form-group\\\">\\n <span class=\\\"small\\\">\\n <p class=\\\"text-muted\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\" class-name=\\\"'mr-0.5'\\\"></pr-icon>\\n <span ng-if=\\\"external\\\">This stack was created outside of Portainer. Control over this stack is limited.</span>\\n <span ng-if=\\\"orphaned\\\">This stack is orphaned. You can re-associate it with the current environment using the \\\"Associate to this environment\\\" feature.</span>\\n </p>\\n </span>\\n </div>\\n </div>\\n <!-- !stack-information -->\\n <!-- stack-details -->\\n <div>\\n <div class=\\\"col-sm-12 form-section-title\\\"> Stack details </div>\\n <div class=\\\"form-group\\\">\\n {{ stackName }}\\n\\n <button\\n authorization=\\\"PortainerStackUpdate\\\"\\n ng-if=\\\"regular && stack.Status === 2\\\"\\n ng-disabled=\\\"state.actionInProgress\\\"\\n class=\\\"btn btn-xs btn-success\\\"\\n ng-click=\\\"startStack()\\\"\\n >\\n <pr-icon icon=\\\"'play'\\\"></pr-icon>\\n Start this stack\\n </button>\\n\\n <button\\n ng-if=\\\"regular && stack.Status === 1\\\"\\n authorization=\\\"PortainerStackUpdate\\\"\\n ng-disabled=\\\"state.actionInProgress\\\"\\n class=\\\"btn btn-xs btn-light\\\"\\n ng-click=\\\"stopStack()\\\"\\n >\\n <pr-icon icon=\\\"'stop-circle'\\\"></pr-icon>\\n Stop this stack\\n </button>\\n\\n <button authorization=\\\"PortainerStackDelete\\\" class=\\\"btn btn-xs btn-light\\\" ng-click=\\\"removeStack()\\\" ng-if=\\\"!external || stack.Type == 1\\\">\\n <pr-icon icon=\\\"'trash-2'\\\"></pr-icon>\\n Delete this stack\\n </button>\\n\\n <button\\n ng-if=\\\"regular && stackFileContent\\\"\\n class=\\\"btn btn-primary btn-xs\\\"\\n ui-sref=\\\"docker.templates.custom.new({fileContent: stackFileContent, type: stack.Type})\\\"\\n >\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>\\n Create template from stack\\n </button>\\n <button\\n authorization=\\\"PortainerStackUpdate\\\"\\n ng-if=\\\"regular && stackFileContent && !stack.FromAppTemplate && stack.GitConfig\\\"\\n ng-disabled=\\\"state.actionInProgress\\\"\\n ng-click=\\\"detachStackFromGit()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n class=\\\"btn btn-primary btn-xs\\\"\\n >\\n <pr-icon icon=\\\"'arrow-right'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n <span ng-hide=\\\"state.actionInProgress\\\">Detach from Git</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Detachment in progress...</span>\\n </button>\\n </div>\\n </div>\\n <!-- !stack-details -->\\n\\n <!-- associate -->\\n <div ng-if=\\\"orphaned\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Associate to this environment </div>\\n <p class=\\\"small text-muted\\\"> This feature allows you to re-associate this stack to the current environment. </p>\\n <form class=\\\"form-horizontal\\\">\\n <por-access-control-form form-data=\\\"formValues.AccessControlData\\\" hide-title=\\\"true\\\"></por-access-control-form>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress\\\"\\n ng-click=\\\"associateStack()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n style=\\\"margin-left: -5px\\\"\\n >\\n <pr-icon icon=\\\"'refresh-cw'\\\" class=\\\"!mr-1\\\"></pr-icon>\\n <span ng-hide=\\\"state.actionInProgress\\\">Associate</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Association in progress...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"state.formValidationError\\\" style=\\\"margin-left: 5px\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n </form>\\n </div>\\n <!-- !associate -->\\n <stack-redeploy-git-form\\n ng-if=\\\"stack.GitConfig && !stack.FromAppTemplate && !state.actionInProgress\\\"\\n model=\\\"stack.GitConfig\\\"\\n stack=\\\"stack\\\"\\n authorization=\\\"PortainerStackUpdate\\\"\\n endpoint=\\\"applicationState.endpoint\\\"\\n >\\n </stack-redeploy-git-form>\\n <stack-duplication-form\\n ng-if=\\\"regular && endpoints.length > 0\\\"\\n endpoints=\\\"endpoints\\\"\\n groups=\\\"groups\\\"\\n current-endpoint-id=\\\"endpoint.Id\\\"\\n on-duplicate=\\\"duplicateStack(name, endpointId)\\\"\\n on-migrate=\\\"migrateStack(name, endpointId)\\\"\\n yaml-error=\\\"state.yamlError\\\"\\n >\\n </stack-duplication-form>\\n </div>\\n </uib-tab>\\n <!-- !tab-info -->\\n <!-- tab-file -->\\n <uib-tab index=\\\"1\\\" select=\\\"showEditor()\\\" ng-if=\\\"!external && (!stack.GitConfig || stack.FromAppTemplate)\\\">\\n <uib-tab-heading>\\n <pr-icon icon=\\\"'edit-2'\\\" class-name=\\\"'mr-1'\\\"></pr-icon>\\n Editor\\n </uib-tab-heading>\\n <form class=\\\"form-horizontal\\\" ng-if=\\\"state.showEditorTab\\\" style=\\\"margin-top: 10px\\\" name=\\\"stackUpdateForm\\\">\\n <div class=\\\"form-group\\\">\\n <span class=\\\"col-sm-12 text-muted small\\\" style=\\\"margin-bottom: 7px\\\" ng-if=\\\"stackType == STACK_TYPES.DockerCompose && composeSyntaxMaxVersion == 2\\\">\\n This stack will be deployed using the equivalent of <code>docker compose</code>. Only Compose file format version <b>2</b> is supported at the moment.\\n </span>\\n <span class=\\\"col-sm-12 text-muted small\\\" style=\\\"margin-bottom: 7px\\\" ng-if=\\\"stackType == STACK_TYPES.DockerCompose && composeSyntaxMaxVersion > 2\\\">\\n This stack will be deployed using <code>docker compose</code>.\\n </span>\\n <span class=\\\"col-sm-12 text-muted small\\\">\\n You can get more information about Compose file format in the <a href=\\\"https://docs.docker.com/compose/compose-file/\\\" target=\\\"_blank\\\">official documentation</a>.\\n </span>\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"state.yamlError\\\">\\n <span class=\\\"text-danger small\\\">{{ state.yamlError }}</span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <code-editor\\n read-only=\\\"orphaned\\\"\\n identifier=\\\"stack-editor\\\"\\n placeholder=\\\"Define or paste the content of your docker compose file here\\\"\\n yml=\\\"true\\\"\\n on-change=\\\"(editorUpdate)\\\"\\n value=\\\"stackFileContent\\\"\\n ></code-editor>\\n </div>\\n </div>\\n\\n <div ng-if=\\\"isAdmin && applicationState.endpoint.type !== 4\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\">\\n Webhooks\\n <por-switch-field\\n name=\\\"EnableWebhook\\\"\\n checked=\\\"formValues.EnableWebhook\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n tooltip=\\\"'Create a webhook (or callback URI) to automate the update of this stack. Sending a POST request to this callback URI (without requiring any authentication) will pull the most up-to-date version of the associated image and re-deploy this stack.'\\\"\\n label=\\\"'Create a Stack webhook'\\\"\\n feature-id=\\\"'stack-webhook'\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n\\n <!-- environment-variables -->\\n <div ng-if=\\\"stack\\\">\\n <environment-variables-panel\\n values=\\\"formValues.Env\\\"\\n explanation=\\\"'These values will be used as substitutions in the stack file. To reference the .env file in your compose file, use ‘stack.env’.'\\\"\\n on-change=\\\"(handleEnvVarChange)\\\"\\n show-help-message=\\\"true\\\"\\n ></environment-variables-panel>\\n </div>\\n <!-- !environment-variables -->\\n <!-- options -->\\n <div ng-if=\\\"stack.Type === 1 && applicationState.endpoint.apiVersion >= 1.27\\\" authorization=\\\"PortainerStackUpdate\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Options </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n name=\\\"prune\\\"\\n checked=\\\"formValues.Prune\\\"\\n tooltip=\\\"'Prune services that are no longer referenced.'\\\"\\n label-class=\\\"'col-sm-2'\\\"\\n label=\\\"'Prune services'\\\"\\n on-change=\\\"(onPruneChange)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n </div>\\n <!-- !options -->\\n <div authorization=\\\"PortainerStackUpdate\\\">\\n <div class=\\\"col-sm-12 form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-sm btn-primary\\\"\\n ng-disabled=\\\"state.actionInProgress || state.yamlError || !stackUpdateForm.$valid || !stackFileContent || orphaned\\\"\\n ng-click=\\\"deployStack()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Update the stack</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Deployment in progress...</span>\\n </button>\\n </div>\\n </div>\\n </div>\\n </form>\\n </uib-tab>\\n <!-- !tab-file -->\\n </uib-tabset>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<stack-containers-datatable\\n ng-if=\\\"stackType !== STACK_TYPES.DockerSwarm && (!orphaned || orphanedRunning)\\\"\\n stack-name=\\\"stackName\\\"\\n environment=\\\"endpoint\\\"\\n></stack-containers-datatable>\\n\\n<div class=\\\"row\\\" ng-if=\\\"services && (!orphaned || orphanedRunning)\\\">\\n <div class=\\\"col-sm-12\\\">\\n <services-datatable\\n title-text=\\\"Services\\\"\\n title-icon=\\\"list\\\"\\n dataset=\\\"services\\\"\\n table-key=\\\"stack-services\\\"\\n order-by=\\\"Name\\\"\\n nodes=\\\"nodes\\\"\\n agent-proxy=\\\"applicationState.endpoint.mode.agentProxy && applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE'\\\"\\n show-ownership-column=\\\"false\\\"\\n show-update-action=\\\"applicationState.endpoint.apiVersion >= 1.25\\\"\\n show-task-logs-button=\\\"applicationState.endpoint.apiVersion >= 1.30\\\"\\n show-add-action=\\\"false\\\"\\n show-stack-column=\\\"false\\\"\\n not-auto-focus=\\\"true\\\"\\n endpoint-public-url=\\\"endpoint.PublicURL\\\"\\n endpoint-id=\\\"endpoint.Id\\\"\\n ></services-datatable>\\n </div>\\n</div>\\n\\n<!-- access-control-panel -->\\n<access-control-panel\\n ng-if=\\\"stack && !orphaned\\\"\\n resource-id=\\\"stack.EndpointId + '_' + stack.Name\\\"\\n resource-control=\\\"stack.ResourceControl\\\"\\n resource-type=\\\"resourceType\\\"\\n environment-id=\\\"stack.EndpointId\\\"\\n on-update-success=\\\"(onUpdateResourceControlSuccess)\\\"\\n>\\n</access-control-panel>\\n<!-- !access-control-panel -->\\n\";;\nvar path = 'app/portainer/views/stacks/edit/stack.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Stacks list'\\\" breadcrumbs=\\\"['Stacks']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <stacks-datatable\\n title-text=\\\"Stacks\\\"\\n title-icon=\\\"list\\\"\\n dataset=\\\"stacks\\\"\\n table-key=\\\"stacks\\\"\\n order-by=\\\"Name\\\"\\n remove-action=\\\"removeAction\\\"\\n refresh-callback=\\\"getStacks\\\"\\n create-enabled=\\\"createEnabled\\\"\\n ></stacks-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/stacks/stacks.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Tags'\\\" breadcrumbs=\\\"['Tag management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"plus\\\" title-text=\\\"Add a new tag\\\"> </rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" name=\\\"tagCreationForm\\\" ng-submit=\\\"createTag()\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"name\\\" class=\\\"col-sm-2 control-label required text-left\\\"> Name </label>\\n <div class=\\\"col-sm-10\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n name=\\\"name\\\"\\n ng-model=\\\"formValues.Name\\\"\\n ng-change=\\\"checkNameValidity(tagCreationForm)\\\"\\n placeholder=\\\"org/acme\\\"\\n required\\n auto-focus\\n />\\n <div class=\\\"help-block\\\" ng-show=\\\"tagCreationForm.name.$invalid\\\">\\n <div class=\\\"small text-warning\\\">\\n <div ng-messages=\\\"tagCreationForm.name.$error\\\">\\n <p ng-message=\\\"required\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This field is required.\\n </p>\\n <p ng-message=\\\"validName\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'alert-triangle'\\\" mode=\\\"'warning'\\\"></pr-icon>\\n This tag already exists.\\n </p>\\n </div>\\n </div>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"state.actionInProgress || !tagCreationForm.$valid\\\"\\n ng-click=\\\"createTag()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\" class=\\\"vertical-center\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon>\\n Create tag\\n </span>\\n <span ng-show=\\\"state.actionInProgress\\\">Creating tag...</span>\\n </button>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <tags-datatable title-text=\\\"Tags\\\" title-icon=\\\"tag\\\" dataset=\\\"tags\\\" table-key=\\\"tags\\\" order-by=\\\"Name\\\" remove-action=\\\"removeAction\\\"></tags-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/tags/tags.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header id=\\\"'view-top'\\\" title=\\\"'Application templates list'\\\" breadcrumbs=\\\"['Templates']\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <!-- stack-form -->\\n <stack-from-template-form\\n ng-if=\\\"state.selectedTemplate && (state.selectedTemplate.Type === 2 || state.selectedTemplate.Type === 3)\\\"\\n template=\\\"state.selectedTemplate\\\"\\n form-values=\\\"formValues\\\"\\n state=\\\"state\\\"\\n create-template=\\\"createTemplate\\\"\\n unselect-template=\\\"unselectTemplate\\\"\\n >\\n </stack-from-template-form>\\n <!-- !stack-form -->\\n <!-- container-form -->\\n <div class=\\\"col-sm-12\\\" ng-if=\\\"state.selectedTemplate && state.selectedTemplate.Type === 1\\\">\\n <rd-widget>\\n <rd-widget-custom-header icon=\\\"state.selectedTemplate.Logo\\\" title-text=\\\"state.selectedTemplate.Title\\\"> </rd-widget-custom-header>\\n <rd-widget-body classes=\\\"padding\\\">\\n <form class=\\\"form-horizontal\\\" name=\\\"selectedTemplateType1\\\">\\n <!-- description -->\\n <div ng-if=\\\"state.selectedTemplate.Note\\\">\\n <div class=\\\"form-section-title\\\"> Information </div>\\n <div class=\\\"col-sm-12 form-group\\\">\\n <div class=\\\"template-note\\\" ng-bind-html=\\\"state.selectedTemplate.Note\\\"></div>\\n </div>\\n </div>\\n <!-- !description -->\\n <div class=\\\"form-section-title\\\"> Configuration </div>\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_name\\\" class=\\\"col-sm-2 control-label text-left\\\">Name</label>\\n <div class=\\\"col-sm-6\\\">\\n <input type=\\\"text\\\" name=\\\"container_name\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.name\\\" placeholder=\\\"e.g. web (optional)\\\" />\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- network-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"container_network\\\" class=\\\"col-sm-2 control-label text-left\\\">Network</label>\\n <div class=\\\"col-sm-6\\\">\\n <select class=\\\"form-control\\\" ng-options=\\\"net.Name for net in availableNetworks | orderBy: 'Name'\\\" ng-model=\\\"formValues.network\\\">\\n <option disabled hidden value=\\\"\\\">Select a network</option>\\n </select>\\n </div>\\n </div>\\n <!-- !network-input -->\\n <!-- env -->\\n <div ng-repeat=\\\"var in state.selectedTemplate.Env\\\" ng-if=\\\"!var.preset || var.select\\\" class=\\\"form-group\\\">\\n <label for=\\\"field_{{ $index }}\\\" class=\\\"col-sm-2 control-label text-left\\\">\\n {{ var.label }}\\n <portainer-tooltip ng-if=\\\"var.description\\\" message=\\\"var.description\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-6\\\">\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-if=\\\"!var.select\\\" ng-model=\\\"var.value\\\" id=\\\"field_{{ $index }}\\\" />\\n <select class=\\\"form-control\\\" ng-if=\\\"var.select\\\" ng-model=\\\"var.value\\\" id=\\\"field_{{ $index }}\\\">\\n <option selected disabled hidden value=\\\"\\\">Select value</option>\\n <option ng-repeat=\\\"choice in var.select\\\" value=\\\"{{ choice.value }}\\\">{{ choice.text }}</option>\\n </select>\\n </div>\\n </div>\\n <!-- !env -->\\n <!-- access-control -->\\n <por-access-control-form form-data=\\\"formValues.AccessControlData\\\"></por-access-control-form>\\n <!-- !access-control -->\\n <div class=\\\"form-group col-sm-12\\\">\\n <a class=\\\"small interactive vertical-center\\\" ng-if=\\\"!state.showAdvancedOptions\\\" ng-click=\\\"state.showAdvancedOptions = true;\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> Show advanced options\\n </a>\\n <a class=\\\"small interactive vertical-center\\\" ng-if=\\\"state.showAdvancedOptions\\\" ng-click=\\\"state.showAdvancedOptions = false;\\\">\\n <pr-icon icon=\\\"'minus'\\\"></pr-icon> Hide advanced options\\n </a>\\n </div>\\n <div ng-if=\\\"state.showAdvancedOptions\\\">\\n <!-- port-mapping -->\\n <div class=\\\"form-group mt-2\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">Port mapping</label>\\n <div class=\\\"mt-1\\\" ng-if=\\\"state.selectedTemplate.Ports.length > 0\\\">\\n <div class=\\\"small text-muted\\\">Portainer will automatically assign a port if you leave the host port empty.</div>\\n <div class=\\\"form-inline mt-2\\\" ng-repeat=\\\"portBinding in state.selectedTemplate.Ports\\\">\\n <!-- host-port -->\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">host</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.hostPort\\\" placeholder=\\\"e.g. 80 or 1.2.3.4:80 (optional)\\\" />\\n </div>\\n <!-- !host-port -->\\n <pr-icon icon=\\\"'arrow-right'\\\"></pr-icon>\\n <!-- container-port -->\\n <div class=\\\"input-group col-sm-4 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">container</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"portBinding.containerPort\\\" placeholder=\\\"e.g. 80\\\" />\\n </div>\\n <!-- !container-port -->\\n <!-- protocol-actions -->\\n <div class=\\\"input-group col-sm-3 input-group-sm\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.protocol\\\" uib-btn-radio=\\\"'tcp'\\\">TCP</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"portBinding.protocol\\\" uib-btn-radio=\\\"'udp'\\\">UDP</label>\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removePortBinding($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- !protocol-actions -->\\n </div>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"form-group small interactive text-muted vertical-center mt-2\\\" ng-click=\\\"addPortBinding()\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> Add map additional port\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !port-mapping -->\\n <!-- volume-mapping -->\\n <div class=\\\"form-group mt-4\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">Volume mapping</label>\\n <div class=\\\"mt-1\\\" ng-if=\\\"state.selectedTemplate.Volumes.length > 0\\\">\\n <div class=\\\"small text-muted\\\">Portainer will automatically create and map a local volume when using the <b>auto</b> option.</div>\\n <div class=\\\"mt-2\\\" ng-repeat=\\\"volume in state.selectedTemplate.Volumes\\\">\\n <!-- volume-line1 -->\\n <div class=\\\"form-inline\\\">\\n <!-- container-path -->\\n <div class=\\\"input-group input-group-sm col-sm-6\\\">\\n <span class=\\\"input-group-addon\\\">container</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.container\\\" placeholder=\\\"e.g. /path/in/container\\\" />\\n </div>\\n <!-- !container-path -->\\n <!-- volume-type -->\\n <div class=\\\"input-group col-sm-5 space-left\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'auto'\\\" ng-click=\\\"volume.bind = ''\\\">Auto</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'volume'\\\" ng-click=\\\"volume.bind = ''\\\">Volume</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.type\\\" uib-btn-radio=\\\"'bind'\\\" ng-click=\\\"volume.bind = ''\\\" ng-if=\\\"isAdmin || allowBindMounts\\\">Bind</label>\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeVolume($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n <!-- !volume-type -->\\n </div>\\n <!-- !volume-line1 -->\\n <!-- volume-line2 -->\\n <div class=\\\"form-inline mt-1\\\" ng-if=\\\"volume.type !== 'auto'\\\">\\n <pr-icon icon=\\\"'arrow-right'\\\"></pr-icon>\\n <!-- volume -->\\n <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.type === 'volume'\\\">\\n <div class=\\\"col-sm-12 input-group\\\">\\n <span class=\\\"input-group-addon\\\">volume</span>\\n <div class=\\\"col-sm-12 input-group\\\">\\n <select class=\\\"form-control\\\" ng-model=\\\"volume.bind\\\" ng-options=\\\"vol.Name as vol.Name for vol in availableVolumes\\\">\\n <option value=\\\"\\\" disabled selected>Select a volume</option>\\n </select>\\n </div>\\n </div>\\n </div>\\n <!-- !volume -->\\n <!-- bind -->\\n <div class=\\\"input-group input-group-sm col-sm-6\\\" ng-if=\\\"volume.type === 'bind'\\\">\\n <span class=\\\"input-group-addon\\\">host</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"volume.bind\\\" placeholder=\\\"e.g. /path/on/host\\\" />\\n </div>\\n <!-- !bind -->\\n <!-- read-only -->\\n <div class=\\\"input-group input-group-sm col-sm-5 space-left\\\">\\n <div class=\\\"btn-group btn-group-sm\\\">\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.readonly\\\" uib-btn-radio=\\\"false\\\">Writable</label>\\n <label class=\\\"btn btn-light\\\" ng-model=\\\"volume.readonly\\\" uib-btn-radio=\\\"true\\\">Read-only</label>\\n </div>\\n </div>\\n <!-- !read-only -->\\n </div>\\n <!-- !volume-line2 -->\\n </div>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"form-group small interactive text-muted vertical-center mt-2\\\" ng-click=\\\"addVolume()\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> Add map additional volume\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !volume-mapping -->\\n <!-- extra-host -->\\n <div class=\\\"form-group mt-4\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">Hosts file entries</label>\\n <!-- extra-host-input-list -->\\n <div class=\\\"mt-1\\\" ng-if=\\\"state.selectedTemplate.Hosts.length > 0\\\">\\n <div class=\\\"form-inline mt-2\\\" ng-repeat=\\\"(idx, host) in state.selectedTemplate.Hosts track by $index\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"state.selectedTemplate.Hosts[idx]\\\" placeholder=\\\"e.g. host:IP\\\" />\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeExtraHost($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"form-group small interactive text-muted vertical-center mt-2\\\" ng-click=\\\"addExtraHost()\\\">\\n <pr-icon icon=\\\"'plus'\\\"></pr-icon> Add additional entry\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !extra-host -->\\n <!-- labels -->\\n <div class=\\\"form-group mt-4\\\">\\n <div class=\\\"col-sm-12\\\">\\n <label class=\\\"control-label text-left\\\">Labels</label>\\n <!-- labels-input-list -->\\n <div class=\\\"mt-1\\\" ng-if=\\\"state.selectedTemplate.Labels.length > 0\\\">\\n <div class=\\\"form-inline mt-2\\\" ng-repeat=\\\"label in state.selectedTemplate.Labels\\\">\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">name</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.name\\\" placeholder=\\\"e.g. com.example.foo\\\" />\\n </div>\\n <div class=\\\"input-group col-sm-5 input-group-sm\\\">\\n <span class=\\\"input-group-addon\\\">value</span>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" ng-model=\\\"label.value\\\" placeholder=\\\"e.g. bar\\\" />\\n </div>\\n <button class=\\\"btn btn-light\\\" type=\\\"button\\\" ng-click=\\\"removeLabel($index)\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" class-name=\\\"'icon-secondary icon-md'\\\"></pr-icon>\\n </button>\\n </div>\\n </div>\\n <!-- !labels-input-list -->\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"form-group small interactive text-muted vertical-center mt-2\\\" ng-click=\\\"addLabel()\\\"> <pr-icon icon=\\\"'plus'\\\"></pr-icon> Add label </span>\\n </div>\\n </div>\\n </div>\\n <!-- !labels -->\\n <!-- hostname -->\\n <div class=\\\"form-group mt-4\\\">\\n <label for=\\\"container_hostname\\\" class=\\\"col-sm-2 control-label text-left\\\">Hostname</label>\\n <div class=\\\"col-sm-6\\\">\\n <input type=\\\"text\\\" name=\\\"container_hostname\\\" class=\\\"form-control\\\" ng-model=\\\"state.selectedTemplate.Hostname\\\" placeholder=\\\"leave empty to use docker default\\\" />\\n </div>\\n </div>\\n <!-- !hostname -->\\n </div>\\n <!-- !advanced-options -->\\n <!-- actions -->\\n <div class=\\\"form-section-title\\\"> Actions </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary\\\"\\n ng-disabled=\\\"state.actionInProgress || !formValues.network\\\"\\n ng-click=\\\"createTemplate()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\">Deploy the container</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Deployment in progress...</span>\\n </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-default\\\" ng-click=\\\"unselectTemplate(state.selectedTemplate)\\\">Hide</button>\\n <span class=\\\"text-danger space-left\\\" ng-if=\\\"state.formValidationError\\\">{{ state.formValidationError }}</span>\\n </div>\\n </div>\\n <!-- !actions -->\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n <!-- container-form -->\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <template-list\\n ng-if=\\\"templates\\\"\\n title-text=\\\"Templates\\\"\\n title-icon=\\\"edit\\\"\\n templates=\\\"templates\\\"\\n table-key=\\\"templates\\\"\\n select-action=\\\"selectTemplate\\\"\\n show-swarm-stacks=\\\"applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE' && applicationState.endpoint.mode.role === 'MANAGER' && applicationState.endpoint.apiVersion >= 1.25\\\"\\n >\\n </template-list>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/templates/templates.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'User details'\\\" breadcrumbs=\\\"[{label:'Users', link:'portainer.users'}, formValues.username]\\\"> </page-header>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"user\\\" title-text=\\\"User details\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <div class=\\\"form-group\\\">\\n <label for=\\\"username_field\\\" class=\\\"col-sm-2 control-label required text-left\\\">Username</label>\\n <div class=\\\"col-sm-8\\\">\\n <input class=\\\"form-control\\\" ng-model=\\\"formValues.username\\\" id=\\\"username_field\\\" />\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\" ng-if=\\\"isAdmin\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-3 col-lg-2 control-label text-left'\\\"\\n checked=\\\"formValues.Administrator\\\"\\n label=\\\"'Administrator'\\\"\\n tooltip=\\\"'Administrators have access to Portainer settings management as well as full control over all defined environments and their resources.'\\\"\\n on-change=\\\"(handleAdministratorChange)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-4\\\">\\n <button class=\\\"btn btn-primary btn-sm\\\" ng-disabled=\\\"!isSubmitEnabled()\\\" ng-click=\\\"updateUser()\\\">Save</button>\\n <button class=\\\"btn btn-danger btn-sm vertical-center\\\" ng-disabled=\\\"isDeleteDisabled()\\\" ng-click=\\\"deleteUser()\\\">\\n <pr-icon icon=\\\"'trash-2'\\\" size=\\\"'sm'\\\" class=\\\"vertical-center\\\"></pr-icon>Delete this user\\n </button>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\" ng-if=\\\"AuthenticationMethod === 1\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"lock\\\" title-text=\\\"Change user password\\\"></rd-widget-header>\\n <rd-widget-body>\\n <form name=\\\"form\\\" class=\\\"form-horizontal\\\" style=\\\"margin-top: 15px\\\">\\n <!-- new-password-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"new_password\\\" class=\\\"col-sm-2 control-label required text-left\\\">New password</label>\\n <div class=\\\"col-sm-8\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.newPassword\\\" id=\\\"new_password\\\" name=\\\"new_password\\\" ng-minlength=\\\"requiredPasswordLength\\\" />\\n </div>\\n </div>\\n <!-- !new-password-input -->\\n <!-- confirm-password-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"confirm_password\\\" class=\\\"col-sm-2 control-label required text-left\\\">Confirm password</label>\\n <div class=\\\"col-sm-8\\\">\\n <div class=\\\"input-group\\\">\\n <input type=\\\"password\\\" class=\\\"form-control\\\" ng-model=\\\"formValues.confirmPassword\\\" id=\\\"confirm_password\\\" />\\n <span class=\\\"input-group-addon\\\">\\n <pr-icon icon=\\\"'check'\\\" class=\\\"icon-success\\\" ng-if=\\\"form.new_password.$viewValue !== '' && form.new_password.$viewValue === formValues.confirmPassword\\\"></pr-icon>\\n <pr-icon icon=\\\"'x'\\\" class=\\\"icon-danger\\\" ng-if=\\\"!(form.new_password.$viewValue !== '' && form.new_password.$viewValue === formValues.confirmPassword)\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !confirm-password-input -->\\n <password-check-hint password-valid=\\\"form.new_password.$valid && formValues.newPassword\\\"></password-check-hint>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-2\\\">\\n <button\\n type=\\\"submit\\\"\\n class=\\\"btn btn-primary btn-sm\\\"\\n ng-disabled=\\\"form.new_password.$viewValue === '' || form.$invalid || !formValues.newPassword || !formValues.confirmPassword || form.new_password.$viewValue !== formValues.confirmPassword\\\"\\n ng-click=\\\"updatePassword()\\\"\\n >Update password</button\\n >\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/users/edit/user.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"<page-header title=\\\"'Users'\\\" breadcrumbs=\\\"['User management']\\\" reload=\\\"true\\\"> </page-header>\\n\\n<div class=\\\"row\\\" ng-if=\\\"isAdmin\\\">\\n <div class=\\\"col-lg-12 col-md-12 col-xs-12\\\">\\n <rd-widget>\\n <rd-widget-header icon=\\\"plus\\\" title-text=\\\"Add a new user\\\"> </rd-widget-header>\\n <rd-widget-body>\\n <form name=\\\"form\\\" class=\\\"form-horizontal\\\">\\n <!-- name-input -->\\n <div class=\\\"form-group\\\">\\n <label for=\\\"username\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">\\n Username\\n <portainer-tooltip ng-if=\\\"AuthenticationMethod === 2\\\" message=\\\"'Username must exactly match username defined in external LDAP source.'\\\"></portainer-tooltip>\\n </label>\\n <div class=\\\"col-sm-8\\\">\\n <div class=\\\"input-group\\\">\\n <input\\n type=\\\"text\\\"\\n class=\\\"form-control\\\"\\n id=\\\"username\\\"\\n ng-model=\\\"formValues.Username\\\"\\n ng-change=\\\"checkUsernameValidity()\\\"\\n placeholder=\\\"e.g. jdoe\\\"\\n auto-focus\\n data-cy=\\\"user-usernameInput\\\"\\n />\\n <span class=\\\"input-group-addon\\\">\\n <pr-icon mode=\\\"'success'\\\" icon=\\\"'check'\\\" ng-if=\\\"state.validUsername\\\"></pr-icon>\\n <pr-icon mode=\\\"'danger'\\\" icon=\\\"'x'\\\" ng-if=\\\"!state.validUsername\\\"></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !name-input -->\\n <!-- new-password-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"AuthenticationMethod === 1\\\">\\n <label for=\\\"password\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Password</label>\\n <div class=\\\"col-sm-8\\\">\\n <input\\n type=\\\"password\\\"\\n class=\\\"form-control\\\"\\n ng-model=\\\"formValues.Password\\\"\\n id=\\\"password\\\"\\n name=\\\"password\\\"\\n ng-minlength=\\\"requiredPasswordLength\\\"\\n data-cy=\\\"user-passwordInput\\\"\\n />\\n </div>\\n </div>\\n <!-- !new-password-input -->\\n <!-- confirm-password-input -->\\n <div class=\\\"form-group\\\" ng-if=\\\"AuthenticationMethod === 1\\\">\\n <label for=\\\"confirm_password\\\" class=\\\"col-sm-3 col-lg-2 control-label required text-left\\\">Confirm password</label>\\n <div class=\\\"col-sm-8\\\">\\n <div class=\\\"input-group\\\">\\n <input\\n type=\\\"password\\\"\\n class=\\\"form-control form-control--has-icon\\\"\\n ng-model=\\\"formValues.ConfirmPassword\\\"\\n id=\\\"confirm_password\\\"\\n data-cy=\\\"user-passwordConfirmInput\\\"\\n />\\n <span class=\\\"input-group-addon\\\">\\n <pr-icon\\n mode=\\\"'success'\\\"\\n icon=\\\"'check'\\\"\\n aria-hidden=\\\"true\\\"\\n ng-if=\\\"form.password.$viewValue !== '' && form.password.$viewValue === formValues.ConfirmPassword\\\"\\n ></pr-icon>\\n <pr-icon\\n mode=\\\"'danger'\\\"\\n icon=\\\"'x'\\\"\\n aria-hidden=\\\"true\\\"\\n ng-if=\\\"!(form.password.$viewValue !== '' && form.password.$viewValue === formValues.ConfirmPassword)\\\"\\n ></pr-icon>\\n </span>\\n </div>\\n </div>\\n </div>\\n <!-- !confirm-password-input -->\\n\\n <!-- password-check-hint -->\\n <div class=\\\"form-group\\\" ng-if=\\\"AuthenticationMethod === 1\\\">\\n <div class=\\\"col-sm-3 col-lg-2\\\"></div>\\n <div class=\\\"col-sm-8\\\">\\n <password-check-hint password-valid=\\\"form.password.$valid && formValues.Password\\\"></password-check-hint>\\n </div>\\n </div>\\n <!-- ! password-check-hint -->\\n\\n <!-- admin-checkbox -->\\n <div class=\\\"form-group\\\" ng-if=\\\"isAdmin\\\">\\n <div class=\\\"col-sm-12\\\">\\n <por-switch-field\\n label-class=\\\"'col-sm-3 col-lg-2 control-label text-left'\\\"\\n checked=\\\"formValues.Administrator\\\"\\n label=\\\"'Administrator'\\\"\\n tooltip=\\\"'Administrators have access to Portainer settings management as well as full control over all defined environments and their resources.'\\\"\\n on-change=\\\"(handleAdministratorChange)\\\"\\n ></por-switch-field>\\n </div>\\n </div>\\n <!-- !admin-checkbox -->\\n <!-- teams -->\\n <div class=\\\"form-group\\\" ng-if=\\\"!formValues.Administrator\\\">\\n <label class=\\\"col-sm-3 col-lg-2 control-label text-left\\\" for=\\\"teams-selector\\\">Add to team(s)</label>\\n <div class=\\\"col-sm-8\\\">\\n <span class=\\\"small text-muted\\\" ng-if=\\\"teams.length === 0\\\">\\n You don't seem to have any teams to add users into. Head over to the <a ui-sref=\\\"portainer.teams\\\">Teams view</a> to create some.\\n </span>\\n <teams-selector\\n ng-if=\\\"teams.length > 0\\\"\\n value=\\\"formValues.TeamIds\\\"\\n teams=\\\"teams\\\"\\n placeholder=\\\"'Select one or more teams'\\\"\\n data-cy=\\\"'user-teamSelect'\\\"\\n on-change=\\\"(onChangeTeamIds)\\\"\\n input-id=\\\"'teams-selector'\\\"\\n disabled=\\\"teamSync\\\"\\n ></teams-selector>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\" ng-if=\\\"teamSync\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small\\\">\\n <p class=\\\"small text-muted vertical-center\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" class-name=\\\"'icon-warning =vertical-center'\\\"></pr-icon>\\n The team leader feature is disabled as external authentication is currently enabled with team sync.\\n </p>\\n </span>\\n </div>\\n </div>\\n <!-- !teams -->\\n <div class=\\\"form-group\\\" ng-if=\\\"isAdmin && !formValues.Administrator && formValues.Teams.length === 0\\\">\\n <div class=\\\"col-sm-12\\\">\\n <span class=\\\"small text-muted vertical-center\\\">\\n <pr-icon class=\\\"vertical-center\\\" icon=\\\"'alert-circle'\\\" aria-hidden=\\\"true\\\" mode=\\\"'primary'\\\" size=\\\"'md'\\\"></pr-icon>\\n <span\\n >Note: non-administrator users who aren't in a team don't have access to any environments by default. Head over to the\\n <a ui-sref=\\\"portainer.endpoints\\\">Environments view</a> to manage their accesses.</span\\n >\\n </span>\\n </div>\\n </div>\\n <div class=\\\"form-group\\\">\\n <div class=\\\"col-sm-12\\\">\\n <button\\n type=\\\"button\\\"\\n class=\\\"btn btn-primary btn-sm !ml-0\\\"\\n ng-disabled=\\\"state.actionInProgress || !state.validUsername || formValues.Username === '' || (AuthenticationMethod === 1 && (!formValues.Password || form.$invalid || formValues.Password !== formValues.ConfirmPassword))\\\"\\n ng-click=\\\"addUser()\\\"\\n button-spinner=\\\"state.actionInProgress\\\"\\n data-cy=\\\"user-createUserButton\\\"\\n >\\n <span ng-hide=\\\"state.actionInProgress\\\" class=\\\"vertical-center icon-white\\\"> <pr-icon icon=\\\"'plus'\\\" aria-hidden=\\\"true\\\" size=\\\"'md'\\\"></pr-icon> Create user</span>\\n <span ng-show=\\\"state.actionInProgress\\\">Creating user...</span>\\n </button>\\n <span class=\\\"text-danger\\\" ng-if=\\\"state.userCreationError\\\">\\n <pr-icon icon=\\\"'alert-circle'\\\" aria-hidden=\\\"true\\\" mode=\\\"'primary'\\\" size=\\\"'md'\\\"></pr-icon> {{ state.userCreationError }}\\n </span>\\n </div>\\n </div>\\n </form>\\n </rd-widget-body>\\n </rd-widget>\\n </div>\\n</div>\\n\\n<div class=\\\"row\\\">\\n <div class=\\\"col-sm-12\\\">\\n <users-datatable\\n title-text=\\\"Users\\\"\\n title-icon=\\\"user\\\"\\n dataset=\\\"users\\\"\\n table-key=\\\"users\\\"\\n order-by=\\\"Username\\\"\\n authentication-method=\\\"AuthenticationMethod\\\"\\n remove-action=\\\"removeAction\\\"\\n is-admin=\\\"isAdmin\\\"\\n ></users-datatable>\\n </div>\\n</div>\\n\";;\nvar path = 'app/portainer/views/users/users.html';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","_path","_extends","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","props","xmlns","width","height","fill","viewBox","d","stroke","strokeLinecap","strokeLinejoin","strokeWidth","style","fillRule","fillOpacity","_path2","_path3","_path4","_defs","x1","x2","y1","y2","gradientUnits","stopColor","offset","stopOpacity","_g","clipPath","clipRule","_path5","_path6","_path7","gradientTransform","transform","opacity","strokeOpacity","categories","DimensionConfig","setPortainerStatus","instanceID","version","setCustomDimension","PortainerInstanceID","PortainerVersion","setUserRole","role","PortainerUserRole","clearUserRole","deleteCustomDimension","setUserEndpointRole","PortainerEndpointUserRole","clearUserEndpointRole","dimensionId","value","push","toString","name","window","_len","args","Array","_key","_paq","concat","useAnalytics","telemetryQuery","usePublicSettings","select","settings","EnableTelemetry","trackEvent","data","action","properties","metadata","dimensions","category","parsed","parseInt","Number","isNaN","includes","metadataString","kebabCasedMetadata","fromEntries","entries","_ref","_ref2","_kebabCase","JSON","stringify","toLowerCase","API_ENDPOINT_AUTH","API_ENDPOINT_BACKUP","API_ENDPOINT_CUSTOM_TEMPLATES","API_ENDPOINT_EDGE_GROUPS","API_ENDPOINT_EDGE_JOBS","API_ENDPOINT_EDGE_STACKS","API_ENDPOINT_EDGE_TEMPLATES","API_ENDPOINT_ENDPOINTS","API_ENDPOINT_ENDPOINT_GROUPS","API_ENDPOINT_KUBERNETES","API_ENDPOINT_MOTD","API_ENDPOINT_REGISTRIES","API_ENDPOINT_RESOURCE_CONTROLS","API_ENDPOINT_SETTINGS","API_ENDPOINT_STACKS","API_ENDPOINT_SUPPORT","API_ENDPOINT_USERS","API_ENDPOINT_TAGS","API_ENDPOINT_TEAMS","API_ENDPOINT_TEAM_MEMBERSHIPS","API_ENDPOINT_TEMPLATES","API_ENDPOINT_WEBHOOKS","PAGINATION_MAX_ITEMS","APPLICATION_CACHE_VALIDITY","CONSOLE_COMMANDS_LABEL_PREFIX","PREDEFINED_NETWORKS","PORTAINER_FADEOUT","TEMPLATE_NAME_VALIDATION_REGEX","KUBE_TEMPLATE_NAME_VALIDATION_REGEX","trimSHA","imageName","indexOf","substring","_split","joinCommand","command","undefined","join","colors","hex","slice","FOREGROUND_COLORS_BY_ANSI","black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite","BACKGROUND_COLORS_BY_ANSI","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBrightBlack","bgBrightRed","bgBrightGreen","bgBrightYellow","bgBrightBlue","bgBrightMagenta","bgBrightCyan","bgBrightWhite","TIMESTAMP_LENGTH","Colors","Grey","Magenta","Yellow","Green","Red","Blue","spaceSpan","text","formatTime","time","spans","line","nl","date","timestampInMilliseconds","format","Date","fgColor","formatLevel","level","levelSpan","fontWeight","logLevelToSpan","formatCaller","caller","trim","_takeRight","split","formatMessage","message","hasKeys","formatKeyValuePair","isLastKey","strValue","formatStackTrace","stackTrace","lines","forEach","func","lineNumber","keyRegex","ZerologRegex","regs","flags","from","Set","r","RegExp","concatRegex","formatZerologLogs","rawText","withTimestamps","timestamp","_slicedToArray","match","_extractPairs","messageAndPairs","pairs","_messageAndPairs$spli2","rawPairs","matches","matchAll","m","idx","rawKey","start","index","end","extractPairs","_extractPairs2","stackTraceIndex","findIndex","p","parse","splice","_ref3","defaultOptions","splitter","formatLogs","rawLogs","stripHeaders","_ref$splitter","logs","replace","stripHeadersFunc","startsWith","error","bgColor","tokens","tokenize","formattedLogs","token","type","fgAnsi","bgAnsi","cssColorFromRgb","extendedColorForToken","tokenLine","stripEscapeCodes","json","stack_trace","_without","removeKnownKeys","formatJSONLine","_toConsumableArray","test","rgb","_rgb","g","b","colorMode","colorRef","NEW_LINE_BREAKER","BROWSER_OS_PLATFORM","concatLogsToString","formatFunc","reduce","acc","formattedLine","_regeneratorRuntime","Op","hasOwn","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","reject","record","result","_typeof","__await","then","unwrapped","previousPromise","callInvokeWithMethodAndArg","state","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","doneResult","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","val","object","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","ping","_x","_ping","_callee","environmentId","_context","axios","get","t0","parseAxiosError","_asyncToGenerator","_getVersion","_yield$axios$get","buildUrl","getInfo","_x2","_getInfo","_callee2","_yield$axios$get2","_context2","useInfo","useQuery","useVersion","getVersion","subAction","url","BoxSelectorAngular","template","bindings","onChange","options","radioName","slim","require","formCtrl","controller","BoxSelectorController","$scope","_classCallCheck","handleChange","$inject","limitedToBE","_this","$evalAsync","$setValidity","buildOption","icon","label","description","feature","BoxSelectorReact","react2angular","BoxSelector","boxSelectorModule","angular","component","PortainerError","_Error","_inherits","_super","msg","_assertThisInitialized","_wrapNativeSuper","isPortainerError","getValueAsArrayOfStrings","isArray","promiseSequence","promises","promise","nextPromise","isFulfilled","status","isRejected","pluralize","word","plural","addPlural","baseUrl","protocol","location","baseHref","hostname","port","displayPort","getBaseUrl","dockerWebhookUrl","baseStackWebhookUrl","stackWebhookUrl","createWebhookId","uuid","baseEdgeStackWebhookUrl","WebhookHelperFactory","returnWebhookUrl","getBaseStackWebhookUrl","returnStackWebhookUrl","BASE_URL","configureFDO","_configureFDO","formValues","post","configureDevice","_x3","_configureDevice","deviceId","deviceConfig","createProfile","_x4","_x5","_x6","_createProfile","_callee3","profileFileContent","payload","_context3","params","getProfiles","_getProfiles","_callee4","profiles","_context4","getProfile","_x7","_getProfile","_callee5","profileId","profile","_context5","deleteProfile","_x8","_deleteProfile","_callee6","_context6","delete","updateProfile","_x9","_x10","_x11","_updateProfile","_callee7","_context7","put","duplicateProfile","_x12","_duplicateProfile","_callee8","_yield$axios$post","_context8","configureAMT","_configureAMT","getAMTInfo","_getAMTInfo","amtInformation","enableDeviceFeatures","_enableDeviceFeatures","deviceGUID","features","featuresPayload","authorizationResponse","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","input","hint","prim","toPrimitive","res","String","_toPrimitive","_toPropertyKey","axiosOrigin","baseURL","loadProgressBar","interceptors","request","use","config","newConfig","jwt","headers","localStorageGet","Authorization","agentTargetHeader","agentInterceptor","portainerAgentTargetHeader","portainerAgentManagerOperation","AXIOS_UNAUTHENTICATED","parseError","defaultErrorParser","resultErr","resultMsg","isAxiosError","_err$response","_parseError","details","response","dispatchEvent","CustomEvent","detail","axiosError","_axiosError$response","_axiosError$response2","agentTargetQueue","agentManagerOperation","agentTargetLastValue","registryAuthenticationHeader","registryAuthentication","setRegistryAuthenticationHeader","headerValue","lastValue","shift","setPortainerAgentTargetHeader","setPortainerAgentManagerOperation","set","resetAgentHeaders","HttpRequestHelperAngular","addNotification","notificationsStore","getState","notifySuccess","title","saveNotification","toastr","sanitize","_escape","notifyWarning","timeOut","notifyError","fallbackText","prop","_get","pickErrorMsg","console","closeButton","progressBar","tapToDismiss","escapeHtml","closeHtml","success","warning","Notifications","notif","timeStamp","jwtDecode","_getTags","createTag","_createTag","tag","tagKeys","all","useTags","_ref$enabled","enabled","getTags","staleTime","withError","useTagsForEnvironment","_useTags","tags","Endpoints","isLoading","useCreateTagMutation","queryClient","useQueryClient","useMutation","mutationOptions","withInvalidate","useUserMembership","userId","getUserMemberships","useIsTeamLeader","user","query","Id","isAdmin","memberships","some","membership","Role","TeamRole","Leader","useUsers","includeAdministrator","getUsers","meta","queryKeys","base","useUser","getUser","_getUser","filterNonAdministratorUsers","users","Admin","_getUsers","includeAdministrators","_args","_getUserMemberships","entity","fallbackMessage","onError","withGlobalError","queryKeysToInvalidate","onSuccess","invalidateQueries","option","mergeOptions","handleError","errorMeta","_ref$title","QueryClient","mutationCache","MutationCache","variable","mutation","_mutation$meta","queryCache","QueryCache","_mutation$meta2","Component","propNames","Controller","_camelCase","$element","$q","isDestroyed","el","$onChanges","toProps","ReactDOM","_jsx","StrictMode","children","$onDestroy","r2a","withControlledInput","WrappedComponent","controlledValueOnChangePairs","keysToControl","WrapperComponent","_useState2","useState","controlledValues","setControlledValues","handlers","useMemo","valueKey","onChangeKey","c","useEffect","toUpdate","withCurrentUser","UserProvider","withReactQuery","_defineProperties","descriptor","arr","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","minLen","n","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","withFormValidation","ngModule","componentName","schemaBuilder","reactComponentName","_upperFirst","kebabName","propsWithErrors","createFormValidatorController","createFormValidationComponent","FormValidatorController","$async","instance","Constructor","runValidation","protoProps","_$onChanges","_runValidation","_handleChange","newValues","_this$onChange","_this2","_this2$form","_this2$form2","form","validateForm","validationData","errors","changes","currentValue","defaultQueryClient","QueryClientProvider","client","withUIRouter","UIRouterContextComponent","semverCompare","a","localeCompare","numeric","sensitivity","caseFirst","isVersionSmaller","confirmStackUpdate","_confirmStackUpdate","defaultValue","openSwitchPrompt","confirmButton","buildConfirmButton","modalType","ModalType","Warn","pullImage","alertSettings","container","header","body","CheckCircle","XCircle","AlertCircle","warn","AlertTriangle","Alert","color","_alertSettings$color","AlertContainer","className","_jsxs","_Fragment","AlertHeader","Icon","AlertBody","clsx","_ref4","BEFeatureIndicator","featureId","_ref$showIcon","showIcon","_ref$className","_getFeatureDetails","getFeatureDetails","href","rel","Briefcase","BE_URL","isLimitedToBE","BETeaserButton","heading","buttonText","buttonClassName","TooltipWithChildren","BEFeatureID","Button","size","onClick","disabled","Badge","typeClasses","getClasses","BadgeIcon","_ref$size","sizeClasses","iconSizeToClasses","editor","Edit","iconType","upload","UploadCloud","git","GitIcon","edgeStackTemplate","FileText","customTemplate","Globe","kubernetes","Kubernetes","compose","DockerCompose","LimitedToBeBoxSelectorIndicator","_ref$showTooltip","showTooltip","Tooltip","BoxOption","_ref$onSelect","onSelect","isSelected","tooltip","_ref$type","Check","checkIcon","selected","item","styles","root","checked","htmlFor","LogoIcon","BoxSelectorItem","_clsx","_ref$slim","_ref$checkIcon","_getFeatureDetails$li","featureUrl","ContentBox","Fragment","boxSelectorItem","business","limited","disabledWhenLimited","_onSelect","imageContainer","hiddenSpacingCount","_objectWithoutProperties","_excluded","hide","handleSelect","isMulti","_","optionValue","newValue","v","Code","showCopyButton","_useCopy","useCopy","handleCopy","copiedSuccessfully","copyButton","Copy","mode","theme","createTheme","background","foreground","caret","selection","selectionMatch","gutterBackground","highlightTags","atom","string","special","brace","number","keyword","comment","variableName","yamlLanguage","LanguageSupport","StreamLanguage","yaml","dockerFileLanguage","dockerFile","shellLanguage","shell","CodeEditor","placeholder","readonly","_ref$height","isYaml","isDockerFile","isShell","extensions","TextTip","CopyButton","copyText","indicatorPosition","CodeMirror","readOnly","basicSetup","highlightSelectionMatches","autocompletion","DashboardGrid","DashboardItem","pluralType","isRefetching","to","dataCy","Item","Loader2","Link","DetailsTable","_ref$headers","emptyMessage","Children","count","colSpan","Row","colClassName","columns","column","_style","Placeholder","SvgIcons","heartbeatup","heartbeatdown","dataflow","dockericon","laptopcode","ldap","linux","memory","restorewindow","route","sort","subscription","aws","xmlSpace","x","y","enableBackground","azure","civo","digitalocean","docker","dockercompose","ecr","github","gitlab","google","googlecloud","preserveAspectRatio","helm","linode","microsoft","microsofticon","nomad","nomadicon","openldap","proget","quay","kube","SvgIcon","spin","classes","isValidElementType","_Icon","svgIcon","Svg","iconName","s","toUpperCase","IconComponent","lucideIcons","InformationPanel","onDismiss","wrapperStyle","bodyClassName","Widget","WidgetBody","float","X","insightStore","createStore","persist","insightIDsClosed","addInsightIDClosed","insightIDClosed","currentIDsClosed","isClosed","insightID","keyBuilder","getStorage","localStorage","InsightsBox","content","insightCloseId","_useStore","useStore","Lightbulb","UISref","NavTabs","selectedId","find","active","parent","onKeyDown","tabIndex","Breadcrumbs","breadcrumbs","breadcrumbsArray","crumb","renderCrumb","link","linkParams","createContext","HeaderContainer","Provider","ContextHelp","headerStyles","menuButton","menuIcon","HelpCircle","docURL","getDocURL","open","NotificationsMenu","notificationsStoreState","removeNotification","clearUserNotifications","userNotifications","reducedNotifications","Menu","MenuButton","Bell","notificationStyles","badge","MenuList","menuList","notificationContainer","itemLast","stopPropagation","preventDefault","notifications","notification","MenuLink","onDelete","notificationId","notificationLink","anchorProps","useSref","ReachMenuLink","menuLink","notificationIcon","notificationBody","notificationTitle","notificationDetails","deleteButton","Trash2","timeCreated","valueOf","diff","Math","floor","now","interval","Moment","UserMenu","User","Username","ChevronDown","arrowDown","clear","HeaderTitle","useContext","useHeaderContext","ddExtension","PageHeader","_ref$breadcrumbs","reload","loading","onReload","router","useRouter","stateService","RefreshCw","ItemsPerPageSelector","showAll","_onChange","MAX_SAFE_INTEGER","calculatePageNumber","position","currentPage","paginationRange","totalPages","halfWay","ceil","PageButton","page","onPageChange","PageInput","_onSubmit","_useFormik","useFormik","initialValues","onSubmit","validateOnMount","validationSchema","required","max","min","handleSubmit","setFieldValue","isValid","Input","step","onKeyPress","PageSelector","pageCount","_ref$maxSize","maxSize","_ref$directionLinks","directionLinks","_ref$boundaryLinks","boundaryLinks","_ref$isInputVisible","isInputVisible","pages","ellipsesNeeded","pageNumber","generatePagesArray","last","PaginationControls","pageLimit","onPageLimitChange","isPageInputVisible","StatsItem","iconClass","TLSFieldset","SwitchField","labelClass","tls","skipVerify","FormControl","inputId","caCertFile","FileUploadField","file","certFile","keyFile","partialValue","MAX_FILE_SIZE","certValidation","optional","withFileSize","when","is","schema","tlsConfigValidation","optionalCert","boolean","default","TagButton","onRemove","removeTagBtn","TagSelector","_ref$allowCreate","allowCreate","tagsQuery","opt","Name","ID","createTagMutation","selectedTags","_compact","SelectComponent","Creatable","Select","tagId","hideSelectedOptions","closeMenuOnSelect","handleAdd","noOptionsMessage","formatCreateLabel","inputValue","onCreateOption","mutate","TeamsSelector","teams","team","PortainerSelect","_ref$color","_ref$icon","_ref$inline","inline","_ref$childrenWrapperC","childrenWrapperClassName","getMode","xs","sm","md","lg","xl","_ref$position","setHtmlMessage","htmlMessage","dangerouslySetInnerHTML","__html","_uniqueId","messageHTML","tooltipContainer","onClickHandler","tooltipBeteaser","tooltipMessage","Tippy","delay","zIndex","placement","maxWidth","arrow","allowHTML","interactive","tagName","getAttribute","UsersSelector","getOptionLabel","getOptionValue","selectedUsers","isDisabled","Loading","useWidgetContext","WidgetTitle","Body","Footer","Title","Taskbar","ButtonWithRef","forwardRef","ref","mRef","_ref$disabled","_ref$as","as","ariaProps","sizeClass","getIconSize","ButtonGroup","_ref$fadeDelay","fadeDelay","_ref$displayText","displayText","_ref$indicatorPositio","copiedIndicator","fadeout","document","setCopiedSuccessfully","fadeoutTime","setTimeout","clearTimeout","navigator","clipboard","writeText","inputEl","createElement","appendChild","execCommand","hidden","removeChild","LoadingButton","loadingText","buttonProps","loadingButtonIcon","defaultIcon","ColumnVisibilityMenu","isExpanded","Columns","Checkbox","getIsVisible","columnDef","_capitalize","colId","visible","DatatableHeader","onSearchChange","renderTableActions","renderTableSettings","searchValue","titleIcon","Table","SearchBar","Actions","TitleActions","SelectedRowsCount","DatatableFooter","totalSelected","pageSize","onPageSizeChange","_onPageChange","Datatable","dataset","_ref$renderTableSetti","_ref$renderTableActio","disableSelect","_ref$getRowId","getRowId","defaultGetRowId","_ref$isRowSelectable","isRowSelectable","emptyContentLabel","_ref$initialTableStat","initialTableState","settingsManager","_ref$renderRow","renderRow","defaultRenderRow","highlightedItemId","noWidget","getRowCanExpand","_ref$onPageChange","_ref$totalCount","totalCount","_ref$isServerSidePagi","isServerSidePagination","enableRowSelection","disabledSelect","getIsSelectionEnabled","allColumns","lastSelectedId","table","getIsAllRowsSelected","indeterminate","getIsSomeRowsSelected","getToggleAllRowsSelectedHandler","getRowModel","rows","every","row","getCanSelect","cell","getIsSelected","getIsSomeSelected","getToggleSelectedHandler","shiftKey","_table$getRowModel","rowsById","rowsToToggle","idA","idB","range","foundStart","foundEnd","getRowRange","isLastSelected","toggleSelected","enableHiding","tableInstance","useReactTable","initialState","pagination","pageIndex","sorting","sortBy","globalFilter","search","defaultColumn","enableColumnFilter","sortingFn","autoResetExpanded","globalFilterFn","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getFacetedRowModel","getFacetedUniqueValues","getFacetedMinMaxValues","getExpandedRowModel","getColumnCanGlobalFilter","manualPagination","getSortedRowModel","tableState","goToPage","handlePageChangeRef","useRef","useLayoutEffect","current","highlightedItemIdRef","rowID","totalRows","_chunk","sub","getRowPage","useGoToHighlightedRow","handlePageChange","selectedItems","getSelectedRowModel","original","Container","setGlobalFilter","setSearch","_renderTableActions","_renderTableSettings","DatatableContent","_renderRow","onSortChange","setSortBy","setPageSize","getPageCount","setPageIndex","TableRow","cells","getVisibleCells","columnId","filterValue","getValue","filterValueLower","headerGroups","getHeaderGroups","pageRowModel","headerGroup","HeaderRow","Content","emptyContent","MultipleSelectionFilter","_ref$value","filterKey","_ref$menuTitle","menuTitle","Filter","MenuPopover","filterHOC","_ref2$column","getFilterValue","setFilterValue","flatRows","add","valueAsArray","buildNameColumn","nameKey","idKey","path","idParam","accessorKey","renderValue","enableSorting","createRowContext","RowProvider","useRowContext","_ref$placeholder","_useDebounce2","useDebounce","setSearchValue","Search","useSearchBarState","_useLocalStorage2","useLocalStorage","sessionStorage","MainComponent","TableActions","TableTitleActions","TableContainer","HeaderCell","TableHeaderCell","SettingsMenu","TableSettingsMenu","TableTitle","TableHeaderRow","TableContent","TableFooter","_ref$noWidget","_ref$isLoading","_ref$emptyContent","TableContentOneColumn","canSort","render","onSortClick","isSorted","_ref$isSortedDesc","isSortedDesc","renderFilter","SortWrapper","_ref2$onClick","_ref2$isSortedDesc","sortable","sortingActive","TableHeaderSortIcons","sorted","descending","TableColumnHeaderAngular","colTitle","_ref3$isSortedDesc","sortDirection","getIsSorted","_header$column$column","_header$column$column2","getCanSort","toggleSorting","flexRender","getContext","getCanFilter","_header$column$column3","SortDownIcon","activeSortIcon","sortIcon","SortUpIcon","quickActions","MoreVertical","TableSettingsMenuAutoRefresh","isCheckVisible","setIsCheckVisible","isEnabled","alertVisible","alertHidden","check","onTransitionEnd","hiddenColumnsSettings","hiddenColumns","setHiddenColumns","refreshableSettings","autoRefreshRate","setAutoRefreshRate","createPersistedStore","storageKey","initialSortBy","sortableSettings","paginationSettings","useRepeater","refreshRate","onRefresh","_arrayWithHoles","_i","_s","_e","_r","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","intervalId","setIntervalId","stopRepeater","useCallback","clearInterval","startRepeater","setInterval","useTableState","store","_useSearchBarState2","useTableStateWithoutStorage","defaultSortKey","_useState4","_useState6","ButtonSelector","group","OptionItem","_ref$bold","bold","defaultRef","resolvedRef","AdvancedMode","onSimpleModeClick","editorValue","convertToArrayOfStrings","List","parseDotEnvFile","readFileAsText","reader","FileReader","readAsText","onload","onerror","InputLabeled","InputGroup","Addon","SimpleMode","onAdvancedModeClick","InputList","isAddButtonHidden","Plus","FileEnv","onChooseFile","FormError","partial","setFile","fileTooBig","accept","EnvironmentVariablesFieldset","simpleMode","setSimpleMode","envVarValidation","array","EnvironmentVariablesPanel","explanation","showHelpMessage","FormSection","VALUE_REGEX","KEY_VALUE_REGEX","NEWLINES_REGEX","src","parseArrayOfStrings","variableString","parsedKeyValArr","_ref$required","fileRef","createRef","fileInput","event","files","click","fileButton","Upload","_ref$tooltip","setTooltipHtmlMessage","sizeClassLabel","sizeClassChildren","_ref$titleSize","titleSize","_ref$isFoldable","isFoldable","setIsExpanded","FormSectionTitle","ChevronUp","ChevronRight","tailwindTitleSize","useInputGroupContext","ButtonWrapper","_ref$itemBuilder","itemBuilder","defaultItemBuilder","_ref$renderItem","renderItem","renderDefaultItem","_ref$addLabel","addLabel","_ref$itemKeyGetter","itemKeyGetter","movable","textTip","_ref$isAddButtonHidde","ariaLabel","isAddButtonVisible","itemLine","hasError","handleChangeItem","handleMove","handleMoveUp","ArrowUp","handleMoveDown","ArrowDown","handleRemoveItem","newItem","checkValidIndex","targetIndex","arrayMove","fromIndex","newItemValue","newItems","DefaultItem","defaultItem","isMultiProps","MultiSelect","SingleSelect","isClearable","bindToBody","components","selectedValue","_first","findSelectedOptions","ReactSelect","menuPortalTarget","valueArr","flatMap","isGroup","selectedOptions","_onChange2","_ref$isCreatable","isCreatable","ReactSelectCreatable","classNamePrefix","_excluded2","Switch","_ref$name","fieldClass","switchClass","toggleName","useCachedValidation","asyncValidate","valid","_validateForm","validate","strict","abortEarly","yupToFormErrors","mixed","fileValidation","withFileExtension","allowedExtensions","fileExtension","Dialog","buttons","requireString","setCount","countRef","retFn","_loop","button","timeout","intervalID","Modal","Header","openDialog","_openDialog","openModal","CloseButton","onClose","useModalContext","ariaLabelledBy","DialogOverlay","isOpen","DialogContent","Destructive","SwitchPrompt","_ref$confirmButton","switchLabel","_ref$defaultValue","setValue","confirm","buildCancelButton","_openSwitchPrompt","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","openConfirm","_openConfirm","cancelButtonLabel","confirmDestructive","confirmWebEditorDiscard","confirmDelete","confirmUpdate","_confirmUpdate","callback","confirmChangePassword","counter","_openModal","modal","unmountComponentAtNode","userAgent","STACK_NAME_VALIDATION_REGEX","confirmContainerDeletion","_confirmContainerDeletion","removeVolumes","startContainer","_startContainer","endpointId","urlBuilder","transformResponse","genericHandler","stopContainer","_stopContainer","recreateContainer","_recreateContainer","PullImage","restartContainer","_restartContainer","killContainer","_killContainer","pauseContainer","_x13","_pauseContainer","resumeContainer","_x14","_x15","_resumeContainer","renameContainer","_x16","_x17","_x18","_renameContainer","removeContainer","_x19","_x20","_x21","_removeContainer","_callee9","_yield$axios$delete","_context9","force","confirmImageExport","_confirmImageExport","getUniqueTagListFromImages","images","_uniq","image","RepoTags","imageContainsURL","buildImageFullURIFromModel","imageModel","registry","UseRegistry","Registry","ensureTag","Type","RegistryTypes","GITHUB","namespace","Github","UseOrganisation","OrganisationName","URL","buildImageURIForGithub","GITLAB","slash","Gitlab","ProjectPath","buildImageURIForGitLab","QUAY","Quay","buildImageURIForQuay","ANONYMOUS","buildImageURIForOtherRegistry","buildImageFullURIWithRegistry","defaultTag","buildImageFullURI","Image","confirmServiceForceUpdate","_confirmServiceForceUpdate","pullLatest","EDGE_ASYNC_INTERVAL_USE_DEFAULT","isDefault","defaultFieldSettings","snapshot","EdgeAsyncIntervalsForm","_ref$isDefaultHidden","isDefaultHidden","_ref$readonly","_ref$fieldSettings","fieldSettings","pingIntervalOptions","useIntervalOptions","snapshotIntervalOptions","commandIntervalOptions","PingInterval","SnapshotInterval","CommandInterval","intervals","edgeAsyncIntervalsValidation","oneOf","checkinIntervalOptions","EdgeCheckinIntervalField","_ref$label","currentTarget","OsSelector","os","Linux","LayoutGrid","ScriptTabs","edgeKey","edgeId","commands","platform","_ref$asyncMode","asyncMode","_ref$onPlatformChange","onPlatformChange","agentDetails","useAgentDetails","agentSecret","agentVersion","cmd","NomadTokenField","_useFormikContext","useFormikContext","authEnabled","nomadToken","Field","EdgeScriptSettingsFieldset","isNomadTokenVisible","hideIdGetter","showMetaFields","GroupField","EdgeGroupsSelector","edgeGroupsIds","isGroupVisible","Dynamic","horizontal","tagsIds","edgeIdGenerator","tlsEnabled","allowSelfSignedCertificates","edgePropertiesFormInitialValues","envVars","EdgeScriptForm","edgeInfo","showOsSelector","Formik","shape","nomadValidation","commandsTabs","k8sLinux","useAsyncMode","agentShortVersion","getAgentShortVersion","allEnvVars","buildEnvVars","metaEnvVars","idEnvVar","edgeIdVar","selfSigned","swarmLinux","env","buildDockerEnvVars","buildDefaultDockerEnvVars","standaloneLinux","nomadLinux","_properties$nomadToke","swarmWindows","standaloneWindow","moreVars","allowSelfSignedCerts","ENV_VAR_SEPARATOR","VAR_LIST_SEPARATOR","fieldName","initialOptions","setOptions","settingsQuery","useSettings","getEdgeGroups","_getEdgeGroups","useEdgeGroups","_ref$isGroupVisible","selector","InnerSelector","items","valueGroups","StatusType","DeploymentType","EditorType","debouncedValue","setDebouncedValue","onChangeDebounces","_debounce","useEnvironmentId","useCurrentStateAndParams","withLimitToBE","defaultPath","isBE","go","useLimitToBE","localStoragePrefix","storage","setItem","getItem","useStateWrapper","setInputValue","updateInputValue","UserContext","useCurrentUser","useAuthorizations","authorizations","forceEnvironmentId","adminOnlyCE","hasAuthorizations","isEnvironmentAdmin","Authorized","_ref$adminOnlyCE","_ref$childrenUnauthor","childrenUnauthorized","tokenPayload","userQuery","useLoadUser","Infinity","providerState","isErrorType","newPort","serviceName","targetPort","nodePort","generateIndexedName","appName","isNameUnique","services","service","generateUniqueName","initialIndex","uniqueName","serviceFormDefaultValues","Headless","Namespace","StackName","Ports","ClusterIP","ApplicationName","ApplicationOwner","Note","Ingress","Selector","generateNewIngressesFromFormPaths","oldIngresses","newServicesPorts","oldServicesPorts","_structuredClone","oldIngressPaths","ingressPaths","ingressPath","IngressName","newPortsWithIngress","_port$ingressPaths","newIngresses","structuredClone","oldIngressPath","_newMatchingIng$Paths","Path","newMatchingIng","ingress","oldPathIndex","Paths","prependWithSlash","Host","newIngIndex","newIngresspaths","servicePort","newIngressPath","_newMatchingIng$Paths2","ServiceName","Port","PathType","getIsRBACEnabled","_getIsRBACEnabled","getIngressControllerClassMap","_getIngressControllerClassMap","allowedOnly","controllerMaps","updateIngressControllerClassMap","_updateIngressControllerClassMap","ingressControllerClassMap","_yield$axios$put","typeOptions","KubernetesConfigurationKinds","CONFIGMAP","FileCode","SECRET","Lock","getIngresses","_getIngresses","ingresses","getIngressControllers","_getIngressControllers","_yield$axios$get3","ingresscontrollers","createIngress","_createIngress","updateIngress","_updateIngress","deleteIngresses","_deleteIngresses","ingressName","getServices","_getServices","clusterServices","useServicesForCluster","namespaceNames","settledServicesPromise","allSettled","refetchInterval","_options$autoRefreshR","useMutationDeleteServices","deleteServices","lookupApps","lookupapplications","getNamespaceServices","_getNamespaceServices","queryParams","_deleteServices","getMetricsForAllNodes","_getMetricsForAllNodes","nodes","getMetricsForNode","_getMetricsForNode","nodeName","_yield$axios$get4","node","getMetricsForAllPods","_getMetricsForAllPods","_yield$axios$get5","pods","getMetricsForPod","_getMetricsForPod","podName","_yield$axios$get6","pod","Option","HomepageFilter","_ref$filterOptions","filterOptions","placeHolder","useHomePageFilter","ownership","ResourceControlOwnership","authorizedUsers","authorizedTeams","RESTRICTED","AccessControlForm","hideTitle","formNamespace","accessControlEnabled","PUBLIC","ADMINISTRATORS","PRIVATE","EditDetails","AccessControlPanelDetails","authorizedTeamIds","resourceControl","resourceType","_ref$isAuthorisedToFe","isAuthorisedToFetchUsers","inheritanceMessage","parentType","resourceId","ResourceId","ResourceControlType","Service","InheritanceMessage","truncate","Volume","Stack","removeEndpointIdFromStackResourceId","getInheritanceMessage","_ref2$Ownership","Ownership","_ref2$UserAccesses","UserAccesses","restrictedToUsers","_ref2$TeamAccesses","TeamAccesses","restrictedToTeams","authorizedUserIds","u","useAuthorizedUsers","ra","UserId","TeamId","useTeams","teamsLength","unauthoisedTeams","teamsMessage","isFetched","userMessage","ownershipIcon","getOwnershipTooltip","stackName","firstUnderlineIndex","Info","AccessControlPanelForm","onCancelClick","onUpdateSuccess","_useCurrentUser","updateAccess","variables","applyResourceControlChange","accessControl","parseAccessControlFormData","_handleSubmit","validateOnChange","isSubmitting","Form","isPublicVisible","AccessControlPanel","disableOwnershipChange","_useReducer2","useReducer","isEditMode","toggleEditMode","_useUser","isInherited","inheritedVolume","inheritedContainer","inheritedFromStack","checkIfInherited","_useRestrictions","_useUser2","isPartOfRestrictedUsers","isLeaderOfAnyRestrictedTeams","ua","isTeamLeader","isSuccess","userMemberships","ta","TeamID","useRestrictions","isEditDisabled","Eye","_handleUpdateSuccess","publicOption","useOptions","nonAdminOptions","AccessTypeSelector","UsersField","TeamsField","overrideTooltip","_ref$isPublicVisible","_useLoadState","useLoadState","partialValues","withNamespace","ownershipParameters","parseOwnershipParameters","updateResourceControl","_createResourceControl","createResourceControl","applyResourceControl","accessControlData","subResourcesIds","_updateResourceControl","resourceControlId","ResourceControlViewModel","_createClass","Public","System","determineOwnership","adminOnly","publicOnly","administratorsOnly","public","currentUserId","defaultValues","createGitCredential","_createGitCredential","gitCredential","buildGitUrl","getGitCredentials","_getGitCredentials","useGitCredentials","useCreateGitCredentialMutation","credentialId","getTemplateVariables","templateStr","Mustache","validateAndParse","intersectVariables","newVariables","oldVariablesWithLabel","_uniqBy","_ref5","renderTemplate","definitions","_ref6","_ref7","definition","def","escape","t","getGroups","_getGroups","groups","useGroups","getEnvironments","_getEnvironments","limit","_ref$sort","_ref$query","totalAvailable","updateAvailable","by","order","tagIds","endpointIds","getAgentVersions","_getAgentVersions","getEndpoint","_getEndpoint","endpoint","snapshotEndpoints","_snapshotEndpoints","deleteEndpoint","_deleteEndpoint","arrayToJson","json2formData","formData","FormData","append","registries","versionQuery","useSystemStatus","Version","AgentSecret","useEnvironment","ENVIRONMENTS_POLLING_INTERVAL","SortOptions","isSortType","refetchIfAnyOffline","Status","EnvironmentStatus","Down","useEnvironmentList","_ref$page","_ref$pageLimit","_useQuery","keepPreviousData","environments","EnvironmentType","EdgeTypes","EdgeAgentOnDocker","EdgeAgentOnKubernetes","EdgeAgentOnNomad","EnvironmentCreationTypes","PlatformType","BetaAlert","isHtml","betaIcon","getPlatformType","envType","KubernetesLocal","AgentOnKubernetes","Docker","AgentOnDocker","Azure","Nomad","isKubernetesEnvironment","getPlatformTypeName","isNomadEnvironment","isAgentEnvironment","isEdgeEnvironment","isEdgeAsync","Edge","AsyncMode","isUnassociatedEdgeEnvironment","EdgeID","isLocalEnvironment","environment","isDockerAPIEnvironment","getDashboardRoute","getPlatformRoute","_useField2","useField","fieldProps","metaProps","helpers","groupsQuery","Edition","FeatureState","FeatureId","process","currentEdition","CE","init","_init","edition","_features","K8S_RESOURCE_POOL_LB_QUOTA","BE","K8S_RESOURCE_POOL_STORAGE_QUOTA","K8S_CREATE_FROM_KUBECONFIG","KAAS_PROVISIONING","K8SINSTALL","NOMAD","ACTIVITY_AUDIT","EXTERNAL_AUTH_LDAP","HIDE_INTERNAL_AUTH","HIDE_INTERNAL_AUTHENTICATION_PROMPT","K8S_SETUP_DEFAULT","RBAC_ROLES","REGISTRY_MANAGEMENT","S3_BACKUP_SETTING","S3_RESTORE","TEAM_MEMBERSHIP","FORCE_REDEPLOYMENT","HIDE_AUTO_UPDATE_WINDOW","IMAGE_UP_TO_DATE_INDICATOR","STACK_PULL_IMAGE","STACK_WEBHOOK","CONTAINER_WEBHOOK","POD_SECURITY_POLICY_CONSTRAINT","HIDE_DOCKER_HUB_ANONYMOUS","CUSTOM_LOGIN_BANNER","K8S_EDIT_YAML","ENFORCE_DEPLOYMENT_OPTIONS","K8S_ADM_ONLY_USR_INGRESS_DEPLY","K8S_ROLLING_RESTART","K8S_ANNOTATIONS","CA_FILE","K8S_REQUIRE_NOTE_ON_APPLICATIONS","selectShow","VISIBLE","LIMITED_BE","HIDDEN","withEdition","CredentialSelector","_gitCredentialsQuery$","gitCredentials","NewCredentialForm","SaveCredential","NewCredentialName","AuthFieldset","isAuthExplanationVisible","_useDebounce","RepositoryUsername","username","setUsername","_useDebounce3","RepositoryPassword","password","_useDebounce4","setPassword","RepositoryAuthentication","RepositoryGitCredentialID","gitAuthValidation","isAuthEdit","auth","IntervalField","_useCaretPosition","setStart","setEnd","updateCaret","_node$current","selectionStart","selectionEnd","setSelectionRange","useCaretPosition","intervalValidation","WebhookSettings","docsLink","truncateLeftRight","ForceDeploymentSwitch","AutoUpdateSettings","environmentType","showForcePullImage","baseWebhookUrl","webhookId","webhookDocs","RepositoryMechanism","RepositoryFetchInterval","ForcePullImage","RepositoryAutomaticUpdatesForce","AutoUpdateFieldset","_ref$isForcePullVisib","isForcePullVisible","webhooksDocs","RepositoryAutomaticUpdates","parseAutoUpdateResponse","Interval","Webhook","ForceUpdate","transformAutoUpdateViewModel","viewModel","autoUpdateValidation","autoUpdates","mechanism","RepositoryWebhookId","_searchRepo","PathSelector","model","searchTerm","setSearchTerm","creds","getAuthentication","repository","RepositoryURL","reference","RepositoryReferenceName","tlsSkipVerify","TLSSkipVerify","searchResults","searchRepo","retry","cacheTime","useSearch","Boolean","RepositoryURLValid","Combobox","ComboboxInput","ComboboxPopover","ComboboxList","ComboboxOption","ComposePathField","isCompose","isDockerStandalone","_useStateWrapper2","_checkRepo","_options$creds","gitCredentialId","GitFormUrlField","onChangeRepositoryValid","setForce","repoStatusQuery","onSettled","checkRepo","useCheckRepo","debouncedOnChange","errorMessage","RefreshCcw","AdditionalFileField","GitForm","_ref$environmentType","_ref$deployMethod","deployMethod","_ref$isDockerStandalo","isAdditionalFilesFieldVisible","_ref$errors","RefField","isUrlValid","ComposeFilePathInRepository","AdditionalFiles","AutoUpdate","TimeWindowDisplay","validateGitForm","_validateGitForm","buildGitValidationSchema","_unused","refFieldValidation","nullable","InfoPanel","configFilePath","_ref$additionalFiles","additionalFiles","_listRefs","_data","RefSelector","stackId","_useGitRefs","listRefs","useGitRefs","refs","unshift","Wrapper","tip","TimeWindowDisplayWrapper","currentEnvQuery","useCurrentEnvironment","ChangeWindow","Enabled","timezone","moment","guess","isDST","_utcToTime","utcTime","parseInterval","startTime","tz","endTime","utcToTime","StartTime","EndTime","startTimeLocal","endTimeLocal","_parseInterval","startTimeUtc","endTimeUtc","shortTime","parseTime","originalTime","_originalTime$split2","startHour","startMin","setHours","setMinutes","getFilePreview","_getFilePreview","FileContent","confirmEnableTLSVerify","LicenseType","listeners","invalidated","_getLicenseInfo","_info","_axiosError$response5","lastLoaded","abs","listener","useIntegratedLicenseInfo","_useNodesCount","useNodesCount","isLoadingNodes","_useNodesCount$data","nodesCount","_useLicenseInfo","getLicenseInfo","Trial","licenseInfo","usedNodes","newUserNotifications","removeNotifications","notificationIds","experimental","getPublicSettings","_getPublicSettings","getSettings","_getSettings","updateSettings","_updateSettings","_updateDefaultRegistry","defaultRegistry","subResource","useUpdateSettingsMutation","useUpdateDefaultRegistrySettingsMutation","updateDefaultRegistry","useExperimentalSettings","getExperimentalSettings","_getExperimentalSettings","useUpdateExperimentalSettingsMutation","updateExperimentalSettings","_updateExperimentalSettings","queryKey","getNodesCount","_getNodesCount","getSystemStatus","_getSystemStatus","retryDelay","useIsDemo","DemoEnvironment","onlyLedTeams","_ref$select","getTeams","useTeam","getTeam","useTeamMemberships","getTeamMemberships","useAddMemberMutation","teamId","userIds","createTeamMembership","Member","useRemoveMemberMutation","teamMemberships","UserID","deleteTeamMembership","useUpdateRoleMutation","updateTeamMembership","_createTeamMembership","_deleteTeamMembership","_updateTeamMembership","_getTeams","_getTeam","deleteTeam","_deleteTeam","createTeam","_createTeam","leaders","leaderId","_getTeamMemberships","ReactComponent","ROOT_PATH","HostBrowserController","HostBrowserService","FileSaver","goToParent","browse","confirmDeleteFile","isRoot","getRelativePath","getFilesForPath","getFilesForPathAsync","downloadFile","downloadFileAsync","renameFile","renameFileAsync","deleteFile","deleteFileAsync","onFileSelectedForUpload","onFileSelectedForUploadAsync","rootPathRegex","parentPath","folder","buildPath","ls","newName","filePath","newFilePath","rename","fileName","downloadData","Blob","saveAs","confirmed","$onInit","_join","_slice","lastIndexOf","onFileUploaded","refreshList","autoNgTemplateLoaderTemplate1","templateUrl","NodeSelectorController","AgentService","agents","NodeName","VolumeBrowserController","volumeId","isUploadEnabled","HttpRequestHelper","VolumeBrowserService","renameAsync","download","downloadAsync","up","parentFolder","AgentViewModel","IPAddress","NodeRole","AgentFactory","$resource","StateManager","getAgentApiVersion","factory","BrowseFactory","browseGetResponse","responseType","AgentDockerhub","limits","registryId","HostFactory","AgentPingFactory","interceptor","resource","responseError","AgentServiceFactory","Agent","AgentVersion1","agentApiVersion","$promise","hostInfo","HostBrowserServiceFactory","Browse","newPath","CurrentFilePath","NewFilePath","onProgress","AgentPingService","AgentPing","VolumeBrowserServiceFactory","BrowseVersion1","getBrowseService","volumeID","basePath","excludedPaths","$analyticsProvider","$windowProvider","$window","$get","pageTracking","trackRelativePath","api","setCustomVariable","varIndex","varName","scope","deleteCustomVariable","trackSiteSearch","searchCount","trackGoal","goalID","revenue","trackLink","linkType","registerSetUsername","registerPageTrack","registerEventTrack","registerExceptionTrack","stack","onStartupAngular","$rootScope","$state","LocalStorage","cfpLoadingBar","$transitions","originalSet","onBefore","$","ajaxSend","jqXhr","jqOpts","hasNoContentType","contentType","setRequestHeader","getJWT","element","innerHTML","head","prepend","configApp","$urlRouterProvider","$httpProvider","localStorageServiceProvider","jwtOptionsProvider","$uibTooltipProvider","$compileProvider","cfpLoadingBarProvider","setPrefix","tokenGetter","whiteListedDomains","defaults","patch","Terminal","applyAddon","fit","setTriggers","mouseenter","focus","outsideClick","includeSpinner","parentSelector","latencyThreshold","otherwise","TRUNCATE_LENGTH","truncateContainerName","setTruncateContainerName","hiddenQuickActions","setHiddenQuickActions","createOwnershipColumn","accessorFn","_row$ResourceControl","ResourceControl","columnHelper","createColumnHelper","created","accessor","isoDateFromTimestamp","Created","host","linkProps","shortImageName","trimSHASum","ip","IP","TableSettingsContext","useTableSettings","getContextType","TableSettingsProvider","Names","shortName","_truncate","_createRowContext","ports","private","publicUrl","PublicURL","ExternalLink","ContainerStatus","ContainerQuickActions","taskId","containerId","TaskQuickActions","isActive","Starting","Running","Healthy","Unhealthy","showQuickActionLogs","showQuickActionInspect","showQuickActionStats","BarChart","showQuickActionExec","showQuickActionAttach","Paperclip","display","_settings$hiddenQuick","wrapperState","someOn","isAuthorized","hasHealthCheck","statusClassName","Paused","Stopped","Dead","Exited","getClassName","filterFn","list","dockerQueryKeys","filters","gpus","_getContainerGpus","gpusQuery","getContainerGpus","useContainerGpus","useColumns","isHostColumnVisible","isGPUsColumnVisible","ContainersDatatableActions","isAddActionVisible","selectedItemCount","hasPausedItemsSelected","State","hasStoppedItemsSelected","hasRunningItemsSelected","executeActionOnContainerList","onStartClick","Play","onStopClick","Square","onKillClick","Slash","onRestartClick","onPauseClick","Pause","onResumeClick","_onRemoveClick","onRemoveClick","isOneContainerRunning","removeSelectedContainers","_executeActionOnContainerList","containers","successMessage","_removeSelectedContainers","cleanVolumes","ContainersDatatableSettings","isRefreshVisible","parseViewModel","_response$Portainer","_response$Portainer2","_response$Portainer3","_Object$values$","_response$NetworkSett","_response$Ports","_response$Names","Portainer","NetworkSettings","Networks","labels","Labels","createStatus","PublicPort","PrivatePort","names","StatusText","Gpus","useShowGPUsColumn","environmentID","isDockerStandaloneQuery","_info$Swarm","_info$Swarm2","Swarm","NodeID","ControlAvailable","enableGPUManagementQuery","EnableGPUManagement","QuickActionsSettings","actions","buildAction","useContainers","_getContainers","getContainers","_ref2$all","settingsStore","TemplateListDropdown","_option$label","TemplateListDropdownAngular","TemplateListSortAngular","onDescending","sortByDescending","sortByButton","NvidiaCapabilitiesOptions","_props$data","MultiValueRemove","selectProps","StatusMode","healthy","unhealthy","starting","GpusList","imageId","Used","humanize","repoTags","tableKey","RemoveButtonMenu","positionRight","MenuItem","ImportExportButtons","isExportInProgress","onExportClick","Download","dateTime","isoDate","isFilesTableMeta","EditForm","originalName","onSave","onReset","isEdit","custom","onRename","setIsEdit","Dir","onBrowse","Folder","FileIcon","hideIfCustom","onDownload","FilesTable","onGoToParent","isUploadAllowed","f","isEditState","setIsEditState","CornerLeftUp","Size","ModTime","editState","columnVisibility","_e$target$files","Command","Entrypoint","ExposedPorts","Volumes","volume","Env","getPairKey","getPairValue","health","Server","HeartPulse","FailingStreak","Log","Output","containersQuery","Box","selectedRows","col","columnsToHide","getAllColumns","getCanHide","setColumnVisibility","_ref$gpus","_ref$usedGpus","usedGpus","usedAllGpus","enableGpuManagement","gpu","onChangeValues","gpuCmd","devices","selectedGPUs","deviceStr","caps","capabilities","gpuValue","capValue","backspaceRemovesValue","actionMeta","_actionMeta$option","useSpecific","defColumns","hostColumn","Clipboard","relativePath","Clock","componentsModule","_getNetwork","networkId","network","_deleteNetwork","_disconnectContainer","Force","systemNetworks","isSystemNetwork","networkName","NetworkDetailsTable","_network$IPAM","_network$IPAM2","onRemoveNetworkClicked","allowRemoveNetwork","ipv4Configs","DockerNetworkHelper","getIPV4Configs","IPAM","Config","ipv6Configs","getIPV6Configs","Share2","Driver","Scope","Attachable","Internal","getConfigDetails","Subnet","Gateway","IPRange","getAuxiliaryAddresses","AuxiliaryAddresses","configValue","auxiliaryAddresses","NetworkOptionsTable","networkEntries","tableHeaders","NetworkContainersTable","networkContainers","disconnectContainer","IPv4Address","IPv6Address","MacAddress","ContainersDatatable","IsPortainer","autoNgTemplateLoaderTemplate2","autoNgTemplateLoaderTemplate3","autoNgTemplateLoaderTemplate4","autoNgTemplateLoaderTemplate5","autoNgTemplateLoaderTemplate6","autoNgTemplateLoaderTemplate7","containersModule","isAgent","envInfoQuery","isSwarmManager","$stateRegistryProvider","register","views","viewsModule","_network$Portainer","_useCurrentStateAndPa2","networkQuery","getNetwork","useNetwork","deleteNetworkMutation","deleteNetwork","filterContainersInNetwork","Containers","_onRemoveNetworkClicked","Network","Options","reactModule","autoNgTemplateLoaderTemplate8","autoNgTemplateLoaderTemplate9","autoNgTemplateLoaderTemplate10","autoNgTemplateLoaderTemplate11","autoNgTemplateLoaderTemplate12","autoNgTemplateLoaderTemplate13","autoNgTemplateLoaderTemplate14","autoNgTemplateLoaderTemplate15","autoNgTemplateLoaderTemplate16","autoNgTemplateLoaderTemplate17","autoNgTemplateLoaderTemplate18","autoNgTemplateLoaderTemplate19","autoNgTemplateLoaderTemplate20","autoNgTemplateLoaderTemplate21","autoNgTemplateLoaderTemplate22","autoNgTemplateLoaderTemplate23","autoNgTemplateLoaderTemplate24","autoNgTemplateLoaderTemplate25","autoNgTemplateLoaderTemplate26","autoNgTemplateLoaderTemplate27","autoNgTemplateLoaderTemplate28","autoNgTemplateLoaderTemplate29","autoNgTemplateLoaderTemplate30","autoNgTemplateLoaderTemplate31","abstract","onEnter","EndpointService","SystemService","PortainerEndpointTypes","DockerEnvironment","AgentOnDockerEnvironment","EdgeAgentOnDockerEnvironment","Up","checkEndpointStatus","updateEndpoint","updateEndpointStatus","updateEndpointState","redirect","environmentName","inherit","configs","controllerAs","configCreation","dashboard","events","imageBuild","imageImport","networks","networkCreation","secrets","secret","secretCreation","serviceCreation","serviceLogs","stacks","stackContainer","stackCreation","swarm","swarmVisualizer","task","taskLogs","templates","volumes","volumeBrowse","volumeCreation","fileContent","ContainerCapabilitiesController","oldCapabilities","createOnChangeHandler","capability","allowed","$doCheck","capabilitiesOnChange","cap","ctrl","editModel","save","maximumRetryCount","updateRestartPolicy","agentCount","titleText","availableNetworks","joinNetworkAction","joinNetworkActionInProgress","leaveNetworkActionInProgress","leaveNetworkAction","$controller","DatatableService","extend","expandedItems","expandAll","expandItem","expanded","itemCanExpand","Expanded","Highlighted","GlobalIPv6Address","hasExpandableItems","_filter","_forEach","setDefaults","prepareTableFromDataset","orderBy","storedOrder","getDataTableOrder","reverseOrder","textFilter","getDataTableTextFilters","onTextFilterChange","storedFilters","getDataTableFilters","storedSettings","getDataTableSettings","headerset","showIpAddressColumn","accessToNodeDetails","directive","restrict","transclude","parentCtrl","allowCheckbox","allowExpand","RCO","showHostColumn","removeAction","refreshCallback","NetworkHelper","disableRemove","allowSelection","onSettingsRepeaterChange","Subs","filteredDataSet","serviceId","agentProxy","showTaskLogsButton","showQuickActionConsole","applyFilters","onStateFilterChange","filtered","availableStateFilters","showUpdateAction","showAddAction","ServiceService","ServiceHelper","ImageHelper","WebhookService","scaleAction","serviceToConfig","Model","Mode","Replicated","Replicas","update","Scale","ReplicaCount","actionCount","remove","webhooks","deleteWebhook","finally","updateAction","TaskTemplate","ContainerSpec","removeDigestFromRepository","showStackColumn","notAutoFocus","endpointPublicUrl","expandPreviouslyExpandedItem","storedExpandedItems","_find","storedId","updated","onColumnVisibilityChange","setColumnVisibilitySettings","setDataTableExpandedItems","expandItems","expandedItemCount","onDataRefresh","getDataTableExpandedItems","storedColumnVisibility","getColumnVisibilitySettings","showSlotColumn","showLogsButton","showBrowseAction","showUsedVolumes","showUnusedVolumes","dangling","onstateFilterChange","setDataTableFilters","hostDetails","engineDetails","disks","refreshUrl","browseUrl","hostFeaturesEnabled","engine","isBrowseEnabled","availability","originalValue","removeLabel","onChangedLabels","updateLabel","originalKey","NodeService","LabelHelper","managerAddress","hasChanges","managerRole","nodeLabels","updateNodeLabels","updateNodeAvailability","saveChanges","originalNode","Availability","fromKeyValueToLabelHash","updateNode","cancelChanges","porImageRegistryContainerController","DockerHubService","pullRateLimits","fetchRateLimits","setValidity","checkRateLimits","remaining","isDockerHubRegistry","isAuthenticated","rateLimitExceeded","porImageRegistryController","RegistryService","ImageService","onRegistryChange","onImageChange","DockerHubViewModel","$watch","isKnownRegistry","getRegistryURL","prepareAutocomplete","registryImages","_includes","_map","_replace","reg","_flatMap","imagesWithoutKnown","_difference","availableImages","DOCKERHUB","displayedRegistryURL","showDefaultRegistry","autoComplete","reloadRegistries","loadImages","inputClass","displayTimestamps","logCollectionChange","sinceTimestamp","lineCount","resourceName","availableSinceDatetime","subtract","copySupported","supported","logCollection","autoScroll","wrapLines","filteredLogs","selectedLines","handleLogsCollectionChange","handleLogsWrapLinesChange","handleDisplayTimestampsChange","copy","log","show","fadeOut","copySelection","clearSelection","selectLine","downloadLogs","logsAsString","applicationState","NetworkService","Authentication","requiredNodeSelection","DatatableState","requiredConfigSelection","SelectedNetworkConfig","onChangeScope","provider","apiVersion","hasNetworks","ConfigOnly","Sliders","MacvlanFormData","ParentNetworkCard","VolumesCIFSFormData","useCIFS","serverAddress","share","versions","versionsNumber","VolumesNFSFormData","useNFS","mountPoint","includeString","_toLower","str","hash","charCodeAt","strToHash","hashToHexColor","labelStyle","Ghost","ConstraintsHelper","availableNodes","matchesServiceConstraints","tasks","runningTasks","DesiredState","nodeId","Hostname","createdBy","fullName","versionIdx","flattenConfig","ConfigID","ConfigName","File","FileName","Uid","UID","Gid","GID","credSpec","Runtime","configConfig","ConstraintModel","op","patterns","matchesConstraint","constraint","matchesLabel","extractValue","extractCustomLabelKey","baseLabelKey","transformConstraints","constraints","nodeHostname","nodeRole","engineLabels","Constraints","EngineLabels","portPattern","parsePort","parsePortRange","portRange","stringPorts","intPorts","isValidPortRange","createPortRange","portRangeText","hostIp","colonIndex","substr","startPort","endPort","helper","splitargs","elem","HostConfig","NetworkMode","NetworkingConfig","EndpointsConfig","binds","Mounts","mount","Source","containerPath","Destination","RW","Binds","portBindings","portBinding","containerPort","hostPort","containerPortRange","startHostPort","endHostPort","hostAndPort","hostPortRange","bindKey","HostIp","HostPort","portBindingKeys","_keys","portBindingKeysByProtocol","_groupBy","portKey","portBindingKeysByHostIp","sortedPortBindingKeys","_orderBy","previousHostPort","previousContainerPort","portKeySplit","bindingHostPort","binding","_flatten","_trimStart","isValidTag","createImageConfigForContainer","fromImage","getImagesNamesForDownload","_isEmpty","fromLabelHashToKeyValue","added","labelKV","static","nodeToConfig","Spec","flattenSecret","SecretID","SecretName","secretConfig","Tasks","otherServicesTasks","ServiceId","UpdateConfig","EndpointSpec","keyValuePreferences","preferences","preference","strategy","Spread","SpreadDescriptor","keyValueConstraints","operator","operatorIndices","indexEquals","getOperator","humanDuration","nanos","duration","unit","asMilliseconds","conversionFromNano","logOptions","keyValueLogDriverOpts","ipHostEntries","keyValue","ContainerId","optionArray","mounts","j","ConfigViewModel","CreatedAt","UpdatedAt","Index","Data","decodeURIComponent","atob","b64DecodeUnicode","statusText","ContainerViewModel","ImageID","Checked","ContainerStatsViewModel","read","preread","memory_stats","privateworkingset","MemoryUsage","MemoryCache","NumProcs","num_procs","isWindows","stats","usage","cache","PreviousCPUTotalUsage","precpu_stats","cpu_usage","total_usage","PreviousCPUSystemUsage","system_cpu_usage","CurrentCPUTotalUsage","cpu_stats","CurrentCPUSystemUsage","CPUCores","percpu_usage","online_cpus","_values","blkio_stats","io_service_bytes_recursive","readData","BytesRead","writeData","BytesWrite","noIOdata","ContainerDetailsViewModel","Args","capDesc","SETPCAP","MKNOD","AUDIT_WRITE","CHOWN","NET_RAW","DAC_OVERRIDE","FOWNER","FSETID","KILL","SETGID","SETUID","NET_BIND_SERVICE","SYS_CHROOT","SETFCAP","SYS_MODULE","SYS_RAWIO","SYS_PACCT","SYS_ADMIN","SYS_NICE","SYS_RESOURCE","SYS_TIME","SYS_TTY_CONFIG","AUDIT_CONTROL","MAC_ADMIN","MAC_OVERRIDE","NET_ADMIN","SYSLOG","DAC_READ_SEARCH","LINUX_IMMUTABLE","NET_BROADCAST","IPC_LOCK","IPC_OWNER","SYS_PTRACE","SYS_BOOT","LEASE","WAKE_ALARM","BLOCK_SUSPEND","ContainerCapabilities","ContainerCapability","EventViewModel","Time","Details","eventAttr","Actor","Attributes","Action","extra","hasColon","exitCode","createEventDetails","ImageViewModel","Tag","Repository","RepoDigests","digest","VirtualSize","ImageBuildModel","buildLogs","stream","errorDetail","ImageDetailsViewModel","Parent","DockerVersion","Os","Architecture","Author","Cmd","ContainerConfig","ImageLayerViewModel","Order","CreatedBy","Comment","Tags","NetworkViewModel","ConfigFrom","NodeViewModel","Description","Engine","PlatformArchitecture","Platform","PlatformOS","OS","CPUs","Resources","NanoCPUs","Memory","MemoryBytes","EngineVersion","Plugins","Addr","ManagerStatus","Reachability","ManagerAddr","PluginViewModel","PorImageRegistryModel","SecretViewModel","ServiceViewModel","allTasks","Limits","LimitNanoCPUs","LimitMemoryBytes","Reservations","ReservationNanoCPUs","ReservationMemoryBytes","RestartPolicy","RestartCondition","Condition","RestartDelay","Delay","RestartMaxAttempts","MaxAttempts","RestartWindow","Window","LogDriver","LogDriverName","LogDriverOpts","Placement","Preferences","Platforms","containerSpec","ContainerLabels","Arguments","Groups","TTY","OpenStdin","ReadOnly","StopSignal","StopGracePeriod","HealthCheck","Hosts","DNSConfig","Secrets","Configs","Endpoint","VirtualIPs","UpdateParallelism","Parallelism","UpdateDelay","UpdateFailureAction","FailureAction","UpdateOrder","RollbackConfig","EditName","SwarmViewModel","TaskViewModel","Updated","Slot","ServiceID","NodeId","ContainerID","VolumeViewModel","Mountpoint","ResourceID","buildImage","ignoreLoadingBar","jsonObjectsToArrayHandler","buildImageOverride","commitContainer","repo","EndpointProvider","endpointID","logsHandler","top","exec","inspect","prune","resize","h","w","history","insert","imageGetResponse","deleteImageHandler","connect","disconnect","isJSON","jsonString","fromJson","rollback","btoa","since","until","dataUsage","Build","FileUploadService","deferred","defer","remote","dockerfile","uploadFiles","buildImageFromFiles","configId","ContainerServiceFactory","$timeout","withEndpointId","restartPolicy","maximumRetryCounts","MaximumRetryCount","updateLimits","MemoryReservation","MemorySwap","NanoCpus","configuration","createContainer","execConfig","stdout","stderr","timestamps","tail","parameters","containerStats","Exec","execId","ContainerService","withUsage","containerByImageId","layers","imageLayer","registryModel","authenticationDetails","encodedCredentials","imageConfiguration","ignoreErrors","pullImageAndIgnoreErrors","pullImageAndAcknowledgeErrors","forceRemoval","networkConfiguration","localNetworks","swarmNetworks","swarmAttachableNetworks","filteredNetworks","aliases","EndpointConfig","Aliases","Node","rawNode","Plugin","servicePlugins","systemOnly","pluginType","pluginVersion","system","plugins","aggregatedPlugins","systemPlugins","plugin","Interface","Types","volumePlugins","networkPlugins","loggingPlugins","Secret","secretId","serv","Task","VolumeHelper","driver","driverOptions","DriverOpts","createDriverOptions","volumeConfiguration","volumeConfigurations","createVolumeQueries","createVolume","ConfigsController","ConfigService","removeActionAsync","getConfigs","getConfigsAsync","CreateConfigController","$transition$","FormValidator","ResourceControlService","AccessControlData","AccessControlFormData","ConfigContent","formValidationError","isEditorDirty","editorUpdate","createAsync","onbeforeunload","displayCodeEditor","labelName","labelValue","prepareLabelsConfig","prepareConfigData","configData","unescape","encodeURIComponent","prepareConfiguration","validateAccessControl","userDetails","getUserDetails","onUpdateResourceControlSuccess","removeConfig","ContainerHelper","ExecService","SidebarService","socket","term","states","freeze","disconnected","connecting","connected","restcall","termWidth","cols","initTerm","resizeRestCall","resizefun","WebSocket","onopen","on","send","terminal_container","getElementById","setOption","onresize","$apply","isSidebarOpen","onmessage","write","onclose","loaded","containerCommands","$on","connectAttach","attachId","origin","k","resizeTTY","connectExec","isCustomCommand","customCommand","AttachStdin","AttachStdout","AttachStderr","Tty","commandStringToArray","createExec","close","dispose","autoconnectAttachView","initView","containerLabels","imageOS","handleIsCustomCommandChange","$filter","$analytics","SettingsService","PluginService","prepareResources","ShmSize","shmSize","round","toFixed","MemoryLimit","memoryLimit","memoryReservation","CpuLimit","oldContainer","findCurrentContainer","actionInProgress","alwaysPull","RegistryModel","stopAndRenameContainer","createNewContainer","connectToExtraNetworks","removeOldContainer","onCreationProcessFail","restoreOldContainerName","restoreError","stopContainerIfNeeded","CmdMode","prepareCmd","EntrypointMode","prepareEntrypoint","NetworkContainer","containerName","networkMode","IPAMConfig","IPv4","IPv6","_startsWith","fromContainer","dnsServers","DnsPrimary","DnsSecondary","Dns","ExtraHosts","prepareNetworkConfig","imageConfig","prepareImageConfig","preparePortBindings","PortBindings","Console","openStdin","tty","prepareConsole","envVarsUtils","prepareEnvironmentVariables","prepareVolumes","prepareLabels","Devices","pathOnHost","pathInContainer","PathOnHost","PathInContainer","CgroupPermissions","prepareDevices","logOpts","LogConfig","prepareLogDriver","notAllowed","getCapName","CapAdd","CapDrop","prepareCapabilities","sysctls","Sysctls","sysctl","prepareSysctls","gpuOptions","GPU","existingDeviceRequest","DeviceRequests","_pullAllBy","deviceRequest","Count","DeviceIDs","Capabilities","prepareGPUOptions","createAndStartContainer","newContainer","newContainerId","extraNetworks","connectionPromises","_forOwn","_has","connectContainer","analyticsAllowed","publicSettings","eventTrack","containerImage","sendAnalytics","settingUnlimitedResources","containerWebhookFeature","pullImageValidity","onAlwaysPullChange","handlePublishAllPortsChange","PublishAllPorts","handleAutoRemoveChange","AutoRemove","handlePrivilegedChange","Privileged","handleInitChange","Init","handleEnvVarChange","refreshSlider","$broadcast","onImageNameChange","setPullImageValidity","validity","addVolume","removeVolume","addPortBinding","removePortBinding","addExtraHost","removeExtraHost","addDevice","removeDevice","onGpuChange","addSysctl","removeSysctl","addLogDriverOpt","removeLogDriverOpt","fromContainerMultipleNetworks","resetNetworkConfig","handleResourceChange","showDeviceMapping","SecuritySettings","allowDeviceMappingForRegularUsers","shouldShowDevices","showSysctls","allowSysctlSettingForRegularUsers","shouldShowSysctls","areContainerCapabilitiesEnabled","allowContainerCapabilitiesForRegularUsers","checkIfContainerCapabilitiesEnabled","isAdminOrEndpointAdmin","availableVolumes","vol1","vol2","runningContainers","gpuUseAll","gpuUseList","logConfig","AccessControlEnabled","configFromContainer","commandArrayToString","sortAndCombinePorts","loadFromContainerPortBindings","loadFromContainerVolumes","netContainer","firstNetwork","extraHosts","loadFromContainerNetworkConfig","l","loadFromContainerLabels","dev","device","loadFromContainerDevices","loadFromContainerDeviceRequests","retrievePorRegistryModelFromRepository","loadFromContainerResources","hasCapability","loadFromContainerCapabilities","loadFromContainerSysctls","availableRuntimes","Runtimes","sliderMaxCpu","NCPU","sliderMaxMemory","MemTotal","allowBindMounts","allowBindMountsForRegularUsers","allowPrivilegedMode","allowPrivilegedModeForRegularUsers","loggingDrivers","availableLoggingDrivers","ConfirmRecreationModal","cannotPullImage","setPullLatest","_confirmContainerRecreation","Commit","activityTime","displayRecreateButton","displayCreateWebhookButton","commitInProgress","recreateContainerInProgress","joinNetworkInProgress","leaveNetworkInProgress","computeDockerGPUCommand","gpuStr","edit","newContainerName","StartedAt","utc","FinishedAt","portMapping","mapping","_sortBy","inSwarm","autoRemove","admin","allowHostNamespaceForRegularUsers","settingRestrictsRegularUsers","executeContainerAction","commitContainerAsync","kill","pause","unpause","restart","containerLeaveNetwork","containerJoinNetwork","commit","confirmRemove","cleanAssociatedVolumes","recreate","confirmContainerRecreation","DisplayTextView","containerInfo","$interval","repeater","isDefined","cancel","setUpdateRepeater","skipHeaders","unix","changeLogCollection","logCollectionStatus","$document","ChartService","updateNetworkChart","chart","rx","rx_bytes","tx","tx_bytes","UpdateNetworkChart","updateMemoryChart","UpdateMemoryChart","updateIOChart","noIOData","UpdateIOChart","updateCPUChart","possIntervals","parseFloat","windowsCpuUsage","calculateCPUPercentWindows","cpuPercent","cpuDelta","systemDelta","calculateCPUPercentUnix","UpdateCPUChart","networkChart","cpuChart","memoryChart","ioChart","containerTop","processInfo","networkStatsUnavailable","ioStatsUnavailable","changeUpdateRepeater","ready","networkChartCtx","CreateNetworkChart","cpuChartCtx","CreateCPUChart","memoryChartCtx","CreateMemoryChart","ioChartCtx","CreateIOChart","startChartUpdate","initCharts","Power","runningContainersFilter","stoppedContainersFilter","Heart","healthyContainersFilter","unhealthyContainersFilter","ImagesTotalSize","imagesTotalSize","PieChart","VolumeService","StackService","TagService","dismissInformationPanel","showStacks","buildGpusStr","gpuUseSet","gpusAvailable","has","exist","gpuAvailable","_str","endpointMode","allowStackManagementForRegularUsers","shouldShowStacks","showEnvUrl","EdgeAgentOnKubernetesEnvironment","containerStatusComponent","imagesTotalSizeComponent","volumeCount","networkCount","serviceCount","stackCount","gpuInfoStr","gpuFreeStr","endpointTags","TagIds","DockerFeaturesConfigurationController","limitedFeatureAutoUpdate","limitedFeatureUpToDateImage","enableHostManagementFeatures","allowVolumeBrowserForRegularUsers","disableBindMountsForRegularUsers","disablePrivilegedModeForRegularUsers","disableHostNamespaceForRegularUsers","disableStackManagementForRegularUsers","disableDeviceMappingForRegularUsers","disableContainerCapabilitiesForRegularUsers","disableSysctlSettingForRegularUsers","autoUpdateSettings","timeZone","onChangeField","onToggleAutoUpdate","onToggleGPUManagement","onGpusChange","onChangeEnableHostManagementFeatures","onChangeAllowVolumeBrowserForRegularUsers","onChangeDisableBindMountsForRegularUsers","onChangeDisablePrivilegedModeForRegularUsers","onChangeDisableHostNamespaceForRegularUsers","onChangeDisableStackManagementForRegularUsers","onChangeDisableDeviceMappingForRegularUsers","onChangeDisableContainerCapabilitiesForRegularUsers","onChangeDisableSysctlSettingForRegularUsers","enableGPUManagement","field","isContainerEditDisabled","validGpus","initialEnableGPUManagement","enableGPUManagementState","initialGPUs","numberOfGPUSAdded","numberOfGPUSRemoved","updateSecuritySettings","securitySettings","isDockerStandaloneEnv","jobs","versionDetails","releaseVersion","ApiVersion","rootDirectory","DockerRootDir","storageDriver","loggingDriver","LoggingDriver","buildEngineDetails","arch","OSType","OperatingSystem","kernelVersion","KernelVersion","totalCPU","totalMemory","agentHostInfo","PCIDevices","PhysicalDisks","BuildImageController","BuildService","BuildType","activeTab","ImageNames","Valid","Unique","UploadFile","DockerFileContent","onChangeBuildType","checkName","parts","repositoryRegExp","addImageName","removeImageName","imageNames","buildType","dockerfilePath","buildImageFromUpload","buildImageFromURL","dockerfileContent","buildImageFromDockerfileContent","buildImageFromDockerfileContentAndFiles","buildImageBasedOnBuildType","validImageNames","uiCanExit","selectAdditionalFiles","RegistryModalService","exportInProgress","sortType","sortReverse","toggleLayerCommand","layerId","toggleClass","toggle","tagImage","pushTag","registryModal","pushImage","pullTag","removeTag","deleteImage","removeImage","exportImage","downloadImages","loadRegistriesForDropdown","getImages","pullRateValid","confirmRemovalAction","downloadAction","isAuthorizedToDownload","uploadImage","imageIds","checkAuxiliaryAddress","excludedIP","gateway","prepareAuxiliaryAddresses","ipamConfig","ipFormValues","auxAddress","createNetwork","managerOperation","DriverOptions","IPV4","IPV6","Macvlan","availableNetworkDrivers","CheckDuplicate","EnableIPv6","addDriverOption","removeDriverOption","addIPV4AuxAddress","addIPV6AuxAddress","removeIPV4AuxAddress","IPV4AuxiliaryAddressesError","removeIPV6AuxAddress","IPV6AuxiliaryAddressesError","checkIPV4AuxiliaryAddress","checkIPV6AuxiliaryAddress","validIPV4","_reduce","validIPV6","onChangeInternal","enable","onChangeAttachable","prepareIPAMConfiguration","prepareDriverOptions","creationContext","selectedNetworkConfig","modifyNetworkConfigurationForMacvlanConfigFrom","selectedNodes","getNetworks","nonSwarmNetworks","_remove","grouped","_toArray","agent","getRole","_concat","groupSwarmNetworksManagerNodesFirst","IPV4Configs","IPV6Configs","$stateParams","transformPlugins","pluginsList","fetchJobs","buildHostDetails","nodeDetails","buildNodeDetails","DockerRegistryAccessController","GroupService","filterUsers","updateRegistryAccess","registryEndpointAccesses","endpointUsers","UserAccessPolicies","endpointTeams","TeamAccessPolicies","endpointGroupUsers","endpointGroup","endpointGroupTeams","userOrTeam","userAccess","UserAccessViewModel","teamAccess","TeamAccessViewModel","registryTo","viewReady","RegistryAccesses","GroupId","SecretService","encodeSecret","handleEncodeSecretChange","secretConfiguration","prepareSecretData","removeSecret","getSecrets","ConfigHelper","SecretHelper","commandToArray","EntryPoint","WorkingDir","ExtraNetworks","HostsEntries","PlacementConstraints","PlacementPreferences","CpuReservation","MemoryLimitUnit","MemoryReservationUnit","handleWebHookChange","PublishedPort","TargetPort","Protocol","PublishMode","addExtraNetwork","removeExtraNetwork","addHostsEntry","removeHostsEntry","Target","addConfig","checkIfConfigDuplicated","addSecret","overrideTarget","checkIfSecretDuplicated","addPlacementConstraint","removePlacementConstraint","addPlacementPreference","removePlacementPreference","addContainerLabel","removeContainerLabel","$invalid","$error","volumesAreValid","rcPromise","registryID","webhookPromise","createServiceWebhook","createNewService","Global","prepareSchedulingConfig","preparePortsConfig","prepareCommandConfig","prepareEnvConfig","volumeObject","VolumeOptions","DriverConfig","_uniqWith","_isEqual","prepareNetworks","hostsEntries","host_ip","keyVal","prepareHostsEntries","translateHumanDurationToNanos","prepareUpdateConfig","prepareConfigConfig","prepareSecretConfig","translateKeyValueToPlacementConstraints","translateKeyValueToPlacementPreferences","preparePlacementConfig","prepareResourcesCpuConfig","prepareResourcesMemoryConfig","prepareRestartPolicy","prepareLogDriverConfig","checkIfAllowedBindMounts","availableSecrets","availableConfigs","maxCpus","maxMemory","initSlidersMaxValuesBasedOnNodeData","$location","$anchorScroll","TaskService","TaskHelper","WebhookHelper","WebhookExists","updateInProgress","deletionInProgress","rollbackInProgress","lastVersion","originalService","previousServiceValues","buildChanges","ServiceLabels","EnvironmentVariables","ServiceContainerLabels","Editable","ServiceSecrets","ServiceConfigs","credSpecId","oldCredSpecId","Privileges","CredentialSpec","translateHostnameIPToHostsEntries","ServiceMounts","ServiceConstraints","ServicePreferences","translateKeyValueToLogDriverOpts","isUpdating","transformResources","v1","v2","translateLogDriverOptsToKeyValue","translateConstraintsToKeyValue","translatePreferencesToKeyValue","translateHostsEntriesToHostnameIP","translateServiceArrays","translateNanosToHumanDuration","transformDurations","serviceNetworks","_some","ingressNetwork","addr","webhook","webhookID","webhookURL","Token","associateContainerToTask","associateTasksToService","initialRegistryID","override","updateServiceAttribute","updateServiceArray","goToItem","addEnvironmentVariable","onChangeEnvVars","orgEnv","orgVar","serviceConfig","updateConfig","newSecret","filename","serviceSecret","updateContainerLabel","addMount","removeMount","onChangeMountType","updateMount","toggleMountReadOnly","isReadOnly","addNetwork","removeNetwork","removedElement","updateNetwork","updatePlacementConstraint","updatePlacementPreference","addPublishedPort","updatePublishedPort","removePortPublishedBinding","updateLogDriverOpt","updateLogDriverName","updateHostsEntry","onWebhookChange","updateWebhook","updateWebhookRegistryId","newRegistryID","registryChanged","updateServiceWebhook","copyWebhook","attribute","elements","originalImage","currentImage","mountsAreValid","rollbackService","updateService","removeService","forceUpdateService","filterNetworks","serviceNetwork","filterConfigs","extractNodeInfo","cpu","getNodes","CPU","processTotalCPUAndMemory","systemStatus","SystemStatus","node_count","node_offset","extractNodesInfo","extractSwarmInfo","prepareVisualizerData","visualizerData","assignServiceInfo","assignTasksToNode","ShowInformationPanel","DisplayOnlyRunningTasks","DisplayNodeLabels","handleChangeDisplayOnlyRunningTasks","changeDisplayOnlyRunningTasks","handleChangeDisplayNodeLabels","changeDisplayNodeLabels","changeShowInformationPanel","storeSwarmVisualizerSettings","showInfoPanel","getSwarmVisualizerSettings","displayOnlyRunningTasks","displayNodeLabels","loadState","BrowseVolumeController","NFSData","CIFSData","availableVolumeDrivers","onUseNFSChange","onUseCIFSChange","prepareNFSConfiguration","versionNumber","prepareCIFSConfiguration","createVolumeConfiguration","containerFilter","isCioDriver","volumeData","getVolumeDataFromContainer","containersUsingVolume","getVolumes","endpointProvider","endpointRole","attached","isVolumeUsedByAService","EdgeStackDeploymentTypeSelector","hasDockerEndpoint","hasKubeEndpoint","hasNomadEndpoint","allowKubeToSelectCompose","deploymentOptions","Compose","NomadIcon","PrivateRegistryFieldset","_ref$onChange","formInvalid","_ref$clearRegistries","clearRegistries","setChecked","setSelected","createStackFromFileContent","_createStackFromFileContent","dryRun","dryrun","useRegistries","queryOptions","fetcher","hideDefaultRegistryQuery","_settings$DefaultRegi","DefaultRegistry","Hide","hideDefault","useGenericRegistriesQuery","getRegistries","_getRegistries","PrivateRegistryFieldsetWrapper","onFieldError","dryRunMutation","registriesQuery","_matchRegistry","matchRegistry","mutateAsync","stackFileContent","edgeGroups","deploymentType","Registries","otherEditorConfig","searchCmdLabel","editorConfig","mac","lin","win","WebEditorForm","transformGitAuthenticationViewModel","GitCredentialID","Password","useValidateEnvironmentTypes","groupIds","endpointTypes","EndpointTypes","hasType","atLeastTwo","updateEdgeStackGit","_updateEdgeStackGit","_stack$AutoUpdate","updateStackMutation","saveCredentialsMutation","GitConfig","gitConfig","EdgeGroups","autoUpdate","refName","ReferenceName","authentication","EnvVars","_updateStackMutation$","InnerForm","onUpdateSettingsClick","_handleUpdateSettings","gitPath","ConfigFilePath","gitUrl","isUpdateVersion","updateVersion","saveCredentialsIfRequired","getPayload","privateRegistryId","_saveCredentialsIfRequired","credential","_registriesQuery$data","dirty","forms","_forms","handleContentChange","useManifestNamespaces","_useState3","cachedContent","setCachedContent","onEditorChange","edgeStack","setFieldError","_useCachedContent","setContentCache","getCachedContent","DeploymentForm","webhookEnabled","prePullImage","retryDeploy","columHelper","EdgeGroupAssociationTable","onClickRow","setPage","environmentsQuery","_groupsQuery$data","Group","_tagsQuery$data","_getEdgeStack","_rect","logsStatusQueryKey","edgeStackId","useLogsStatus","_getLogsStatus","getLogsStatus","collectLogs","_collectLogs","deleteLogs","_deleteLogs","Accept","_downloadLogs","contentDispositionHeader","LogsActions","logsStatusQuery","collectLogsMutation","downloadLogsMutation","deleteLogsMutation","useDeleteLogsMutation","collecting","loader","EnvironmentActions","Snapshots","ActionStatus","getStatusText","_getDashboardRoute","statusArray","StackStatus","Acknowledged","ImagesPulled","PausedDeploying","RollingBack","RolledBack","_last2","_last","TargetCommitHash","TargetFileVersion","endpointTargetVersionLabel","GitConfigURL","_status$DeploymentInf","DeploymentInfo","ConfigHash","_status$DeploymentInf2","_status$DeploymentInf3","FileVersion","_ref8","UpdatesAvailable","statusIcon","UpToDate","_env$StackStatus$Stat","_ref9","DeploymentReceived","RemoteUpdateSuccess","Removed","Pending","Deploying","Removing","getStateColor","_startCase","_edgeStackQuery$data","_edgeStackQuery$data2","_edgeStackQuery$data3","_edgeStackQuery$data5","param","parseParam","paramValue","edgeStackQuery","getEdgeStack","useEdgeStack","_useParamState2","statusFilter","setStatusFilter","edgeStackStatus","currentFileVersion","StackFileVersion","gitConfigURL","gitConfigCommitHash","_edgeStackQuery$data4","envId","envStatus","pendingStatus","EndpointID","envStatusSelectOptions","HardDrive","_edgeStack$Registries","UseManifestNamespaces","PrePullImage","RetryDeploy","of","types","excludeIds","LastCheckInDate","fromNow","useFilterStore","setEdgeGroups","setGroups","setTags","checkIn","setCheckIn","checkInOptions","edgeGroupsQuery","filterStore","_associateDevice","useLicenseOverused","moreNodes","integratedInfo","Essentials","updateEnvironmentRelations","_updateEnvironmentRelations","relations","createEdgeGroup","_createEdgeGroup","requestPayload","CreatableSelector","onCreate","_useField2$","onBlur","selectedValues","cur","findOption","_handleCreate","createMutation","newGroup","dynamic","createGroup","_createGroup","GroupSelector","_useCreateOnBlur","createValue","handleBlur","handleInputChange","onInputChange","clearInputValue","useCreateOnBlur","handleCreate","newTag","isAssignedToGroup","AssignmentDialog","assignRelationsMutation","edgeGroupQueryKeys","groupQueryKeys","hasPreAssignedEdgeGroups","_e$EdgeGroups","hasPreAssignedTags","hasPreAssignedGroup","overrideTags","overrideEdgeGroups","overrideGroup","createPayload","noValidate","overusedTooltip","associateMutation","ids","associateDevice","nodesCountQueryKey","useAssociateDeviceMutation","removeMutation","licenseOverused","_handleRemoveDevice","handleRemoveDevice","_handleAssociateAndAssign","handleAssociateAndAssign","handleAssociateDevice","_useEnvironments","filterByEnvironmentsIds","groupId","_edgeGroupsQuery$data","edgeDeviceUntrusted","excludeSnapshots","edgeCheckInPassedSeconds","environmentEdgeGroupsQuery","envs","_environmentEdgeGroup","_env$TagIds","useEnvironments","GenericDatatable","_getEdgeStacks","EdgeStackStatus","lastStatus","hasOldVersion","_getStatus","numDeployments","MinusCircle","hasDeploying","hasRunning","hasFailed","getStatus","NumDeployments","DeploymentCounter","total","getTooltip","getLabel","aggregatedStatus","tab","TableSettingsMenus","_deleteEdgeStack","edgeStackIds","deleteEdgeStack","_handleRemove","handleRemove","EdgeStacksDatatable","edgeStacksQuery","getEdgeStacks","useEdgeStacks","edgeStacks","stackStatus","Layers","WaitingRoomView","edgeStackModule","AssociatedEndpointsDatatableController","PaginationService","extendGenericController","totalFilteredDataset","paginationChanged","changePaginationLimit","updateKey","isFirstChange","newPageNumber","setPaginationLimit","paginatedItemLimit","setDataTableTextFilters","retrievePage","endpoints","totalFilteredDataSet","cronMethodOptions","Calendar","EdgeJobFormController","cronMethods","buildMethods","scheduleValues","displayed","cron","datetime","scheduleValue","cronMethod","cronRegex","onChangeEnvironments","onChangeGroups","onCronMethodChange","onBuildMethodChange","onChangeModel","defaultTime","CronExpression","cronToDatetime","Recurring","minutes","hours","month","formAction","strings","addLabelAction","removeLabelAction","formActionLabel","EdgeJobResultsDatatableController","autoRefresh","onCollectLogsClick","onDatasetChange","anyCollecting","LogsStatus","onDownloadLogsClick","onClearLogsClick","statusMap","EdgeStackStatusController","aggregateStatus","ok","acknowledged","tagOptions","groupTypeOptions","EdgeGroupFormController","dynamicQuery","tagsPartialMatch","onChangeTags","onChangeDynamic","onChangePartialMatch","PartialMatch","pageType","EdgeGroupsDatatableController","HasEdgeStack","EdgeJobResultsFactory","logFile","clearLogs","EdgeJobsFactory","EdgeJobService","EdgeJobs","EdgeJobResults","edgeJobId","results","ScheduleCreateRequest","createSchedule","ScheduleUpdateRequest","EdgeStacks","StackFileContent","createEdgeStack","repositoryOptions","FilePathInRepository","EdgeTemplateService","EdgeTemplates","edgeTemplates","fetch","stackFile","CreateEdgeGroupController","EdgeGroupService","endpointGroups","EdgeGroupsController","EditEdgeGroupController","updateGroup","CreateEdgeJobViewController","createEdgeJob","createEdgeJobFromFileContent","createEdgeJobFromFileUpload","EdgeJobController","showEditorTab","updateAsync","downloadLogsAsync","collectLogsAsync","clearLogsAsync","refresh","refreshAsync","showEditor","edgeJob","updateEdgeJob","logFileName","associateEndpointsToResults","EndpointId","jobResults","oldFileContent","getScriptFile","EdgeJobsViewController","deleteJobsAsync","deleteJobs","edgeJobs","CreateEdgeStackViewController","EdgeStackService","FormHelper","StackFile","Method","StackType","createStack","createStackByMethod","createStackFromFileUpload","createStackFromGitRepository","onChangeDeploymentType","onEnvVarChange","buildAnalyticsProperties","methodLabel","templateName","selectedTemplate","checkIfEndpointTypes","selectValidDeploymentType","validTypes","_right","right","_intersection","formIsInvalid","createEdgeStackView","DockerComposeFormController","methodOptions","onChangeFileContent","onChangeFile","onChangeTemplate","onChangeMethod","onChangeFormValues","edgeTemplate","edgeStacksDockerComposeForm","kubeManifestForm","kubeDeployDescription","KubeManifestFormController","onChangeUseManifestNamespaces","EditEdgeStackViewController","isStackDeployed","deployStack","deployStackAsync","originalFileContent","initiallyContainsKubeEnv","isComposeStack","updateStack","createModule","i18n","Backend","LanguageDetector","initReactI18next","debug","fallbackLng","interpolation","escapeValue","PortsMappingField","ArrowRight","azureErrorParser","subscriptions","subscriptionId","resourceGroups","resourceGroup","resourceGroupName","containerGroups","containerGroup","containerGroupName","getContainerInstanceProvider","_getContainerInstanceProvider","resourceTypes","_ref2$locations","locations","buildSubscriptionsUrl","buildResourceGroupUrl","buildContainerGroupUrl","useResourceGroups","queries","useQueries","queryFn","_queryFn","getResourceGroups","q","isError","_getResourceGroups","useSubscriptions","_getSubscriptions","getSubscriptions","getSubscriptionResourceGroups","getSubscriptionLocations","containerInstanceProviders","_createContainerGroup","transformToPayload","_deleteContainerGroup","containerGroupId","containerPorts","addressPorts","osType","resources","requests","memoryInGB","ipAddress","allocatePublicIP","CreateContainerInstanceForm","_useLoadFormState","_useSubscriptions","isLoadingSubscriptions","_useResourceGroups","isLoadingResourceGroups","_useProvider","providers","useProvider","isLoadingProviders","useLoadFormState","_useFormState","subscriptionOptions","initSubscriptionId","getFirstValue","subscriptionResourceGroups","useFormState","createContainerGroup","_containerGroup$Porta","useCreateInstanceMutation","positive","accessControlSchema","enableReinitialize","_getContainerGroup","_getResourceGroup","_getSubscription","getContainerGroups","_getContainerGroups","_handleRemoveClick","handleRemoveClick","containerIds","_parseId","_match","resourceGroupId","parseId","subscriptionQuery","getSubscription","useSubscription","resourceGroupQuery","getResourceGroup","useResourceGroup","containerQuery","getContainerGroup","useContainerGroup","containerInstanceData","containerInstanceProperties","aggregateContainerInstance","subscriptionName","ContainerGroup","subscriptionsQuery","useContainerGroups","_useRemoveMutation","deleteMutation","containerGroupIds","deleteContainerGroup","useRemoveMutation","_subscriptionsQuery$d","resourceGroupsQuery","subscriptionsCount","resourceGroupsCount","Subscription","Package","azureModule","constantsModule","constant","_getDashboard","RunningStatus","running","stopped","EventsDatatable","History","Message","_getTaskEvents","allocationId","jobId","taskName","ret","_listJobs","ExpandableDatatableTableRow","renderSubRow","expandOnClick","toggleExpanded","getIsExpanded","ExpandableDatatable","_ref$getRowCanExpand","expandOnRowClick","NestedTable","NestedDatatable","taskStatus","taskGroup","allocationID","started","momentDate","AllocationID","TaskName","jobID","JobID","TasksDatatable","getToggleAllRowsExpandedHandler","getIsAllRowsExpanded","getCanExpand","enableGlobalFilter","JobsDatatableSettings","JobsDatatable","refreshData","getLeader","_getLeader","logsView","logsModule","nomadLogViewer","nomadModule","_dashboardQuery$data","_dashboardQuery$data2","_dashboardQuery$data$","_dashboardQuery$data3","_dashboardQuery$data4","_dashboardQuery$data5","_dashboardQuery$data6","dashboardQuery","getDashboard","RunningTaskCount","TaskCount","marginTop","Settings","Gauge","NodeCount","JobCount","GroupCount","Boxes","_useEvents","getTaskEvents","refetchOnWindowFocus","invalidateQuery","useEvents","isFetching","jobsQuery","listJobs","reloadData","_reloadData","refetch","initFeatureService","UI_ROUTER_REACT_HYBRID","analyticsModule","run","getNamespaces","_getNamespaces","namespaces","getSelfSubjectAccessReview","_getSelfSubjectAccessReview","namespaceName","verb","accessReview","_args3","spec","resourceAttributes","kind","invertSorting","New","isUnsavedChanges","oldIngressControllers","newIngressControllers","_oldIngressController","_newIngressController","getUpdatedIngressControllers","allRows","allow","selectedRowClassNames","ClassName","MultiValueLabel","innerProps","isOption","OptionComponent","Label","UserIcon","TeamIcon","ingressKeys","useIngresses","_settledIngressesProm","_settledServicesPromi","settledIngressesPromise","filteredIngresses","uniqueNamespacesWithIngress","updatedFilteredIngresses","flat","ing","ns","_ing$Paths","servicesInNamespace","serviceNamesInNamespace","updatedPaths","hasService","HasService","useIngressControllers","Card","ContainerPortInput","serviceIndex","portIndex","ServicePortInput","AppIngressPathForm","_ingressHostOptions$","_ingressPath$Path","ingressPathErrors","ingressHostOptions","onChangeIngressPath","onRemoveIngressPath","ingressesQuery","selectedIngress","setSelectedIngress","ingressHostOptionsWithCurrentValue","_ingressPath$Host","_ingressHosts$","_ingressPath$IngressN","_ingressPath$IngressN2","_ingressNames$","_newIngressPath$Host","ingressHosts","newIngressHostValue","ingressNames","newIngressNameValue","newIngressOption","ingressOption","AppIngressPathsForm","servicePortIngressPaths","onChangeIngressPaths","ingressPathsErrors","_useIngressController","ingressControllers","ingressControllersQuery","allowedIngressHostNameOptions","allowedIngressClasses","ic","_ing$Hosts","_allowedIngressHostNa","_allowedIngressHostNa2","_allowedIngressHostNa3","_allowedIngressHostNa4","newIngressPathsValue","newIngressPaths","_allowedIngressHostNa5","_allowedIngressHostNa6","ClusterIpServiceForm","onChangeService","servicePorts","onChangePort","newClusterIpPort","newServices","servicePortErrors","newServicePorts","ClusterIpServicesForm","clusterIPServiceCount","KubernetesApplicationPublishingTypes","CLUSTER_IP","_errors$index","newService","newServicePort","ServiceTabs","serviceTypeOptions","selectedServiceType","setSelectedServiceType","NodePortServiceForm","newNodePortPort","initiallyHasIngressPath","_servicePort$nodePort","NodePortServicesForm","nodePortServiceCount","NODE_PORT","LoadBalancerServiceForm","newLoadBalancerPort","LoadBalancerServicesForm","_useEnvironment","Configuration","UseLoadBalancer","loadBalancerEnabled","loadBalancerEnabledQuery","loadBalancerServiceCount","LOAD_BALANCER","ServiceTabLabel","serviceTypeLabel","serviceTypeCount","serviceTypeHasErrors","PublishingExplaination","ingressDiagram","alt","serviceTypeEnumsToValues","_serviceTypeEnumsToVa","getServiceForPort","systemNamespaces","isSystemNamespace","appOwnerLabel","appNoteAnnotation","appDeployMethodLabel","defaultDeploymentUniqueLabel","appRevisionAnnotation","unchangedAnnotationKeysForRollbackPatch","appKindToDeploymentTypeMap","Deployment","StatefulSet","DaemonSet","Pod","getNakedPods","deployments","daemonSets","statefulSets","appLabels","deployment","_deployment$spec","matchLabels","daemonSet","_daemonSet$spec","statefulSet","_statefulSet$spec","nakedPods","_pod$metadata","podLabels","appLabel","applicationIsKind","appKind","application","isExternalApplication","_application$metadata","getRunningPods","availableReplicas","_deployment$status$av","_deployment$status","totalReplicas","_deployment$status$re","_deployment$status2","replicas","unavailableReplicas","_deployment$status$un","_deployment$status3","numberAvailable","_daemonSet$status$num","_daemonSet$status","desiredNumberScheduled","_daemonSet$status$des","_daemonSet$status2","numberUnavailable","_daemonSet$status$num2","_daemonSet$status3","_statefulSet$status$r","_statefulSet$status","readyReplicas","getTotalPods","_application$status$r","_application$status","_application$status$d","_application$status2","_application$status$r2","_application$status3","bytesToReadableFormat","memoryBytes","units","unitIndex","memoryValue","matchLabelsToLabelSelectorValue","filterRevisionsByOwnerUid","revisions","uid","revision","_revision$metadata","ownerReferences","or","getRollbackPatchPayload","revisionList","previousRevision","controllerRevisions","sortedControllerRevisions","_a$metadata2","_b$metadata2","creationTimestamp","getTime","getPreviousControllerRevision","_previousRevision$spe","_revisionTemplate$met","_application$metadata2","_previousRevision$met","replicaSets","sortedReplicaSets","_a$metadata","_b$metadata","annotations","getPreviousReplicaSetRevision","revisionTemplate","applicationAnnotations","applicationAnnotationsInPatch","annotationKey","revisionAnnotations","revisionAnnotationsInPatch","annotationValue","getNamespacePods","_getNamespacePods","labelSelector","getPod","_getPod","patchPod","_patchPod","deletePod","_deletePod","_getApplicationsForCluster","applications","getApplicationsForNamespace","_getApplicationsForNamespace","_yield$Promise$all","_yield$Promise$all2","getApplicationsByKind","_getApplication","_yield$Promise$allSet","_yield$Promise$allSet2","getApplicationByKind","t1","_patchApplication","patchApplicationByKind","_patchApplicationByKind","_args5","_x22","_getApplicationByKind","_x23","_x24","_x25","_getApplicationsByKind","_getApplicationRevisionList","deploymentUid","replicaSetList","replicaSetsWithOwnerId","replicaSetsWithRevisionAnnotations","controllerRevisionList","controllerRevisionsWithOwnerId","getReplicaSetList","rs","_rs$metadata","getControllerRevisionList","_x31","_x32","_x33","_getReplicaSetList","_x34","_x35","_x36","_getControllerRevisionList","_callee10","_context10","getNamespaceHorizontalPodAutoscalers","_getNamespaceHorizontalPodAutoscalers","autoScalarList","applicationsForCluster","applicationRevisions","applicationServices","ingressesForApplication","applicationHorizontalPodAutoscalers","applicationPods","useApplicationsForCluster","environemtId","getApplicationsForCluster","useApplication","getApplication","usePatchApplicationMutation","patchApplication","_getStackFile","RestartApplicationButton","RedeployApplicationButton","app","redeployAppMutation","useRedeployApplicationMutation","_redeployApplication","redeployApplication","RotateCw","_app$spec2","_app$spec","RollbackApplicationButton","_app$metadata","_app$metadata2","appRevisionList","_x26","_x27","_x28","_x29","_x30","getApplicationRevisionList","useApplicationRevisionList","appRevisions","appDeployMethod","patchAppMutation","isRollbackNotAvailable","rollbackButton","_rollbackApplication","rollbackApplication","RotateCcw","_appRevisionList$item","ApplicationServicesTable","appServices","_service$metadata","_service$metadata2","_service$spec","_service$spec2","_service$spec3","_service$status","_service$spec4","_service$status2","_service$spec$externa","_service$spec5","_service$spec6","_service$spec7","_service$spec8","clusterIP","loadBalancer","externalIPs","ApplicationIngressesTable","namespaceIngresses","ingressPathsForAppServices","matchingIngressesPaths","_ingress$Paths","matchingIngressPaths","secure","TLS","getIngressPathsForAppServices","ApplicationAutoScalingTable","_appAutoScalar$spec","_appAutoScalar$spec2","_appAutoScalar$spec3","_useApplicationHorizo","_app$metadata3","horizontalPodAutoscalers","filteredHorizontalPodAutoscalers","horizontalPodAutoscaler","_horizontalPodAutosca","scaleTargetRef","scaleTargetRefName","scaleTargetRefKind","useApplicationHorizontalPodAutoscalers","appAutoScalar","Move","minReplicas","maxReplicas","targetCPUUtilizationPercentage","ApplicationEnvVarsTable","appEnvVars","podSpec","appContainers","appInitContainers","initContainers","appContainersEnvVars","_container$env","envVar","isInitContainer","appInitContainersEnvVars","_container$env2","getApplicationEnvironmentVariables","_envVar$valueFrom","_envVar$valueFrom2","_envVar$valueFrom3","_envVar$valueFrom4","_envVar$valueFrom5","_envVar$valueFrom6","_envVar$valueFrom7","_envVar$valueFrom8","Asterisk","valueFrom","fieldRef","fieldPath","secretKeyRef","Key","configMapKeyRef","ApplicationVolumeConfigsTable","containerVolumeConfigs","appVolumes","configMap","_volume$configMap","_volume$secret","_volume$configMap2","_volume$secret2","_container$volumeMoun","volConfigMapItems","volumeConfigName","secretName","containerVolumeMount","volumeMounts","volumeMount","getApplicationVolumeConfigs","mountPath","ApplicationPersistentDataTable","_useApplicationPods","appSelector","useApplicationPods","persistedFolders","appVolumeClaimVolumes","volumeClaimTemplates","vc","_vc$metadata","_vc$metadata2","persistentVolumeClaim","claimName","_v$persistentVolumeCl","_vc$persistentVolumeC","getVolumeClaimTemplates","appAllVolumes","appAllContainers","hostPath","matchingPods","_pod$spec","_pod$spec2","podContainers","podInitContainers","podContainer","getPodsMatchingContainer","isContainerInit","getPersistedFolders","dataAccessPolicy","getDataAccessPolicy","Database","persistedFolder","_persistedFolder$volu","_persistedFolder$volu2","_persistedFolder$volu3","onChangeControllers","allowNoneIngressClass","noIngressControllerLabel","view","ingControllerFormValues","setIngControllerFormValues","newIngFormValues","isCustomTypeExist","ingController","updateIngressControllers","_updateIngressControllers","updatedIngressControllers","newAllowed","usedControllersToDisallow","selectedTeams","storageClassName","persistedFoldersUseExistingVolumes","KubernetesApplicationDataAccessPolicies","ISOLATED","SHARED","getOptions","supportGlobalDeployment","KubernetesApplicationDeploymentTypes","REPLICATED","GLOBAL","getDeploymentOptions","_application$metadata3","_application$metadata4","_stateAndParams$param","systemNamespace","externalApplication","applicationRequests","_application$spec","_application$spec2","_container$resources","_container$resources2","endsWith","parseCpu","filesizeParser","getResourceRequests","applicationOwner","applicationDeployMethod","_application$metadata5","_application$metadata6","_application$metadata7","getApplicationDeployMethod","applicationNote","isNoteOpen","setIsNoteOpen","applicationNoteFormValues","setApplicationNoteFormValues","patchApplicationMutation","phase","_patchApplicationNote","patchApplicationNote","externalApp","appStackFileQuery","getStackFile","_useApplicationServic","appSelectorLabels","filteredServices","serviceSelectorLabels","useApplicationServices","Pencil","newServiceNames","newIndex","existingName","uniqName","getUniqNames","newServiceName","serviceTypeCounts","getServiceTypeCounts","serviceHasErrors","getServiceTypeHasErrors","NodePort","LoadBalancer","formServices","matchingService","nodePortServices","formServiceNames","formService","clusterNodePortsWithoutFormServices","npService","npServicePorts","formNodePortsWithoutCurrentService","formServicePorts","ingressHostAndPath","ingressPathsInNamespace","originalIngressPaths","allFormServicePortIngresses","formMatchingIngressHostPathCount","formIngressHostAndPath","nsMatchingIngressHostPathCount","nsIngressHostAndPath","originalMatchingIngressHostPathCount","originalIngressHostAndPath","Annotations","useNamespaces","allNamespaceAccessReviews","allowedNamespacesNames","allowedNamespaces","ingressRules","isHttp","isHTTP","paths","TLSs","_row$Labels","owner","formatDate","CreationDate","_row$original$Labels","IngressDatatable","_useNamespaces","namespacesQuery","deleteIngressesMutation","Route","selectedFlatRows","referrer","_getConfigurations","configmaps","InlineLoader","handleAnnotationChange","removeAnnotation","annotation","Value","PathTypes","nginx","traefik","other","PlaceholderAnnotations","IngressForm","_rule$Hosts","_rule$Hosts2","rule","tlsOptions","handleTLSChange","addNewIngressHost","serviceOptions","handleHostChange","handleIngressChange","handlePathChange","addNewIngressRoute","removeIngressRoute","removeIngressHost","addNewAnnotation","reloadTLSCerts","ingressClassOptions","isIngressClassOptionsLoading","namespacesOptions","isNamespaceOptionsLoading","isIngressNamesLoading","handleNamespaceChange","hasNoHostRule","NoHost","placeholderAnnotation","IngressType","pathTypes","IngressClassName","ingressClassOption","hostIndex","TLSOption","pathIndex","_servicePorts$path$Se","_servicePorts$path$Se2","allOptions","selectedLabel","serviceOption","portOption","ServicePort","ignoreAnnotationsForEdit","prepareTLS","hosts","prepareRuleHostsFromIngress","getSecretByHost","random","uuidv4","_getPVCsForCluster","pvcs","getPVCs","_getPVCs","kubernetesErrorParser","parseKubernetesAxiosError","configMapQueryKeys","configMaps","configMapsForCluster","useConfigMapsForCluster","_getConfigMapsForCluster","getConfigMapsForCluster","getConfigMaps","_getConfigMaps","deleteConfigMap","_deleteConfigMap","secretQueryKeys","secretsForCluster","useSecretsForCluster","_getSecretsForCluster","getSecretsForCluster","_getSecrets","deleteSecret","_deleteSecret","EnvironmentInfo","_tagsQuery$tags","environmentData","environmentQuery","tagNames","stripProtocol","systemResourcesSettings","showSystemResources","setShowSystemResources","DefaultDatatableSettings","_ref$hideShowSystemRe","hideShowSystemResources","SystemResourceDescription","isExternal","isSystem","rowA","rowB","portA","portB","_row$ClusterIPs","ClusterIPs","clusterIPs","ipA","ipB","languages","language","ignorePunctuation","ExternalIPLink","externalIP","_row$ExternalIPs","_row$IngressStatus","_row$ExternalIPs2","ExternalName","ExternalIPs","IngressStatus","_row$original$Externa","linkTo","_row$original$Externa2","_getSchemeAndPort2","svc","_svc$Ports","scheme","getSchemeAndPort","aExternal","bExternal","targetPorts","Applications","CreationTimestamp","ServicesDatatable","_useServicesForCluste","servicesQuery","Shuffle","servicesRenderRow","deleteServicesMutation","WidgetTabs","currentTabIndex","tabs","selectedTabParam","getIsConfigMapInUse","_appSpec$volumes","appSpec","hasEnvVarReference","_configMap$metadata","hasVolumeReference","_configMap$metadata2","_row$metadata","_row$metadata2","_row$metadata3","isSystemToken","isInSystemNamespace","isSystemConfigMap","hasConfigurationOwner","inUse","_row$original$metadat","_row$original$metadat2","_row$original$metadat3","_row$original$metadat4","_columnId","getCreatedAtText","ConfigMapsDatatable","_useConfigMapsForClus","configMapsQuery","_useApplicationsForCl","applicationsQuery","_excluded3","configMapRowData","applicationsLoading","useConfigMapRowData","_configMap$metadata$n","_row$metadata$uid","deleteConfigMapMutation","successfulConfigMaps","failedConfigMaps","reason","configMapsToDelete","_configMap$metadata$n2","_configMap$metadata$n3","_configMap$metadata3","getIsSecretInUse","_secret$metadata","_secret$metadata2","_row$metadata4","isRegistrySecret","isSystemSecret","SecretsDatatable","_useSecretsForCluster","secretsQuery","secretRowData","useSecretRowData","_secret$metadata$name","deleteSecretMutation","successfulSecrets","failedSecrets","secretsToDelete","_secret$metadata$name2","_secret$metadata$name3","_secret$metadata3","widget","_configResults$data","isAuthorisedToAddEdit","setNamespace","ingressRule","setIngressRule","isEditClassNameSet","setIsEditClassNameSet","_useState8","setErrors","_useServices","useServices","allServices","configResults","getConfigurations","useConfigurations","ingressesResults","createIngressMutation","updateIngressMutation","useUpdateIngress","_useMemo","_ingressesResults$dat","_ingressesResults$dat2","ruleCounterByNamespace","hostWithTLS","_ingress$TLS","_useMemo2","namespaceOptions","IsSystem","nsKey","groupedOptions","existingIngressClass","allowedIngressClassOptions","cls","disallowedIngressClasses","notFoundIngressClassOption","prevRules","_ingressControllers$f","matchedConfigs","SecretType","_ingressesResults$dat3","_ingressControllers$f2","prepareRuleFromIngress","_ingressRule$Hosts","hIndex","tlsOptionVals","_ingressRule$Hosts2","_host$Paths","pIndex","_servicePorts$service","currentServicePorts","groupedServiceOptions","_rule$Annotations","duplicatedAnnotations","re","duplicatedHosts","hi","_host$Paths2","pi","availableServiceNames","optionGroup","sn","isExists","exists","checkIfPathExistsWithHost","debouncedValidate","noHost","_rule$Annotations2","_rule$Annotations3","rules","newKey","addNewIngress","classNameToSend","findSelectedTabIndex","_usePVCsForCluster","getPVCsForCluster","usePVCsForCluster","pvcsQuery","_excluded4","_useIngresses","_excluded5","_excluded6","_excluded7","podID","setCommand","connectionStatus","setConnectionStatus","terminal","setTerminal","setSocket","disconnectConsole","terminalContainer","TerminalIcon","autoFocus","registriesModule","customTemplateModule","KubernetesHealthService","KubernetesNamespaceService","KubernetesLocalEnvironment","AgentOnKubernetesEnvironment","endpointKubernetesConfiguration","endpointKubernetesSecurityConstraint","isPod","useServerMetrics","configurations","Kind","settingsKey","onPublishingModeClick","isPrimary","onChangeNamespaceDropdown","isAppsLoading","isSystemResources","setSystemResources","showSystem","applicationTypeEnumToParamMap","KubernetesApplicationTypes","DEPLOYMENT","DAEMONSET","STATEFULSET","POD","isItemExpanded","isExpandable","KubernetesApplications","hasConfigurationSecrets","getPublishedUrls","onSettingsShowSystemChange","updateNamespace","setDataTableSettings","KubernetesApplicationHelper","KubernetesNamespaceHelper","ResourcePool","isDisplayed","ingressUrls","PublishedPorts","pp","IngressRules","loadBalancerURLs","LoadBalancerIPAddress","publishedUrls","Configurations","ApplicationType","availableTypeFilters","onChangeNamespace","settingsLoaded","allNamespacesOption","visibleNamespaceOptions","defaultNS","KubernetesConfigurationHelper","isSystemConfig","IsRegistrySecret","isExternalConfiguration","restrictDefaultNamespace","canManageAccess","isDefaultNamespace","namespaceStatusColor","KubernetesVolumesDatatableController","onInit","isUsed","KubernetesVolumeHelper","isExternalVolume","HelmAddRepositoryController","HelmService","doesRepoExist","repos","isAddingRepo","addHelmRepository","HelmTemplatesListController","selectedCategory","updateCategories","onCategoryChange","annotationCategories","charts","availableCategories","cat","selectAction","HelmTemplatesController","KubernetesResourcePoolService","installHelmchart","getHelmValues","selectHelmChart","getHelmRepoURLs","getLatestCharts","getResourcePools","contentvalues","originalvalues","Repo","Chart","Values","resourcePool","install","loadingValues","scrollTo","showCustomValues","reposLoading","GlobalRepository","UserRepositories","getHelmRepositories","globalRepository","userHelmReposUrls","uniqueHelmRepos","helmRepos","chartsLoading","promiseList","chartPromises","latestCharts","tp","resourcePoolsLoading","nonSystemNamespaces","resourcePools","isDockerConfig","onChangeValidation","isCreation","KubernetesConfigurationDataController","editorUpdateAsync","onFileLoad","onFileLoadAsync","showSimpleMode","showAdvancedMode","KubernetesSecretTypeOptions","duplicateKeys","KubernetesFormValidationHelper","getDuplicates","invalidKeys","getInvalidKeys","addEntry","KubernetesConfigurationFormValuesEntry","newDataIndex","DOCKERCFG","addMissingKeys","DOCKERCONFIGJSON","BASICAUTH","SSHAUTH","BOOTSTRAPTOKEN","isRequiredKey","removeEntry","DataYaml","byteLength","encoding","chardet","Buffer","decoder","TextDecoder","IsBinary","isBinary","stringValue","decode","Base64","encode","existingEntryIndex","isEntryRequired","SERVICEACCOUNTTOKEN","addEntryFromFile","temporaryFileReader","readAsArrayBuffer","IsSimple","parseYaml","parseData","cpuReservation","cpuUsage","cpuLimit","memoryUsage","displayUsage","KubernetesResourceReservationController","usageValues","cpuReservationPercent","memoryReservationPercent","cpuUsagePercent","memoryUsagePercent","KubernetesYamlInspectorController","cleanYamlUnwantedFields","yml","YAML","managedFields","resourceVersion","copyYAML","toggleYAMLInspectorExpansion","limitedFeature","KubernetesApplicationConverter","Metadata","StackId","KubernetesPortainerApplicationStackIdLabel","KubernetesPortainerApplicationStackNameLabel","ApplicationKind","KubernetesPortainerApplicationKindLabel","KubernetesPortainerApplicationOwnerLabel","KubernetesPortainerApplicationNameLabel","KubernetesPortainerApplicationNote","imagePullSecrets","RegistryId","Pods","associatePodsAndApplication","Cpu","KubernetesResourceReservationHelper","parseCPU","Requests","serviceType","ServiceType","ClusterIp","ExternalIp","KubernetesServiceTypes","portsRefs","pList","pRefs","KubernetesApplicationPort","_apiPortsToPublishedPorts","KubernetesIngressHelper","findSBoundServiceIngressesRules","vcTemplates","inexistingPVC","PersistedFolders","matchingVolumeMount","KubernetesApplicationPersistedFolder","MountPath","PersistentVolumeClaimName","HostPath","ConfigurationVolumes","configurationName","configurationVolume","KubernetesApplicationConfigurationVolume","fileMountPath","rootMountPath","configurationKey","configurationType","KubernetesApplication","applicationCommon","DataAccessPolicy","RunningPodsCount","TotalPodsCount","HeadlessServiceName","persistentVolumeClaims","nodesLabels","KubernetesApplicationFormValues","Services","generateServicesFormValuesFromServices","generateSelectorFromService","ImageModel","megaBytesValue","generateEnvVariablesFromEnv","generatePersistedFoldersFormValuesFromPersistedFolders","generateConfigurationFormValuesFromEnvAndVolumes","ConfigMaps","AutoScaler","generateAutoScalerFormValueFromHorizontalPodAutoScaler","generatePublishedPortsFormValuesFromPublishedPorts","isIngress","PublishingType","INGRESS","generatePlacementsFormValuesFromAffinity","Affinity","KubernetesCommonHelper","ownerToLabel","claims","KubernetesPersistentVolumeClaimConverter","applicationFormValuesToVolumeClaims","rwx","hasRWX","headlessService","KubernetesDeploymentConverter","applicationFormValuesToDeployment","KubernetesStatefulSetConverter","applicationFormValuesToStatefulSet","KubernetesDaemonSetConverter","applicationFormValuesToDaemonSet","KubernetesServiceConverter","applicationFormValuesToHeadlessService","applicationFormValuesToService","applicationFormValuesToServices","KubernetesConfigMapConverter","KubernetesPortainerAccessConfigMap","KubernetesConfigMapCreatePayload","_unset","createAccessPayload","KubernetesConfigMap","ConfigurationOwner","KubernetesPortainerConfigurationOwnerLabel","Yaml","binaryData","configurationOwner","omission","KubernetesConfigMapUpdatePayload","KubernetesConfiguration","ServiceAccountName","volumeClaims","KubernetesDaemonSet","bytesValue","generateEnvFromEnvVariables","generateVolumesFromPersistentVolumClaims","generateEnvOrVolumesFromConfigurations","generateAffinityFromPlacements","KubernetesDaemonSetCreatePayload","affinity","assignOrDeleteIfEmpty","VolumeMounts","oldDaemonSet","newDaemonSet","oldPayload","newPayload","JsonPatch","KubernetesDeployment","KubernetesDeploymentCreatePayload","oldDeployment","newDeployment","KubernetesEvent","lastTimestamp","eventTime","Involved","involvedObject","KubernetesNamespaceConverter","KubernetesNamespace","ResourcePoolName","KubernetesPortainerResourcePoolNameLabel","ResourcePoolOwner","KubernetesPortainerResourcePoolOwnerLabel","isDefaultSystemNamespace","systemLabel","KubernetesPortainerNamespaceSystemLabel","KubernetesNamespaceCreatePayload","resourcePoolOwner","storageClasses","KubernetesPersistentVolumeClaim","Storage","StorageClass","NeedsDeletion","pvc","ExistingVolume","PreviousName","SizeUnit","existantPVC","PersistentVolumeClaim","ContainerPath","KubernetesPersistentVolumClaimCreatePayload","oldPVC","newPVC","KubernetesResourcePool","Owner","quota","KubernetesResourceQuotaConverter","resourcePoolFormValuesToResourceQuota","ingMap","IngressClasses","Selected","KubernetesIngressConverter","resourcePoolIngressClassFormValueToIngress","Namespaces","KubernetesResourceQuota","hard","KubernetesPortainerResourceQuotaCPULimit","KubernetesPortainerResourceQuotaMemoryLimit","MemoryLimitUsed","used","CpuLimitUsed","KubernetesResourceQuotaCreatePayload","KubernetesResourceQuotaHelper","generateResourceQuotaName","assignOrDeleteIfEmptyOrZero","KubernetesPortainerResourceQuotaCPURequest","KubernetesPortainerResourceQuotaMemoryRequest","oldQuota","newQuota","KubernetesResourcePoolFormValues","KubernetesResourceQuotaDefaults","HasQuota","StorageClasses","StorageRequests","KubernetesSecretCreatePayload","stringData","KubernetesPortainerConfigurationDataAnnotation","KubernetesSecretUpdatePayload","KubernetesApplicationSecret","CUSTOM","customType","KubernetesService","publishedPort","IsNew","KubernetesServicePort","ContainerPort","LoadBalancerPort","LoadBalancerNodePort","_publishedPortToServicePort","KubernetesServiceHelper","generateHeadlessServiceName","KubernetesServiceCreatePayload","KubernetesServiceHeadlessClusterIP","oldService","KubernetesStatefulSet","KubernetesStatefulSetCreatePayload","VolumeClaims","oldSFS","newSFS","KubernetesStorageClassConverter","KubernetesStorageClass","Provisioner","provisioner","AllowVolumeExpansion","allowVolumeExpansion","storageClass","KubernetesStorageClassCreatePayload","oldStorageClass","newStorageClass","claim","pool","KubernetesVolume","kubeCustomTemplatesView","kubeEditCustomTemplateView","kubeCreateCustomTemplateView","KubeCreateCustomTemplateViewController","CustomTemplateService","isTemplateVariablesEnabled","isTemplateValid","templateNameRegex","Logo","Variables","onBeforeOnload","onVariablesChange","parseTemplate","createCustomTemplateByMethod","createCustomTemplateFromFileContent","createCustomTemplateFromFileUpload","createCustomTemplateFromGitRepository","customTemplates","addEventListener","removeEventListener","returnValue","KubeCustomTemplatesViewController","currentUser","isEditAllowed","getTemplates","selectTemplate","templateId","CreatedByUserId","KubeEditCustomTemplateViewController","isEditorReadOnly","templateLoadFailed","templatePreviewFailed","templatePreviewError","getTemplate","submitAction","onBeforeUnload","previewFileFromGitRepository","customTemplateFile","parseGitConfig","flatConfig","targetFile","updateCustomTemplate","stripSpaces","KubernetesEndpoint","leaderAnnotation","KubernetesEndpointAnnotationLeader","parsedJson","holderIdentity","HolderIdentity","subsets","Subsets","subset","KubernetesEndpointSubset","Ips","addresses","_KubernetesEndpoint","_KubernetesEndpointSubset","KubernetesEndpointService","KubernetesEndpoints","getAllAsync","KubernetesEndpointConverter","apiToEndpoint","KubernetesApplicationTypeStrings","HELM","_round","KubernetesPodNodeAffinityNodeSelectorRequirementOperators","IN","NOT_IN","EXISTS","DOES_NOT_EXIST","GREATER_THAN","LOWER_THAN","HelmFactory","helmUrl","templatesUrl","output","uninstall","release","listReleases","PodKubernetesInstanceLabel","PodManagedByLabel","pf","cv","associateContainerPersistedFoldersAndConfigurations","KubernetesPortMapping","KubernetesPortMappingPort","envVariables","KubernetesApplicationEnvPayload","KubernetesApplicationEnvironmentVariableFormValue","NameIndex","configurationKind","filterCondition","finalRes","cfg","cfgEnv","cfgVol","keyEnv","keyVol","Sum","EnvCount","VolCount","_max","overrideThreshold","KubernetesApplicationConfigurationFormValue","SelectedConfiguration","Overriden","OverridenKeys","fvKey","KubernetesApplicationConfigurationFormValueOverridenKey","KubernetesApplicationConfigurationFormValueOverridenKeyTypes","ENVIRONMENT","FILESYSTEM","NONE","finalEnv","finalVolumes","finalMounts","isBasic","envKeys","KubernetesApplicationEnvConfigMapPayload","KubernetesApplicationEnvSecretPayload","volKeys","groupedVolKeys","volumeName","generatedApplicationConfigVolumeName","itemsMap","KubernetesApplicationVolumeEntryPayload","KubernetesApplicationVolumeMountPayload","KubernetesApplicationVolumeConfigMapPayload","KubernetesApplicationVolumeSecretPayload","svcport","Ingresses","ingPath","newPaths","Raw","publishedPorts","generatePort","KubernetesApplicationPublishedPortFormValue","IngressRoute","IngressHost","IngressHosts","autoScaler","replicasCount","KubernetesApplicationAutoScalerFormValue","IsUsed","MinReplicas","MaxReplicas","TargetCPUUtilization","KubernetesApplicationPersistedFolderFormValue","KubernetesApplicationVolumePersistentPayload","AccessModes","podAffinity","placements","Placements","PlacementType","nodeAffinity","requiredDuringSchedulingIgnoredDuringExecution","KubernetesApplicationPlacementTypes","MANDATORY","nodeSelectorTerms","matchExpressions","exp","KubernetesApplicationPlacementFormValue","preferredDuringSchedulingIgnoredDuringExecution","PREFERRED","KubernetesPodNodeAffinityPayload","expressions","KubernetesNodeSelectorRequirementPayload","KubernetesNodeSelectorTermPayload","KubernetesPreferredSchedulingTermPayload","KubernetesPodAffinity","helmManagedApps","namespacedHelmReleases","instanceLabel","helmAppsList","helmInstance","helmApp","HelmApplication","appsNotReady","replaceAll","helmApplications","getHelmApplications","helmAppNames","hma","nonHelmApplications","_set","_forIn","accesses","KubernetesPortainerConfigMapAccessKey","RoleId","envFind","volumeFind","getUsingApplications","setConfigurationUsed","configurationsUsed","configMappedByName","configMappedByVolume","customTags","oldEntry","serviceNodePorts","allOtherNodePorts","sNodePort","snp","KUBERNETES_DEFAULT_NAMESPACE","KUBERNETES_DEFAULT_SYSTEM_NAMESPACES","KubernetesPortainerResourceQuotaPrefix","bytes","decimals","base10","dm","pow","KubernetesResourceReservation","_endsWith","mem","KubernetesServiceHeadlessPrefix","rawApp","_isMatch","KubernetesStack","describe","stacksFromApplications","KubernetesStackHelper","expect","toHaveLength","matchingNames","KubernetesHorizontalPodAutoScalerConverter","KubernetesHorizontalPodAutoScaler","TargetEntity","KubernetesHorizontalPodAutoScalerCreatePayload","oldScaler","newScaler","KubernetesHorizontalPodAutoScalerHelper","sList","getApplicationTypeString","_KubernetesHorizontalPodAutoScaler","_KubernetesHorizontalPodAutoScalerCreatePayload","getYaml","rawResponse","KubernetesHorizontalPodAutoScalerService","KubernetesHorizontalPodAutoScalers","getAsync","patchAsync","deleteAsync","KubernetesCommonParams","raw","apiToModel","horizontalPodAutoScaler","oldHorizontalPodAutoScaler","newHorizontalPodAutoScaler","patchPayload","KubernetesIngressClassAnnotation","KubernetesNginxRewriteTargetAnnotations","KubernetesTraefikRewriteTargetAnnotations","KubernetesNginxUseregexAnnotations","KubernetesIngressClassTypes","NGINX","TRAEFIK","PortainerIngressClassTypes","http","ingRule","KubernetesIngressRule","backend","KubernetesIngress","ingressClassName","_findIndex","isPublishingToIngress","OriginalIngresses","originalIngress","originalIngresses","matchedIngress","IngressClass","_fromPairs","ics","fv","KubernetesResourcePoolIngressClassFormValue","WasSelected","hfv","KubernetesResourcePoolIngressClassHostFormValue","PreviousHost","_toPairs","KubernetesResourcePoolIngressClassAnnotationFormValue","AdvancedConfig","KubernetesIngressCreatePayload","hostsWithRules","updatedHost","KubernetesIngressRuleCreatePayload","KubernetesIngressRulePathCreatePayload","keptHosts","hostsWithoutRules","emptyRules","oldData","newData","KubernetesIngressClass","KubernetesCommonMetadataPayload","pathType","KubernetesIngressService","KubernetesIngresses","getOne","getAll","oldIngress","newIngress","_KubernetesApplicationConfigurationFormValueOverridenKey","_KubernetesApplicationConfigurationFormValue","_KubernetesApplicationEnvironmentVariableFormValue","IsSecret","_KubernetesApplicationPersistedFolderFormValue","UseNewVolume","_KubernetesApplicationAutoScalerFormValue","KubernetesFormValidationReferences","hasRefs","KubernetesApplicationQuotaDefaults","_KubernetesApplication","_KubernetesApplicationPersistedFolder","_KubernetesApplicationConfigurationVolume","_KubernetesApplicationPort","KubernetesDeploymentTypes","GIT","CONTENT","APPLICATION_FORM","_KubernetesApplicationVolumeMount","_KubernetesApplicationVolumePersistentPayload","_KubernetesApplicationVolumeConfigMapPayload","_KubernetesApplicationVolumeSecretPayload","_KubernetesApplicationVolumeEntryPayload","_KubernetesApplicationEnvPayload","_KubernetesApplicationEnvConfigMapPayload","_KubernetesApplicationEnvSecretPayload","_KubernetesCommonMetadataPayload","KubernetesPortainerConfigMapNamespace","KubernetesPortainerConfigMapConfigName","_KubernetesConfigMap","_KubernetesConfigMapCreatePayload","_KubernetesConfigMapUpdatePayload","_KubernetesConfigurationFormValues","OPAQUE","KubernetesConfigurationFormValues","_KubernetesConfigurationFormValuesEntry","_KubernetesConfiguration","_KubernetesDaemonSet","VoluemMounts","_KubernetesDaemonSetCreatePayload","updateStrategy","rollingUpdate","maxUnavailable","KubernetesDeployManifestTypes","KUBERNETES","KubernetesDeployBuildMethods","WEB_EDITOR","CUSTOM_TEMPLATE","KubernetesDeployRequestMethods","REPOSITORY","STRING","RepositoryMechanismTypes","WEBHOOK","INTERVAL","_KubernetesDeployment","_KubernetesDeploymentCreatePayload","maxSurge","_KubernetesEvent","KubernetesSystem_DefaultDeploymentUniqueLabelKey","KubernetesSystem_RevisionAnnotation","KubernetesSystem_RevisionHistoryAnnotation","KubernetesSystem_DesiredReplicasAnnotation","KubernetesSystem_MaxReplicasAnnotation","KubernetesSystem_AnnotationsToSkip","_KubernetesNamespaceCreatePayload","KubernetesNodesLimits","nodesLimits","MaxCPU","MaxMemory","convertCPU","calculateMaxCPUMemory","nodesLimitsArray","_maxBy","overflowForReplica","instances","overflowForGlobal","overflow","excludesPods","_KubernetesPortMappingPort","_KubernetesPortMapping","ingressClass","RewriteTarget","KubernetesResourcePoolNginxRewriteAnnotationFormValue","KubernetesResourcePoolNginxUseregexAnnotationFormValue","KubernetesResourcePoolTraefikRewriteAnnotationFormValue","Quota","_KubernetesResourceReservation","KubernetesResourceTypes","NAMESPACE","RESOURCEQUOTA","PERSISTENT_VOLUME_CLAIM","SERVICE","HORIZONTAL_POD_AUTOSCALER","KubernetesResourceActions","CREATE","UPDATE","DELETE","_KubernetesApplicationSecret","_KubernetesSecretCreatePayload","_KubernetesSecretUpdatePayload","_KubernetesService","nodePortError","servicePortError","_KubernetesIngressService","_KubernetesServicePort","_KubernetesServiceCreatePayload","_KubernetesStack","_KubernetesStatefulSet","_KubernetesStatefulSetCreatePayload","partition","_KubernetesStorageClassAccessPolicies","KubernetesStorageClassAccessPolicies","_KubernetesStorageClass","_KubernetesStorageClassCreatePayload","_KubernetesPersistentVolumeClaim","_KubernetesVolume","_KubernetesPersistentVolumClaimCreatePayload","accessModes","KubernetesNodeConverter","KubernetesNode","hostName","address","master","conditions","KubernetesNodeConditionTypes","READY","memoryPressure","MEMORY_PRESSURE","PIDPressure","PID_PRESSURE","diskPressure","DISK_PRESSURE","networkUnavailable","NETWORK_UNAVAILABLE","Conditions","MemoryPressure","DiskPressure","NetworkUnavailable","KubernetesNodeAvailabilities","ACTIVE","unschedulable","KubernetesPortainerNodeDrainLabel","DRAIN","PAUSE","allocatable","nodeInfo","kubeletVersion","internalIP","Taints","taints","taint","KubernetesNodeTaint","Effect","effect","KubernetesNodeDetails","apiToNode","architecture","operatingSystem","osImage","KubernetesNodeFormValues","KubernetesNodeTaintFormValues","KubernetesNodeLabelFormValues","filteredTaints","filteredLabels","KubernetesNodeCreatePayload","KubernetesNodeTaintPayload","oldNode","newNode","_KubernetesNodeFormValues","_KubernetesNodeTaintFormValues","IsChanged","_KubernetesNodeLabelFormValues","KubernetesNodeHelper","isSystemLabel","nodeSelectors","_KubernetesNode","Api","_KubernetesNodeDetails","_KubernetesNodeTaint","KubernetesNodeTaintEffects","NOSCHEDULE","PREFERNOSCHEDULE","NOEXECUTE","_KubernetesNodeCreatePayload","_KubernetesNodeTaintPayload","KubernetesNodeService","KubernetesNodes","apiToNodeDetails","errData","nodeFormValues","formValuesToNode","computeContainerStatus","statuses","waiting","KubernetesPodConverter","KubernetesPod","tolerations","Images","containerStatuses","computeStatus","Restarts","_sumBy","KubernetesPodContainer","KubernetesPodContainerTypes","APP","PodName","PodIP","podIP","ImagePullPolicy","imagePullPolicy","INIT","computeContainers","computeAffinity","NodeSelector","nodeSelector","Tolerations","KubernetesPodToleration","Operator","TolerationSeconds","tolerationSeconds","KubernetesPodEviction","oldPod","newPod","createPayloadFactory","_KubernetesPod","_KubernetesPodToleration","_KubernetesPodContainer","_KubernetesPodEviction","weight","KubernetesPodService","KubernetesPods","logsAsync","evictionAsync","podEvictionPayload","evictionPayload","evict","eviction","kubernetesRegistryAccessView","KubernetesRegistryAccessController","selectedResourcePools","savedResourcePools","onChangeResourcePools","updateNamespaces","removeNamespaces","nsToUpdate","getJSON","KubernetesNodesLimitsFactory","KubernetesPortainerNamespacesFactory","toggleSystem","getServiceAccounts","namespaceId","KubernetesApplicationService","KubernetesDeploymentService","KubernetesDaemonSetService","KubernetesStatefulSetService","KubernetesServiceService","KubernetesSecretService","KubernetesPersistentVolumeClaimService","patchPartialAsync","_getApplicationApiService","apiService","_generateIngressPatchPromises","newIng","oldIng","autoScalers","rootItem","converterFunc","apiDeploymentToApplication","apiDaemonSetToApplication","apiStatefulSetToapplication","apiPodToApplication","boundService","findApplicationBoundService","boundServices","findApplicationBoundServices","associateContainersAndApplication","boundScaler","findApplicationBoundScaler","scaler","convertToApplication","servicesFound","deploymentApplications","daemonSetApplications","statefulSetApplications","boundPods","unboundPods","nakedPodsApplications","applicationFormValuesToApplication","claimPromises","applicationFormValuesToModel","oldFormValues","newFormValues","originalServicePorts","oldApp","oldHeadlessService","oldServices","oldClaims","newApp","newHeadlessService","newClaims","oldApiService","newApiService","newClaim","oldClaim","deleteAll","deleteSingle","oldServiceMatched","newKind","newAutoScaler","oldKind","oldAutoScaler","oldAppPayload","newAppPayload","oldValues","applicationFormValuesToDeleteIngresses","KubernetesConfigMapService","KubernetesConfigMaps","getAccess","apiToPortainerAccessConfigMap","createAccess","updateAccessPayload","rawPromise","yamlPromise","defaultConfigMap","apiToConfigMap","updatePayload","KubernetesConfigurationService","KubernetesConfigurationConverter","secretToConfiguration","configMapToConfiguration","secretsConfigurations","configMapsConfigurations","configurationFormValuesToConfigMap","KubernetesSecretConverter","configurationFormValuesToSecret","KubernetesControllerRevisionService","KubernetesControllerRevisions","KubernetesDaemonSets","KubernetesDeployments","KubernetesEventService","KubernetesEvents","KubernetesEventConverter","apiToEvent","KubernetesHealth","pingAsync","KubernetesNamespaces","getJSONAsync","updateFinalizeAsync","apiToNamespace","allNamespaces","$allSettled","fulfilled","KubernetesNodesLimitsService","KubernetesPersistentVolumeClaims","apiToPersistentVolumeClaim","KubernetesResourceQuotaService","KubernetesPortainerNamespaces","KubernetesResourcePoolConverter","formValuesToResourcePool","ingressPromises","registriesPromises","oldRegistries","newRegistries","del","createPromises","delPromises","patchPromises","old","keptRegistries","_intersectionBy","removedRegistries","newRegistriesPromises","removedRegistriesPromises","_pull","getQuota","apiToResourcePool","quotaAttempt","KubernetesResourceQuotas","apiToResourceQuota","KubernetesSecrets","apiToSecret","KubernetesServices","deleteSingleAsync","deleteAllAsync","formValuesServices","KubernetesStackService","KubernetesStatefulSets","headlessServiceName","oldStatefulSet","newStatefulSet","KubernetesStorageService","KubernetesStorage","apiToStorageClass","KubernetesVolumeService","KubernetesVolumeConverter","pvcToVolume","pools","storeNamespaces","KubernetesApplicationsController","getApplications","getApplicationsAsync","removeStacksAction","removeStacksActionAsync","selectTab","storeActiveTab","storeNamespaceFilter","configuredApplications","getApplicationConfigurations","getNestedApplications","portMappingsFromApplications","flag","getActiveTab","currentName","$current","savedNamespace","getNamespaceFilter","preferredNamespace","UpdateIngressPrompt","hasOneIngress","hasOnePort","rulePlural","noMatchSentence","inputLabel","noMatch","placementOptions","AlignJustify","KubernetesCreateApplicationController","ApplicationDeploymentTypes","ApplicationDataAccessPolicies","ApplicationPublishingTypes","ApplicationPlacementTypes","ApplicationTypes","ApplicationConfigurationFormValueOverridenKeyTypes","ServiceTypes","appType","updateWebEditorInProgress","useLoadBalancer","sliders","namespaceLimits","resourcePoolHasQuota","availableSizeUnits","alreadyExists","duplicates","environmentVariables","configMapPaths","secretPaths","existingVolumes","editChanges","updateApplicationAsync","deployApplicationAsync","checkIngressesToUpdate","confirmUpdateApplicationAsync","onDataAccessPolicyChange","onChangePlacementType","onServicesChange","resetDeploymentType","updateKubeStack","imageValidityIsValid","onChangeName","existingApplication","unselectAutoScaler","addConfigMap","removeConfigMap","onChangeConfigMapPath","overrideConfigMap","resetConfigMap","clearConfigMaps","uniqOverridenKeysPath","duplicatePaths","overridenKey","keyIndex","findPath","onChangeSecretPath","overrideSecret","resetSecret","clearSecrets","restoreEnvironmentVariable","removeEnvironmentVariable","onChangeEnvironmentName","addPersistedFolder","newPf","restorePersistedFolder","validatePersistedFolders","resetPersistedFolders","removePersistedFolder","useNewVolume","useExistingVolume","onChangePersistedFolderPath","onChangeExistingVolumeSelection","addPlacement","onChangePlacement","restorePlacement","removePlacement","onChangePlacementLabelValidate","onChangePlacementLabel","ingressNamesUsed","uniqueIngressNamesUsed","ingressNamesLoaded","ingressNameUsed","refreshIngresses","storageClassAvailable","hasMultipleStorageClassesAvailable","showDataAccessPolicySection","hasFolders","hasRWOOnly","isIsolated","isEditAndStatefulSet","supportScalableReplicaDeployment","getNonScalableStorage","storageOptions","enforceReplicaCountMinimum","resourceQuotaCapacityExceeded","nodeLimitsOverflow","effectiveInstances","nodeNumber","hasPortErrors","portError","resourceReservationsOverflow","maxCpu","autoScalerOverflow","publishViaIngressEnabled","isEditAndNoChangesMade","savedFormValues","change","isAddPersistentFolderButtonShowed","isNewVolumeButtonDisabled","isEditAndExistingPersistedFolder","isExistingVolumeButtonDisabled","hasAvailableVolumes","isEditAndNotNewPlacement","showPlacementPolicySection","isNonScalable","scalable","global","replica","replicated","isDeployUpdateButtonDisabled","inProgress","invalid","hasNoChanges","nonScalable","updateSliders","namespaceWithQuota","minCpu","minMemory","_floor","updateNamespaceLimits","refreshStacks","refreshConfigurations","refreshApplications","refreshVolumes","filteredVolumes","isUnused","isRWX","ingressHostnames","refreshNamespaceData","resetFormValues","onResourcePoolSelectionChange","ingressesToUpdate","servicePortsToUpdate","confirmUpdateAppIngress","fullIngresses","updatedService","oldServiceIndex","numberOfPortsInOldService","updatedOldPorts","ingressForService","oldServicePort","ingressPathIndex","ingressUpdateIndex","ingressToUpdate","deployApplication","UseServerMetrics","generateNodeLabelsFromNodes","applicationToFormValues","parseImageConfiguration","settledService","fulfilledService","KubernetesApplicationController","getApplicationAsync","getEvents","getEventsAsync","hasEventWarnings","eventWarningCount","eventsLoading","KubernetesEventHelper","warningCount","dataLoading","allContainers","associateAllContainersAndApplication","AcceptsApplication","UnmetTaints","matchKeyMatchValueMatchEffect","matchKeyAnyValueMatchEffect","matchKeyMatchValueAnyEffect","matchKeyAnyValueAnyEffect","anyKeyAnyValueAnyEffect","computeTolerations","UnmatchedNodeSelectorLabels","unmatchedTerms","unmatchedExpressions","isIn","UnmatchedNodeAffinities","computeAffinities","computePlacements","placementWarning","DisplayedPanel","expandedNote","SelectedRevision","KubernetesHelmApplicationController","releases","app_version","getHelmApplication","KubernetesApplicationLogsController","getApplicationLogsAsync","updateAutoRefresh","applicationLogs","applicationName","KubernetesApplicationStatsController","CPUUsage","getStats","findCharts","transition","nodeCPU","getMetrics","podRaw","KubernetesClusterController","getNodesAsync","getEndpointsAsync","hasResourceUsageAccess","systemEndpoints","ep","kubernetesEndpoint","ips","getEndpoints","CPULimit","nodeNames","resourceReservation","computeResourceReservation","getResourceUsage","clusterResourceUsage","resourceUsage","KubernetesNodeController","updateNodeAsync","drainNodeAsync","getNodeUsageAsync","onChangeTaintKey","duplicateTaintKeys","hasDuplicateTaintKeys","onChangeTaint","addTaint","removeTaint","restoreTaint","computeTaintsWarning","onChangeLabelKey","duplicateLabelKeys","hasDuplicateLabelKeys","onChangeLabel","restoreLabel","computeLabelsWarning","computeCordonWarning","availabilities","computeDrainWarning","drainNode","isNoChangesMade","isDrainError","isDrainOperation","isContainPortainer","isFormValid","nodeToFormValues","taintsWarning","labelsWarning","cordonWarning","drainWarning","confirmUpdateNode","getNodeUsage","availableEffects","computeUsedLabels","reorderLabels","KubernetesNodeStatsController","KubernetesCreateConfigMapController","createConfigurationAsync","getConfigurationsAsync","onResourcePoolSelectionChangeAsync","filteredConfigurations","alreadyExist","availableServiceAccounts","addRequiredKeysToForm","isConfigurationFormValid","isDataValid","createConfiguration","KubernetesConfigMapController","getConfigurationAsync","updateConfiguration","updateConfigurationAsync","copyConfigurationValue","configurationLoading","oldDataYaml","getConfiguration","tagUsedDataKeys","configName","usedDataKeys","KubernetesConfigurationsController","refreshCallbackAsync","configurationsLoading","setConfigurationsUsed","KubernetesCreateSecretController","onSecretTypeChange","warningMessage","secretWarningMessage","KubernetesSecretController","secretType","secretTypeName","uniqueCheck","isSecretDataValid","KubernetesConfigureController","IngressClassTypes","configureAsync","areControllersChanged","areFormValuesChanged","areStorageClassesChanged","limitedFeatureAutoWindow","limitedFeatureIngressDeploy","onChangeEnableResourceOverCommit","onToggleIngressAvailabilityPerNamespace","onToggleAllowNoneIngressClass","onChangeStorageClassAccessMode","onToggleRestrictNs","hasValidStorageConfiguration","controllerClassMap","hasTraefikIngress","toggleAdvancedIngSettings","$event","isIngToggleSectionExpanded","AllowNoneIngressClass","IngressAvailabilityPerNamespace","EnableResourceOverCommit","ResourceOverCommitPercentage","assignFormValuesToEndpoint","ingressClasses","RestrictDefaultNamespace","transformFormValues","ingressesToDel","oldEndpoint","currentEndpoint","setCurrentEndpoint","allResourcePools","respons","enableMetricsServer","metrics","userClick","pending","isServerRunning","removeIngressesAcrossNamespaces","isSaving","storagePromises","oldStorageClasses","configure","restrictDefaultToggledOn","displayConfigureClassPanel","enableAutoUpdateTimeWindow","isRBACEnabled","isIngressControllersLoading","availableAccessModes","originalIngressControllers","sc","accessMode","storageClassesWithoutHashKey","oldStorageClassesWithoutHashKey","KubernetesDeployController","deployOptions","DeployType","BuildMethod","tabLogsDisabled","ManifestDeployTypes","BuildMethods","onChangeTemplateId","deployAsync","getNamespacesAsync","onChangeDeployType","onChangeTemplateVariables","rendered","templateContent","EditorContent","buildMethod","buildLabel","COMPOSE","formatLabel","repositoryAutomaticUpdates","repositoryMechanism","automaticUpdatesLabel","disableDeploy","isWebEditorInvalid","isURLFormInvalid","ManifestURL","isNamespaceInvalid","displayErrorLog","errorLog","stripAnsi","composeFormat","deployNamespace","namespace_toggle","ComposeFormat","ManifestFile","kubernetesDeploy","deploy","KubernetesResourcePoolAccessController","AccessService","authorizeAccessAsync","unauthorizeAccessAsync","onUsersAndTeamsChange","unauthorizeAccess","initAccessConfigMap","multiselectOutput","roles","endpointAccesses","KubernetesConfigMapHelper","parseJSONData","authorizedUsersAndTeams","accessConfigMap","poolAccesses","availableUsersAndTeams","newAccesses","modifiyNamespaceAccesses","authorizeAccess","storageClassSwitch","StorageClassSwitchController","KubernetesCreateResourcePoolController","LBQuotaFeatureId","onToggleStorageQuota","onToggleLoadBalancerQuota","onToggleResourceQuota","onChangeIngressControllerAvailability","onRegistriesChange","handleMemoryLimitChange","handleCpuLimitChange","sClass","UseLoadBalancersQuota","isCreateButtonDisabled","isQuotaValid","isAlreadyExist","hasPrefixKube","checkDefaults","createResourcePool","allIngresses","canUseIngress","ingressAvailabilityPerNamespace","ingressClassesToFormValues","KubernetesResourcePoolController","ResourceQuotaDefaults","StorageQuotaFeatureId","updateResourcePoolAsync","onToggleLoadBalancersQuota","isUpdateButtonDisabled","hasResourceQuotaBeenReduced","updateResourcePool","ingressesToDelete","registriesToDelete","WasChecked","warnings","quotaWarning","ingressWarning","registriesWarning","markUnmarkAsSystem","confirmMarkUnmarkAsSystem","ingressesLoading","hasWriteAuthorization","selectedRegistries","namespaceResourceUsage","quotaToResourcePoolFormValues","isEditable","KubernetesResourcePoolsController","getResourcePoolsAsync","finalizers","isTerminatingNS","limitedFeaturePodSecurityPolicy","KubernetesStackLogsController","generateLogsPromise","generateAppPromise","getStackLogsAsync","Logs","Application","filteredApplications","logsPromises","appColor","stackLogs","getApplicationResources","resourceSummary","oldAppResourceType","getApplicationResourceType","createdApplicationResourceSummary","getCreatedApplicationResources","headlessServiceUpdateResourceSummary","getServiceUpdateResourceSummary","claimSummaries","serviceUpdateResourceSummary","updateSummary","oldServicePorts","getIngressUpdateSummary","hpaUpdateSummary","getUpdatedApplicationResources","persistentVolumeClaimResources","appResourceType","summary","serviceUpdate","emptyService","serviceCreate","serviceDelete","findCreateResources","newResources","oldResources","_differenceBy","findDeleteResources","findUpdateResources","_intersectionWith","newResource","oldResource","patches","isEqual","doGetResourcesSummary","actionFilter","getResourcesSummary","newNamespace","oldNamespace","KubernetesSummaryController","toggleSummary","generateResourceSummaryList","getArticle","resourceAction","article","expandedTemplate","storeKubernetesSummaryToggle","getConfigurationResources","getNamespaceResources","toggleValue","getKubernetesSummaryToggle","KubernetesVolumeController","getVolume","getVolumeAsync","updateVolumeAsync","onChangeSize","volumeSize","volumeSizeUnit","oldVolumeSize","sizeIsValid","redeploy","oldVolume","updateVolume","increaseSize","volumeSharedAccessPolicy","volumeSharedAccessPolicyTooltip","policy","KubernetesVolumesController","getVolumesAsync","storages","formatBytes","computeSize","buildStorages","getElementsByTagName","parentNode","insertBefore","LogsController","AbortController","logInLines","logInLine","foregroundColor","backgroundColor","loadLogs","logType","signal","onDownloadProgress","progressEvent","stderrLog","stdoutLog","abort","NomadLogViewerController","NomadLogType","STDERR","STDOUT","onChangeLogType","BASENAME","attrs","limitedFeatureDir","limitedFeatureAttrs","attr","_ref2$","apiServicesModule","UserService","environmentStore","setEnvironmentId","DEFAULT_TITLE","pingInterval","subscribe","_state$currentEndpoin","clean","GroupAssociationTable","SliderTooltip","child","_ref$zIndex","appendTo","tooltipCentered","showOnCreate","hideOnClick","trigger","translateMinValue","fileUploadField","switchField","isNameReadonly","errorObj","VariablesFieldAngular","VariablesFieldController","checkValidity","customTemplatesModule","isVariablesNamesFromParent","gitFormModule","FeatureFlag","useFeatureFlag","Features","FDOProfilesDatatableActions","isFDOEnabled","PlusCircle","_onDuplicateProfileClick","onDuplicateProfileClick","_onDeleteProfileClick","onDeleteProfileClick","newProfile","FDOProfilesDatatable","_useFDOProfiles","useFDOProfiles","SettingsFDOForm","fdoConfiguration","initialFDOEnabled","setIsFDOEnabled","_settings$fdoConfigur","ownerURL","ownerUsername","ownerPassword","edgeComputeFeaturesEnabled","EnableEdgeComputeFeatures","Laptop","_onChangedEnabled","onChangedEnabled","alpha","padStart","padding","sliderProperties","strength","PasswordLengthSlider","sliderProps","getSliderProps","sliderTooltip","handleProps","RcSlider","handleRender","sliderValue","sliderBadge","getBadgeIcon","SaveAuthSettingsButton","isValidUrl","additionalCheck","validation","edgeAgentCheckinInterval","enableTelemetry","bool","loginBannerEnabled","loginBanner","logoEnabled","logo","snapshotInterval","useToggledValue","toggleFieldName","_useField4","setIsEnabled","oldValue","setOldValue","_handleIsEnabledChange","DemoAlert","LogoFieldset","isDemoQuery","_useToggledValue2","TextArea","ScreenBannerFieldset","TemplatesUrlSection","EnableTelemetryField","ApplicationSettingsPanel","EdgeAgentCheckinInterval","CustomLoginBanner","LogoURL","TemplatesURL","SettingsIcon","HelmSection","KubeConfigSection","KubeNoteMinimumCharacters","valueAsNumber","DeploymentOptionsSection","globalDeploymentOptions","hideAddWithForm","_handleToggleAddWithForm","handleToggleAddWithForm","hideWebEditor","hideFileUpload","perEnvOverride","helmRepositoryUrl","kubeconfigExpiry","requireNoteOnApplications","minApplicationNoteLength","typeError","KubeSettingsPanel","HelmRepositoryURL","KubeconfigExpiry","GlobalDeploymentOptions","kubeIcon","FormActions","_ref$submitLabel","submitLabel","_ref$loadingText","BEOverlay","useUpdateSSLConfigMutation","updateSSLConfig","_updateSSLConfig","clientCertFile","cert","clientCert","t2","t3","HelmCertPanel","AddLabelForm","formKey","clearForm","HiddenContainersTable","HiddenContainersPanel","BlackListedLabels","withHideOnExtension","getSSLSettings","_getSSLSettings","SSLSettingsPanelWrapper","reloadingPage","setReloadingPage","forceHTTPS","httpEnabled","settingsModule","FDO","FlaskConical","setCertFile","_handleFileUpload","readFileContent","fileReader","base64","readAsDataURL","openAMTConfiguration","mpsServer","mpsUser","mpsPassword","domainName","certFileContent","certFileName","certFilePassword","handleFileUpload","onSaveSettings","RequiredPasswordLength","accessControlModule","EdgeKeyDisplay","environmentsModule","server","KVM","authToken","mouseDebounceTime","canvasHeight","canvasWidth","ImportFdoDeviceButton","flagEnabledQuery","isFDOEnabledQuery","envListModule","defaultRegistryMutation","hideDefaultRegistry","isLimited","handleShowOrHide","EyeOff","_settingsQuery$data","passwordValid","forceChangePassword","minPasswordLength","fallbackIcon","setError","showReactQueryDevtools","SHOW_REACT_QUERY_DEV_TOOLS","ReactQueryDevtools","_marks","visibleTooltip","marks","usePaginationLimitState","paginationKey","paginationKeyBuilder","ConnectionType","EnvironmentStatusBadgeItem","aria","EdgeIndicator","_ref$showLastCheckInD","showLastCheckInDate","heartbeat","Heartbeat","Activity","EnvironmentStatusBadge","EnvironmentIcon","dockerEdge","kubeEdge","environmentTypeIcon","EnvironmentStatsDocker","StackCount","ServiceCount","ContainerStats","RunningContainerCount","StoppedContainerCount","HealthyContainerCount","UnhealthyContainerCount","VolumeCount","ImageCount","TotalCPU","TotalMemory","containersCount","EnvironmentStatsKubernetes","EnvironmentStatsNomad","Dice4","EnvironmentStats","_environment$Kubernet","_environment$Snapshot","_environment$Nomad$Sn","getComponent","DockerEngineVersion","KubernetesEngineVersion","KubernetesVersion","EnvironmentTypeTag","typeLabel","Zap","LinkButton","EnvironmentBrowseButtons","onClickBrowse","onClickDisconnect","checkEdgeAsync","browseStatus","dashboardRoute","Wifi","WifiOff","BrowseStatusTag","Snapshot","Connected","Disconnected","EditButtons","configRoute","getDockerConfigRoute","getConfigRoute","buttonsClasses","ButtonsGrid","redirectTo","Edit2","AgentDetails","EdgeAgentDetails","associated","EnvironmentItem","groupName","isEdge","snapshotTime","getSnapshotTime","useEnvironmentTagNames","downloadKubeconfigFile","_downloadKubeconfigFile","environmentIds","useListSelection","initialValue","compareFn","setSelectedItems","currentItem","KubeconfigPrompt","envQueryParams","_usePaginationLimitSt2","setPageLimit","expiryQuery","expiry","prefix","expiryMessage","_useListSelection2","toggleSelection","_useEnvironmentList","isAllPageSelected","checkboxList","checkbox","_confirmKubeconfigSelection","confirmKubeconfigSelection","KubeconfigButton","setIsOpen","kubeEnvs","NoEnvironmentsInfoPanel","includeEdgeStacks","activeSchedules","supportedAgentVersions","previousVersions","useSupportedAgentVersions","minVersion","getSupportedAgentVersions","_getSupportedAgentVersions","UpdateBadge","supportedAgentVersionsQuery","SortbySelector","sortButton","sortByOptions","EnvironmentListFilters","_agentVersionsQuery$d","agentVersions","clearFilter","connectionTypes","groupOnChange","groupState","platformTypes","setAgentVersions","setConnectionTypes","setPlatformTypes","sortByState","sortOnDescending","sortOnChange","statusOnChange","statusState","tagOnChange","tagState","agentVersionsQuery","connectionTypeOptions","_platformTypeConnecti","platformTypeConnectionType","API","EdgeAgentStandard","EdgeAgentAsync","connectionTypesDefaultOptions","getConnectionTypeOptions","platformTypeOptions","_connectionTypePlatfo","platformDefaultOptions","connectionTypePlatformType","getPlatformTypeOptions","groupOptions","uniqueGroup","Map","uniqueTag","filterLeft","clearButton","filterRight","_activateDevice","AssociateAMTDialog","activateDeviceMutation","activateDevice","AMTButton","isOpenDialog","setOpenDialog","isOpenAmtEnabledQuery","IsAMTEnabled","edgeEnvironments","EnvironmentList","currentEnvStore","_useHomePageFilter2","searchBarValue","setSearchBarValue","_useHomePageFilter4","_useHomePageFilter6","_useHomePageFilter8","tagFilter","setTagFilter","_useHomePageFilter10","groupFilter","setGroupFilter","_useHomePageFilter12","sortByFilter","setSortByFilter","_useHomePageFilter14","setSortByDescending","_useHomePageFilter16","setSortByButton","_useHomePageFilter18","setStatusState","_useHomePageFilter20","setTagState","_useHomePageFilter22","setGroupState","_useHomePageFilter24","environmentsQueryParams","_typesByPlatform","_typesByConnection","typesByPlatform","typesByConnection","selectedTypesByPlatform","platformType","selectedTypesByConnection","connectionType","getTypes","provisioned","updateInformation","edgeAsync","getEdgeAsyncValue","queryWithSort","filteredStatus","filteredTags","filteredGroups","renderItems","_onClickBrowse","hasEdgeAsync","EdgeLoadingSpinner","useUIState","dismissedInfoPanels","dismissInfoPanel","dismissedInfoHash","dismissMotd","dismissedUpdateVersion","dismissUpdateVersion","_getMotd","MotdPanel","motd","getMotd","uiStateStore","Hash","Style","camelCaseKeys","ContentLayout","confirmEndpointSnapshot","_confirmEndpointSnapshot","PortainerUrlField","PortainerTunnelAddrField","EdgeComputeSettings","_settings$Edge","EdgePortainerUrl","TunnelServerAddress","EnforceEdgeID","tunnelValidation","asyncIntervalFieldSettings","DeploymentSyncOptions","settingsMutation","resetForm","EnabledWaitingRoomSwitch","inputProps","yup","EnableWaitingRoom","AutoEnvCreationSettingsForm","TrustOnFirstConnect","AutomaticEdgeEnvCreation","generateKey","_generateKey","asyncModeOptions","EdgeAgentStandardIcon","EdgeAgentAsyncIcon","edgeKeyMutation","useGenerateKeyMutation","resetKey","setAsyncMode","edgeComputeConfigurationOK","EdgeKeyInfo","tunnelUrl","EdgeAutoCreateScriptViewWrapper","Provisioning","Users","updateEnvironment","_updateEnvironment","uploadTLSFilesForEndpoint","TLSCACert","TLSCert","TLSKey","_uploadTLSFilesForEndpoint","tlscaCert","tlsCert","tlsKey","uploadCert","_environment$StatusMe","_environment$StatusMe2","_environment$StatusMe3","_environment$StatusMe4","_environment$StatusMe5","StatusMessage","IsSetStatusMessage","EnvironmentsDatatable","environmentsWithGroups","GroupName","_deleteEnvironment","BackupFormType","DownloadCloud","S3","backupS3Settings","getBackupS3Settings","_getBackupS3Settings","updateBackupS3Settings","_updateBackupS3Settings","downloadBackup","_downloadBackup","blob","exportS3Backup","_exportS3Backup","passwordProtect","SecurityFieldset","switchDataCy","inputDataCy","setPasswordProtect","BackupFileForm","downloadMutate","scheduleAutomaticBackup","cronRule","accessKeyID","secretAccessKey","region","bucketName","s3CompatibleHost","BackupS3Form","exportS3Mutate","updateS3Mutate","useBackupS3Settings","handleExport","BackupSettingsPanel","backupType","setBackupType","fieldKey","EnableOpenAIIntegrationSwitch","OpenAIIntegration","ExperimentalFeaturesSettingsForm","ExperimentalFeatures","experimentalFeatures","handleSuccess","injector","updateLogo","updateSnapshotInterval","updateEnableTelemetry","_ref$onClick","createLocalDockerEnvironment","_createLocalDockerEnvironment","_ref$socketPath","socketPath","_ref$publicUrl","_ref$meta","prefixPath","createEnvironment","LocalDockerEnvironment","createLocalKubernetesEnvironment","_createLocalKubernetesEnvironment","_ref2$meta","LocalKubernetesEnvironment","skipClientVerify","createAzureEnvironment","_createAzureEnvironment","_ref3$meta","AzureEnvironment","createRemoteEnvironment","_createRemoteEnvironment","creationType","_ref4$options","createAgentEnvironment","environmentUrl","_ref5$meta","AgentEnvironment","createEdgeAgentEnvironment","portainerUrl","_ref6$meta","pollFrequency","edge","EdgeAgentEnvironment","_createEnvironment","_options$edge","_ref7$tagIds","_options$edge2","_options$edge3","_options$edge4","formPayload","EndpointCreationType","GroupID","EdgeCheckinInterval","TLSSkipClientVerify","TLSCACertFile","TLSCertFile","TLSKeyFile","AzureApplicationID","applicationId","AzureTenantID","tenantId","AzureAuthenticationKey","authenticationKey","EdgeAsyncMode","EdgePingInterval","EdgeSnapshotInterval","EdgeCommandInterval","useConnectLocalEnvironment","localEnvironment","setLocalEnvironment","_useFetchLocalEnviron","useFetchLocalEnvironment","createLocalEnvironmentMutation","createLocalEnvironment","mutationStatus","_createLocalEnvironment","getTypeLabel","EnvironmentSelector","existingEnvironmentTypes","newEnvironmentTypes","environmentTypes","formTitles","dockerStandalone","dockerSwarm","aci","kaas","k8sInstall","Stepper","currentStep","steps","useGenericCreationMutation","MetadataFieldset","tagProps","tagHelpers","MoreSettingsSection","NameField","_isNameUnique","useNameValidation","uniquenessTest","EdgeAgentFieldset","metadataValidation","EdgeAgentForm","nameValidation","urlValidation","tunnelServerAddr","useValidationSchema","buildInitialValues","Plug2","EdgeAgentTab","setEdgeInfo","EdgeKey","EnvironmentUrlField","useValidation","_address$split2","validateAddress","AgentForm","deploymentsStandalone","deploymentsSwarm","DeploymentScripts","deployType","setDeployType","agentDetailsQuery","DeployCode","AgentTab","APIForm","tlsConfig","getTlsValues","APITab","SocketForm","overridePath","OverrideSocketFieldset","SocketTab","WizardDocker","setCreationType","_onCreate","_onCreate2","_onCreate3","_onCreate4","_onCreate5","getTab","WizardAzure","showAgentSecretMessage","AgentPanel","kubeConfig","KubeConfigTeaserForm","WizardKubernetes","WizardEndpointsList","endpointTypeName","wizardModule","localEndpointIdParam","localEndpointId","setEnvironmentIds","envTypes","useParamEnvironmentTypes","eType","_useAnalyticsState","dockerAgent","dockerApi","kubernetesAgent","kubernetesEdgeAgentAsync","kubernetesEdgeAgentStandard","kaasAgent","aciApi","localEndpoint","nomadEdgeAgentStandard","dockerEdgeAgentAsync","dockerEdgeAgentStandard","analytics","setAnalyticsState","setAnalytics","prevState","useAnalyticsState","_useStepper","onFinish","currentStepIndex","setCurrentStepIndex","isFirstStep","isLastStep","onNextClick","removeItem","onPreviousClick","useStepper","Wand2","ArrowLeft","setTypes","startWizard","localEnvironmentAdded","DockerIcon","Kube","teamSyncQuery","TeamSync","leaderCount","_handleDeleteClick","_useRowContext","addMemberMutation","UsersList","rowContext","UserPlus","membershipsQuery","removeMemberMutation","teamRole","updateRoleMutation","Cell","LeaderCell","MemberCell","onSuccessMessage","UserX","TeamMembersList","TeamAssociationSelector","teamUsers","usersNotInTeam","userRoles","CreateTeamForm","addTeamMutation","incFormKey","_handleAddTeamClick","TeamsDatatable","teamsModule","teamIdParam","useTeamIdParam","teamQuery","usersQuery","teamsQuery","_getList","useList","getList","ScheduleType","_deleteUpdateSchedule","scheduleStatus","statusMessage","Failed","scheduledTime","scheduleType","listQuery","edgeGroupNames","edgeGroupIds","schedules","schedule","deleteUpdateSchedule","_create","currentId","useEdgeGroupsEnvironmentIds","envIds","ScheduledTimeField","dateValue","parseIsoDate","DateTimePicker","dateToSave","calendarIcon","clearIcon","disableClock","minDate","DEFAULT_MIN_VERSION","VersionSelect","_ref$minVersion","supportedVersions","UpdateScheduleDetailsFieldset","hasTimeZone","hasNoTimeZone","hasGroupSelected","getPreviousVersions","_getPreviousVersions","RollbackOptions","_useSelectVersionOnMo","_environmentIdsQuery$2","_useFormikContext$val","versionError","environmentIdsQuery","previousVersionsQuery","usePreviousVersions","_environmentIdsQuery$","useSelectVersionOnMount","groupNames","RollbackScheduleDetailsFieldset","ScheduleTypeSelector","environmentsIds","LocalTimeZone","Update","Rollback","_edgeGroups$find","EdgeGroupsField","selectedGroups","schedulesQuery","FormikForm","_getItem","includeEdgeStack","_update","updateMutation","itemQuery","useItem","isScheduleActive","initialValuesActive","environmentsCount","environmentsPreviousVersions","itemId","updateValidation","updateSchedulesModule","ListView","CreateView","ItemView","connectingToEdgeEndpoint","setConnectingToEdgeEndpoint","_redirect","_confirmTriggerSnapshot","EdgeAutoCreateScriptView","Suspense","fallback","withI18nSuspense","translationNS","useTranslation","setDescription","errorText","setErrorText","setIsLoading","accessToken","setAccessToken","_generateAccessToken","rawAPIKey","generateAccessToken","Trans","constCurrentEnvironmentStore","deletionMutation","deleteEnvironment","mobileWidth","useSidebarState","SidebarProvider","_storage$useLocalStor2","storageIsOpen","setIsOpenInStorage","_useStateWithUndo2","undoIsOpenChange","onResize","setState","undo","handleSetState","newState","useStateWithUndo","isMobile","useUpdateAngularService","AngularSidebarService","innerWidth","getPaths","isReactElement","_ref$openOnPaths","openOnPaths","_useIsOpen","currentStateName","isOpenByState","forceOpen","toggleForceOpen","toggleOpen","useIsOpen","CollapseButtonIcon","Head","_ref$params","_ref$ignorePaths","ignorePaths","activeClassName","_useCurrentStateAndPa4","stateName","useUiRouterSrefActive","useSrefActive","anchor","SidebarItem","childrenPath","_Children$map","getPathsForChildren","SidebarSection","showTitleWhenOpen","SidebarSectionTitle","showWhenOpen","EdgeComputeSidebar","icons","_icons","DashboardLink","platformPath","Layout","AzureSidebar","VolumesLink","DockerSidebar","areStacksVisible","envVersionQuery","setupSubMenuProps","Trello","featSubMenuTo","registrySubMenuTo","terminalHeight","terminalClose","terminalResize","contentWrapperHeight","innerHeight","overflowY","pageWrapper","KubeCtlShell","minimized","setShell","terminalElem","handleClose","openTerminal","writeln","onOpen","onMessage","readyState","CLOSED","wsProtocol","onData","onKey","domEvent","ctrlKey","loadingMessage","KubectlShellButton","setOpen","createPortal","KubernetesSidebar","Helm","NomadSidebar","EnvironmentSidebar","envStore","_useCurrentEnvironmen","clearEnvironment","onClear","_sidebar","Sidebar","getPlatformIcon","closeBtn","SettingsSidebar","showUsersSection","EdgeUpdatesSidebarItem","Radio","Award","_getSystemVersion","useSystemVersion","getSystemVersion","UpdateNotification","UpdateAvailable","LatestVersion","dismissTitle","dismissBtn","BuildInfoModalButton","isBuildInfoVisible","setIsBuildInfoVisible","statusQuery","BuildInfoModal","closeModal","_versionQuery$data","ServerVersion","DatabaseVersion","versionInfo","BuildNumber","ImageTag","toolsList","Wrench","tools","NodejsVersion","YarnVersion","WebpackVersion","GoVersion","BEFooter","CEFooter","FooterContent","customLogo","_useSidebarState","collapseBtn","ChevronsLeft","ChevronsRight","fullLogoBE","fullLogoCE","smallLogo","getLogo","getSystemInfo","_getSystemInfo","upgradeEdition","_upgradeEdition","license","UploadLicenseDialog","goToLoading","goToGetLicense","isGetLicenseSubmitted","upgradeMutation","Upgrade","LoadingDialog","setEnabled","timeoutId","NonAdminUpgradeDialog","globalId","HubspotForm","portalId","formId","onSubmitted","elRef","_useHubspotForm","elId","loadHubspot","createForm","onFormSubmitted","useHubspotForm","_loadHubspot","hbspt","script","_createForm","onFormReady","_options$onFormReady","rest","GetLicenseDialog","goToUploadLicense","UpgradeDialog","setCurrentStep","setIsGetLicenseSubmitted","isSubmitted","getDialog","UpgradeBEBannerWrapper","nodesCountQuery","systemInfoQuery","systemInfo","upgrade","nodeCount","edgeAgents","enabledPlatforms","ArrowUpCircle","sidebarModule","Home","azureEndpointConfig","helpersModule","isTransitionRequiresAuthentication","nextTransition","nextTransitionName","featureFlagModule","userActivityModule","servicesModule","authManager","loggedIn","handleUnauthenticated","performReload","checkAuthOnRefresh","initAuthentication","initialize","account","logout","deviceImport","endpointAccess","endpointKVM","groupCreation","groupAccess","initAdmin","settingsAuthentication","InformationPanelAngular","dismissAction","inheritFrom","Inherited","changeOrderBy","orderField","entryClick","emptyDatasetMessage","TeamService","onAuthorizedTeamsChange","AuthorizedTeams","onAuthorizedUsersChange","AuthorizedUsers","availableTeams","availableUsers","onChangeEnablement","onChangeOwnership","retrieveOwnershipDetails","setOwnership","setAuthorizedUsersAndTeams","porAccessManagement","accessControlledEntity","entityType","PorAccessManagementController","RoleService","onChangeUsersAndTeams","oldUserAccessPolicies","oldTeamAccessPolicies","updatedUserAccesses","updatedTeamAccesses","accessPolicies","generateAccessPolicies","userAccessPolicies","teamAccessPolicies","selectedRoleId","selectedRole","selectedUserAccesses","access","selectedTeamAccesses","selectedAccesses","isRoleLimitedToBE","RoleTypes","STANDARD","roleLabel","spinning","CodeEditorController","identifier","CodeMirrorService","editorElement","applyCodeMirrorOnElement","CopyButtonController","isFading","copyValueText","CustomTemplateCommonFieldsController","templateTypes","showPlatformField","showTypeField","nameRegex","nameRegexError","CustomTemplateSelectorController","handleChangeTemplate","stackType","customTemplateSelector","newTemplatePath","onSelectClick","showSwarmStacks","onDeleteClick","createPath","editPath","AccessTokensDatatableController","onClickAdd","DatatableColumnsVisibilityController","DatatableFilterController","onChangeItem","isChecked","datatableFilter","selectAll","displayTextFilter","resetSelectionState","onTextFilterChangeGeneric","setDataTableOrder","selectItem","originalEvent","firstClickedItem","firstItemIndex","lastItemIndex","itemsInRange","isBetween","uniq","onSelectionChanged","showTextFilter","getPaginationLimit","$onInitGeneric","datatableTitlebar","datatablePagination","onChangeLimit","enableNoLimit","onChangePage","canBrowse","endpointType","RegistriesDatatableController","enableGoToLink","goToRegistry","redirectToManageAccess","createEnabled","showActiveStacks","showUnactiveStacks","External","Orphaned","OrphanedRunning","allOrphanedStacks","onFilterChange","onSettingsAllOrphanedStacksChange","stringsDatatable","columnHeader","UsersDatatableController","authenticationMethod","DemoFeatureIndicatorController","isDemo","demoEnvironment","demoFeatureIndicator","Shield","onChangeTLSMode","TLSMode","onToggleTLS","TLSConfig","CACert","EndpointSecurityFormData","$attrs","dom","condition","$eval","focusDelay","focusIf","fileUploadForm","ngRequired","webEditorForm","WebEditorFormController","GroupFormController","associatedEndpoints","allowCreateTag","unassociatedQuery","KubernetesRedeployAppGitFormController","saveGitSettingsInProgress","redeployInProgress","showConfig","hasUnsavedChanges","RefName","onChangeRef","onChangeAutoUpdate","onChangeGitAuth","onChangeTLSSkipVerify","toJson","updateKubeGit","isSubmitButtonDisabled","kubernetesRedeployAppGitForm","toggleAuthentication","$postLink","registryFormEcr","registry_name","$validators","modelValue","nameIsUsed","registryFormAzure","registryFormCustom","registryFormDockerhub","disableSelection","RegistryEnabled","retrieveRegistries","createRegistries","projects","resetDefaults","registryFormProGet","toggleOrganisation","registryFormQuay","useOrganisation","createTemplate","unselectTemplate","advanced","stackRedeployGitForm","StackRedeployGitFormController","$compile","stackPullImageFeature","Prune","onChangeEnvVar","onChangeOption","automaticUpdates","autoSyncLabel","isSwarmStack","that","updateGit","removeInvalidEnvVars","updateGitStackSettings","isAutoUpdateChanged","wasEnabled","requires","parentClasses","BeIndicatorController","beFeatureIndicator","GitFormController","runGitFormValidation","_$onInit","_runGitFormValidation","_this$gitForm","_this$gitForm2","gitForm","GitFormAuthFieldsetController","runGitValidation","_runGitValidation","_this$gitFormAuthFiel","_this$gitFormAuthFiel2","gitFormAuthFieldset","GitFormAutoUpdateFieldsetController","_this$gitFormAutoUpda","_this$gitFormAutoUpda2","gitFormAutoUpdate","GitFormRefFieldController","_this2$gitFormRefFiel","_this2$gitFormRefFiel2","gitFormRefField","tlsFieldsetModule","widgetModule","porAccessManagementModule","formComponentsModule","ngModel","invalidIntervalFormat","minimumInterval","which","onEnterKey","OptionPanelController","switchPruneService","goTo","products","registryDetails","useAsterisk","precision","SliderController","buildOptions","translate","sliderId","showSelectionBar","enforceStep","isFormValidForMigration","environmentSelectorOptions","duplicationInProgress","migrationInProgress","isFormValidForDuplication","yamlError","duplicateStack","onDuplicate","migrateStack","onMigrate","isMigrationButtonDisabled","currentEndpointId","isEndpointSelected","onChangeEnvironment","groupSet","groupEnvironments","statusIndicator","TemplateListController","TemplateService","categorySorter","Categories","getSorter","sorter","typeFilters","filterByType","showContainerTemplates","selectedOrderBy","orderByFields","orderDesc","filterByTemplateType","filterByCategory","duplicateTemplate","duplicateTemplateAsync","templateFile","stackfile","initalTemplates","applyTypeFilter","invertOrder","applyCategoriesFilter","Sun","Moon","ThemeSettingsController","ThemeManager","setThemeColor","setTheme","autoTheme","themeColor","updateThemeSettings","updateUserTheme","availableThemes","ThemeSettings","left","filesize","TIME_FORMAT","toDate","strFormat","pair","separator","arrayToStr","labelsToStr","MicrosoftIcon","Cloud","findAssociatedGroup","EndpointHelper","GenericHelper","findDeepAll","ResourceControlHelper","RCViewModelToOwnershipParameters","ResourceControlOwnershipParameters","RCFormDataToOwnershipParameters","subResources","retrieveAuthorizedUsers","retrieveAuthorizedTeams","validateYAML","containerNames","originalContainersNames","yamlObject","duplicateContainers","extractContainerNames","getExternalStacksFromLabel","ExternalStackViewModel","getExternalStacksFromContainers","getExternalStacksFromServices","idsToTagNames","portConfiguration","exposedPorts","labelsArray","templateEnvironment","envvar","interactiveFlag","consoleConfiguration","generatedVolumesPile","keyValStr","pathname","Override","PortainerEndpointInitFormValues","PortainerEndpointConnectionTypes","KUBERNETES_LOCAL","TLSSKipClientVerify","AzureApplicationId","AzureTenantId","PortainerEndpointCreationTypes","DOCKER_LOCAL","REMOTE","AZURE","AGENT","EDGE","RegistryGitlabProject","project","PathWithNamespace","path_with_namespace","container_registry_enabled","EndpointGroupDefaultModel","AssociatedEndpoints","EndpointGroupModel","EndpointGroupCreateRequest","EndpointGroupUpdateRequest","RegistryViewModel","BaseURL","Ecr","RegistryManagementConfigurationDefaultModel","ECR","Region","PROGET","RegistryCreateFormValues","RegistryCreateRequest","ProjectId","InstanceURL","organisationName","RegistryRepositoryViewModel","TagsCount","RegistryRepositoryGitlabViewModel","ResourceControlCreatePayload","AdministratorsOnly","Teams","SubResourceIDs","SettingsViewModel","AuthenticationMethod","InternalAuthSettings","LDAPSettings","OAuthSettings","OAuthSettingsViewModel","FeatureFlagSettings","UserSessionTimeout","PublicSettingsViewModel","OAuthLoginURI","OAuthLogoutURI","EdgeSettingsViewModel","IsFDOEnabled","InternalAuthSettingsViewModel","LDAPSettingsViewModel","ReaderDN","SearchSettings","GroupSearchSettings","AutoCreateUsers","LDAPSearchSettings","BaseDN","UsernameAttribute","LDAPGroupSearchSettings","GroupBaseDN","GroupAttribute","GroupFilter","ClientID","ClientSecret","AccessTokenURI","AuthorizationURI","ResourceURI","RedirectURI","UserIdentifier","Scopes","OAuthAutoCreateUsers","DefaultTeamID","SSO","LogoutURI","CheckinInterval","StackViewModel","SwarmId","IsComposeFormat","UpdateDate","UpdatedBy","Regular","FromAppTemplate","creationDate","OrphanedStackViewModel","StatusViewModel","InstanceID","StatusVersionViewModel","TagViewModel","TeamViewModel","TeamMembershipModel","TemplateViewModel","setTemplatesV2","AdministratorOnly","note","privileged","Interactive","restart_policy","preset","allowedValue","templateEnv","templateVolumes","portAndProtocol","hostAndContainerPort","templatePorts","UserViewModel","EndpointAuthorizations","PortainerAuthorizations","RoleName","UserTokenModel","dateCreated","lastUsed","WebhookViewModel","WebhookType","Microsoft","Google","OAuthProviderSelectorController","saveButtonState","MS_TENANT_ID_PLACEHOLDER","OAuthSettingsController","limitedFeatureClass","overrideConfiguration","microsoftTenantID","onSelectProvider","onMicrosoftTenantIDChange","useDefaultProviderConfiguration","updateSSO","addTeamMembershipMapping","removeTeamMembership","onToggleAutoTeamMembership","tenantID","providerId","authUrl","accessTokenUrl","resourceUrl","logoutUrl","userIdentifier","scopes","HideInternalAuth","OAuthAutoMapTeamMemberships","TeamMemberships","OAuthClaimMappings","ClaimValRegex","Team","isOAuthTeamMembershipFormValid","OAuthClaimName","getProviderByUrl","providerAuthURL","API_ENDPOINT_OAUTH","accessViewerDatatable","AccessViewerController","TeamMembershipService","selectedUserId","onUserSelect","allUsers","_entries","getRoleFromUserEndpointPolicy","getRoleFromUserEndpointGroupPolicy","getRoleFromTeamEndpointPolicies","getRoleFromTeamEndpointGroupPolicies","findLowestRole","policies","policyRoles","accessPolicy","AccessViewerPolicyModel","groupUserAccessPolicies","groupTeamAccessPolicies","filteredUsers","leadingTeams","userLeadingTeams","isMember","leadingTeam","_keyBy","teamMemberUsers","accessViewer","rolesDatatable","RolesDatatableController","isDefaultItem","rolesView","RolesFactory","EndpointName","RolePriority","Priority","TeamName","AccessLocation","RoleViewModel","Authorizations","ENDPOINT_ADMIN","HELPDESK","READ_ONLY","OPERATOR","API_ENDPOINT_ROLES","rolesData","RolesController","login","headersGetter","getS3Settings","saveS3Settings","restoreS3Backup","CustomTemplatesFactory","gitFetch","getEndpointsTotalCount","disassociate","snapshots","dockerhubLimits","gitlabResponseGetLink","repositories","addEndpoint","removeEndpoint","checkLDAPConnectivity","API_ENDPOINT_SSL","SSLFactory","StackFactory","subaction","associate","swarmId","orphanedRunning","external","migrate","queryMemberships","updatePassword","updateTheme","checkAdminUser","initAdminUser","createAccessToken","getAccessTokens","deleteAccessToken","entityId","rejected","accessesAsync","newUserPolicies","_clone","newTeamPolicies","_mapAccessData","authorizedPolicies","inheritedPolicies","availableAccesses","authorizedAccesses","authorized","inherited","available","authorizedUserPolicies","authorizedTeamPolicies","inheritedUserPolicies","inheritedTeamPolicies","userAccesses","teamAccesses","userAccessData","teamAccessData","accessData","Backup","uploadBackup","CustomTemplateServiceFactory","$sanitize","CustomTemplates","html","createCustomTemplate","notify","groupID","endpointURL","createEndpoint","TLSCAFile","checkinInterval","createAzureEndpoint","UserTrusted","EndpointGroups","credentials","deleteRegistry","updateRegistry","configureRegistry","registryManagementConfigurationModel","createRegistry","createGitlabRegistries","retrievePorRegistryModelFromRepositoryWithRegistries","getURL","match2","match3","match4","findBestMatchRegistry","lastIndex","rcID","duplicateResourceControl","oldResourceControl","newResourceControl","SSLServiceFactory","SSL","SSLPayload","StackHelper","SwarmService","kubernetesDeployAsync","migrateSwarmStack","targetEndpointId","SwarmID","migrateComposeStack","includeOrphanedStacks","composeStacks","IncludeOrphanedStacks","swarmStacks","externalSwarmStacks","externalComposeStacks","unionStacks","externalStacks","externalStack","_unionWith","includeExternalStacks","createComposeStackFromFileUpload","createComposeStack","createSwarmStackFromFileUpload","createSwarmStack","createComposeStackFromFileContent","createSwarmStackFromFileContent","createComposeStackFromGitRepository","ComposeFile","createSwarmStackFromGitRepository","StatusServiceFactory","Support","createTagAsync","deleteTag","leaderIds","TeamLeaders","TemplateServiceFactory","Templates","TemplateHelper","registryURL","repositoryUrl","composeFilePathInRepository","containerConfiguration","getDefaultContainerConfiguration","EnvToStringArray","portArrayToPortConfiguration","getConsoleConfiguration","updateContainerConfigurationWithLabels","createContainerConfiguration","createVolumeBindings","teamIds","teamMembershipQueries","createMembership","newPassword","currentPassword","NewPassword","userTokens","tokenId","Webhooks","serviceID","asyncFunc","wrapper","Auth","OAuth","jwtHelper","initAsync","isTokenExpired","tryAutoLoginExtension","setUser","logoutAsync","clearSessionStorage","cleanAuthData","storeLoginStateUUID","OAuthLoginAsync","setJWTFromResponse","storeJWT","loginAsync","decodeToken","userTheme","setUserTheme","OAuthLogin","defaultChartOptions","pos","tooltipCallback","scalesCallback","isStacked","animation","responsiveAnimationDuration","responsive","tooltips","intersect","callbacks","tooltipItem","datasetLabel","datasets","datasetIndex","yLabel","layout","hover","animationDuration","scales","yAxes","stacked","ticks","beginAtZero","LimitChartItems","CHART_LIMIT","byteBasedTooltipLabel","byteBasedAxisLabel","percentageBasedAxisLabel","percentageBasedTooltipLabel","borderColor","pointBackgroundColor","pointBorderColor","pointRadius","borderWidth","CreateChart","cacheValue","DatatableServiceFactory","TEXT_FILTER_KEY_PREFIX","storeDataTableSettings","storeDataTableFilters","storeDataTableOrder","storeDataTableExpandedItems","storeColumnVisibilitySettings","setDataTableSelectedItems","storeDataTableSelectedItems","getDataTableSelectedItems","uploadFile","RetryCount","RetryInterval","uploadLDAPTLSFiles","queue","uploadOwnershipVoucher","voucherFile","voucher","validator","localStorageService","getLoginStateUUID","storeEndpointState","getEndpointState","cleanEndpointState","storeApplicationState","getApplicationState","storeUIState","getUIState","deleteJWT","storePaginationLimit","storeDataTableTextFilters","storeJobImage","getJobImage","userID","storeLogoutReason","getLogoutReason","cleanLogoutReason","clearAll","NameValidatorFactory","validateEnvironmentName","paginationLimit","storedLimit","_getProjectsPage","projectsAsync","_getRepositoriesPage","repositoriesAsync","projectId","RegistrySelectPrompt","setRegistryId","registries2Options","selectRegistry","StateManagerFactory","InfoHelper","StatusService","manager","UI","timesPasswordChangeSkipped","dismissImportantInformation","setRequiredPasswordLength","requiredPasswordLength","setPasswordChangeSkipped","instanceId","resetPasswordChangeSkips","clearPasswordChangeSkips","cleanEndpoint","logoURL","updateEnableEdgeComputeFeatures","enableEdgeComputeFeatures","setOptOut","endpointState","appState","isAppStateValid","UIState","determineEndpointMode","endpointAPIVersion","documentElement","setAttribute","removeAttribute","systemTheme","matchMedia","defaultTheme","authenticationMethodTypesMap","INTERNAL","LDAP","OAUTH","authenticationMethodTypesLabels","authenticationActivityTypesMap","AuthSuccess","AuthFailure","Logout","authenticationActivityTypesLabels","autoUserProvisionToggle","ldapModule","saveAuthSettingsButton","AdSettingsController","LDAPService","domainSuffix","limitedFeatureId","onTlscaCertChange","searchUsers","searchGroups","parseDomainName","onAccountChange","part","addLDAPUrl","URLs","removeLDAPUrl","isSaveSettingButtonDisabled","isLdapFormValid","adSettings","connectivityCheck","ldapConnectivityCheck","ldapGroupsDatatable","ldapSettings","ldapGroupSearch","ldapGroupSearchItem","ldapUserSearch","ldapUserSearchItem","ldapSettingsCustom","ldapSettingsDnBuilder","ldapSettingsGroupDnBuilder","ldapCustomGroupSearch","ldapCustomAdminGroup","ldapSettingsOpenLdap","ldapSettingsSecurity","ldapSettingsTestLogin","ldapCustomUserSearch","ldapUsersDatatable","selectedAdminGroups","defaultAdminGroupSearchFilter","onSearchClick","isLimitedFeatureSelfContained","LdapCustomAdminGroupController","groupstest","enableAssignAdminGroup","onAddClick","onAdminGroupChange","AdminGroupSearchSettings","AdminAutoPopulate","AdminGroups","LdapCustomGroupSearchController","showTable","LdapCustomUserSearchController","UserNameAttribute","baseFilter","LdapSettingsAdGroupSearchItemController","onChangeBaseDN","baseDN","addGroup","removeGroup","$index","onGroupsChange","groupsFilter","parseGroupFilter","LdapGroupSearchController","lastSetting","onSearchUsersClick","onSearchGroupsClick","saveButtonDisabled","LdapSettingsCustomController","suffix","LdapSettingsBaseDnBuilderController","onEntriesChange","moveUp","moveDown","dn","getOUValues","regex","ouValues","parseBaseDN","toIndex","LdapSettingsGroupDnBuilderController","onGroupNameChange","onGroupChange","groupNameEntry","parseEntries","$onChange","LdapSettingsOpenLDAPController","findDomainSuffix","parseDomainSuffix","serviceAccount","searchSettings","uploadInProgress","showBeIndicatorIfNeeded","TEST_STATUS","LOADING","SUCCESS","FAILURE","LdapSettingsTestLogin","testStatus","testLogin","buildLdapSettingsModel","AnonymousMode","ServerType","StartTLS","buildAdSettingsModel","buildOpenLDAPSettingsModel","Openldap","SERVER_TYPES","OPEN_LDAP","AD","LdapSettingsController","settingsDrafts","boxSelectorOptions","onChangeServerType","serverType","showUsernameFormat","LdapUserSearchItemController","onBaseDNChange","generateUserFilter","parseFilter","members","member","LdapUserSearchController","API_ENDPOINT_LDAP","cnName","authenticationModule","generalModule","ActivityLogsDatatableController","changeSort","handleChangeLimit","onChangeSort","activityLogsDatatable","totalItems","onChangeContextFilter","onChangeKeyword","ActivityLogsViewController","today","endOf","minValidDate","startOf","onChangeDate","startDate","endDate","activityLogsView","contextFilterLabels","typeFilterLabels","contextType","activityType","isAuthSuccess","isAuthFailure","authLogsDatatable","contextFilter","typeFilter","onChangeTypeFilter","AuthLogsViewController","filterState","authLogsView","NotificationsViewAngular","activeItemId","authLogsViewModule","activityLogsViewModule","confirmPassword","updateUserPassword","skipPasswordChange","userCanSkip","newTransition","userRole","selectedTokens","isInitialAdmin","isDemoUser","CreateUserAccessTokenController","AuthenticationController","URLHelper","passwordInputType","showOAuthLogin","showStandardLogin","AuthenticationError","loginInProgress","OAuthProvider","checkForEndpointsAsync","postLoginSteps","oAuthLoginAsync","internalLoginAsync","authenticateUserAsync","manageOauthCodeReturn","authEnabledFlowAsync","toggleShowPassword","setPasswordInputType","inputType","generateOAuthLoginURI","determineOauthProvider","LoginURI","generateState","hasValidState","savedUUID","cleanParameters","authenticateUser","administratorExists","toggleStandardLogin","getParameter","CreateCustomTemplateViewController","fromStack","createCustomTemplateAsync","CustomTemplatesViewController","DOCKER_STANDALONE","DOCKER_SWARM_MODE","showAdvancedOptions","deployable","getTemplatesAsync","removeTemplates","removeTemplatesAsync","createStackAsync","selectTemplateAsync","unselectTemplateAsync","getNetworksAsync","confirmDeleteAsync","createAction","isDeployable","templateType","EditCustomTemplateViewController","getTemplateAsync","submitActionAsync","vouchersUploading","vouchersUploaded","deviceIDs","DeviceName","DeviceProfile","VoucherFiles","PortainerURL","Suffix","onVoucherFilesChange","uploads","responses","guid","createEndpointAndConfigureDevice","deviceID","deviceName","createRemoteEndpoint","edgeID","AddProfileController","createProfileAsync","EditProfileController","profileID","updateProfileAsync","EndpointRegistriesController","EndpointAccessController","updateAccessAsync","EndpointController","clearAMTManagementInfo","versionValue","ManagementInfo","onChangeCheckInInterval","onChangeTLSConfigFormValues","azureEndpoint","agentEndpoint","edgeEndpoint","edgeAssociated","showAMTInfo","showNomad","showTLSConfig","edgeScriptCommands","onDisassociateEndpoint","disassociateEndpoint","initialTagIds","AzureCredentials","ApplicationID","TenantID","AuthenticationKey","evt","dockerInfo","isDockerSwarmEnv","edgeKeyDetails","keyInformation","decodedKey","instanceURL","decodeEdgeKey","configureTLS","isDockerEndpoint","amtInfo","RawOutput","numbers","EndpointKVMController","maximized","maximize","minimize","ider","kvm","sol","redirection","userConsent","mpsAuthorization","mpsToken","onAssociate","onDisassociate","GroupsController","deleteGroup","restoreOptions","wait","seconds","BackupService","REDIRECT_REASON_TIMEOUT","backupInProgress","BackupFile","restoreAsyncFn","waitPortainerRestart","restoreAndRefresh","ConfirmPassword","showInitPassword","showRestorePortainer","togglePanel","onChangeRestoreType","restoreFormType","createAdminUser","initAdministrator","LogoutController","MainController","CreateRegistryController","Proget","RegistryGitlabService","originViewReference","originalEndpointId","retrieveGitlabRegistries","selectDockerHub","selectEcr","selectQuayRegistry","selectProGetRegistry","selectAzureRegistry","selectGitlabRegistry","selectCustomRegistry","setRegistry","useDefaultQuayConfiguration","useDefaultGitlabConfiguration","useDefaultEcrConfiguration","gitlabProjects","registriesNames","registryValue","availableRegistry","RegistryController","toggleQuayUseOrganisation","passwordLabel","nameAlreadyExists","getRegistryProvider","registryType","nonBrowsableTypes","regAttrMsg","registriesMsg","deleteSelectedRegistries","ArrowDownCircle","Ldap","SettingsAuthenticationController","prepareLDAPSettings","tlscaFile","isADServer","uploadRequired","authMethod","availableUserSessionTimeoutOptions","authOptions","onChangeAuthMethod","onChangePasswordLength","authenticationMethodSelected","isOauthEnabled","LDAPConnectivityCheck","connectivityCheckInProgress","failedConnectivityCheck","successfulConnectivityCheck","saveSettings","isLDAPFormValid","isTLSMode","SettingsEdgeComputeController","onSubmitEdgeCompute","onSubmitOpenAMT","onSubmitFDO","editorYamlValidationError","uploadYamlValidationError","selectedTemplateId","stackWebhookFeature","EnableWebhook","onEnableWebhookChange","composeSyntaxMaxVersion","ComposeSyntaxMaxVersion","getContainerNames","stopStackAsync","startStackAsync","retrieveSwarmStackResources","stackFilter","assignSwarmStackResources","STACK_TYPES","onPruneChange","migrateRequest","removeStack","detachStackFromGit","associateStack","originalContainerNames","stopStack","startStack","canManageStacks","regular","orphaned","DockerSwarm","loadExternalSwarmStack","loadExternalStack","resourcesPromise","isSwarm","Active","StacksController","getStacks","deleteSelectedStacks","TagsController","checkNameValidity","createStackFromTemplate","createComposeStackFromTemplate","templateConfiguration","createTemplateConfiguration","generatedVolumeCount","determineRequiredGeneratedVolumeCount","generatedVolumeIds","createXAutoGeneratedLocalVolumes","updateContainerConfigurationWithVolumes","createContainerFromTemplate","updatePasswordError","Administrator","handleAdministratorChange","deleteUser","updateUser","oldUsername","isCurrentUser","isSubmitEnabled","isDeleteDisabled","userCreationError","validUsername","TeamIds","onChangeTeamIds","checkUsernameValidity","toLocaleLowerCase","addUser","createUser","deleteSelectedUsers","assignTeamLeaders","teamSync","docURLs","locationRegex","exmaples","examples","DEFAULT_DOC_URL","setupTests","_module_exports"],"sourceRoot":""}