diff --git a/assets/kubewarden/kubewarden-2.0.0.tgz b/assets/kubewarden/kubewarden-2.0.0.tgz new file mode 100644 index 0000000..d2aa742 Binary files /dev/null and b/assets/kubewarden/kubewarden-2.0.0.tgz differ diff --git a/charts/kubewarden/2.0.0/Chart.yaml b/charts/kubewarden/2.0.0/Chart.yaml new file mode 100644 index 0000000..2959367 --- /dev/null +++ b/charts/kubewarden/2.0.0/Chart.yaml @@ -0,0 +1,17 @@ +annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.31.0-0' + catalog.cattle.io/namespace: cattle-ui-plugin-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux, windows + catalog.cattle.io/rancher-version: '>= 2.9.0-0' + catalog.cattle.io/scope: management + catalog.cattle.io/ui-component: plugins + catalog.cattle.io/ui-extension-version: '>= 2.0.0' +apiVersion: v2 +appVersion: 2.0.0 +description: Kubewarden extension for Rancher Manager +name: kubewarden +type: application +version: 2.0.0 +icon: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/2.0.0-icon-kubewarden.svg diff --git a/charts/kubewarden/2.0.0/README.md b/charts/kubewarden/2.0.0/README.md new file mode 100644 index 0000000..a6dfb84 --- /dev/null +++ b/charts/kubewarden/2.0.0/README.md @@ -0,0 +1,7 @@ +# Kubewarden Extension for Rancher Manager + +An extension for Rancher Manager which allows you to interact with Kubewarden. + +After installation, go to a cluster and you will see a new side navigation entry 'Kubewarden'. This will allow you to install Kubewarden into the cluster and manage Kubewarden resources and configuration. + +For more information see https://www.kubewarden.io/ diff --git a/charts/kubewarden/2.0.0/templates/_helpers.tpl b/charts/kubewarden/2.0.0/templates/_helpers.tpl new file mode 100644 index 0000000..170f941 --- /dev/null +++ b/charts/kubewarden/2.0.0/templates/_helpers.tpl @@ -0,0 +1,63 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "extension-server.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "extension-server.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "extension-server.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "extension-server.labels" -}} +helm.sh/chart: {{ include "extension-server.chart" . }} +{{ include "extension-server.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "extension-server.selectorLabels" -}} +app.kubernetes.io/name: {{ include "extension-server.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Pkg annotations +*/}} +{{- define "extension-server.pluginMetadata" -}} +{{- with .Values.plugin.metadata }} +{{- range $key, $value := . }} +{{ $key }}: {{ $value | quote }} +{{- end }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/charts/kubewarden/2.0.0/templates/cr.yaml b/charts/kubewarden/2.0.0/templates/cr.yaml new file mode 100644 index 0000000..d0623ae --- /dev/null +++ b/charts/kubewarden/2.0.0/templates/cr.yaml @@ -0,0 +1,14 @@ +apiVersion: catalog.cattle.io/v1 +kind: UIPlugin +metadata: + name: {{ include "extension-server.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: {{ include "extension-server.labels" . | nindent 4 }} +spec: + plugin: + name: {{ include "extension-server.fullname" . }} + version: {{ (semver (default .Chart.AppVersion .Values.plugin.versionOverride)).Original }} + endpoint: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/extensions/kubewarden/2.0.0 + noCache: {{ .Values.plugin.noCache }} + noAuth: {{ .Values.plugin.noAuth }} + metadata: {{ include "extension-server.pluginMetadata" . | indent 6 }} \ No newline at end of file diff --git a/charts/kubewarden/2.0.0/values.yaml b/charts/kubewarden/2.0.0/values.yaml new file mode 100644 index 0000000..268c783 --- /dev/null +++ b/charts/kubewarden/2.0.0/values.yaml @@ -0,0 +1,11 @@ +nameOverride: "" +fullnameOverride: "" +plugin: + enabled: true + versionOverride: "" + noCache: false + noAuth: false + metadata: + catalog.cattle.io/kube-version: ">= v1.16.0-0 < v1.31.0-0" + catalog.cattle.io/rancher-version: ">= 2.9.0-0" + catalog.cattle.io/ui-extension-version: ">= 2.0.0" diff --git a/extensions/kubewarden/2.0.0/files.txt b/extensions/kubewarden/2.0.0/files.txt new file mode 100644 index 0000000..fbd5a7a --- /dev/null +++ b/extensions/kubewarden/2.0.0/files.txt @@ -0,0 +1,36 @@ +plugin/assets/airgap-installation.md +plugin/img/harvester.765f68bd.png +plugin/img/icon-kubewarden.3c183b75.svg +plugin/kubewarden-2.0.0.umd.min.0.js +plugin/kubewarden-2.0.0.umd.min.0.js.map +plugin/kubewarden-2.0.0.umd.min.13.js +plugin/kubewarden-2.0.0.umd.min.13.js.map +plugin/kubewarden-2.0.0.umd.min.14.js +plugin/kubewarden-2.0.0.umd.min.14.js.map +plugin/kubewarden-2.0.0.umd.min.15.js +plugin/kubewarden-2.0.0.umd.min.15.js.map +plugin/kubewarden-2.0.0.umd.min.airgap-docs.js +plugin/kubewarden-2.0.0.umd.min.airgap-docs.js.map +plugin/kubewarden-2.0.0.umd.min.detail.js +plugin/kubewarden-2.0.0.umd.min.detail.js.map +plugin/kubewarden-2.0.0.umd.min.dialog.js +plugin/kubewarden-2.0.0.umd.min.dialog.js.map +plugin/kubewarden-2.0.0.umd.min.edit.js +plugin/kubewarden-2.0.0.umd.min.edit.js.map +plugin/kubewarden-2.0.0.umd.min.formatters.js +plugin/kubewarden-2.0.0.umd.min.formatters.js.map +plugin/kubewarden-2.0.0.umd.min.js +plugin/kubewarden-2.0.0.umd.min.js.map +plugin/kubewarden-2.0.0.umd.min.list.js +plugin/kubewarden-2.0.0.umd.min.list.js.map +plugin/kubewarden-2.0.0.umd.min.policyDashboard0.js +plugin/kubewarden-2.0.0.umd.min.policyDashboard0.js.map +plugin/kubewarden-2.0.0.umd.min.policyDashboard1.js +plugin/kubewarden-2.0.0.umd.min.policyDashboard1.js.map +plugin/kubewarden-2.0.0.umd.min.vendors~detail.js +plugin/kubewarden-2.0.0.umd.min.vendors~detail.js.map +plugin/kubewarden-2.0.0.umd.min.vendors~edit.js +plugin/kubewarden-2.0.0.umd.min.vendors~edit.js.map +plugin/kubewarden-2.0.0.umd.min.vendors~markdown.js +plugin/kubewarden-2.0.0.umd.min.vendors~markdown.js.map +plugin/package.json diff --git a/extensions/kubewarden/2.0.0/plugin/assets/airgap-installation.md b/extensions/kubewarden/2.0.0/plugin/assets/airgap-installation.md new file mode 100644 index 0000000..be3a8ca --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/assets/airgap-installation.md @@ -0,0 +1,155 @@ +# Air gap installation + +This guide will show you how to install Kubewarden in air-gapped environments. In an air-gapped installation of Kubewarden, +you will need a private OCI registry accessible by your Kubernetes cluster. Kubewarden Policies +are WebAssembly modules; therefore, they can be stored inside an OCI-compliant registry as OCI artifacts. +You need to add Kubewarden's images and policies to this OCI registry. Let's see how to do that. + +## Requirements + +1. Private registry that supports OCI artifacts, [here](../../distributing-policies/oci-registries-support) you can find a list of supported OCI registries. It will be used for storing the container images and policies. +2. [kwctl](https://github.com/kubewarden/kwctl) 1.3.1 or above +3. docker v20.10.6 or above + +## Save container images in your workstation + +1. Download `kubewarden-images.txt` from the Kubewarden [release page](https://github.com/kubewarden/helm-charts/releases/). Alternatively, the `imagelist.txt` and `policylist.txt` files are shipped inside the helm charts containing the used container images and policy wasm modules, respectively. + +>**Note:** Optionally, you can verify the signatures of the [helm charts](../../security/verifying-kubewarden#helm-charts) and [container images](../../security/verifying-kubewarden#container-images) + +2. Add `cert-manager` if it is not available in your private registry. + +``` +helm repo add jetstack https://charts.jetstack.io +helm repo update +helm pull jetstack/cert-manager +helm template ./cert-manager-.tgz | \ + awk '$1 ~ /image:/ {print $2}' | sed s/\"//g >> ./kubewarden-images.txt +``` + +3. Download `kubewarden-save-images.sh` and `kubewarden-load-images.sh` from the [utils repository](https://github.com/kubewarden/utils). +4. Save Kubewarden container images into a .tar.gz file: + +``` +./kubewarden-save-images.sh \ + --image-list ./kubewarden-images.txt \ + --images kubewarden-images.tar.gz +``` + +Docker begins pulling the images used for an air gap install. Be patient. This process takes a few minutes. +When the process completes, your current directory will output a tarball named `kubewarden-images.tar.gz`. It will be present in the same directory where you executed the command. + +## Save policies in your workstation + +1. Add all the policies you want to use in a `policies.txt` file. A file with a list of the default policies can be found in the Kubewarden defaults [release page](https://github.com/kubewarden/helm-charts/releases/) +2. Download `kubewarden-save-policies.sh` and `kubewarden-load-policies.sh` from the [kwctl repository](https://github.com/kubewarden/kwctl/tree/main/scripts) +3. Save policies into a .tar.gz file: + +``` +./kubewarden-save-policies.sh --policies-list policies.txt +``` + +kwctl downloads all the policies and stores them as `kubewarden-policies.tar.gz` archive. + +## Helm charts + +You need to download the following helm charts in your workstation: + +``` +helm pull kubewarden/kubewarden-crds +helm pull kubewarden/kubewarden-controller +helm pull kubewarden/kubewarden-defaults +``` + +Download `cert-manager` if it is not installed in the air gap cluster. + +``` +helm pull jetstack/cert-manager +``` + +## Populate private registry + +Move `kubewarden-policies.tar.gz`, `kubewarden-images.tar.gz`, `kubewarden-load-images.sh`, `kubewarden-load-policies.sh` and `policies.txt` +to the air gap environment. + +1. Load Kubewarden images into the private registry. Docker client must be authenticated against the local registry +``` +./kubewarden-load-images.sh \ + --image-list ./kubewarden-images.txt \ + --images kubewarden-images.tar.gz \ + --registry +``` +2. Load Kubewarden policies into the private registry. Kwctl must be authenticated against the local registry (`kwctl` uses the same mechanism to authenticate as `docker`, a `~/.docker/config.json` file) +``` +./kubewarden-load-policies.sh \ + --policies-list policies.txt \ + --policies kubewarden-policies.tar.gz \ + --registry \ + --sources-path sources.yml +``` + +>***Caution:*** +>The `sources.yaml` file is needed by kwctl to connect to registries that fall into these categories: +> +>* Authentication is required +>* Self signed certificate is being used +>* No TLS termination is done +> +>Please refer to [the section on custom certificate authorities](../../distributing-policies/custom-certificate-authorities.md) in our documentation to learn more about configuring the `sources.yaml` file + + +## Install Kubewarden + +Let's install Kubewarden now that we have everything we need in our private registry. The only difference with a normal +Kubewarden installation is that we need to change the registry in the container images and policies to our private registry. + +Install `cert-manager` if it is not already installed in the air gap cluster: + +``` +helm install --create-namespace cert-manager ./cert-manager-.tgz \ + -n kubewarden \ + --set installCRDs=true \ + --set image.repository=/jetstack/cert-manager-controller \ + --set webhook.image.repository=/jetstack/cert-manager-webhook \ + --set cainjector.image.repository=/jetstack/cert-manager-cainjector \ + --set startupapicheck.image.repository=/jetstack/cert-manager-ctl +``` + +Let's install the Kubewarden stack: + +``` +helm install --wait -n kubewarden \ + kubewarden-crds kubewarden-crds.tgz +``` + +``` +helm install --wait -n kubewarden \ + kubewarden-controller kubewarden-controller.tgz \ + --set global.cattle.systemDefaultRegistry= +``` + +``` +helm install --wait -n kubewarden \ + kubewarden-defaults kubewarden-defaults.tgz \ + --set global.cattle.systemDefaultRegistry= +``` + +>***Caution*** +>To download the recommended policies installed by the `kubewarden-defaults` Helm +>Chart from a registry other than `global.cattle.systemDefaultRegistry`, you can +>utilize the `recommendedPolicies.defaultPoliciesRegistry` configuration. This +>configuration allows users to specify a registry dedicated to pulling the OCI +>artifacts of the policies. It is particularly useful when their container image +>repository does not support OCI artifacts. +> +>To install and wait for the installation to complete, use the following command: +> +>```console +>helm install --wait -n kubewarden \ +> kubewarden-defaults kubewarden-defaults.tgz \ +> --set global.cattle.systemDefaultRegistry= \ +> --set recommendedPolicies.defaultPoliciesRegistry= +>``` +> +>If the `recommendedPolicies.defaultPoliciesRegistry` configuration is not set, +>the `global.cattle.systemDefaultRegistry` will be used as the default registry. diff --git a/extensions/kubewarden/2.0.0/plugin/img/harvester.765f68bd.png b/extensions/kubewarden/2.0.0/plugin/img/harvester.765f68bd.png new file mode 100644 index 0000000..d2b5eb3 Binary files /dev/null and b/extensions/kubewarden/2.0.0/plugin/img/harvester.765f68bd.png differ diff --git a/extensions/kubewarden/2.0.0/plugin/img/icon-kubewarden.3c183b75.svg b/extensions/kubewarden/2.0.0/plugin/img/icon-kubewarden.3c183b75.svg new file mode 100644 index 0000000..99494a4 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/img/icon-kubewarden.3c183b75.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.0.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.0.js new file mode 100644 index 0000000..dda73d3 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.0.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[0],{"6ba7":function(e,t,s){"use strict";s.r(t);var a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"reporter-panel"})},r=[],o=s("ad2f"),n={async fetch(){const e=!this.$route.params.resource,t=this.$route.params.resource;e&&await Object(o["g"])(this.$store,!0),(t||this.$route.path.includes("projectsnamespaces"))&&await Object(o["g"])(this.$store,!1,t)}},c=n,u=(s("7db5"),s("d802")),i=Object(u["a"])(c,a,r,!1,null,"1a7cd2cb",null);t["default"]=i.exports},"7db5":function(e,t,s){"use strict";s("7ee0")},"7ee0":function(e,t,s){var a=s("bf91");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var r=s("0ed3").default;r("6999e797",a,!0,{sourceMap:!1,shadowMode:!1})},bf91:function(e,t,s){var a=s("5eaa");t=a(!1),t.push([e.i,".reporter-panel[data-v-1a7cd2cb]{display:none}",""]),e.exports=t}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.0.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.0.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.0.js.map new file mode 100644 index 0000000..c541b29 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.0.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-2.0.0/./components/PolicyReporter/ReporterPanel.vue","webpack://kubewarden-2.0.0/components/PolicyReporter/ReporterPanel.vue","webpack://kubewarden-2.0.0/./components/PolicyReporter/ReporterPanel.vue?4eaa","webpack://kubewarden-2.0.0/./components/PolicyReporter/ReporterPanel.vue?979d","webpack://kubewarden-2.0.0/./components/PolicyReporter/ReporterPanel.vue?7ae9","webpack://kubewarden-2.0.0/./components/PolicyReporter/ReporterPanel.vue?5650","webpack://kubewarden-2.0.0/./components/PolicyReporter/ReporterPanel.vue?1132"],"names":["render","_vm","this","_c","_self","staticClass","staticRenderFns","isClusterLevel","$route","params","resource","resourceType","getReports","$store","path","includes","component","content","__esModule","default","module","i","locals","exports","add","___CSS_LOADER_API_IMPORT___","push"],"mappings":"wMAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,oBAErFC,EAAkB,G,YCOP,GACf,cACA,MAAAC,GAAA,KAAAC,OAAAC,OAAAC,SACAC,EAAA,KAAAH,OAAAC,OAAAC,SAGAH,SACAK,eAAA,KAAAC,QAAA,IAGAF,GAAA,KAAAH,OAAAM,KAAAC,SAAA,8BACAH,eAAA,KAAAC,QAAA,EAAAF,KCpBmZ,I,wBCQ/YK,EAAY,eACd,EACAhB,EACAM,GACA,EACA,KACA,WACA,MAIa,aAAAU,E,6CCnBf,W,uBCGA,IAAIC,EAAU,EAAQ,QACnBA,EAAQC,aAAYD,EAAUA,EAAQE,SACnB,kBAAZF,IAAsBA,EAAU,CAAC,CAACG,EAAOC,EAAIJ,EAAS,MAC7DA,EAAQK,SAAQF,EAAOG,QAAUN,EAAQK,QAE5C,IAAIE,EAAM,EAAQ,QAAqEL,QAC1EK,EAAI,WAAYP,GAAS,EAAM,CAAC,WAAY,EAAM,YAAa,K,qBCR5E,IAAIQ,EAA8B,EAAQ,QAC1CF,EAAUE,GAA4B,GAEtCF,EAAQG,KAAK,CAACN,EAAOC,EAAI,iDAAkD,KAE3ED,EAAOG,QAAUA","file":"kubewarden-2.0.0.umd.min.0.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"reporter-panel\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ReporterPanel.vue?vue&type=template&id=1a7cd2cb&scoped=true&\"\nimport script from \"./ReporterPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./ReporterPanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReporterPanel.vue?vue&type=style&index=0&id=1a7cd2cb&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a7cd2cb\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ReporterPanel.vue?vue&type=style&index=0&id=1a7cd2cb&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a ","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceTab.vue?vue&type=template&id=33cf2dc5&scoped=true&\"\nimport script from \"./ResourceTab.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceTab.vue?vue&type=style&index=0&id=33cf2dc5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33cf2dc5\",\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".pr-tab__container .sizzle-warning-bg[data-v-33cf2dc5]{background-color:#614ea2;color:#fff}.pr-tab__container .text-warning[data-v-33cf2dc5]{color:var(--warning)!important}.pr-tab__container .text-darker[data-v-33cf2dc5]{color:var(--dark)!important}.pr-tab__container .sizzle-warning[data-v-33cf2dc5]{color:#614ea2}.pr-tab__sub-row[data-v-33cf2dc5]{background-color:var(--body-bg);border-bottom:1px solid var(--sortable-table-top-divider);padding-left:1rem;padding-right:1rem}.pr-tab__sub-row .message[data-v-33cf2dc5]{display:flex;flex-direction:column}.pr-tab__sub-row .details[data-v-33cf2dc5]{display:flex;flex-direction:row}.pr-tab__sub-row .details .col[data-v-33cf2dc5]{display:flex;flex-direction:column}.pr-tab__sub-row .details .col section[data-v-33cf2dc5]{margin-bottom:1.5rem}.pr-tab__sub-row .details .col .title[data-v-33cf2dc5]{color:var(--muted);margin-bottom:.5rem}\", \"\"]);\n// Exports\nmodule.exports = exports;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.14.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.14.js new file mode 100644 index 0000000..e911d35 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.14.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[14],{"7ada":function(e,t,n){(function(n){var o,a,i;(function(n,r){a=[],o=r,i="function"===typeof o?o.apply(t,a):o,void 0===i||(e.exports=i)})(0,(function(){"use strict";function t(e,t){return"undefined"==typeof t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}function o(e,t,n){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="blob",o.onload=function(){c(o.response,t,n)},o.onerror=function(){console.error("could not download file")},o.send()}function a(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function i(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var r="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof n&&n.global===n?n:void 0,c=r.saveAs||("object"!=typeof window||window!==r?function(){}:"download"in HTMLAnchorElement.prototype?function(e,t,n){var c=r.URL||r.webkitURL,s=document.createElement("a");t=t||e.name||"download",s.download=t,s.rel="noopener","string"==typeof e?(s.href=e,s.origin===location.origin?i(s):a(s.href)?o(e,t,n):i(s,s.target="_blank")):(s.href=c.createObjectURL(e),setTimeout((function(){c.revokeObjectURL(s.href)}),4e4),setTimeout((function(){i(s)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,n,r){if(n=n||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(t(e,r),n);else if(a(e))o(e,n,r);else{var c=document.createElement("a");c.href=e,c.target="_blank",setTimeout((function(){i(c)}))}}:function(e,t,n,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return o(e,t,n);var i="application/octet-stream"===e.type,c=/constructor/i.test(r.HTMLElement)||r.safari,s=/CriOS\/[\d]+/.test(navigator.userAgent);if((s||i&&c)&&"object"==typeof FileReader){var l=new FileReader;l.onloadend=function(){var e=l.result;e=s?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},l.readAsDataURL(e)}else{var f=r.URL||r.webkitURL,u=f.createObjectURL(e);a?a.location=u:location.href=u,a=null,setTimeout((function(){f.revokeObjectURL(u)}),4e4)}});r.saveAs=c.saveAs=c,e.exports=c}))}).call(this,n("7d15"))}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.14.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.14.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.14.js.map new file mode 100644 index 0000000..ca92f59 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.14.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-2.0.0//home/runner/work/kubewarden-ui/kubewarden-ui/node_modules/file-saver/dist/FileSaver.min.js"],"names":["this","b","a","autoBom","console","warn","test","type","Blob","c","d","e","XMLHttpRequest","open","responseType","onload","response","onerror","error","send","status","dispatchEvent","MouseEvent","document","createEvent","initMouseEvent","window","f","self","global","saveAs","HTMLAnchorElement","prototype","g","h","i","URL","webkitURL","j","createElement","name","download","rel","href","origin","location","target","createObjectURL","setTimeout","revokeObjectURL","navigator","msSaveOrOpenBlob","title","body","innerText","HTMLElement","safari","userAgent","FileReader","onloadend","result","replace","readAsDataURL","k","l","module","exports"],"mappings":"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","file":"kubewarden-2.0.0.umd.min.14.js","sourcesContent":["(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(b,c,d){var e=new XMLHttpRequest;e.open(\"GET\",b),e.responseType=\"blob\",e.onload=function(){a(e.response,c,d)},e.onerror=function(){console.error(\"could not download file\")},e.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(a,b,d,e){if(e=e||open(\"\",\"_blank\"),e&&(e.document.title=e.document.body.innerText=\"downloading...\"),\"string\"==typeof a)return c(a,b,d);var g=\"application/octet-stream\"===a.type,h=/constructor/i.test(f.HTMLElement)||f.safari,i=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((i||g&&h)&&\"object\"==typeof FileReader){var j=new FileReader;j.onloadend=function(){var a=j.result;a=i?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),e?e.location.href=a:location=a,e=null},j.readAsDataURL(a)}else{var k=f.URL||f.webkitURL,l=k.createObjectURL(a);e?e.location=l:location.href=l,e=null,setTimeout(function(){k.revokeObjectURL(l)},4E4)}});f.saveAs=a.saveAs=a,\"undefined\"!=typeof module&&(module.exports=a)});\n\n//# sourceMappingURL=FileSaver.min.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.15.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.15.js new file mode 100644 index 0000000..a6c2415 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.15.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[15],{"1bb6":function(e,t){const o=[{kubewarden:{title:"Kubewarden",unavailability:{banner:"You do not have access to the {type}. Please contact your administrator.",type:{dashboard:"Kubewarden Dashboard",policyReporter:"Policy Reporter"}},generic:{name:"Name"},dashboard:{title:"Dashboard",install:"Install",notInstalled:"Kubewarden is not installed",button:"Install Kubewarden Prerequisites",intro:"Welcome to Kubewarden",blurb:"A Dynamic Admission Controller for Kubernetes",description:"Kubewarden is a policy engine for Kubernetes. It helps with keeping your Kubernetes clusters secure and compliant. Kubewarden policies can be written using regular programming languages or Domain Specific Languages (DSL). Policies are compiled into WebAssembly modules that are then distributed using traditional container registries.\n",getStarted:"Get Started",issues:"Issues",upgrade:{appVersion:"App Version",appUpgrade:"App Upgrade",controllerChart:"Controller",defaultsChart:"Defaults",appVersionUnsatisfied:"The app version of the Kubewarden Defaults ({defaultsAppVersion}) chart does not match the app version of the Kubewarden Controller chart ({controllerAppVersion}). This chart will need to be updated to match the app version of the Kubewarden Controller chart."},policyReports:{oldPolicyReportsIncompatible:"Policy Reports are not compatible with the current version of the Kubewarden App. Please update to version v1.11.0 or newer.",newPolicyReportsIncompatible:"Policy Reports are not compatible with the current version of the Kubewarden extension. Please update to version 1.4.0 or newer."},headers:{policyServer:{title:"Policy Servers",description:"Kubewarden uses Policy Servers to receive requests to be validated. It does that by executing Kubewarden's policies.",linkText:"Create Policy Server",slotTitle:"Policy Server Pods"},admissionPolicy:{title:"Admission Policies",description:"An Admission Policy is a namespace-wide resource. The policy will process only the requests that are targeting the Namespace where the Admission Policy is defined.",linkText:"Create Admission Policy",slotTitle:"Policies"},clusterAdmissionPolicy:{title:"Cluster Admission Policies",description:"The Cluster Admission Policy resource is the core of the Kubewarden stack. This resource defines how policies evaluate requests.",linkText:"Create Cluster Admission Policy",slotTitle:"Policies"},modes:{title:"Policy Modes",monitor:"Monitor",protect:"Protect"}},appInstall:{title:"Kubewarden App Install",description:"This will take you to the app installation page for Kubewarden.",button:"Install Kubewarden",stepTitle:"Kubewarden Install",reload:"Unable to fetch Kubewarden Helm chart - reload required.",versionError:{title:"Chart Version not found.",message:"Unable to determine the latest stable version of the kubewarden-controller chart. Please make sure the Helm repository is configured correctly."}},prerequisites:{title:"Prerequisites",certManager:{title:"Install Cert-Manager Package",description:"The kubewarden-controller depends on cert-manager. You need cert-manager to be installed before installing the kubewarden-controller chart.",manualStep:'Click the button below and follow the Documentation, or run the kubectl command to install the latest version of cert-manager:\n',applyCommand:"kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml",openShell:"Open Kubectl Shell",stepProgress:"The active step will progress once Cert-Manager is installed."},repository:{title:"Repository",description:"You will need the Kubewarden Helm repository (https://charts.kubewarden.io) to install the `kubewarden` chart."},airGapped:{warning:"An air-gapped installation has been detected, this will require intervention to enable access to Kubewarden images and policies. It is necessary to make them available from an OCI registry that is accessible to the cluster.",docs:"Follow the documentation to setup an OCI registry for further installation.\n"}}},tabs:{"security-contexts":{label:"Security Contexts"},general:{label:"General",nameOverride:{label:"nameOverride",description:"Replaces the release name of the chart in Chart.yaml file when this is used to construct Kubernetes object names."},fullnameOverride:{label:"fullnameOverride",description:"Completely replaces the generated release name."},imagePullSecrets:{label:"Image Pull Secrets",description:"Secrets to pull container images from private registries."},image:{label:"Image",description:"Controller image to be used.",repository:"Repository",tag:"Tag"},preDeleteJob:"Kubectl image to be used in the pre-delete helm hook.",podAnnotations:"Pod Annotations",nodeSelector:"Node Selector",tolerations:"Tolerations",affinity:"Affinity",tls:{source:"Source",certManagerIssuerName:"Cert-Manager Issuer Name"}},telemetry:{label:"Telemetry",checkbox:"Enabled",port:"Port",tracing:{label:"Tracing",endpoint:"Endpoint",jaeger:"Jaeger endpoint to send traces.",placeholder:"all-in-one-collector.jaeger.svc.cluster.local:14250"}},verification:{label:"Verification"},registry:{label:"Container Registry"}},policyServer:{title:"Policy Servers",noDefaultsInstalled:{description:'The default PolicyServer and policies are not installed, click the button below to begin installing this chart. See the documentation for more information on installing charts.\n',button:"Install Chart"},policyGauge:{byStatus:"Policies by Status",traces:"Policy Validations"},groups:{kind:"Policy Type"}},admissionPolicy:{title:"Admission Policies",description:"AdmissionPolicy is a namespace-wide resource. These policies will process only the requests that are targeting the Namespace where the AdmissionPolicy is defined."},clusterAdmissionPolicy:{title:"Cluster Admission Policies",description:"ClusterAdmissionPolicy is a cluster-wide resource. These policies will process all requests within the cluster where the ClusterAdmissionPolicy is defined.",kwDefaultsSettingsCompatibility:"ClusterAdmissionPolicies that derive from kubewarden-default Helm Chart will not have editable policy settings since the kubewarden-default Helm Chart version should be greater or equal than 2.0.0",defaultsUpdateBtn:"Update"},customPolicy:{badge:"Custom",title:"Custom Policy",description:"A generic template for using your own policy."},policyTable:{headers:{resource:"Resource Type",features:"Features"}},policies:{noArtifactHub:'Official Kubewarden policies are hosted on ArtifactHub, in order to show these you will need to add `artifacthub.io` to the whitelist-domain setting.',noRules:"There are no rules configured for this policy.",namespaceWarning:"This policy is targeting Rancher specific namespaces which will cause catastrophic failures with your Rancher deployment.",official:"Official Kubewarden Policy",airgap:{banner:"An air-gapped installation is detected, you will be unable to use the policies listed within the ArtifactHub catalog. You are still able to deploy a custom policy by referencing a WebAssembly module that is accessible to this cluster."}},utils:{attributes:{label:"Attributes",optionLabels:{all:"All",organization:"Organization",keyword:"Keyword",resource:"Resource",features:"Features"}},keyword:"Show Keywords & Features",source:"Show Source",resource:"Show Resource Types",search:"Filter",resetFilter:"Reset Filter",official:{label:"Show only official Kubewarden policies"},custom:{create:"Create Custom Policy"}},tracing:{description:"Tracing allows to collect fine grained details about policy evaluations. It can be a useful tool for debugging issues inside of your Kubewarden deployment and policies.",prerequisites:{label:"Prerequisites",description:"There are a few resources which need to be installed for tracing to work correctly with the Kubewarden Controller.",warning:"The deployments of these resources can take a few minutes to become active."},installOpenTelemetry:"Click the button below or run the kubectl command to install the latest version of OpenTelemetry.\n",openTelemetry:'The OpenTelemetry Operator must be installed, follow the documentation to setup the OpenTelemetry Operator.\n',jaeger:'The Jaeger Operator and Instance must be installed, follow the documentation to setup tracing for your policies.\n',noRelatedPolicies:"No related policies found.",noRelatedTraces:"No tracing data exists for the related policies.",noTraces:"No tracing data exists for this policy.",config:{label:'Tracing must be configured with a Jaeger endpoint in the "Telemetry" tab of the Kubewarden Controller chart settings.\n',link:"Update Config"}},monitoring:{notInstalled:'The Monitoring app is not installed, this will will need to be installed and configured to enable metrics. Follow these steps to add the Kubewarden ServiceMonitor for Prometheus.\n',install:"Install Monitoring",prerequisites:{label:"Prerequisites",description:"There are a few resources which need to be installed and configured correctly for monitoring to be available.",warning:"The deployments of these resources can take a few minutes to become active.",tooltips:{prerequisites:"The prerequisite steps have not been completed.",appNotInstalled:"The { app } app is not yet installed.",nsNotFound:"The Namespace `cattle-dashboards` cannot be found.",chartError:"The { chart } chart cannot be found, ensure the repository exists and try reloading the page.",monitorsNotFound:"No Service Monitors found in the `{ namespace }` namespace connected to the Policy Server."},monitoringApp:{label:'The Rancher Monitoring app must be installed. Follow the documentation to install and enable Rancher Monitoring.',install:"Install App",edit:"Edit Config"},serviceMonitor:{label:'A Service Monitor for this Policy Server does not exist. Follow the documentation to learn more about Service Monitors.'},configMap:{label:"Grafana Dashboards (ConfigMaps) for the Policy Servers and for Kubewarden Policies must be created.",button:"Add Dashboards",conflictingDashboardsBanner:"{count, plural,\n=1 {There is a conflicting ConfigMap, this must be deleted before proceeding:}\nother {There are conflicting ConfigMaps, the following must be deleted before proceeding:}\n}"},controllerConfig:{label:'The Kubewarden Controller must be configured to enable metrics. Follow these steps to properly configure the kubewarden-controller chart.',button:"Edit Config"}},warning:{noProxy:"The Grafana proxy URL can not be found or is configured incorrectly."}},metrics:{notInstalled:"The Grafana dashboard for this Kubewarden resource can not be found. You need to create the ConfigMap for the dashboard.",reload:"Grafana dashboard created - reload required",noService:"The Metrics service is not currently active or is not installed correctly. Check the status of the Monitoring app."},policyConfig:{tabs:{general:"General",rules:"Rules",namespaceSelector:"Namespace Selector",settings:"Settings",contextAware:"Context Aware Resources"},serverSelect:{label:"Policy Server",tooltip:"The PolicyServer that will receive the requests to be validated."},module:{label:"Module",tooltip:"This is the WebAssembly module that holds the validation or mutation logic.",placeholder:"ghcr.io/example/policies/custom-policy:v0.1.0"},mutating:{label:"Mutating",tooltip:"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition."},mode:{label:"Mode",tooltip:"The monitor mode is a way to deploy policies to the cluster in a way that all requests that go through the policy will be accepted, as if the policy didn't exist. Defaults to 'Protect'.",warning:"Once the policy mode has been switched to Protect, you will not be able to revert this change.",update:{checkbox:"Update to Protect Mode",title:"Update Policy Mode",body:"The monitor mode is a way to view the behavior of a policy without letting it make the final decision on requests that are validated by the policy."}},backgroundAudit:{label:"Background Audit",tooltip:'Indicates whether a policy should be used or skipped when performing audit checks. If false, the policy cannot produce meaningful evaluation results during audit checks and will be skipped. The default is "true".'},ignoreRancherNamespaces:{label:"Ignore Rancher Namespaces",tooltip:"Certain policies will break core services of Rancher, this will add a default list of namespaces to ignore."},namespaceSelector:{label:"Namespace Selector",description:"NamespaceSelector decides whether to evaluate the policy on a request, based on whether the namespace for that request matches the selector. If the object of the request is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy evaluation.",addSelector:"Add Selectors",matchExpressions:{label:"Match Expressions",tooltip:"matchExpressions is a list of label selector requirements."},matchLabels:{label:"Match Labels",tooltip:"matchLabels is a map of key, value pairs. A single key, value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is 'key', the operator is 'In', and the values array contains only 'value'."}},rules:{add:"Add Rule Set",remove:"Remove Rule Set"},apiGroups:{label:"API Groups",tooltip:"The API groups the resources belong to."},apiVersions:{label:"API Versions",tooltip:"The API versions the resources belong to."},operations:{label:"Operation type",tooltip:"The operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT."},resources:{label:"Resource type",tooltip:"The targeted resources for the policy. Needs to be a resource that is supported by the policy, this is determined in the `metadata.yml` of the selected policy."},scope:{label:"Scope",tooltip:'Specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "". "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*".'},contextAware:{label:"Context Aware Resources",description:"A list of Kubernetes resources the policy is allowed to access at evaluation time. Access to these resources is done using the ServiceAccount of the PolicyServer the policy is assigned to.",warning:"Kubewarden administrators need to thoroughly examine the types of resources that a policy will access in order to prevent any misuse or abuse of the system. In some cases, it may be necessary to increase the permissions of the ServiceAccount associated with the PolicyServer to enable the policy to retrieve the required information. Although policies are restricted to read-only access to Kubernetes resources, there is a risk that a malicious attacker could exploit a Kubewarden policy to extract sensitive data from the cluster.",resource:{add:"Add Resource",remove:"Remove Resource",apiVersion:{label:"API Version",tooltip:"This is the apiVersion of the resource (v1 for core group, groupName/groupVersions for other)."},kind:{label:"Kind",tooltip:"Singular PascalCase name of the resource"}}},description:{showReadme:"Show Readme"}},policyServerConfig:{securityContexts:{containerConfig:"Container configuration",podConfig:"Pod configuration","allow-priv-escalation":{label:"Allow Privilege Escalation",tooltip:'Allow Privilege Escalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the "no_new_privs" flag will be set on the container process'},capabilities:{title:"Capabilities",add:"Added Capabilities",drop:"Dropped Capabilities",addLabel:"Add",placeholder:"Capability"},privileged:{label:"Run container in privileged mode",tooltip:"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host"},procMount:{label:"ProcMount",placeholder:"ProcMount type"},readOnlyRootFilesystem:{label:"Whether this container has a read-only root filesystem"},runAsNonRoot:{label:"Container must run as a non-root user",tooltip:"If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does"},runAsGroup:"Run As Group",runAsUser:"Run As User",seLinuxOptions:{title:"SE Linux Options",level:{label:"SELinux level",placeholder:"SELinux level label"},role:{label:"SELinux role",placeholder:"SELinux role label"},type:{label:"SELinux type",placeholder:"SELinux type label"},user:{label:"SELinux user",placeholder:"SELinux user label"}},seccompProfile:{title:"Seccomp Profile",inputEnabledLabel:"Add Seccomp Profile Configuration",localhostProfile:{label:"Localhost Profile",placeholder:"Localhost Profile"},type:"Type"},windowsOptions:{title:"Windows Options",gmsaCredentialSpec:{label:"GMSA Credential Spec",placeholder:"GMSA Credential Spec"},gmsaCredentialSpecName:{label:"GMSA Credential Spec Name",placeholder:"GMSA Credential Spec Name"},hostProcess:{label:"Run as a 'Host Process' container",tooltip:"All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true"},runAsUserName:{label:"Run As UserName",placeholder:"Run As UserName"}},fsGroup:{label:"FS Group"},fsGroupChangePolicy:{label:"FS Group change Policy",placeholder:"FS Group change Policy"},supplementalGroups:{addLabel:"Add Group",label:"Supplemental Group"},sysctls:{addLabel:"Add Sysctls",label:"Sysctls",name:{label:"Name",placeholder:"Name"},value:{label:"Value",placeholder:"Value"}}},defaultImage:{label:"Default Image",tooltip:"Use the default `policy-server` container image.",versionWarning:"The latest stable version for Policy Server could not be determined, falling back to default."},image:{label:"Image URL",tooltip:"This is the container image the policy server."},replicas:"Replicas",registry:{description:'The PolicyServer allows you to pull policies from OCI registries and HTTP servers, by default HTTPS is enforced with host TLS verification. You can interact with registries using untrusted certificates or even without TLS by using the `insecureSources` setting. This approach is highly discouraged in environments closer to production. More information on configuring custom certificate authorities can be found here.'},insecureSources:{title:"Insecure Sources",addLabel:"Add Insecure Source",placeholder:"registry-dev.example.com:5500"},sourceAuthorities:{title:"Source Authorities",add:"Add Source Authority",endpoint:"Registry URI Endpoint",placeholder:"registry-pre.example.com:5500",certificate:{label:"Certificate",add:"Add PEM Certificate",remove:"Remove Certificate",file:"Read Certificate from File"}},verification:{label:"Verification Config",description:'This is the name of a VerificationConfig configmap within the same namespace, containing a Sigstore verification configuration. The configuration must be under a key named verification-config in the Configmap. More information can be found in the Kubewarden docs.'}},policyCharts:{signedPolicy:{label:"Signed",tooltip:"This policy has been signed with { signatures }."},mutationPolicy:{label:"Mutation",tooltip:"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition."},contextAware:{label:"Context Aware",tooltip:"Can determine whether an AdmissionRequest has to be accepted or rejected based on other resources already deployed in the cluster."}},policyReporter:{title:"Policy Reporter",link:"Policy Reporter UI",noSchema:{banner:"Kubewarden has not been installed, this will need to be accomplished before installing the Policy Reporter",link:"Install Kubewarden"},incompatible:{banner:"Your cluster does not support policy reports, upgrade your Kubewarden to version `1.7.0` or greater to add the required crds.",current:"Current Kubewarden Controller version",noCrds:{banner:"The CRDs for `wgpolicyk8s.io.clusterpolicyreport` or `wgpolicyk8s.io.policyreport` can not be found. These must be installed to support policy reports."}},service:{main:{banner:{unavailable:"The Policy Reporter service is unavailable, ensure the properties `auditScanner.enable` and `auditScanner.policyReporter` are set to `true` within the Kubewarden Controller chart."}},ui:{banner:{unavailable:"The Policy Reporter UI service is unavailable, ensure the property `policy-reporter.ui.enabled` is set to `true` within the Kubewarden Controller chart."}}},url:{banner:{unavailable:"The Policy Reporter UI proxy URL is unavailble, please ensure that the UI is properly configured."}},deployment:{banner:{unavailable:"The Policy Reporter UI Deployment is currently in a `{ state }` state, please wait."}},headers:{policyReports:{label:"Compliance",description:"Policy Reports are the results of the policy scans that are stored using the PolicyReport Custom Resource."},clusterPolicyReports:{label:"Cluster Compliance",description:"Cluster Policy Reports are the results of the policy scans that are stored using the ClusterPolicyReport Custom Resource."},label:"Compliance",description:"When using the Kubewarden Audit Scanner, the results of the policy scans are stored using the PolicyReport Custom Resource.",policyReportsTab:{policy:{label:"Policy"},rule:{label:"Rule"},severity:{label:"Severity"},status:{label:"Status"},summary:{label:"Summary"},message:{title:"Message"},properties:{"policy-uid":"policy-uid",version:"policy-resource-version",mutating:"mutating",validating:"validating"}}}}},asyncButton:{artifactHub:{action:"Add ArtifactHub To Whitelist",success:"Added",waiting:"Adding…"},certManager:{action:"Apply Cert-Manager Package",success:"Applied",waiting:"Installing…"},kubewardenRepository:{action:"Add Kubewarden Repository",success:"Added",waiting:"Adding…"},grafanaDashboard:{action:"Add Grafana Dashboards",success:"Added",wating:"Adding…"},serviceMonitor:{action:"Add Service Monitor",success:"Added",waiting:"Adding…"},policyReporterRepo:{action:"Add Policy Reporter Repository",success:"Added",waiting:"Adding…"},policyReporterChart:{action:"Install Policy Reporter Chart",success:"Installed",waiting:"Installing…"}}}];e.exports=o.length<=1?o[0]:o}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.15.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.15.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.15.js.map new file mode 100644 index 0000000..e3e8b77 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.15.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-2.0.0/./l10n/en-us.yaml"],"names":["doc","module","exports","length"],"mappings":"mLAAA,MAAMA,EAAM,CAAC,CAAE,WAAa,CAAE,MAAQ,aAAc,eAAiB,CAAE,OAAS,2EAA4E,KAAO,CAAE,UAAY,uBAAwB,eAAiB,oBAAuB,QAAU,CAAE,KAAO,QAAU,UAAY,CAAE,MAAQ,YAAa,QAAU,UAAW,aAAe,8BAA+B,OAAS,mCAAoC,MAAQ,wBAAyB,MAAQ,gDAAiD,YAAc,mVAAoV,WAAa,cAAe,OAAS,SAAU,QAAU,CAAE,WAAa,cAAe,WAAa,cAAe,gBAAkB,aAAc,cAAgB,WAAY,sBAAwB,uQAAyQ,cAAgB,CAAE,6BAA+B,+HAAgI,6BAA+B,oIAAsI,QAAU,CAAE,aAAe,CAAE,MAAQ,iBAAkB,YAAc,uHAAwH,SAAW,uBAAwB,UAAY,sBAAwB,gBAAkB,CAAE,MAAQ,qBAAsB,YAAc,sKAAuK,SAAW,0BAA2B,UAAY,YAAc,uBAAyB,CAAE,MAAQ,6BAA8B,YAAc,mIAAoI,SAAW,kCAAmC,UAAY,YAAc,MAAQ,CAAE,MAAQ,eAAgB,QAAU,UAAW,QAAU,YAAe,WAAa,CAAE,MAAQ,yBAA0B,YAAc,kEAAmE,OAAS,qBAAsB,UAAY,qBAAsB,OAAS,2DAA4D,aAAe,CAAE,MAAQ,2BAA4B,QAAU,oJAAuJ,cAAgB,CAAE,MAAQ,gBAAiB,YAAc,CAAE,MAAQ,+BAAgC,YAAc,8IAA+I,WAAa,0QAAiR,aAAe,uGAAwG,UAAY,qBAAsB,aAAe,iEAAmE,WAAa,CAAE,MAAQ,aAAc,YAAc,kHAAoH,UAAY,CAAE,QAAU,kOAAmO,KAAO,mFAAuF,KAAO,CAAE,oBAAoB,CAAE,MAAQ,qBAAuB,QAAU,CAAE,MAAQ,UAAW,aAAe,CAAE,MAAQ,eAAgB,YAAc,qHAAuH,iBAAmB,CAAE,MAAQ,mBAAoB,YAAc,mDAAqD,iBAAmB,CAAE,MAAQ,qBAAsB,YAAc,6DAA+D,MAAQ,CAAE,MAAQ,QAAS,YAAc,+BAAgC,WAAa,aAAc,IAAM,OAAS,aAAe,wDAAyD,eAAiB,kBAAmB,aAAe,gBAAiB,YAAc,cAAe,SAAW,WAAY,IAAM,CAAE,OAAS,SAAU,sBAAwB,6BAAgC,UAAY,CAAE,MAAQ,YAAa,SAAW,UAAW,KAAO,OAAQ,QAAU,CAAE,MAAQ,UAAW,SAAW,WAAY,OAAS,kCAAmC,YAAc,wDAA2D,aAAe,CAAE,MAAQ,gBAAkB,SAAW,CAAE,MAAQ,uBAA0B,aAAe,CAAE,MAAQ,iBAAkB,oBAAsB,CAAE,YAAc,+SAAsT,OAAS,iBAAmB,YAAc,CAAE,SAAW,qBAAsB,OAAS,sBAAwB,OAAS,CAAE,KAAO,gBAAmB,gBAAkB,CAAE,MAAQ,qBAAsB,YAAc,sKAAwK,uBAAyB,CAAE,MAAQ,6BAA8B,YAAc,8JAA+J,gCAAkC,uMAAwM,kBAAoB,UAAY,aAAe,CAAE,MAAQ,SAAU,MAAQ,gBAAiB,YAAc,iDAAmD,YAAc,CAAE,QAAU,CAAE,SAAW,gBAAiB,SAAW,aAAgB,SAAW,CAAE,cAAgB,wQAA+Q,QAAU,iDAAkD,iBAAmB,4HAA6H,SAAW,6BAA8B,OAAS,CAAE,OAAS,+OAAkP,MAAQ,CAAE,WAAa,CAAE,MAAQ,aAAc,aAAe,CAAE,IAAM,MAAO,aAAe,eAAgB,QAAU,UAAW,SAAW,WAAY,SAAW,aAAgB,QAAU,2BAA4B,OAAS,cAAe,SAAW,sBAAuB,OAAS,SAAU,YAAc,eAAgB,SAAW,CAAE,MAAQ,0CAA4C,OAAS,CAAE,OAAS,yBAA4B,QAAU,CAAE,YAAc,2KAA4K,cAAgB,CAAE,MAAQ,gBAAiB,YAAc,qHAAsH,QAAU,+EAAiF,qBAAuB,oHAAqH,cAAgB,6WAA0X,OAAS,oWAAiX,kBAAoB,6BAA8B,gBAAkB,mDAAoD,SAAW,0CAA2C,OAAS,CAAE,MAAQ,iTAA0T,KAAO,kBAAqB,WAAa,CAAE,aAAe,oTAA2T,QAAU,qBAAsB,cAAgB,CAAE,MAAQ,gBAAiB,YAAc,gHAAiH,QAAU,8EAA+E,SAAW,CAAE,cAAgB,kDAAmD,gBAAkB,wCAAyC,WAAa,qDAAsD,WAAa,gGAAiG,iBAAmB,8FAAgG,cAAgB,CAAE,MAAQ,4SAAmT,QAAU,cAAe,KAAO,eAAiB,eAAiB,CAAE,MAAQ,gQAAwQ,UAAY,CAAE,MAAQ,sGAAuG,OAAS,iBAAkB,4BAA8B,kMAAoM,iBAAmB,CAAE,MAAQ,0UAAiV,OAAS,gBAAmB,QAAU,CAAE,QAAU,yEAA4E,QAAU,CAAE,aAAe,2HAA4H,OAAS,8CAA+C,UAAY,sHAAwH,aAAe,CAAE,KAAO,CAAE,QAAU,UAAW,MAAQ,QAAS,kBAAoB,qBAAsB,SAAW,WAAY,aAAe,2BAA6B,aAAe,CAAE,MAAQ,gBAAiB,QAAU,oEAAsE,OAAS,CAAE,MAAQ,SAAU,QAAU,8EAA+E,YAAc,iDAAmD,SAAW,CAAE,MAAQ,WAAY,QAAU,oHAAsH,KAAO,CAAE,MAAQ,OAAQ,QAAU,4LAA6L,QAAU,iGAAkG,OAAS,CAAE,SAAW,yBAA0B,MAAQ,qBAAsB,KAAO,wJAA2J,gBAAkB,CAAE,MAAQ,mBAAoB,QAAU,wNAA4N,wBAA0B,CAAE,MAAQ,4BAA6B,QAAU,+GAAiH,kBAAoB,CAAE,MAAQ,qBAAsB,YAAc,yUAA0U,YAAc,gBAAiB,iBAAmB,CAAE,MAAQ,oBAAqB,QAAU,8DAAgE,YAAc,CAAE,MAAQ,eAAgB,QAAU,sOAAyO,MAAQ,CAAE,IAAM,eAAgB,OAAS,mBAAqB,UAAY,CAAE,MAAQ,aAAc,QAAU,2CAA6C,YAAc,CAAE,MAAQ,eAAgB,QAAU,6CAA+C,WAAa,CAAE,MAAQ,iBAAkB,QAAU,oFAAsF,UAAY,CAAE,MAAQ,gBAAiB,QAAU,mKAAqK,MAAQ,CAAE,MAAQ,QAAS,QAAU,wYAAwZ,aAAe,CAAE,MAAQ,0BAA2B,YAAc,+LAAgM,QAAU,shBAAuhB,SAAW,CAAE,IAAM,eAAgB,OAAS,kBAAmB,WAAa,CAAE,MAAQ,cAAe,QAAU,kGAAoG,KAAO,CAAE,MAAQ,OAAQ,QAAU,8CAAkD,YAAc,CAAE,WAAa,gBAAmB,mBAAqB,CAAE,iBAAmB,CAAE,gBAAkB,0BAA2B,UAAY,oBAAqB,wBAAwB,CAAE,MAAQ,6BAA8B,QAAU,uMAA2M,aAAe,CAAE,MAAQ,eAAgB,IAAM,qBAAsB,KAAO,uBAAwB,SAAW,MAAO,YAAc,cAAgB,WAAa,CAAE,MAAQ,mCAAoC,QAAU,uHAAyH,UAAY,CAAE,MAAQ,YAAa,YAAc,kBAAoB,uBAAyB,CAAE,MAAQ,0DAA4D,aAAe,CAAE,MAAQ,wCAAyC,QAAU,qJAAuJ,WAAa,eAAgB,UAAY,cAAe,eAAiB,CAAE,MAAQ,mBAAoB,MAAQ,CAAE,MAAQ,gBAAiB,YAAc,uBAAyB,KAAO,CAAE,MAAQ,eAAgB,YAAc,sBAAwB,KAAO,CAAE,MAAQ,eAAgB,YAAc,sBAAwB,KAAO,CAAE,MAAQ,eAAgB,YAAc,uBAA0B,eAAiB,CAAE,MAAQ,kBAAmB,kBAAoB,oCAAqC,iBAAmB,CAAE,MAAQ,oBAAqB,YAAc,qBAAuB,KAAO,QAAU,eAAiB,CAAE,MAAQ,kBAAmB,mBAAqB,CAAE,MAAQ,uBAAwB,YAAc,wBAA0B,uBAAyB,CAAE,MAAQ,4BAA6B,YAAc,6BAA+B,YAAc,CAAE,MAAQ,oCAAqC,QAAU,sPAAwP,cAAgB,CAAE,MAAQ,kBAAmB,YAAc,oBAAuB,QAAU,CAAE,MAAQ,YAAc,oBAAsB,CAAE,MAAQ,yBAA0B,YAAc,0BAA4B,mBAAqB,CAAE,SAAW,YAAa,MAAQ,sBAAwB,QAAU,CAAE,SAAW,cAAe,MAAQ,UAAW,KAAO,CAAE,MAAQ,OAAQ,YAAc,QAAU,MAAQ,CAAE,MAAQ,QAAS,YAAc,WAAe,aAAe,CAAE,MAAQ,gBAAiB,QAAU,mDAAoD,eAAiB,iGAAmG,MAAQ,CAAE,MAAQ,YAAa,QAAU,kDAAoD,SAAW,WAAY,SAAW,CAAE,YAAc,uiBAA+iB,gBAAkB,CAAE,MAAQ,mBAAoB,SAAW,sBAAuB,YAAc,iCAAmC,kBAAoB,CAAE,MAAQ,qBAAsB,IAAM,uBAAwB,SAAW,wBAAyB,YAAc,gCAAiC,YAAc,CAAE,MAAQ,cAAe,IAAM,sBAAuB,OAAS,qBAAsB,KAAO,+BAAkC,aAAe,CAAE,MAAQ,sBAAuB,YAAc,icAA0c,aAAe,CAAE,aAAe,CAAE,MAAQ,SAAU,QAAU,oDAAsD,eAAiB,CAAE,MAAQ,WAAY,QAAU,oHAAsH,aAAe,CAAE,MAAQ,gBAAiB,QAAU,uIAA0I,eAAiB,CAAE,MAAQ,kBAAmB,KAAO,qBAAsB,SAAW,CAAE,OAAS,6GAA8G,KAAO,sBAAwB,aAAe,CAAE,OAAS,gIAAiI,QAAU,wCAAyC,OAAS,CAAE,OAAS,4JAA+J,QAAU,CAAE,KAAO,CAAE,OAAS,CAAE,YAAc,wLAA2L,GAAK,CAAE,OAAS,CAAE,YAAc,8JAAkK,IAAM,CAAE,OAAS,CAAE,YAAc,sGAAyG,WAAa,CAAE,OAAS,CAAE,YAAc,wFAA2F,QAAU,CAAE,cAAgB,CAAE,MAAQ,aAAc,YAAc,8GAAgH,qBAAuB,CAAE,MAAQ,qBAAsB,YAAc,6HAA+H,MAAQ,aAAc,YAAc,8HAA+H,iBAAmB,CAAE,OAAS,CAAE,MAAQ,UAAY,KAAO,CAAE,MAAQ,QAAU,SAAW,CAAE,MAAQ,YAAc,OAAS,CAAE,MAAQ,UAAY,QAAU,CAAE,MAAQ,WAAa,QAAU,CAAE,MAAQ,WAAa,WAAa,CAAE,aAAa,aAAc,QAAU,0BAA2B,SAAW,WAAY,WAAa,kBAAwB,YAAc,CAAE,YAAc,CAAE,OAAS,+BAAgC,QAAU,QAAS,QAAU,kBAAoB,YAAc,CAAE,OAAS,6BAA8B,QAAU,UAAW,QAAU,sBAAwB,qBAAuB,CAAE,OAAS,4BAA6B,QAAU,QAAS,QAAU,kBAAoB,iBAAmB,CAAE,OAAS,yBAA0B,QAAU,QAAS,OAAS,kBAAoB,eAAiB,CAAE,OAAS,sBAAuB,QAAU,QAAS,QAAU,kBAAoB,mBAAqB,CAAE,OAAS,iCAAkC,QAAU,QAAS,QAAU,kBAAoB,oBAAsB,CAAE,OAAS,gCAAiC,QAAU,YAAa,QAAU,yBAC51yBC,EAAOC,QAAUF,EAAIG,QAAU,EAAIH,EAAI,GAAKA","file":"kubewarden-2.0.0.umd.min.15.js","sourcesContent":["const doc = [({\"kubewarden\":({\"title\":\"Kubewarden\", \"unavailability\":({\"banner\":\"You do not have access to the {type}. Please contact your administrator.\", \"type\":({\"dashboard\":\"Kubewarden Dashboard\", \"policyReporter\":\"Policy Reporter\"})}), \"generic\":({\"name\":\"Name\"}), \"dashboard\":({\"title\":\"Dashboard\", \"install\":\"Install\", \"notInstalled\":\"Kubewarden is not installed\", \"button\":\"Install Kubewarden Prerequisites\", \"intro\":\"Welcome to Kubewarden\", \"blurb\":\"A Dynamic Admission Controller for Kubernetes\", \"description\":\"Kubewarden is a policy engine for Kubernetes. It helps with keeping your Kubernetes clusters secure and compliant. Kubewarden policies can be written using regular programming languages or Domain Specific Languages (DSL). Policies are compiled into WebAssembly modules that are then distributed using traditional container registries.\\n\", \"getStarted\":\"Get Started\", \"issues\":\"Issues\", \"upgrade\":({\"appVersion\":\"App Version\", \"appUpgrade\":\"App Upgrade\", \"controllerChart\":\"Controller\", \"defaultsChart\":\"Defaults\", \"appVersionUnsatisfied\":\"The app version of the Kubewarden Defaults ({defaultsAppVersion}) chart does not match the app version of the Kubewarden Controller chart ({controllerAppVersion}). This chart will need to be updated to match the app version of the Kubewarden Controller chart.\"}), \"policyReports\":({\"oldPolicyReportsIncompatible\":\"Policy Reports are not compatible with the current version of the Kubewarden App. Please update to version v1.11.0 or newer.\", \"newPolicyReportsIncompatible\":\"Policy Reports are not compatible with the current version of the Kubewarden extension. Please update to version 1.4.0 or newer.\"}), \"headers\":({\"policyServer\":({\"title\":\"Policy Servers\", \"description\":\"Kubewarden uses Policy Servers to receive requests to be validated. It does that by executing Kubewarden's policies.\", \"linkText\":\"Create Policy Server\", \"slotTitle\":\"Policy Server Pods\"}), \"admissionPolicy\":({\"title\":\"Admission Policies\", \"description\":\"An Admission Policy is a namespace-wide resource. The policy will process only the requests that are targeting the Namespace where the Admission Policy is defined.\", \"linkText\":\"Create Admission Policy\", \"slotTitle\":\"Policies\"}), \"clusterAdmissionPolicy\":({\"title\":\"Cluster Admission Policies\", \"description\":\"The Cluster Admission Policy resource is the core of the Kubewarden stack. This resource defines how policies evaluate requests.\", \"linkText\":\"Create Cluster Admission Policy\", \"slotTitle\":\"Policies\"}), \"modes\":({\"title\":\"Policy Modes\", \"monitor\":\"Monitor\", \"protect\":\"Protect\"})}), \"appInstall\":({\"title\":\"Kubewarden App Install\", \"description\":\"This will take you to the app installation page for Kubewarden.\", \"button\":\"Install Kubewarden\", \"stepTitle\":\"Kubewarden Install\", \"reload\":\"Unable to fetch Kubewarden Helm chart - reload required.\", \"versionError\":({\"title\":\"Chart Version not found.\", \"message\":\"Unable to determine the latest stable version of the kubewarden-controller chart. Please make sure the Helm repository is configured correctly.\"})}), \"prerequisites\":({\"title\":\"Prerequisites\", \"certManager\":({\"title\":\"Install Cert-Manager Package\", \"description\":\"The kubewarden-controller depends on cert-manager. You need cert-manager to be installed before installing the kubewarden-controller chart.\", \"manualStep\":\"Click the button below and follow the Documentation, or run the kubectl command to install the latest version of cert-manager:\\n\", \"applyCommand\":\"kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml\", \"openShell\":\"Open Kubectl Shell\", \"stepProgress\":\"The active step will progress once Cert-Manager is installed.\"}), \"repository\":({\"title\":\"Repository\", \"description\":\"You will need the Kubewarden Helm repository (https://charts.kubewarden.io) to install the `kubewarden` chart.\"}), \"airGapped\":({\"warning\":\"An air-gapped installation has been detected, this will require intervention to enable access to Kubewarden images and policies. It is necessary to make them available from an OCI registry that is accessible to the cluster.\", \"docs\":\"Follow the documentation to setup an OCI registry for further installation.\\n\"})})}), \"tabs\":({\"security-contexts\":({\"label\":\"Security Contexts\"}), \"general\":({\"label\":\"General\", \"nameOverride\":({\"label\":\"nameOverride\", \"description\":\"Replaces the release name of the chart in Chart.yaml file when this is used to construct Kubernetes object names.\"}), \"fullnameOverride\":({\"label\":\"fullnameOverride\", \"description\":\"Completely replaces the generated release name.\"}), \"imagePullSecrets\":({\"label\":\"Image Pull Secrets\", \"description\":\"Secrets to pull container images from private registries.\"}), \"image\":({\"label\":\"Image\", \"description\":\"Controller image to be used.\", \"repository\":\"Repository\", \"tag\":\"Tag\"}), \"preDeleteJob\":\"Kubectl image to be used in the pre-delete helm hook.\", \"podAnnotations\":\"Pod Annotations\", \"nodeSelector\":\"Node Selector\", \"tolerations\":\"Tolerations\", \"affinity\":\"Affinity\", \"tls\":({\"source\":\"Source\", \"certManagerIssuerName\":\"Cert-Manager Issuer Name\"})}), \"telemetry\":({\"label\":\"Telemetry\", \"checkbox\":\"Enabled\", \"port\":\"Port\", \"tracing\":({\"label\":\"Tracing\", \"endpoint\":\"Endpoint\", \"jaeger\":\"Jaeger endpoint to send traces.\", \"placeholder\":\"all-in-one-collector.jaeger.svc.cluster.local:14250\"})}), \"verification\":({\"label\":\"Verification\"}), \"registry\":({\"label\":\"Container Registry\"})}), \"policyServer\":({\"title\":\"Policy Servers\", \"noDefaultsInstalled\":({\"description\":\"The default PolicyServer and policies are not installed, click the button below to begin installing this chart. See the documentation for more information on installing charts.\\n\", \"button\":\"Install Chart\"}), \"policyGauge\":({\"byStatus\":\"Policies by Status\", \"traces\":\"Policy Validations\"}), \"groups\":({\"kind\":\"Policy Type\"})}), \"admissionPolicy\":({\"title\":\"Admission Policies\", \"description\":\"AdmissionPolicy is a namespace-wide resource. These policies will process only the requests that are targeting the Namespace where the AdmissionPolicy is defined.\"}), \"clusterAdmissionPolicy\":({\"title\":\"Cluster Admission Policies\", \"description\":\"ClusterAdmissionPolicy is a cluster-wide resource. These policies will process all requests within the cluster where the ClusterAdmissionPolicy is defined.\", \"kwDefaultsSettingsCompatibility\":\"ClusterAdmissionPolicies that derive from kubewarden-default Helm Chart will not have editable policy settings since the kubewarden-default Helm Chart version should be greater or equal than 2.0.0\", \"defaultsUpdateBtn\":\"Update\"}), \"customPolicy\":({\"badge\":\"Custom\", \"title\":\"Custom Policy\", \"description\":\"A generic template for using your own policy.\"}), \"policyTable\":({\"headers\":({\"resource\":\"Resource Type\", \"features\":\"Features\"})}), \"policies\":({\"noArtifactHub\":\"Official Kubewarden policies are hosted on ArtifactHub, in order to show these you will need to add `artifacthub.io` to the whitelist-domain setting.\", \"noRules\":\"There are no rules configured for this policy.\", \"namespaceWarning\":\"This policy is targeting Rancher specific namespaces which will cause catastrophic failures with your Rancher deployment.\", \"official\":\"Official Kubewarden Policy\", \"airgap\":({\"banner\":\"An air-gapped installation is detected, you will be unable to use the policies listed within the ArtifactHub catalog. You are still able to deploy a custom policy by referencing a WebAssembly module that is accessible to this cluster.\"})}), \"utils\":({\"attributes\":({\"label\":\"Attributes\", \"optionLabels\":({\"all\":\"All\", \"organization\":\"Organization\", \"keyword\":\"Keyword\", \"resource\":\"Resource\", \"features\":\"Features\"})}), \"keyword\":\"Show Keywords & Features\", \"source\":\"Show Source\", \"resource\":\"Show Resource Types\", \"search\":\"Filter\", \"resetFilter\":\"Reset Filter\", \"official\":({\"label\":\"Show only official Kubewarden policies\"}), \"custom\":({\"create\":\"Create Custom Policy\"})}), \"tracing\":({\"description\":\"Tracing allows to collect fine grained details about policy evaluations. It can be a useful tool for debugging issues inside of your Kubewarden deployment and policies.\", \"prerequisites\":({\"label\":\"Prerequisites\", \"description\":\"There are a few resources which need to be installed for tracing to work correctly with the Kubewarden Controller.\", \"warning\":\"The deployments of these resources can take a few minutes to become active.\"}), \"installOpenTelemetry\":\"Click the button below or run the kubectl command to install the latest version of OpenTelemetry.\\n\", \"openTelemetry\":\"The OpenTelemetry Operator must be installed, follow the documentation to setup the OpenTelemetry Operator.\\n\", \"jaeger\":\"The Jaeger Operator and Instance must be installed, follow the documentation to setup tracing for your policies.\\n\", \"noRelatedPolicies\":\"No related policies found.\", \"noRelatedTraces\":\"No tracing data exists for the related policies.\", \"noTraces\":\"No tracing data exists for this policy.\", \"config\":({\"label\":\"Tracing must be configured with a Jaeger endpoint in the \\\"Telemetry\\\" tab of the Kubewarden Controller chart settings.\\n\", \"link\":\"Update Config\"})}), \"monitoring\":({\"notInstalled\":\"The Monitoring app is not installed, this will will need to be installed and configured to enable metrics. Follow these steps to add the Kubewarden ServiceMonitor for Prometheus.\\n\", \"install\":\"Install Monitoring\", \"prerequisites\":({\"label\":\"Prerequisites\", \"description\":\"There are a few resources which need to be installed and configured correctly for monitoring to be available.\", \"warning\":\"The deployments of these resources can take a few minutes to become active.\", \"tooltips\":({\"prerequisites\":\"The prerequisite steps have not been completed.\", \"appNotInstalled\":\"The { app } app is not yet installed.\", \"nsNotFound\":\"The Namespace `cattle-dashboards` cannot be found.\", \"chartError\":\"The { chart } chart cannot be found, ensure the repository exists and try reloading the page.\", \"monitorsNotFound\":\"No Service Monitors found in the `{ namespace }` namespace connected to the Policy Server.\"}), \"monitoringApp\":({\"label\":\"The Rancher Monitoring app must be installed. Follow the documentation to install and enable Rancher Monitoring.\", \"install\":\"Install App\", \"edit\":\"Edit Config\"}), \"serviceMonitor\":({\"label\":\"A Service Monitor for this Policy Server does not exist. Follow the documentation to learn more about Service Monitors.\"}), \"configMap\":({\"label\":\"Grafana Dashboards (ConfigMaps) for the Policy Servers and for Kubewarden Policies must be created.\", \"button\":\"Add Dashboards\", \"conflictingDashboardsBanner\":\"{count, plural,\\n=1 {There is a conflicting ConfigMap, this must be deleted before proceeding:}\\nother {There are conflicting ConfigMaps, the following must be deleted before proceeding:}\\n}\"}), \"controllerConfig\":({\"label\":\"The Kubewarden Controller must be configured to enable metrics. Follow these steps to properly configure the kubewarden-controller chart.\", \"button\":\"Edit Config\"})}), \"warning\":({\"noProxy\":\"The Grafana proxy URL can not be found or is configured incorrectly.\"})}), \"metrics\":({\"notInstalled\":\"The Grafana dashboard for this Kubewarden resource can not be found. You need to create the ConfigMap for the dashboard.\", \"reload\":\"Grafana dashboard created - reload required\", \"noService\":\"The Metrics service is not currently active or is not installed correctly. Check the status of the Monitoring app.\"}), \"policyConfig\":({\"tabs\":({\"general\":\"General\", \"rules\":\"Rules\", \"namespaceSelector\":\"Namespace Selector\", \"settings\":\"Settings\", \"contextAware\":\"Context Aware Resources\"}), \"serverSelect\":({\"label\":\"Policy Server\", \"tooltip\":\"The PolicyServer that will receive the requests to be validated.\"}), \"module\":({\"label\":\"Module\", \"tooltip\":\"This is the WebAssembly module that holds the validation or mutation logic.\", \"placeholder\":\"ghcr.io/example/policies/custom-policy:v0.1.0\"}), \"mutating\":({\"label\":\"Mutating\", \"tooltip\":\"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition.\"}), \"mode\":({\"label\":\"Mode\", \"tooltip\":\"The monitor mode is a way to deploy policies to the cluster in a way that all requests that go through the policy will be accepted, as if the policy didn't exist. Defaults to 'Protect'.\", \"warning\":\"Once the policy mode has been switched to Protect, you will not be able to revert this change.\", \"update\":({\"checkbox\":\"Update to Protect Mode\", \"title\":\"Update Policy Mode\", \"body\":\"The monitor mode is a way to view the behavior of a policy without letting it make the final decision on requests that are validated by the policy.\"})}), \"backgroundAudit\":({\"label\":\"Background Audit\", \"tooltip\":\"Indicates whether a policy should be used or skipped when performing audit checks. If false, the policy cannot produce meaningful evaluation results during audit checks and will be skipped. The default is \\\"true\\\".\"}), \"ignoreRancherNamespaces\":({\"label\":\"Ignore Rancher Namespaces\", \"tooltip\":\"Certain policies will break core services of Rancher, this will add a default list of namespaces to ignore.\"}), \"namespaceSelector\":({\"label\":\"Namespace Selector\", \"description\":\"NamespaceSelector decides whether to evaluate the policy on a request, based on whether the namespace for that request matches the selector. If the object of the request is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy evaluation.\", \"addSelector\":\"Add Selectors\", \"matchExpressions\":({\"label\":\"Match Expressions\", \"tooltip\":\"matchExpressions is a list of label selector requirements.\"}), \"matchLabels\":({\"label\":\"Match Labels\", \"tooltip\":\"matchLabels is a map of key, value pairs. A single key, value in the matchLabels map is equivalent to an element of matchExpressions, whose key field is 'key', the operator is 'In', and the values array contains only 'value'.\"})}), \"rules\":({\"add\":\"Add Rule Set\", \"remove\":\"Remove Rule Set\"}), \"apiGroups\":({\"label\":\"API Groups\", \"tooltip\":\"The API groups the resources belong to.\"}), \"apiVersions\":({\"label\":\"API Versions\", \"tooltip\":\"The API versions the resources belong to.\"}), \"operations\":({\"label\":\"Operation type\", \"tooltip\":\"The operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT.\"}), \"resources\":({\"label\":\"Resource type\", \"tooltip\":\"The targeted resources for the policy. Needs to be a resource that is supported by the policy, this is determined in the `metadata.yml` of the selected policy.\"}), \"scope\":({\"label\":\"Scope\", \"tooltip\":\"Specifies the scope of this rule. Valid values are \\\"Cluster\\\", \\\"Namespaced\\\", and \\\"\\\". \\\"Cluster\\\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \\\"Namespaced\\\" means that only namespaced resources will match this rule. \\\"\\\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \\\"*\\\".\"}), \"contextAware\":({\"label\":\"Context Aware Resources\", \"description\":\"A list of Kubernetes resources the policy is allowed to access at evaluation time. Access to these resources is done using the ServiceAccount of the PolicyServer the policy is assigned to.\", \"warning\":\"Kubewarden administrators need to thoroughly examine the types of resources that a policy will access in order to prevent any misuse or abuse of the system. In some cases, it may be necessary to increase the permissions of the ServiceAccount associated with the PolicyServer to enable the policy to retrieve the required information. Although policies are restricted to read-only access to Kubernetes resources, there is a risk that a malicious attacker could exploit a Kubewarden policy to extract sensitive data from the cluster.\", \"resource\":({\"add\":\"Add Resource\", \"remove\":\"Remove Resource\", \"apiVersion\":({\"label\":\"API Version\", \"tooltip\":\"This is the apiVersion of the resource (v1 for core group, groupName/groupVersions for other).\"}), \"kind\":({\"label\":\"Kind\", \"tooltip\":\"Singular PascalCase name of the resource\"})})}), \"description\":({\"showReadme\":\"Show Readme\"})}), \"policyServerConfig\":({\"securityContexts\":({\"containerConfig\":\"Container configuration\", \"podConfig\":\"Pod configuration\", \"allow-priv-escalation\":({\"label\":\"Allow Privilege Escalation\", \"tooltip\":\"Allow Privilege Escalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the \\\"no_new_privs\\\" flag will be set on the container process\"}), \"capabilities\":({\"title\":\"Capabilities\", \"add\":\"Added Capabilities\", \"drop\":\"Dropped Capabilities\", \"addLabel\":\"Add\", \"placeholder\":\"Capability\"}), \"privileged\":({\"label\":\"Run container in privileged mode\", \"tooltip\":\"Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host\"}), \"procMount\":({\"label\":\"ProcMount\", \"placeholder\":\"ProcMount type\"}), \"readOnlyRootFilesystem\":({\"label\":\"Whether this container has a read-only root filesystem\"}), \"runAsNonRoot\":({\"label\":\"Container must run as a non-root user\", \"tooltip\":\"If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does\"}), \"runAsGroup\":\"Run As Group\", \"runAsUser\":\"Run As User\", \"seLinuxOptions\":({\"title\":\"SE Linux Options\", \"level\":({\"label\":\"SELinux level\", \"placeholder\":\"SELinux level label\"}), \"role\":({\"label\":\"SELinux role\", \"placeholder\":\"SELinux role label\"}), \"type\":({\"label\":\"SELinux type\", \"placeholder\":\"SELinux type label\"}), \"user\":({\"label\":\"SELinux user\", \"placeholder\":\"SELinux user label\"})}), \"seccompProfile\":({\"title\":\"Seccomp Profile\", \"inputEnabledLabel\":\"Add Seccomp Profile Configuration\", \"localhostProfile\":({\"label\":\"Localhost Profile\", \"placeholder\":\"Localhost Profile\"}), \"type\":\"Type\"}), \"windowsOptions\":({\"title\":\"Windows Options\", \"gmsaCredentialSpec\":({\"label\":\"GMSA Credential Spec\", \"placeholder\":\"GMSA Credential Spec\"}), \"gmsaCredentialSpecName\":({\"label\":\"GMSA Credential Spec Name\", \"placeholder\":\"GMSA Credential Spec Name\"}), \"hostProcess\":({\"label\":\"Run as a 'Host Process' container\", \"tooltip\":\"All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true\"}), \"runAsUserName\":({\"label\":\"Run As UserName\", \"placeholder\":\"Run As UserName\"})}), \"fsGroup\":({\"label\":\"FS Group\"}), \"fsGroupChangePolicy\":({\"label\":\"FS Group change Policy\", \"placeholder\":\"FS Group change Policy\"}), \"supplementalGroups\":({\"addLabel\":\"Add Group\", \"label\":\"Supplemental Group\"}), \"sysctls\":({\"addLabel\":\"Add Sysctls\", \"label\":\"Sysctls\", \"name\":({\"label\":\"Name\", \"placeholder\":\"Name\"}), \"value\":({\"label\":\"Value\", \"placeholder\":\"Value\"})})}), \"defaultImage\":({\"label\":\"Default Image\", \"tooltip\":\"Use the default `policy-server` container image.\", \"versionWarning\":\"The latest stable version for Policy Server could not be determined, falling back to default.\"}), \"image\":({\"label\":\"Image URL\", \"tooltip\":\"This is the container image the policy server.\"}), \"replicas\":\"Replicas\", \"registry\":({\"description\":\"The PolicyServer allows you to pull policies from OCI registries and HTTP servers, by default HTTPS is enforced with host TLS verification. You can interact with registries using untrusted certificates or even without TLS by using the `insecureSources` setting. This approach is highly discouraged in environments closer to production. More information on configuring custom certificate authorities can be found here.\"}), \"insecureSources\":({\"title\":\"Insecure Sources\", \"addLabel\":\"Add Insecure Source\", \"placeholder\":\"registry-dev.example.com:5500\"}), \"sourceAuthorities\":({\"title\":\"Source Authorities\", \"add\":\"Add Source Authority\", \"endpoint\":\"Registry URI Endpoint\", \"placeholder\":\"registry-pre.example.com:5500\", \"certificate\":({\"label\":\"Certificate\", \"add\":\"Add PEM Certificate\", \"remove\":\"Remove Certificate\", \"file\":\"Read Certificate from File\"})}), \"verification\":({\"label\":\"Verification Config\", \"description\":\"This is the name of a VerificationConfig configmap within the same namespace, containing a Sigstore verification configuration. The configuration must be under a key named verification-config in the Configmap. More information can be found in the Kubewarden docs.\"})}), \"policyCharts\":({\"signedPolicy\":({\"label\":\"Signed\", \"tooltip\":\"This policy has been signed with { signatures }.\"}), \"mutationPolicy\":({\"label\":\"Mutation\", \"tooltip\":\"A mutating policy will rebuild the requests with definied values that are conformant with the policy definition.\"}), \"contextAware\":({\"label\":\"Context Aware\", \"tooltip\":\"Can determine whether an AdmissionRequest has to be accepted or rejected based on other resources already deployed in the cluster.\"})}), \"policyReporter\":({\"title\":\"Policy Reporter\", \"link\":\"Policy Reporter UI\", \"noSchema\":({\"banner\":\"Kubewarden has not been installed, this will need to be accomplished before installing the Policy Reporter\", \"link\":\"Install Kubewarden\"}), \"incompatible\":({\"banner\":\"Your cluster does not support policy reports, upgrade your Kubewarden to version `1.7.0` or greater to add the required crds.\", \"current\":\"Current Kubewarden Controller version\", \"noCrds\":({\"banner\":\"The CRDs for `wgpolicyk8s.io.clusterpolicyreport` or `wgpolicyk8s.io.policyreport` can not be found. These must be installed to support policy reports.\"})}), \"service\":({\"main\":({\"banner\":({\"unavailable\":\"The Policy Reporter service is unavailable, ensure the properties `auditScanner.enable` and `auditScanner.policyReporter` are set to `true` within the Kubewarden Controller chart.\"})}), \"ui\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI service is unavailable, ensure the property `policy-reporter.ui.enabled` is set to `true` within the Kubewarden Controller chart.\"})})}), \"url\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI proxy URL is unavailble, please ensure that the UI is properly configured.\"})}), \"deployment\":({\"banner\":({\"unavailable\":\"The Policy Reporter UI Deployment is currently in a `{ state }` state, please wait.\"})}), \"headers\":({\"policyReports\":({\"label\":\"Compliance\", \"description\":\"Policy Reports are the results of the policy scans that are stored using the PolicyReport Custom Resource.\"}), \"clusterPolicyReports\":({\"label\":\"Cluster Compliance\", \"description\":\"Cluster Policy Reports are the results of the policy scans that are stored using the ClusterPolicyReport Custom Resource.\"}), \"label\":\"Compliance\", \"description\":\"When using the Kubewarden Audit Scanner, the results of the policy scans are stored using the PolicyReport Custom Resource.\", \"policyReportsTab\":({\"policy\":({\"label\":\"Policy\"}), \"rule\":({\"label\":\"Rule\"}), \"severity\":({\"label\":\"Severity\"}), \"status\":({\"label\":\"Status\"}), \"summary\":({\"label\":\"Summary\"}), \"message\":({\"title\":\"Message\"}), \"properties\":({\"policy-uid\":\"policy-uid\", \"version\":\"policy-resource-version\", \"mutating\":\"mutating\", \"validating\":\"validating\"})})})})}), \"asyncButton\":({\"artifactHub\":({\"action\":\"Add ArtifactHub To Whitelist\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"certManager\":({\"action\":\"Apply Cert-Manager Package\", \"success\":\"Applied\", \"waiting\":\"Installing…\"}), \"kubewardenRepository\":({\"action\":\"Add Kubewarden Repository\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"grafanaDashboard\":({\"action\":\"Add Grafana Dashboards\", \"success\":\"Added\", \"wating\":\"Adding…\"}), \"serviceMonitor\":({\"action\":\"Add Service Monitor\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"policyReporterRepo\":({\"action\":\"Add Policy Reporter Repository\", \"success\":\"Added\", \"waiting\":\"Adding…\"}), \"policyReporterChart\":({\"action\":\"Install Policy Reporter Chart\", \"success\":\"Installed\", \"waiting\":\"Installing…\"})})})];\nmodule.exports = doc.length <= 1 ? doc[0] : doc;"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.airgap-docs.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.airgap-docs.js new file mode 100644 index 0000000..d85e685 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.airgap-docs.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[1],{"11cb":function(e,s,n){e.exports=n.p+"assets/airgap-installation.md"}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.airgap-docs.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.airgap-docs.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.airgap-docs.js.map new file mode 100644 index 0000000..52a5b3a --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.airgap-docs.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-2.0.0/./assets/airgap-installation.md"],"names":["module","exports"],"mappings":"oLAAAA,EAAOC,QAAU,IAA0B","file":"kubewarden-2.0.0.umd.min.airgap-docs.js","sourcesContent":["module.exports = __webpack_public_path__ + \"assets/airgap-installation.md\";"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.detail.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.detail.js new file mode 100644 index 0000000..76c383d --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.detail.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[2],{"00ce":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending||e.refreshingCharts?t("Loading",{attrs:{mode:"relative"}}):t("div",[e.showChecklist?t("TraceChecklist",{attrs:{"controller-app":e.controllerApp,"controller-chart":e.controllerChart,"tracing-configuration":e.tracingConfiguration,"jaeger-query-svc":e.jaegerQuerySvc,"open-tel-svc":e.openTelSvc}}):!e.showChecklist&&e.emptyPolicies?t("Banner",{attrs:{color:"error",label:e.t("kubewarden.tracing.noRelatedPolicies")}}):e.showTable?t("SortableTable",{attrs:{rows:e.filteredValidations,headers:e.TRACE_HEADERS,"table-actions":!1,"row-actions":!1,"key-field":"id","default-sort-by":"startTime","sub-expandable":!0,"sub-expand-column":!0,"sub-rows":!0,paging:!0,"rows-per-page":e.rowsPerPage},scopedSlots:e._u([{key:"col:mode",fn:function({row:r}){return[t("td",[t("BadgeState",{staticClass:"text-capitalize",attrs:{label:r.mode,color:e.modeColor(r.mode)}})],1)]}},{key:"col:name",fn:function({row:r}){return[t("td",{staticClass:"text-bold"},[e._v(" "+e._s(r.name)+" ")])]}},{key:"col:namespace",fn:function({row:r}){return[t("td",[e._v(" "+e._s(r.namespace?r.namespace:"-")+" ")])]}},{key:"col:startTime",fn:function({row:r}){return[t("td",[e._v(" "+e._s(e.formatTime(r.startTime))+" ")])]}},{key:"col:duration",fn:function({row:r}){return[t("td",[e._v(" "+e._s(e.duration(r.duration))+" ")])]}},{key:"sub-row",fn:function({row:r,fullColspan:a}){return[t("td",{staticClass:"sub-row",attrs:{colspan:a}},[t("div",{staticClass:"details"},[t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Response Message ")]),t("span",{staticClass:"text-info text-capitalize"},[e._v(" "+e._s(r.responseMessage?r.responseMessage:"-")+" ")])]),t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Response Code ")]),t("span",{staticClass:"text-info"},[e._v(" "+e._s(r.responseCode?r.responseCode:"-")+" ")])]),t("section",{staticClass:"col"},[t("div",{staticClass:"title"},[e._v(" Mutated ")]),t("span",{staticClass:"text-info"},[e._v(" "+e._s(r.mutated)+" ")])])])])]}}])}):t("Banner",{attrs:{color:"warning",label:e.t(e.emptyTracesLabel)}})],1)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("050d"),c=r.n(l),d=r("be6d"),u=r.n(d),p=r("907c"),v=r("4ac6"),h=r("2359"),m=r("a8b9"),b=r("f17a"),f=r("6418"),g=r("15ca"),y=r("0fb1"),k=r("5191"),w=r("90cd"),_=r("5136"),C=r("7d99"),S=r.n(C),O=r("37ef"),T=r.n(O),A=r("e4c5"),R=r.n(A);c.a.extend(R.a);const E=1e3,P=1e3*E,j=60*P,x=60*j,M=24*x,N=[{unit:"d",microseconds:M,ofPrevious:24},{unit:"h",microseconds:x,ofPrevious:60},{unit:"m",microseconds:j,ofPrevious:60},{unit:"s",microseconds:P,ofPrevious:1e3},{unit:"ms",microseconds:E,ofPrevious:1e3},{unit:"μs",microseconds:1,ofPrevious:1e3}];function D(e){const[t,r]=S()(N,({microseconds:t},r)=>re);if(1e3===t.ofPrevious)return`${T()(e/t.microseconds,2)}${t.unit}`;const a=Math.floor(e/t.microseconds),i=`${a}${t.unit}`,o=Math.round(e/r.microseconds%t.ofPrevious),n=`${o}${r.unit}`;return 0===o?i:`${i} ${n}`}var L=function(){var e=this,t=e._self._c;return t("div",[t("p",{staticClass:"checklist__description mb-20",attrs:{"data-testid":"kw-tracing-checklist-description"}},[e._v(" "+e._s(e.t("kubewarden.tracing.description"))+" ")]),t("div",{staticClass:"checklist__prereq mb-20"},[t("h2",[e._v(e._s(e.t("kubewarden.tracing.prerequisites.label")))]),t("p",[e._v(e._s(e.t("kubewarden.tracing.prerequisites.description")))])]),t("Banner",{attrs:{color:"warning",label:e.t("kubewarden.tracing.prerequisites.warning")}}),t("div",{staticClass:"checklist__container mt-20 mb-20"},[t("div",{staticClass:"checklist__step mt-20 mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-open-tel"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.openTelSvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.openTelemetry",{},!0),expression:"t('kubewarden.tracing.openTelemetry', {}, true)"}]})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-jaeger"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.jaegerQuerySvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.jaeger",{},!0),expression:"t('kubewarden.tracing.jaeger', {}, true)"}],attrs:{p:""}})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-tracing-checklist-step-config"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.tracingEnabled)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.config.label",{},!0),expression:"t('kubewarden.tracing.config.label', {}, true)"}]}),t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.controllerLinkTooltip,expression:"controllerLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-tracing-checklist-step-config-button",disabled:e.controllerLinkDisabled},on:{click:e.controllerAppRoute}},[e._v(" "+e._s(e.t("kubewarden.tracing.config.link"))+" ")])])])])],1)},$=[],I=r("da25"),q={props:{controllerApp:{type:Object,default:null},controllerChart:{type:Object,default:null},tracingConfiguration:{type:Object,default:null},jaegerQuerySvc:{type:Object,default:null},openTelSvc:{type:Object,default:null}},components:{Banner:f["a"]},computed:{...Object(o["b"])(["currentCluster"]),controllerLinkTooltip(){return this.openTelSvc&&this.jaegerQuerySvc?this.controllerApp&&this.controllerChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Kubewarden Controller"},!0):this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites")},controllerLinkDisabled(){return!this.openTelSvc||!this.jaegerQuerySvc||!this.controllerApp||!this.controllerChart},tracingEnabled(){return this.tracingConfiguration?this.tracingConfiguration.enabled:null}},methods:{badgeIcon(e){return{"icon-dot-open":!e,"icon-checkmark":e,"text-success":e}},controllerAppRoute(){if(this.controllerApp){var e,t,r,a,i,o,n;const s=null===(e=this.controllerApp.spec)||void 0===e||null===(e=e.chart)||void 0===e?void 0:e.metadata,l={[I["g"]]:null===s||void 0===s||null===(t=s.annotations)||void 0===t?void 0:t[v["c"].NAMESPACE],[I["f"]]:null===s||void 0===s||null===(r=s.annotations)||void 0===r?void 0:r[v["c"].RELEASE_NAME],[I["o"]]:null===s||void 0===s||null===(a=s.annotations)||void 0===a?void 0:a["catalog.cattle.io/upstream-version"],[I["i"]]:null===s||void 0===s||null===(i=s.annotations)||void 0===i?void 0:i[v["c"].SOURCE_REPO_NAME],[I["j"]]:null===s||void 0===s||null===(o=s.annotations)||void 0===o?void 0:o[v["c"].SOURCE_REPO_TYPE],[I["d"]]:null===s||void 0===s?void 0:s.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(n=this.currentCluster)||void 0===n?void 0:n.id)||"_"},query:l})}}}},G=q,B=(r("6478"),r("d802")),V=Object(B["a"])(G,L,$,!1,null,"63ad3d60",null),U=V.exports;c.a.extend(u.a);var Y={props:{resource:{type:String,default:()=>""},relatedPolicies:{type:Array,default:()=>[]},policy:{type:Object,default:()=>{}}},components:{BadgeState:b["a"],Banner:f["a"],Loading:g["a"],SortableTable:y["a"],TraceChecklist:U},mixins:[h["a"]],async fetch(){const e=[p["a"].APP,p["a"].CLUSTER_REPO,p["z"]],t=[];for(const r of e)this.$store.getters["cluster/canList"](r)&&t.push(this.$fetchType(r));if(await Object(m["a"])(t),this.jaegerQuerySvc){const e={store:this.$store,queryService:this.jaegerQuerySvc,resource:this.resource,relatedPolicies:null,policy:null};this.resource===w["f"].POLICY_SERVER?e.relatedPolicies=this.relatedPolicies:e.policy=this.policy,this.specificValidations=await Object(_["b"])(e)}},data(){return{MODE_MAP:w["o"],TRACE_HEADERS:k["h"],OPERATION_MAP:w["p"],specificValidations:null}},computed:{...Object(o["b"])(["currentCluster"]),...Object(o["b"])({charts:"catalog/charts",refreshingCharts:"kubewarden/refreshingCharts"}),allApps(){return this.$store.getters["cluster/all"](p["a"].APP)},allServices(){return this.$store.getters["cluster/all"](p["z"])},controllerApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t;return(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.name)===w["h"].CONTROLLER})},controllerChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>e.chartName===w["h"].CONTROLLER)},groupField(){return this.isPolicyServer?"policy_id":null},isPolicyServer(){return this.resource===w["f"].POLICY_SERVER},emptyPolicies(){return this.resource===w["f"].POLICY_SERVER?s()(this.relatedPolicies):s()(this.policy)},emptyTraces(){return s()(this.filteredValidations)},emptyTracesLabel(){return this.resource===w["f"].POLICY_SERVER?"kubewarden.tracing.noRelatedTraces":"kubewarden.tracing.noTraces"},rowsPerPage(){return this.isPolicyServer?40:20},tracingConfiguration(){var e;return this.controllerApp?null===(e=this.controllerApp)||void 0===e||null===(e=e.spec)||void 0===e||null===(e=e.values)||void 0===e||null===(e=e.telemetry)||void 0===e?void 0:e.tracing:null},tracingEnabled(){return this.tracingConfiguration?this.tracingConfiguration.enabled:null},jaegerServices(){var e;return null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t;return"jaeger"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t["app.kubernetes.io/part-of"])})},jaegerQuerySvc(){return s()(this.jaegerServices)?null:this.jaegerServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>16685===e.port||16686===e.port)})},openTelemetryServices(){var e;return null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t;return"opentelemetry-operator"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t[v["h"].MANAGED_NAME])})},openTelSvc(){return s()(this.openTelemetryServices)?null:this.openTelemetryServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>8080===e.port)})},showChecklist(){var e;return!this.openTelSvc||!this.jaegerQuerySvc||!(null!==(e=this.tracingConfiguration)&&void 0!==e&&e.enabled)},showTable(){return!this.emptyPolicies&&!this.showChecklist&&!this.emptyTraces},filteredValidations(){return s()(this.specificValidations)?[]:this.specificValidations.flatMap(e=>{var t;return(null===(t=this.currentCluster)||void 0===t?void 0:t.id)===e.cluster?e.traces:[]})}},methods:{modeColor(e){return this.MODE_MAP[e]},opColor(e){return this.OPERATION_MAP[e]},formatTime(e){return c()(e/1e3)},duration(e){return D(e)}}},z=Y,H=(r("ed5b"),Object(B["a"])(z,a,i,!1,null,"ab725830",null));t["a"]=H.exports},"17ab":function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".checklist__container[data-v-cf603ff2]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-cf603ff2],.checklist__step[data-v-cf603ff2]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-cf603ff2]{min-height:40px}.conflicting-banner[data-v-cf603ff2]{display:flex;flex-direction:column}",""]),e.exports=t},2192:function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".checklist__container[data-v-63ad3d60]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-63ad3d60],.checklist__step[data-v-63ad3d60]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-63ad3d60]{min-height:40px}",""]),e.exports=t},"284d":function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[e.policyGauges?[t("div",{staticClass:"row"},[[t("div",{staticClass:"col span-6"},[t("h3",{attrs:{"data-testid":"kw-ps-detail-status-title"}},[e._v(" "+e._s(e.t("kubewarden.policyServer.policyGauge.byStatus"))+" ")]),t("div",{staticClass:"gauges mb-20"},e._l(e.policyGauges,(function(r,a){return t("CountGauge",{key:a,attrs:{total:e.relatedPoliciesTotal,useful:r.count||0,graphical:!1,"primary-color-var":"--sizzle-"+r.color,name:a}})})),1)])],e.emptyTraces?e._e():[t("div",{staticClass:"col span-6"},[t("h3",[e._v(" "+e._s(e.t("kubewarden.policyServer.policyGauge.traces"))+" ")]),t("div",{staticClass:"gauges mb-20"},e._l(e.tracesGauges,(function(r,a){return t("CountGauge",{key:a,attrs:{useful:r.count||0,total:e.traceGaugeTotals,graphical:!1,"primary-color-var":"--sizzle-"+r.color,name:a}})})),1)])]],2)]:e._e(),t("ResourceTabs",{attrs:{mode:e.mode},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[t("Tab",{attrs:{name:"related-policies",label:"Policies",weight:99},scopedSlots:e._u([{key:"default",fn:function(){return[t("ResourceTable",{attrs:{rows:e.relatedPolicies||[],headers:e.RELATED_HEADERS,groupable:!0,"group-by":e.groupPreference,"table-actions":!0,"data-testid":"kw-ps-detail-related-policies-list"},scopedSlots:e._u([{key:"col:operation",fn:function({row:r}){return[t("td",[t("BadgeState",{attrs:{"data-testid":`kw-ps-detail-${r.id}-state`,label:r.operation,color:e.color(r.operation)}})],1)]}}])})]},proxy:!0}])}),t("Tab",{staticClass:"relative",attrs:{name:"policy-tracing",label:"Tracing",weight:98}},[t("TraceTable",{attrs:{resource:e.resource,"related-policies":e.relatedPolicies}})],1),t("Tab",{staticClass:"relative",attrs:{name:"policy-metrics",label:"Metrics",weight:97},scopedSlots:e._u([{key:"default",fn:function(r){return[t("MetricsTab",{attrs:{resource:e.resource,"policy-server-obj":e.value,active:r.active}})]}}])})],1)],2)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("da25"),c=r("a8b9"),d=r("305c"),u=r("5000"),p=r("74c2"),v=r("15ca"),h=r("c422"),m=r("126f"),b=r("38de"),f=r("5191"),g=r("3f46"),y=r("00ce"),k={name:"PolicyServer",components:{CountGauge:p["a"],Loading:v["a"],MetricsTab:g["a"],ResourceTabs:h["a"],ResourceTable:m["a"],Tab:b["a"],TraceTable:y["a"]},mixins:[d["a"]],props:{mode:{type:String,default:l["r"]},resource:{type:String,default:null},value:{type:Object,required:!0}},async fetch(){const e=await Object(c["a"])({relatedPolicies:this.value.allRelatedPolicies(),policyGauges:this.value.policyGauges()}),t=(e,t)=>{s()(t)||(this[e]=t)};t("relatedPolicies",e.relatedPolicies),t("policyGauges",e.policyGauges)},data(){return{RELATED_HEADERS:f["f"],policyGauges:null,relatedPolicies:null,reloadRequired:!1}},computed:{...Object(o["b"])(["currentCluster"]),...Object(o["b"])({policyTraces:"kubewarden/policyTraces"}),_group:Object(u["m"])(u["e"]),filteredTraces(){return s()(this.policyTraces)?null:this.policyTraces.filter(e=>{var t;if((null===(t=this.currentCluster)||void 0===t?void 0:t.id)===e.cluster)return e})},emptyTraces(){return s()(this.filteredTraces)},groupPreference(){const e="namespace"===this._group?"kind":null;return e},relatedPoliciesTotal(){return s()(this.relatedPolicies)?0:this.relatedPolicies.length},tracesGauges(){return this.emptyTraces?null:this.value.tracesGauges(this.filteredTraces)},traceGaugeTotals(){var e;return this.emptyTraces?0:null===(e=this.filteredTraces)||void 0===e?void 0:e.flatMap(e=>e.traces).length}},methods:{hasNamespaceSelector(e){return e.namespaceSelector}}},w=k,_=(r("2a13"),r("d802")),C=Object(_["a"])(w,a,i,!1,null,"a88dafa8",null);t["default"]=C.exports},"2a13":function(e,t,r){"use strict";r("b7b9")},"3f46":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading",{attrs:{mode:"relative"}}):t("div",[e.showChecklist?t("MetricsChecklist",{attrs:{"cattle-dashboard-ns":e.cattleDashboardNs,"conflicting-grafana-dashboards":e.conflictingGrafanaDashboards,"controller-app":e.controllerApp,"controller-chart":e.controllerChart,"kubewarden-service-monitor":e.kubewardenServiceMonitor,"kubewarden-dashboards":e.kubewardenGrafanaDashboards,"monitoring-app":e.monitoringApp,"monitoring-chart":e.monitoringChart,"open-tel-svc":e.openTelSvc,"policy-obj":e.policyObj,"policy-server-obj":e.policyServerObj},on:{updateServiceMonitors:e.updateServiceMonitors}}):e._e(),e.showChecklist?e._e():[e.monitoringApp&&!e.metricsProxy?t("Banner",{attrs:{color:"error",label:e.t("kubewarden.monitoring.warning.noProxy")}}):e._e(),e.metricsProxy&&e.active?t("DashboardMetrics",{attrs:{"data-testid":"kw-ps-metrics-dashboard","detail-url":e.metricsProxy,"summary-url":e.metricsProxy,vars:{policy_name:e.policyName},"graph-height":"825px"}}):e._e()]],2)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("44db"),c=r.n(l),d=r("907c"),u=r("4ac6"),p=r("b45b"),v=r("f390"),h=r("a8b9"),m=r("2359"),b=r("c389"),f=r("15ca"),g=r("6418"),y=r("90cd"),k=r("e9a3"),w=r("541d");async function _(e){const{store:t,type:r}=e;try{const e=await C(t);if(!s()(e)){const t=`/api/v1/namespaces/${e.metadata.namespace}/services`,a=`/http:${e.metadata.name}:80/proxy`,i=`/d/${r}?orgId=1&kiosk`;return t+a+i}}catch(a){Object(k["a"])({error:a,store:t,type:"warning"})}return null}async function C(e){try{return await e.dispatch("cluster/find",{type:d["z"],id:"cattle-monitoring-system/rancher-monitoring-grafana"},{root:!0})}catch(t){Object(k["a"])({error:t,store:e,type:"warning"})}}async function S(e){try{return await e.dispatch("cluster/findMatching",{type:d["b"],selector:"kubewarden/part-of=cattle-kubewarden-system"})}catch(t){Object(k["a"])({error:t,store:e,type:"warning"})}}async function O(e){const{store:t,monitoringApp:a,controllerApp:i}=e;if(a&&i){const e=Object.values(y["n"]);for(const s of e){var o;const e=await r("cb8a")(`./${s}.json`),l=s+".json",c=await S(t);if(c&&(null===c||void 0===c||null===(o=c.metadata)||void 0===o?void 0:o.name)===s)return;const u={[y["m"].DASHBOARD]:s,[y["m"].PART_OF]:i.metadata.namespace,[y["m"].APP]:"rancher-monitoring-grafana",[y["m"].GRAFANA_DASHBOARD]:"1","app.kubernetes.io/instance":a.metadata.name},p={[y["e"].NAME]:a.metadata.name,[y["e"].NAMESPACE]:a.metadata.namespace},v=await t.dispatch("cluster/create",{type:d["b"],metadata:{annotations:p,labels:u,name:s,namespace:"cattle-dashboards"},data:{[l]:JSON.stringify(e)}});try{await v.save()}catch(n){Object(k["a"])({error:n,store:t})}}}}function T(e){const{policyObj:t,policyServerObj:r,allServiceMonitors:a}=e;if(!s()(a)){var i;const e=t?null===(i=t.spec)||void 0===i?void 0:i.policyServer:null===r||void 0===r?void 0:r.id;return null===a||void 0===a?void 0:a.find(t=>{var r;return(null===t||void 0===t||null===(r=t.spec)||void 0===r||null===(r=r.selector)||void 0===r||null===(r=r.matchLabels)||void 0===r?void 0:r["app"])==="kubewarden-policy-server-"+e})}}async function A(e){const{store:t,policyObj:r,policyServerObj:a,controllerNs:i,serviceMonitor:o}=e;if(t.getters["cluster/schemaFor"](d["m"].SERVICEMONITOR)){var n;const e=r?null===(n=r.spec)||void 0===n?void 0:n.policyServer:null===a||void 0===a?void 0:a.id,l={kind:"ServiceMonitor",type:d["m"].SERVICEMONITOR,metadata:{name:e,namespace:i},spec:{endpoints:[{interval:"10s",port:"metrics"}],namespaceSelector:{matchNames:[i]},selector:{matchLabels:{app:"kubewarden-policy-server-"+e}}}};if(!o){const e=await t.dispatch("cluster/create",l);try{await e.save()}catch(s){Object(k["a"])({error:s,store:t})}}}}var R=r("5136"),E=function(){var e=this,t=e._self._c;return t("div",{staticClass:"checklist__container"},[t("div",{staticClass:"checklist__prereq mb-20"},[t("h2",[e._v(e._s(e.t("kubewarden.monitoring.prerequisites.label")))]),t("p",[e._v(e._s(e.t("kubewarden.monitoring.prerequisites.description")))])]),t("Banner",{attrs:{color:"warning",label:e.t("kubewarden.monitoring.prerequisites.warning")}}),t("div",{staticClass:"mt-20 mb-20"},[t("div",{staticClass:"checklist__step mt-20 mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-open-tel"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.openTelSvc)}),t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.tracing.openTelemetry",{},!0),expression:"t('kubewarden.tracing.openTelemetry', {}, true)"}]})]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-monitoring-app"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.monitoringApp)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.monitoringApp.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)"}],attrs:{p:""}}),e.monitoringApp?e._e():t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.monitoringLinkTooltip,expression:"monitoringLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-button",disabled:!e.monitoringChart},on:{click:function(t){return e.monitoringAppRoute()}}},[e._v(" "+e._s(e.monitoringChartLink)+" ")])])]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-service-monitor-map"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.kubewardenServiceMonitor)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.serviceMonitor.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)"}],attrs:{p:""}}),e.kubewardenServiceMonitor?e._e():t("AsyncButton",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.serviceMonitorsTooltip,expression:"serviceMonitorsTooltip"}],staticClass:"ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-service-monitor-button",mode:"serviceMonitor",disabled:e.serviceMonitorButtonDisabled},on:{click:e.addServiceMonitor}})],1)]),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-config-map"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.hasKubewardenDashboards)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.configMap.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)"}],attrs:{p:""}}),e.hasKubewardenDashboards?e._e():t("AsyncButton",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.dashboardsTooltip,expression:"dashboardsTooltip"}],staticClass:"ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-map-button",mode:"grafanaDashboard",disabled:e.dashboardButtonDisabled},on:{click:e.addDashboards}})],1)]),e.showConflictingDashboardsBanner?t("Banner",{attrs:{color:"error"}},[t("div",{staticClass:"conflicting-banner"},[t("p",[e._v(" "+e._s(e.t("kubewarden.monitoring.prerequisites.configMap.conflictingDashboardsBanner",{count:e.conflictingGrafanaDashboards.length},!0))+" ")]),e._l(e.conflictingGrafanaDashboards,(function(r){return t("n-link",{key:r.metadata.name,staticClass:"text-bold",attrs:{to:r.detailLocation}},[e._v(" "+e._s(r.metadata.name)+" ")])}))],2)]):e._e(),t("div",{staticClass:"checklist__step mb-20",attrs:{"data-testid":"kw-monitoring-checklist-step-controller-config"}},[t("i",{staticClass:"icon mr-10",class:e.badgeIcon(e.metricsEnabled)}),t("div",{staticClass:"checklist__config"},[t("p",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.monitoring.prerequisites.controllerConfig.label",{},!0),expression:"t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)"}],attrs:{p:""}}),e.metricsEnabled?e._e():t("button",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.controllerLinkTooltip,expression:"controllerLinkTooltip"}],staticClass:"btn role-primary ml-10",attrs:{"data-testid":"kw-monitoring-checklist-step-config-button",disabled:e.controllerLinkDisabled},on:{click:function(t){return e.controllerAppRoute()}}},[e._v(" "+e._s(e.t("kubewarden.monitoring.prerequisites.controllerConfig.button"))+" ")])])])],1)],1)},P=[],j=r("da25"),x=r("d709"),M={props:{cattleDashboardNs:{type:Object,default:null},conflictingGrafanaDashboards:{type:Array,default:null},controllerApp:{type:Object,default:null},controllerChart:{type:Object,default:null},kubewardenServiceMonitor:{type:Object,default:null},kubewardenDashboards:{type:Array,default:null},monitoringApp:{type:Object,default:null},monitoringChart:{type:Object,default:null},openTelSvc:{type:Object,default:null},policyObj:{type:Object,default:null},policyServerObj:{type:Object,default:null}},components:{AsyncButton:x["b"],Banner:g["a"]},computed:{...Object(o["b"])(["currentCluster"]),...Object(o["b"])({t:"i18n/t"}),controllerMetricsConfig(){var e;return this.controllerApp?null===(e=this.controllerApp.spec)||void 0===e||null===(e=e.values)||void 0===e||null===(e=e.telemetry)||void 0===e?void 0:e.metrics:null},controllerLinkDisabled(){return!this.openTelSvc||!this.monitoringApp||!this.hasKubewardenDashboards||!this.controllerChart||!this.controllerApp},controllerLinkTooltip(){return this.controllerLinkDisabled?this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites"):this.controllerChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Kubewarden Controller"},!0)},dashboardsTooltip(){return this.monitoringApp?this.monitoringApp&&s()(this.cattleDashboardNs)?this.t("kubewarden.monitoring.prerequisites.tooltips.nsNotFound"):null:this.t("kubewarden.monitoring.prerequisites.tooltips.appNotInstalled",{app:"Rancher Monitoring"},!0)},dashboardButtonDisabled(){return!this.monitoringApp||s()(this.cattleDashboardNs)||!this.hasKubewardenDashboards&&!!this.conflictingGrafanaDashboards.length},hasKubewardenDashboards(){return!s()(this.kubewardenDashboards)},metricsEnabled(){return this.controllerMetricsConfig?this.controllerMetricsConfig.enabled:null},monitoringChartLink(){return this.monitoringApp?this.t("kubewarden.monitoring.prerequisites.monitoringApp.edit"):this.t("kubewarden.monitoring.prerequisites.monitoringApp.install")},monitoringLinkTooltip(){return this.monitoringChart?null:this.t("kubewarden.monitoring.prerequisites.tooltips.chartError",{chart:"Rancher Monitoring"},!0)},serviceMonitorButtonDisabled(){return!this.controllerApp||!this.monitoringApp},serviceMonitorsTooltip(){return this.monitoringApp?!this.kubewardenServiceMonitor&&this.controllerApp?this.t("kubewarden.monitoring.prerequisites.tooltips.monitorsNotFound",{namespace:null===(e=this.controllerApp.metadata)||void 0===e?void 0:e.namespace},!0):null:this.t("kubewarden.monitoring.prerequisites.tooltips.prerequisites");var e},showConflictingDashboardsBanner(){return!this.hasKubewardenDashboards&&!s()(this.conflictingGrafanaDashboards)}},methods:{async addDashboards(e){try{await O({store:this.$store,monitoringApp:this.monitoringApp,controllerApp:this.controllerApp}),e(!0)}catch(t){Object(k["a"])({error:t,store:this.$store}),e(!1)}},async addServiceMonitor(e){try{var t;await A({store:this.$store,policyObj:this.policyObj,policyServerObj:this.policyServerObj,controllerNs:null===(t=this.controllerApp)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.namespace,serviceMonitor:this.kubewardenServiceMonitor}),this.$emit("updateServiceMonitors"),e(!0)}catch(r){Object(k["a"])({error:r,store:this.$store}),e(!1)}},badgeIcon(e){if(Array.isArray(e)){const t=s()(e);return{"icon-dot-open":t,"icon-checkmark":!t,"text-success":!t}}return{"icon-dot-open":!e,"icon-checkmark":e,"text-success":e}},monitoringAppRoute(){if(!this.monitoringApp&&this.monitoringChart&&this.monitoringChart.goToInstall(),this.monitoringApp){var e,t,r,a,i,o,n;const s={[j["g"]]:null===(e=this.monitoringApp.metadata)||void 0===e?void 0:e.namespace,[j["f"]]:null===(t=this.monitoringApp.metadata)||void 0===t?void 0:t.name,[j["o"]]:null===(r=this.monitoringApp.spec)||void 0===r||null===(r=r.chart)||void 0===r||null===(r=r.metadata)||void 0===r?void 0:r.version,[j["i"]]:null===(a=this.monitoringApp.spec)||void 0===a||null===(a=a.chart)||void 0===a||null===(a=a.metadata)||void 0===a||null===(a=a.annotations)||void 0===a?void 0:a[u["c"].SOURCE_REPO_NAME],[j["j"]]:null===(i=this.monitoringApp.spec)||void 0===i||null===(i=i.chart)||void 0===i||null===(i=i.metadata)||void 0===i||null===(i=i.annotations)||void 0===i?void 0:i[u["c"].SOURCE_REPO_TYPE],[j["d"]]:null===(o=this.monitoringApp.spec)||void 0===o||null===(o=o.chart)||void 0===o||null===(o=o.metadata)||void 0===o?void 0:o.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(n=this.currentCluster)||void 0===n?void 0:n.id)||"_"},query:s})}},controllerAppRoute(){if(this.controllerApp){var e,t,r,a,i,o,n;const s=null===(e=this.controllerApp.spec)||void 0===e||null===(e=e.chart)||void 0===e?void 0:e.metadata,l={[j["g"]]:null===s||void 0===s||null===(t=s.annotations)||void 0===t?void 0:t[u["c"].NAMESPACE],[j["f"]]:null===s||void 0===s||null===(r=s.annotations)||void 0===r?void 0:r[u["c"].RELEASE_NAME],[j["o"]]:null===s||void 0===s||null===(a=s.annotations)||void 0===a?void 0:a["catalog.cattle.io/upstream-version"],[j["i"]]:null===s||void 0===s||null===(i=s.annotations)||void 0===i?void 0:i[u["c"].SOURCE_REPO_NAME],[j["j"]]:null===s||void 0===s||null===(o=s.annotations)||void 0===o?void 0:o[u["c"].SOURCE_REPO_TYPE],[j["d"]]:null===s||void 0===s?void 0:s.name};this.$router.push({name:"c-cluster-apps-charts-install",params:{cluster:(null===(n=this.currentCluster)||void 0===n?void 0:n.id)||"_"},query:l})}}}},N=M,D=(r("6d24"),r("d802")),L=Object(D["a"])(N,E,P,!1,null,"cf603ff2",null),$=L.exports,I={props:{active:{type:Boolean,default:null},resource:{type:String,default:null},policyObj:{type:Object,default:null},policyServerObj:{type:Object,default:null}},components:{Banner:g["a"],DashboardMetrics:b["a"],Loading:f["a"],MetricsChecklist:$},mixins:[m["a"]],async fetch(){this.debouncedRefreshCharts=c()((e=!1)=>{Object(w["d"])({store:this.$store,chartName:"rancher-monitoring",init:e})},500);const e=[{name:d["a"].APP,property:this.allApps},{name:d["a"].CLUSTER_REPO,property:this.allRepos},{name:d["b"],property:this.allConfigMaps},{name:y["f"].POLICY_SERVER,property:this.allPolicyServers},{name:d["m"].SERVICEMONITOR,property:this.allServiceMonitors},{name:d["n"],property:this.allNamespaces},{name:d["z"],property:this.allServices}],t=[];for(const i of e)s()(i.property)&&this.$store.getters["cluster/canList"](i.name)&&t.push(this.$fetchType(i.name));if(await Object(h["a"])(t),this.showChecklist&&!this.monitoringChart&&this.debouncedRefreshCharts(!0),this.monitoringStatus.installed)try{var r;if(this.metricsProxy=await _({store:this.$store,type:this.METRICS_TYPE}),this.metricsProxy)this.metricsService=await Object(p["b"])("v2",this.$store,null===(r=this.currentCluster)||void 0===r?void 0:r.id,this.metricsProxy)}catch(a){const e={_statusText:"Error",message:"Error fetching Grafana Service: "+a};Object(k["a"])({error:e,store:this.$store})}},data(){const e=this.resource===y["f"].POLICY_SERVER?y["n"].POLICY_SERVER:y["n"].POLICY;return{METRICS_TYPE:e,[d["a"].APP]:null,[d["a"].CLUSTER_REPO]:null,[d["b"]]:null,[d["m"].SERVICEMONITOR]:null,[d["z"]]:null,metricsProxy:null,metricsService:null,debouncedRefreshCharts:null}},watch:{async grafanaService(){var e;this.metricsProxy||(this.metricsProxy=await _({store:this.$store,type:this.METRICS_TYPE}),this.metricsProxy&&(this.metricsService=await Object(p["b"])("v2",this.$store,null===(e=this.currentCluster)||void 0===e?void 0:e.id,this.metricsProxy)))}},computed:{...Object(o["b"])(["currentCluster","productId"]),...Object(o["b"])({charts:"catalog/charts"}),...Object(v["b"])(),policyName(){return Object(R["a"])(this.policyObj)},allApps(){return this.$store.getters["cluster/all"](d["a"].APP)},allRepos(){return this.$store.getters["cluster/all"](d["a"].CLUSTER_REPO)},allConfigMaps(){return this.$store.getters["cluster/all"](d["b"])},allNamespaces(){return this.$store.getters["cluster/all"](d["n"])},allPolicyServers(){return this.$store.getters["cluster/all"](y["f"].POLICY_SERVER)},allServiceMonitors(){return this.$store.getters["cluster/all"](d["m"].SERVICEMONITOR)},allServices(){return this.$store.getters["cluster/all"](d["z"])},cattleDashboardNs(){var e;return null===(e=this.allNamespaces)||void 0===e?void 0:e.find(e=>{var t;return"cattle-dashboards"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name)})},conflictingGrafanaDashboards(){var e;return null===(e=this.allConfigMaps)||void 0===e?void 0:e.filter(e=>{var t;const r=null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name;if(r)return r===y["n"].POLICY_SERVER||r===y["n"].POLICY})},controllerApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t;return(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.name)===y["h"].CONTROLLER})},controllerChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>e.chartName===y["h"].CONTROLLER)},grafanaService(){var e;const t=null===(e=this.allServices)||void 0===e?void 0:e.filter(e=>{var t;return"rancher-monitoring"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t["app.kubernetes.io/instance"])});return null===t||void 0===t?void 0:t.find(e=>{var t;return"grafana"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t["app.kubernetes.io/name"])})},kubewardenGrafanaDashboards(){var e;return null===(e=this.allConfigMaps)||void 0===e?void 0:e.filter(e=>{var t;return null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t[y["m"].DASHBOARD]})},kubewardenServiceMonitor(){var e;return T({policyObj:this.policyObj,policyServerObj:this.policyServerObj,controllerNs:null===(e=this.controllerApp)||void 0===e||null===(e=e.metadata)||void 0===e?void 0:e.namespace,allServiceMonitors:this.allServiceMonitors})},monitoringApp(){var e;return null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t;return"rancher-monitoring"===(null===e||void 0===e||null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.name)})},monitoringChart(){var e;return null===(e=this.charts)||void 0===e?void 0:e.find(e=>"rancher-monitoring"===e.chartName)},openTelemetryServices(){return this.allServices?this.allServices.filter(e=>{var t;return"opentelemetry-operator"===(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t[u["h"].MANAGED_NAME])}):null},openTelSvc(){return s()(this.openTelemetryServices)?null:this.openTelemetryServices.find(e=>{var t;const r=null===e||void 0===e||null===(t=e.spec)||void 0===t?void 0:t.ports;if(r.length)return r.find(e=>8080===e.port)})},policyServerSvcs(){if(!s()(this.allPolicyServers)){const t=this.allPolicyServers.map(e=>{var t;return null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name}),r=[];for(const a of t){var e;r.push(null===(e=this.allServices)||void 0===e?void 0:e.find(e=>{var t;return(null===e||void 0===e||null===(t=e.metadata)||void 0===t||null===(t=t.labels)||void 0===t?void 0:t.app)==="kubewarden-policy-server-"+a}))}return r}return null},showChecklist(){var e;const t=null===(e=this.controllerApp)||void 0===e||null===(e=e.spec)||void 0===e||null===(e=e.values)||void 0===e||null===(e=e.telemetry)||void 0===e||null===(e=e.metrics)||void 0===e?void 0:e.enabled,r=!s()(this.kubewardenGrafanaDashboards);return!this.openTelSvc||!this.monitoringApp||!this.kubewardenServiceMonitor||!t||!r}},methods:{async updateServiceMonitors(){await this.$fetchType(d["m"].SERVICEMONITOR)}}},q=I,G=Object(D["a"])(q,a,i,!1,null,null,null);t["a"]=G.exports},"43a8":function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".policy-table-container[data-v-ab725830]{display:flex;flex-direction:column;gap:1rem}.filter[data-v-ab725830]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end;align-items:center}.filter>*[data-v-ab725830]{margin:10px;max-width:33%}.filter[data-v-ab725830]>:first-child{margin-left:0}.filter[data-v-ab725830]>:last-child{margin-right:0}.filter__category[data-v-ab725830]{min-width:200px;height:unset}.filter__reset[data-v-ab725830],.filter__search[data-v-ab725830]{height:61px}",""]),e.exports=t},5136:function(e,t,r){"use strict";r.d(t,"b",(function(){return l})),r.d(t,"a",(function(){return c}));var a=r("330a"),i=r.n(a),o=r("90cd");function n(e,t){const r=null===e||void 0===e?void 0:e.links["view"],a=r.lastIndexOf("/");return s(r.slice(0,a),"http",null===e||void 0===e?void 0:e.metadata.name,t)}function s(e,t,r,a,i){const o=(t?encodeURIComponent(t)+":":"")+encodeURIComponent(r)+(a?":"+encodeURIComponent(a):""),n="/"+(i||"").replace(/^\/+/g,""),s=e.replace(/\/+$/g,""),l=`${s}/${o}/proxy${n}`;return l}async function l(e){const{store:t,queryService:r,resource:a,relatedPolicies:o,policy:s,time:l}=e;try{const e=n(r,16686),c=[];if(i()(o)){if(!s)throw new Error("Policy is undefined");c.push(d(t,e,s,l))}else null===o||void 0===o||o.forEach(r=>{const a=d(t,e,r,l);a&&c.push(a)});let p=await Promise.all(c);return p=p.flatMap(e=>null===e||void 0===e?void 0:e.data),u(t,p,a,o,s)}catch(c){console.warn("Error fetching Jaeger traces: "+c)}return null}function c(e){var t,r,a;let i=null;switch(null===e||void 0===e?void 0:e.kind){case"ClusterAdmissionPolicy":i="clusterwide-"+(null===e||void 0===e||null===(t=e.metadata)||void 0===t?void 0:t.name);break;case"AdmissionPolicy":i=`namespaced-${null===e||void 0===e||null===(r=e.metadata)||void 0===r?void 0:r.namespace}-${null===e||void 0===e||null===(a=e.metadata)||void 0===a?void 0:a.name}`;break;default:break}return i}function d(e,t,r,a){let i=null;const o=c(r),n=a||"2d",s=`lookback=${n}&tags={"policy_id"%3A"${o}"}`;i="api/traces?service=kubewarden-policy-server&operation=validation&"+s;const l=""+(t+i);return e.dispatch("cluster/request",{url:l})}function u(e,t,r,a,n){const s=e.getters["currentCluster"],l=[];function d(r){const a=c(r);return t.reduce((t,o)=>{var n;let l={};const c=o.spans.find(e=>"validation"===e.operationName),d=null===c||void 0===c||null===(n=c.tags)||void 0===n?void 0:n.find(e=>"policy_id"===(null===e||void 0===e?void 0:e.key)&&(null===e||void 0===e?void 0:e.value)===a);if(d){const e=p(c.tags);l={id:o.traceID,allowed:e.allowed,mode:r.spec.mode,name:e.name,operation:e.operation,kind:e.kind,namespace:e.namespace||null,startTime:c.startTime,duration:c.duration,responseMessage:e.response_message,responseCode:e.response_code,mutated:e.mutated}}return i()(l)||(t.push(l),e.dispatch("kubewarden/updatePolicyTraces",{policyName:r.metadata.name,cluster:null===s||void 0===s?void 0:s.id,updatedTrace:l})),t},[])}if(r===o["f"].POLICY_SERVER)for(const o of a){const e=d(o);i()(e)||l.push({policyName:o.metadata.name,cluster:null===s||void 0===s?void 0:s.id,traces:e})}else{const e=d(n);i()(e)||l.push({policyName:n.metadata.name,cluster:null===s||void 0===s?void 0:s.id,traces:e})}return l}function p(e){const t={};for(const r of e)switch(r.type){case"string":t[r.key]=r.value;break;case"int64":t[r.key]=parseInt(r.value,10);break;case"float64":t[r.key]=parseFloat(r.value);break;case"bool":t[r.key]="true"===r.value;break;default:t[r.key]=r.value}return t}},5523:function(e,t,r){var a=r("5eaa");t=a(!1),t.push([e.i,".relative[data-v-a88dafa8]{position:relative}.policy__mode[data-v-a88dafa8]{display:flex;align-items:center}.policy__mode i[data-v-a88dafa8]{margin-left:5px;font-size:22px;color:var(--warning)}.gauges[data-v-a88dafa8],.gaugesContainer[data-v-a88dafa8]{display:flex}.gauges[data-v-a88dafa8]{justify-content:space-around;flex-wrap:wrap;justify-content:left}.gauges .count-gauge[data-v-a88dafa8]{width:46%;margin-bottom:10px;flex:initial}.gauges>*[data-v-a88dafa8]{flex:1;margin-right:1.75%}",""]),e.exports=t},6478:function(e,t,r){"use strict";r("6e05")},"6d24":function(e,t,r){"use strict";r("f343")},"6e05":function(e,t,r){var a=r("2192");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("6af1f964",a,!0,{sourceMap:!1,shadowMode:!1})},"733f":function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return t("PolicyDetail",{attrs:{value:e.value,mode:e.mode,resource:e.resource}})},i=[],o=r("da25"),n=r("80db"),s={name:"AdmissionPolicy",props:{mode:{type:String,default:o["r"]},resource:{type:String,default:null},value:{type:Object,required:!0}},components:{PolicyDetail:n["a"]}},l=s,c=r("d802"),d=Object(c["a"])(l,a,i,!1,null,null,null);t["default"]=d.exports},"80db":function(e,t,r){"use strict";var a=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"mb-20"},[t("h3",[e._v(e._s(e.t("namespace.resources")))])]),t("ResourceTabs",{attrs:{"data-testid":"kw-policy-detail-tabs",mode:e.mode,"need-related":e.hasRelationships},model:{value:e.value,callback:function(t){e.value=t},expression:"value"}},[e.policyReadme?t("Tab",{attrs:{name:"policy-readme",label:"Readme",weight:99}},[t("Markdown",{attrs:{"data-testid":"kw-policy-detail-readme"},model:{value:e.policyReadme,callback:function(t){e.policyReadme=t},expression:"policyReadme"}})],1):e._e(),e.hasRules?t("Tab",{attrs:{name:"policy-rules",label:"Rules",weight:98}},[t("RulesTable",{attrs:{rows:e.rulesRows,"data-testid":"kw-policy-detail-rules-table"}})],1):e._e(),t("Tab",{attrs:{name:"policy-tracing",label:"Tracing",weight:97}},[t("TraceTable",{attrs:{resource:e.resource,policy:e.value,"data-testid":"kw-policy-detail-trace-table"}})],1),t("Tab",{attrs:{name:"policy-metrics",label:"Metrics",weight:96},scopedSlots:e._u([{key:"default",fn:function(r){return[t("MetricsTab",{attrs:{resource:e.resource,"policy-obj":e.value,active:r.active}})]}}])})],1)],1)},i=[],o=r("9ce4"),n=r("330a"),s=r.n(n),l=r("da25"),c=r("f390"),d=r("305c"),u=r("56dc"),p=r("c422"),v=r("38de"),h=r("90cd"),m=r("3f46"),b=function(){var e=this,t=e._self._c;return t("div",[e.rows.length>0?t("SortableTable",{attrs:{"data-testid":"kw-policy-rules-sortable-table",rows:e.rows,headers:e.RULE_HEADERS,"table-actions":!1,"row-actions":!1,"key-field":"traceID","default-sort-by":"startTime"},scopedSlots:e._u([{key:"col:apiGroup",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(r.apiGroups||"-"))])])]}},{key:"col:apiVersion",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(r.apiVersions||"-"))])])]}},{key:"col:operations",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(e.joinColumn(r.operations)))])])]}},{key:"col:resources",fn:function({row:r}){return[t("td",[t("span",[e._v(e._s(e.joinColumn(r.resources)))])])]}}],null,!1,1857136105)}):t("div",[t("Banner",{staticClass:"type-banner mb-20 mt-0",attrs:{color:"warning",label:e.t("kubewarden.policies.noRules")}})],1)],1)},f=[],g=r("6418"),y=r("0fb1"),k=r("5191"),w={props:{rows:{type:Array,default:()=>[]}},components:{Banner:g["a"],SortableTable:y["a"]},data(){return{RULE_HEADERS:k["g"]}},methods:{joinColumn(e){return(null===e||void 0===e?void 0:e.join(", "))||""}}},_=w,C=r("d802"),S=Object(C["a"])(_,b,f,!1,null,null,null),O=S.exports,T=r("00ce"),A={name:"PolicyDetail",components:{Markdown:u["a"],MetricsTab:m["a"],ResourceTabs:p["a"],RulesTable:O,Tab:v["a"],TraceTable:T["a"]},mixins:[d["a"]],props:{mode:{type:String,default:l["r"]},resource:{type:String,default:null},value:{type:Object,default:()=>{}}},async mounted(){var e;if(null!==(e=this.value)&&void 0!==e&&null!==(e=e.metadata)&&void 0!==e&&null!==(e=e.annotations)&&void 0!==e&&e[h["b"]])try{const e=await this.value.artifactHubPackageVersion();e&&!e.error&&e.readme&&(this.policyReadme=JSON.parse(JSON.stringify(e.readme)))}catch(t){console.warn("Unable to fetch artifacthub package: "+t)}},data(){return{policyReadme:null}},computed:{...Object(o["b"])(["currentCluster"]),...Object(c["b"])(),dashboardVars(){var e;return{policy_name:"clusterwide-"+(null===(e=this.value)||void 0===e?void 0:e.id)}},hasRelationships(){var e;return!(null===(e=this.value)||void 0===e||null===(e=e.metadata)||void 0===e||!e.relationships)},hasRules(){var e;return!s()(null===(e=this.rulesRows)||void 0===e?void 0:e[0])},rulesRows(){var e;return null===(e=this.value)||void 0===e||null===(e=e.spec)||void 0===e?void 0:e.rules}}},R=A,E=Object(C["a"])(R,a,i,!1,null,null,null);t["a"]=E.exports},b3e2:function(e,t,r){"use strict";r.r(t);var a=function(){var e=this,t=e._self._c;return t("PolicyDetail",{attrs:{value:e.value,mode:e.mode,resource:e.resource}})},i=[],o=r("da25"),n=r("80db"),s={name:"ClusterAdmissionPolicy",props:{mode:{type:String,default:o["r"]},resource:{type:String,default:null},value:{type:Object,required:!0}},components:{PolicyDetail:n["a"]}},l=s,c=r("d802"),d=Object(c["a"])(l,a,i,!1,null,null,null);t["default"]=d.exports},b7b9:function(e,t,r){var a=r("5523");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("5b3b0e05",a,!0,{sourceMap:!1,shadowMode:!1})},cb8a:function(e,t,r){var a={"./kubewarden-dashboard-policy.json":["ec40",8],"./kubewarden-dashboard-policyserver.json":["82e7",9]};function i(e){if(!r.o(a,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=a[e],i=t[0];return r.e(t[1]).then((function(){return r.t(i,3)}))}i.keys=function(){return Object.keys(a)},i.id="cb8a",e.exports=i},e719:function(e,t,r){var a=r("43a8");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("990cfaa6",a,!0,{sourceMap:!1,shadowMode:!1})},ed5b:function(e,t,r){"use strict";r("e719")},f343:function(e,t,r){var a=r("17ab");a.__esModule&&(a=a.default),"string"===typeof a&&(a=[[e.i,a,""]]),a.locals&&(e.exports=a.locals);var i=r("0ed3").default;i("e65b503e",a,!0,{sourceMap:!1,shadowMode:!1})}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.detail.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.detail.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.detail.js.map new file mode 100644 index 0000000..c51fd73 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.detail.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-2.0.0/./components/TraceTable.vue","webpack://kubewarden-2.0.0/./utils/duration-format.ts","webpack://kubewarden-2.0.0/./components/TraceChecklist.vue","webpack://kubewarden-2.0.0/components/TraceChecklist.vue","webpack://kubewarden-2.0.0/./components/TraceChecklist.vue?c473","webpack://kubewarden-2.0.0/./components/TraceChecklist.vue?17a3","webpack://kubewarden-2.0.0/components/TraceTable.vue","webpack://kubewarden-2.0.0/./components/TraceTable.vue?a899","webpack://kubewarden-2.0.0/./components/TraceTable.vue?a48d","webpack://kubewarden-2.0.0/./components/MetricsChecklist.vue?ab19","webpack://kubewarden-2.0.0/./components/TraceChecklist.vue?1214","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-2.0.0/detail/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.policyserver.vue?5658","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.policyserver.vue?dde1","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.policyserver.vue?2c5e","webpack://kubewarden-2.0.0/./components/MetricsTab.vue","webpack://kubewarden-2.0.0/./modules/grafana.ts","webpack://kubewarden-2.0.0/./modules/metricsConfig.ts","webpack://kubewarden-2.0.0/./components/MetricsChecklist.vue","webpack://kubewarden-2.0.0/components/MetricsChecklist.vue","webpack://kubewarden-2.0.0/./components/MetricsChecklist.vue?f44c","webpack://kubewarden-2.0.0/./components/MetricsChecklist.vue?806c","webpack://kubewarden-2.0.0/components/MetricsTab.vue","webpack://kubewarden-2.0.0/./components/MetricsTab.vue?0f48","webpack://kubewarden-2.0.0/./components/MetricsTab.vue?5f74","webpack://kubewarden-2.0.0/./components/TraceTable.vue?cfe3","webpack://kubewarden-2.0.0/./utils/service.ts","webpack://kubewarden-2.0.0/./modules/jaegerTracing.ts","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.policyserver.vue?c0d7","webpack://kubewarden-2.0.0/./components/TraceChecklist.vue?f21f","webpack://kubewarden-2.0.0/./components/MetricsChecklist.vue?ca6e","webpack://kubewarden-2.0.0/./components/TraceChecklist.vue?9d70","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-2.0.0/detail/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.admissionpolicy.vue?9025","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.admissionpolicy.vue?eb14","webpack://kubewarden-2.0.0/./components/Policies/PolicyDetail.vue","webpack://kubewarden-2.0.0/./components/RulesTable.vue","webpack://kubewarden-2.0.0/components/RulesTable.vue","webpack://kubewarden-2.0.0/./components/RulesTable.vue?fa84","webpack://kubewarden-2.0.0/./components/RulesTable.vue?66d0","webpack://kubewarden-2.0.0/components/Policies/PolicyDetail.vue","webpack://kubewarden-2.0.0/./components/Policies/PolicyDetail.vue?2754","webpack://kubewarden-2.0.0/./components/Policies/PolicyDetail.vue?92e0","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-2.0.0/detail/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue?50e4","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.clusteradmissionpolicy.vue?0db9","webpack://kubewarden-2.0.0/./detail/policies.kubewarden.io.policyserver.vue?d40e","webpack://kubewarden-2.0.0/./assets lazy ^\\.\\/.*\\.json$ namespace object","webpack://kubewarden-2.0.0/./components/TraceTable.vue?0423","webpack://kubewarden-2.0.0/./components/TraceTable.vue?3638","webpack://kubewarden-2.0.0/./components/MetricsChecklist.vue?6d71"],"names":["render","_vm","this","_c","_self","$fetchState","pending","refreshingCharts","attrs","showChecklist","controllerApp","controllerChart","tracingConfiguration","jaegerQuerySvc","openTelSvc","emptyPolicies","t","showTable","filteredValidations","TRACE_HEADERS","rowsPerPage","scopedSlots","_u","key","fn","row","staticClass","mode","modeColor","_v","_s","name","namespace","formatTime","startTime","duration","fullColspan","responseMessage","responseCode","mutated","emptyTracesLabel","staticRenderFns","dayjs","extend","_duration","ONE_MILLISECOND","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","UNIT_STEPS","unit","microseconds","ofPrevious","formatDuration","primaryUnit","secondaryUnit","_dropWhile","index","length","_round","primaryValue","Math","floor","primaryUnitString","secondaryValue","round","secondaryUnitString","class","badgeIcon","directives","rawName","value","expression","tracingEnabled","controllerLinkTooltip","controllerLinkDisabled","on","controllerAppRoute","props","type","Object","default","components","Banner","computed","mapGetters","chart","enabled","methods","prop","_this$controllerApp$s","_metadata$annotations","_metadata$annotations2","_metadata$annotations3","_metadata$annotations4","_metadata$annotations5","_this$currentCluster","metadata","spec","query","NAMESPACE","annotations","CATALOG","NAME","RELEASE_NAME","VERSION","REPO","SOURCE_REPO_NAME","REPO_TYPE","SOURCE_REPO_TYPE","CHART","$router","push","params","cluster","currentCluster","id","component","relativeTime","resource","String","relatedPolicies","Array","policy","BadgeState","Loading","SortableTable","TraceChecklist","mixins","ResourceFetch","types","APP","CLUSTER_REPO","SERVICE","hash","$store","getters","$fetchType","allHash","options","store","queryService","KUBEWARDEN","POLICY_SERVER","specificValidations","jaegerTraces","data","MODE_MAP","OPERATION_MAP","charts","allApps","allServices","_this$allApps","find","app","_app$spec","KUBEWARDEN_CHARTS","CONTROLLER","_this$charts","chartName","groupField","isPolicyServer","isEmpty","emptyTraces","_this$controllerApp","values","telemetry","tracing","jaegerServices","_this$allServices","filter","svc","_svc$metadata","labels","_svc$spec","ports","p","port","openTelemetryServices","_this$allServices2","_svc$metadata2","KUBERNETES","MANAGED_NAME","_svc$spec2","_this$tracingConfigur","flatMap","v","traces","opColor","op","time","___CSS_LOADER_API_IMPORT___","exports","module","i","policyGauges","_l","group","relatedPoliciesTotal","count","color","_e","tracesGauges","traceGaugeTotals","model","callback","$$v","RELATED_HEADERS","groupPreference","operation","proxy","active","CountGauge","MetricsTab","ResourceTabs","ResourceTable","Tab","TraceTable","CreateEditView","_CREATE","required","allRelatedPolicies","assignIfNotEmpty","reloadRequired","policyTraces","_group","mapPref","GROUP_RESOURCES","filteredTraces","policyTraceObj","out","_this$filteredTraces","hasNamespaceSelector","namespaceSelector","cattleDashboardNs","conflictingGrafanaDashboards","kubewardenServiceMonitor","kubewardenGrafanaDashboards","monitoringApp","monitoringChart","policyObj","policyServerObj","updateServiceMonitors","metricsProxy","policyName","async","grafanaProxy","config","grafana","grafanaService","base","path","e","handleGrowl","error","dispatch","root","findKubewardenDashboards","CONFIG_MAP","selector","addKubewardenDashboards","dashboardEnums","KubewardenDashboards","_existing$metadata","file","fileKey","existing","KubewardenDashboardLabels","DASHBOARD","PART_OF","GRAFANA_DASHBOARD","HelmAnnotations","configMapTemplate","JSON","stringify","save","findServiceMonitor","allServiceMonitors","_policyObj$spec","smName","policyServer","sm","_sm$spec","matchLabels","addKubewardenServiceMonitor","controllerNs","serviceMonitor","MONITORING","SERVICEMONITOR","_policyObj$spec2","serviceMonitorTemplate","kind","endpoints","interval","matchNames","serviceMonitorObj","monitoringLinkTooltip","$event","monitoringAppRoute","monitoringChartLink","serviceMonitorsTooltip","serviceMonitorButtonDisabled","addServiceMonitor","hasKubewardenDashboards","dashboardsTooltip","dashboardButtonDisabled","addDashboards","showConflictingDashboardsBanner","configMap","detailLocation","metricsEnabled","kubewardenDashboards","AsyncButton","controllerMetricsConfig","metrics","_this$controllerApp$m","btnCb","$emit","isArray","emptyProp","goToInstall","_this$monitoringApp$m","_this$monitoringApp$m2","_this$monitoringApp$s","_this$monitoringApp$s2","_this$monitoringApp$s3","_this$monitoringApp$s4","version","_this$controllerApp$s2","_this$currentCluster2","Boolean","DashboardMetrics","MetricsChecklist","debouncedRefreshCharts","debounce","init","refreshCharts","resourceMap","property","allRepos","allConfigMaps","allPolicyServers","allNamespaces","monitoringStatus","installed","METRICS_TYPE","metricsService","dashboardExists","_statusText","message","POLICY","watch","jaegerPolicyName","_this$allNamespaces","ns","_ns$metadata","_this$allConfigMaps","_configMap$metadata","monitoringServices","_this$allConfigMaps2","_configMap$metadata2","_this$allApps2","_app$spec2","_this$charts2","_svc$metadata3","policyServerSvcs","policyServerNames","map","ps","_ps$metadata","_svc$metadata4","_this$controllerApp2","monitoringEnabled","grafanaDashboardsInstalled","proxyUrl","service","view","links","idx","lastIndexOf","proxyUrlFromBase","slice","scheme","schemaNamePort","encodeURIComponent","cleanPath","replace","cleanBase","promises","Error","jaegerTraceRequest","forEach","res","Promise","all","o","scaffoldPolicyTrace","console","warn","_policy$metadata","_policy$metadata2","_policy$metadata3","apiPath","lookbackTime","JAEGER_PATH","url","filterTraces","reduce","acc","trace","_validationSpan$tags","validationSpan","spans","span","operationName","matchedTag","tags","tag","convertedTags","convertTagsToObject","traceID","allowed","response_message","response_code","updatedTrace","relatedPolicy","relatedTraces","arr","result","item","parseInt","parseFloat","content","__esModule","locals","add","PolicyDetail","hasRelationships","policyReadme","hasRules","rulesRows","rows","RULE_HEADERS","apiGroups","apiVersions","joinColumn","operations","resources","join","Markdown","RulesTable","_this$value","ARTIFACTHUB_PKG_ANNOTATION","artifactHubPackage","artifactHubPackageVersion","readme","parse","dashboardVars","_this$value2","policy_name","_this$value3","relationships","_this$rulesRows","_this$value4","rules","webpackAsyncContext","req","__webpack_require__","resolve","then","code","ids","keys"],"mappings":"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","file":"kubewarden-2.0.0.umd.min.detail.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending || _vm.refreshingCharts)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.showChecklist)?_c('TraceChecklist',{attrs:{\"controller-app\":_vm.controllerApp,\"controller-chart\":_vm.controllerChart,\"tracing-configuration\":_vm.tracingConfiguration,\"jaeger-query-svc\":_vm.jaegerQuerySvc,\"open-tel-svc\":_vm.openTelSvc}}):(!_vm.showChecklist && _vm.emptyPolicies)?_c('Banner',{attrs:{\"color\":\"error\",\"label\":_vm.t('kubewarden.tracing.noRelatedPolicies')}}):(_vm.showTable)?_c('SortableTable',{attrs:{\"rows\":_vm.filteredValidations,\"headers\":_vm.TRACE_HEADERS,\"table-actions\":false,\"row-actions\":false,\"key-field\":\"id\",\"default-sort-by\":\"startTime\",\"sub-expandable\":true,\"sub-expand-column\":true,\"sub-rows\":true,\"paging\":true,\"rows-per-page\":_vm.rowsPerPage},scopedSlots:_vm._u([{key:\"col:mode\",fn:function({row}){return [_c('td',[_c('BadgeState',{staticClass:\"text-capitalize\",attrs:{\"label\":row.mode,\"color\":_vm.modeColor(row.mode)}})],1)]}},{key:\"col:name\",fn:function({row}){return [_c('td',{staticClass:\"text-bold\"},[_vm._v(\" \"+_vm._s(row.name)+\" \")])]}},{key:\"col:namespace\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(row.namespace ? row.namespace : '-')+\" \")])]}},{key:\"col:startTime\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(_vm.formatTime(row.startTime))+\" \")])]}},{key:\"col:duration\",fn:function({row}){return [_c('td',[_vm._v(\" \"+_vm._s(_vm.duration(row.duration))+\" \")])]}},{key:\"sub-row\",fn:function({row, fullColspan}){return [_c('td',{staticClass:\"sub-row\",attrs:{\"colspan\":fullColspan}},[_c('div',{staticClass:\"details\"},[_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Response Message \")]),_c('span',{staticClass:\"text-info text-capitalize\"},[_vm._v(\" \"+_vm._s(row.responseMessage ? row.responseMessage : '-')+\" \")])]),_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Response Code \")]),_c('span',{staticClass:\"text-info\"},[_vm._v(\" \"+_vm._s(row.responseCode ? row.responseCode : '-')+\" \")])]),_c('section',{staticClass:\"col\"},[_c('div',{staticClass:\"title\"},[_vm._v(\" Mutated \")]),_c('span',{staticClass:\"text-info\"},[_vm._v(\" \"+_vm._s(row.mutated)+\" \")])])])])]}}])}):_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t(_vm.emptyTracesLabel)}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import dayjs from 'dayjs';\nimport _dropWhile from 'lodash/dropWhile';\nimport _round from 'lodash/round';\nimport _duration from 'dayjs/plugin/duration';\n\ndayjs.extend(_duration);\n\nexport const STANDARD_DATE_FORMAT = 'YYYY-MM-DD';\nexport const STANDARD_TIME_FORMAT = 'HH:mm';\nexport const STANDARD_DATETIME_FORMAT = 'MMMM D YYYY, HH:mm:ss.SSS';\n\n/** @constant 1ms as the number of microseconds, which is the precision of Jaeger timestamps */\nexport const ONE_MILLISECOND = 1000 * 1;\n\nconst ONE_SECOND = 1000 * ONE_MILLISECOND;\nconst ONE_MINUTE = 60 * ONE_SECOND;\nconst ONE_HOUR = 60 * ONE_MINUTE;\nconst ONE_DAY = 24 * ONE_HOUR;\n\nconst UNIT_STEPS: { unit: string; microseconds: number; ofPrevious: number }[] = [\n {\n unit: 'd', microseconds: ONE_DAY, ofPrevious: 24\n },\n {\n unit: 'h', microseconds: ONE_HOUR, ofPrevious: 60\n },\n {\n unit: 'm', microseconds: ONE_MINUTE, ofPrevious: 60\n },\n {\n unit: 's', microseconds: ONE_SECOND, ofPrevious: 1000\n },\n {\n unit: 'ms', microseconds: ONE_MILLISECOND, ofPrevious: 1000\n },\n {\n unit: 'μs', microseconds: 1, ofPrevious: 1000\n },\n];\n\nexport function formatDuration(duration: number): string {\n // Drop all units that are too large except the last one\n const [primaryUnit, secondaryUnit] = _dropWhile(\n UNIT_STEPS,\n ({ microseconds }, index) => index < UNIT_STEPS.length - 1 && microseconds > duration\n );\n\n if (primaryUnit.ofPrevious === 1000) {\n // If the unit is decimal based, display as a decimal\n return `${ _round(duration / primaryUnit.microseconds, 2) }${ primaryUnit.unit }`;\n }\n\n const primaryValue = Math.floor(duration / primaryUnit.microseconds);\n const primaryUnitString = `${ primaryValue }${ primaryUnit.unit }`;\n const secondaryValue = Math.round((duration / secondaryUnit.microseconds) % primaryUnit.ofPrevious);\n const secondaryUnitString = `${ secondaryValue }${ secondaryUnit.unit }`;\n\n return secondaryValue === 0 ? primaryUnitString : `${ primaryUnitString } ${ secondaryUnitString }`;\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('p',{staticClass:\"checklist__description mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-description\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.tracing.description'))+\" \")]),_c('div',{staticClass:\"checklist__prereq mb-20\"},[_c('h2',[_vm._v(_vm._s(_vm.t('kubewarden.tracing.prerequisites.label')))]),_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.tracing.prerequisites.description')))])]),_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t('kubewarden.tracing.prerequisites.warning')}}),_c('div',{staticClass:\"checklist__container mt-20 mb-20\"},[_c('div',{staticClass:\"checklist__step mt-20 mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-open-tel\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.openTelSvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.openTelemetry', {}, true)),expression:\"t('kubewarden.tracing.openTelemetry', {}, true)\"}]})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-jaeger\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.jaegerQuerySvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.jaeger', {}, true)),expression:\"t('kubewarden.tracing.jaeger', {}, true)\"}],attrs:{\"p\":\"\"}})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-config\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.tracingEnabled)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.config.label', {}, true)),expression:\"t('kubewarden.tracing.config.label', {}, true)\"}]}),_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.controllerLinkTooltip),expression:\"controllerLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-tracing-checklist-step-config-button\",\"disabled\":_vm.controllerLinkDisabled},on:{\"click\":_vm.controllerAppRoute}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.tracing.config.link\"))+\" \")])])])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraceChecklist.vue?vue&type=template&id=63ad3d60&scoped=true&\"\nimport script from \"./TraceChecklist.vue?vue&type=script&lang=js&\"\nexport * from \"./TraceChecklist.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraceChecklist.vue?vue&type=style&index=0&id=63ad3d60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63ad3d60\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TraceTable.vue?vue&type=template&id=ab725830&scoped=true&\"\nimport script from \"./TraceTable.vue?vue&type=script&lang=js&\"\nexport * from \"./TraceTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TraceTable.vue?vue&type=style&index=0&id=ab725830&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab725830\",\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".checklist__container[data-v-cf603ff2]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-cf603ff2],.checklist__step[data-v-cf603ff2]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-cf603ff2]{min-height:40px}.conflicting-banner[data-v-cf603ff2]{display:flex;flex-direction:column}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".checklist__container[data-v-63ad3d60]{display:flex;justify-content:center;flex-direction:column;border:1px solid var(--border);padding:10px}.checklist__config[data-v-63ad3d60],.checklist__step[data-v-63ad3d60]{display:flex;flex-direction:row;justify-content:flex-start;align-items:center}.checklist__step[data-v-63ad3d60]{min-height:40px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[(_vm.policyGauges)?[_c('div',{staticClass:\"row\"},[[_c('div',{staticClass:\"col span-6\"},[_c('h3',{attrs:{\"data-testid\":\"kw-ps-detail-status-title\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServer.policyGauge.byStatus'))+\" \")]),_c('div',{staticClass:\"gauges mb-20\"},_vm._l((_vm.policyGauges),function(group,key){return _c('CountGauge',{key:key,attrs:{\"total\":_vm.relatedPoliciesTotal,\"useful\":group.count || 0,\"graphical\":false,\"primary-color-var\":`--sizzle-${group.color}`,\"name\":key}})}),1)])],(!_vm.emptyTraces)?[_c('div',{staticClass:\"col span-6\"},[_c('h3',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServer.policyGauge.traces'))+\" \")]),_c('div',{staticClass:\"gauges mb-20\"},_vm._l((_vm.tracesGauges),function(group,key){return _c('CountGauge',{key:key,attrs:{\"useful\":group.count || 0,\"total\":_vm.traceGaugeTotals,\"graphical\":false,\"primary-color-var\":`--sizzle-${group.color}`,\"name\":key}})}),1)])]:_vm._e()],2)]:_vm._e(),_c('ResourceTabs',{attrs:{\"mode\":_vm.mode},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('Tab',{attrs:{\"name\":\"related-policies\",\"label\":\"Policies\",\"weight\":99},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('ResourceTable',{attrs:{\"rows\":_vm.relatedPolicies || [],\"headers\":_vm.RELATED_HEADERS,\"groupable\":true,\"group-by\":_vm.groupPreference,\"table-actions\":true,\"data-testid\":\"kw-ps-detail-related-policies-list\"},scopedSlots:_vm._u([{key:\"col:operation\",fn:function({ row }){return [_c('td',[_c('BadgeState',{attrs:{\"data-testid\":`kw-ps-detail-${ row.id }-state`,\"label\":row.operation,\"color\":_vm.color(row.operation)}})],1)]}}])})]},proxy:true}])}),_c('Tab',{staticClass:\"relative\",attrs:{\"name\":\"policy-tracing\",\"label\":\"Tracing\",\"weight\":98}},[_c('TraceTable',{attrs:{\"resource\":_vm.resource,\"related-policies\":_vm.relatedPolicies}})],1),_c('Tab',{staticClass:\"relative\",attrs:{\"name\":\"policy-metrics\",\"label\":\"Metrics\",\"weight\":97},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('MetricsTab',{attrs:{\"resource\":_vm.resource,\"policy-server-obj\":_vm.value,\"active\":props.active}})]}}])})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.policyserver.vue?vue&type=template&id=a88dafa8&scoped=true&\"\nimport script from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nimport style0 from \"./policies.kubewarden.io.policyserver.vue?vue&type=style&index=0&id=a88dafa8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a88dafa8\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=style&index=0&id=a88dafa8&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.showChecklist)?_c('MetricsChecklist',{attrs:{\"cattle-dashboard-ns\":_vm.cattleDashboardNs,\"conflicting-grafana-dashboards\":_vm.conflictingGrafanaDashboards,\"controller-app\":_vm.controllerApp,\"controller-chart\":_vm.controllerChart,\"kubewarden-service-monitor\":_vm.kubewardenServiceMonitor,\"kubewarden-dashboards\":_vm.kubewardenGrafanaDashboards,\"monitoring-app\":_vm.monitoringApp,\"monitoring-chart\":_vm.monitoringChart,\"open-tel-svc\":_vm.openTelSvc,\"policy-obj\":_vm.policyObj,\"policy-server-obj\":_vm.policyServerObj},on:{\"updateServiceMonitors\":_vm.updateServiceMonitors}}):_vm._e(),(!_vm.showChecklist)?[(_vm.monitoringApp && !_vm.metricsProxy)?_c('Banner',{attrs:{\"color\":\"error\",\"label\":_vm.t('kubewarden.monitoring.warning.noProxy')}}):_vm._e(),(_vm.metricsProxy && _vm.active)?_c('DashboardMetrics',{attrs:{\"data-testid\":\"kw-ps-metrics-dashboard\",\"detail-url\":_vm.metricsProxy,\"summary-url\":_vm.metricsProxy,\"vars\":{'policy_name': _vm.policyName},\"graph-height\":\"825px\"}}):_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import isEmpty from 'lodash/isEmpty';\n\nimport { CONFIG_MAP, SERVICE } from '@shell/config/types';\n\nimport {\n CatalogApp,\n KubewardenDashboards,\n KubewardenDashboardLabels,\n GrafanaDashboardLabels,\n GrafanaDashboardAnnotations,\n HelmAnnotations\n} from '../types';\nimport { handleGrowl, GrowlConfig } from '../utils/handle-growl';\n\ninterface MetricsConfig {\n store: any,\n type: string\n}\n\ninterface DashboardConfig {\n store: any,\n monitoringApp: CatalogApp,\n controllerApp: CatalogApp\n}\n\nexport async function grafanaProxy(config: MetricsConfig): Promise {\n const { store, type } = config;\n\n try {\n const grafana = await grafanaService(store);\n\n if ( !isEmpty(grafana) ) {\n const base = `/api/v1/namespaces/${ grafana.metadata.namespace }/services`;\n const proxy = `/http:${ grafana.metadata.name }:80/proxy`;\n const path = `/d/${ type }?orgId=1&kiosk`;\n\n return base + proxy + path;\n }\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n\n return null;\n}\n\nexport async function grafanaService(store: any) {\n try {\n return await store.dispatch('cluster/find', {\n type: SERVICE,\n id: 'cattle-monitoring-system/rancher-monitoring-grafana'\n }, { root: true });\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n}\n\nexport async function findKubewardenDashboards(store: any) {\n try {\n return await store.dispatch('cluster/findMatching', {\n type: CONFIG_MAP,\n selector: `kubewarden/part-of=cattle-kubewarden-system`\n });\n } catch (e) {\n handleGrowl({\n error: e as GrowlConfig | any, store, type: 'warning'\n });\n }\n}\n\n/**\n * Creates a ConfigMap for the Grafana dashboard depending on the type supplied\n * @param `store, type` | Type of resource ( PolicyServer || (Cluster)AdmissionPolicy )\n */\nexport async function addKubewardenDashboards(config: DashboardConfig): Promise {\n const { store, monitoringApp, controllerApp } = config;\n\n if ( monitoringApp && controllerApp ) {\n /**\n * There are 2 dashboards for Kubewarden:\n * PolicyServer is the default one copied from https://grafana.com/grafana/dashboards/15314-kubewarden/\n * Policies have a condensed version\n */\n const dashboardEnums = Object.values(KubewardenDashboards);\n\n for ( const type of dashboardEnums ) {\n const file = await import(/* webpackChunkName: \"policyDashboard\" */ `../assets/${ type }.json`);\n const fileKey = `${ type }.json`;\n\n /** Check for existing configmaps */\n const existing = await findKubewardenDashboards(store);\n\n if ( existing && existing?.metadata?.name === type ) {\n return;\n }\n\n const labels: GrafanaDashboardLabels = {\n [KubewardenDashboardLabels.DASHBOARD]: type,\n [KubewardenDashboardLabels.PART_OF]: controllerApp.metadata.namespace,\n [KubewardenDashboardLabels.APP]: 'rancher-monitoring-grafana',\n [KubewardenDashboardLabels.GRAFANA_DASHBOARD]: '1',\n 'app.kubernetes.io/instance': monitoringApp.metadata.name\n };\n\n const annotations: GrafanaDashboardAnnotations = {\n [HelmAnnotations.NAME]: monitoringApp.metadata.name,\n [HelmAnnotations.NAMESPACE]: monitoringApp.metadata.namespace\n };\n\n const configMapTemplate = await store.dispatch(\n 'cluster/create',\n {\n type: CONFIG_MAP,\n metadata: {\n annotations,\n labels,\n name: type,\n namespace: 'cattle-dashboards',\n },\n data: { [fileKey]: JSON.stringify(file) },\n }\n );\n\n try {\n await configMapTemplate.save();\n } catch (e) {\n handleGrowl({ error: e as GrowlConfig | any, store });\n }\n }\n }\n}","import isEmpty from 'lodash/isEmpty';\nimport { MONITORING } from '@shell/config/types';\n\nimport { CatalogApp, Service, ServiceMonitor, ServiceMonitorSpec } from '../types';\nimport { handleGrowl, GrowlConfig } from '../utils/handle-growl';\n\ntype ServiceMonitorConfigured = {\n namespace: boolean,\n selectors?: {[key: string]: boolean}[];\n}\n\ninterface MonitoringConfig {\n serviceMonitorSpec: ServiceMonitorSpec[],\n controllerApp: CatalogApp,\n policyServerSvcs: Service[]\n}\n\ninterface ServiceMonitorConfig {\n store: any,\n policyObj?: any,\n policyServerObj?: any,\n controllerNs: string,\n allServiceMonitors?: ServiceMonitor[]\n serviceMonitor?: ServiceMonitor\n}\n\n/**\n * Determines if the Monitoring App is configured correctly with the namespace and label selectors for\n * the Kubewarden controller and policy servers.\n * @param config `serviceMonitorSpec, controllerApp, policyServerSvcs` | Needs monitoring app service monitor spec,\n * kubewarden controller app, and the policy server services.\n * @returns `boolean` | `true` if configured correctly\n */\nexport function monitoringIsConfigured(config: MonitoringConfig): boolean {\n const configured = serviceMonitorsConfigured(config);\n\n if ( Array.isArray(configured) ) {\n return configured?.some((c: ServiceMonitorConfigured) => {\n const selectorsConfigured = !isEmpty(c?.selectors) && c?.selectors?.some((selector) => {\n for (const key in selector) {\n if ( selector[key] && selector[key] === true ) {\n return true;\n }\n }\n\n return false;\n });\n\n return c.namespace && selectorsConfigured;\n });\n }\n\n return false;\n}\n\n/**\n * Searchs for matching `namespaceSelector` and `matchLabels` selector between `serviceMonitorSpec`, `controllerApp`, and `policyServerSvcs`\n * @param config `serviceMonitorSpec, controllerApp, policyServerSvcs` | Needs monitoring app service monitor spec,\n * kubewarden controller app, and the policy server services.\n * @returns `ServiceMonitorConfigured[] | boolean` | If `serviceMonitorSpec` is provided, will return a `ServiceMonitorConfigured` object\n * which contains a `namespace` boolean for a match and selectors[] for `matchLabels`\n */\nexport function serviceMonitorsConfigured(config: MonitoringConfig): ServiceMonitorConfigured[] | boolean {\n const { serviceMonitorSpec, controllerApp, policyServerSvcs } = config;\n\n if ( serviceMonitorSpec ) {\n return serviceMonitorSpec?.map((sm) => {\n const configured: ServiceMonitorConfigured = {\n namespace: false,\n selectors: []\n };\n\n /** Find a matching namespaceSelector to the controllerApp */\n if ( !isEmpty(controllerApp) ) {\n const hasNamespace: boolean = sm.namespaceSelector?.matchNames?.includes(controllerApp?.metadata?.namespace) || false;\n\n configured.namespace = hasNamespace;\n }\n\n /** Find matching label selectors for policy server services */\n if ( !isEmpty(policyServerSvcs) ) {\n policyServerSvcs.forEach((svc) => {\n if ( sm.selector?.matchLabels ) {\n for ( const key of Object.keys(sm.selector.matchLabels) ) {\n const hasLabel = svc?.metadata?.labels?.[key] && svc.metadata.labels[key] === sm.selector.matchLabels[key];\n\n configured?.selectors?.push({ [key]: !!hasLabel });\n }\n }\n });\n }\n\n return configured;\n });\n }\n\n return false;\n}\n\n/**\n * Searches provided ServiceMonitors for a matching resource based on the `selector.matchLabels` including:\n * `app=kubewarden-policy-server-`\n * @param config: `policyObj?, policyServerObj?, allServiceMonitors` | Needs either a policy object or policy server object with all fetched\n * ServiceMonitors\n * @returns `ServiceMonitor | void`\n */\nexport function findServiceMonitor(config: ServiceMonitorConfig): ServiceMonitor | void {\n const { policyObj, policyServerObj, allServiceMonitors } = config;\n\n if ( !isEmpty(allServiceMonitors) ) {\n const smName: string = policyObj ? policyObj.spec?.policyServer : policyServerObj?.id;\n\n return allServiceMonitors?.find(sm => sm?.spec?.selector?.matchLabels?.['app'] === `kubewarden-policy-server-${ smName }`);\n }\n}\n\n/**\n * Creates a Service Monitor for a PolicyServer when provided either a PS or a policy\n * @param config: `store, policyObj?, policyServerObj?, controllerNs` | Needs kubewarden-controller app namespace, either a policy server or policy.\n */\nexport async function addKubewardenServiceMonitor(config: ServiceMonitorConfig): Promise {\n const {\n store, policyObj, policyServerObj, controllerNs, serviceMonitor\n } = config;\n\n if ( store.getters['cluster/schemaFor'](MONITORING.SERVICEMONITOR) ) {\n const smName: string = policyObj ? policyObj.spec?.policyServer : policyServerObj?.id;\n\n const serviceMonitorTemplate: ServiceMonitor = {\n kind: 'ServiceMonitor',\n type: MONITORING.SERVICEMONITOR,\n metadata: {\n name: smName,\n namespace: controllerNs\n },\n spec: {\n endpoints: [{ interval: '10s', port: 'metrics' }],\n namespaceSelector: { matchNames: [controllerNs] },\n selector: { matchLabels: { app: `kubewarden-policy-server-${ smName }` } }\n }\n };\n\n if ( !serviceMonitor ) {\n const serviceMonitorObj = await store.dispatch(\n 'cluster/create',\n serviceMonitorTemplate\n );\n\n try {\n await serviceMonitorObj.save();\n } catch (e) {\n handleGrowl({ error: e as GrowlConfig | any, store });\n }\n }\n }\n}","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checklist__container\"},[_c('div',{staticClass:\"checklist__prereq mb-20\"},[_c('h2',[_vm._v(_vm._s(_vm.t('kubewarden.monitoring.prerequisites.label')))]),_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.monitoring.prerequisites.description')))])]),_c('Banner',{attrs:{\"color\":\"warning\",\"label\":_vm.t('kubewarden.monitoring.prerequisites.warning')}}),_c('div',{staticClass:\"mt-20 mb-20\"},[_c('div',{staticClass:\"checklist__step mt-20 mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-open-tel\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.openTelSvc)}),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.tracing.openTelemetry', {}, true)),expression:\"t('kubewarden.tracing.openTelemetry', {}, true)\"}]})]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-monitoring-app\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.monitoringApp)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.monitoringApp.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.monitoringApp)?_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.monitoringLinkTooltip),expression:\"monitoringLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-button\",\"disabled\":!_vm.monitoringChart},on:{\"click\":function($event){return _vm.monitoringAppRoute()}}},[_vm._v(\" \"+_vm._s(_vm.monitoringChartLink)+\" \")]):_vm._e()])]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-service-monitor-map\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.kubewardenServiceMonitor)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.serviceMonitor.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.kubewardenServiceMonitor)?_c('AsyncButton',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.serviceMonitorsTooltip),expression:\"serviceMonitorsTooltip\"}],staticClass:\"ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-service-monitor-button\",\"mode\":\"serviceMonitor\",\"disabled\":_vm.serviceMonitorButtonDisabled},on:{\"click\":_vm.addServiceMonitor}}):_vm._e()],1)]),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-map\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.hasKubewardenDashboards)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.configMap.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.hasKubewardenDashboards)?_c('AsyncButton',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.dashboardsTooltip),expression:\"dashboardsTooltip\"}],staticClass:\"ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-map-button\",\"mode\":\"grafanaDashboard\",\"disabled\":_vm.dashboardButtonDisabled},on:{\"click\":_vm.addDashboards}}):_vm._e()],1)]),(_vm.showConflictingDashboardsBanner)?_c('Banner',{attrs:{\"color\":\"error\"}},[_c('div',{staticClass:\"conflicting-banner\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.monitoring.prerequisites.configMap.conflictingDashboardsBanner', { count: _vm.conflictingGrafanaDashboards.length }, true))+\" \")]),_vm._l((_vm.conflictingGrafanaDashboards),function(configMap){return _c('n-link',{key:configMap.metadata.name,staticClass:\"text-bold\",attrs:{\"to\":configMap.detailLocation}},[_vm._v(\" \"+_vm._s(configMap.metadata.name)+\" \")])})],2)]):_vm._e(),_c('div',{staticClass:\"checklist__step mb-20\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-controller-config\"}},[_c('i',{staticClass:\"icon mr-10\",class:_vm.badgeIcon(_vm.metricsEnabled)}),_c('div',{staticClass:\"checklist__config\"},[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)),expression:\"t('kubewarden.monitoring.prerequisites.controllerConfig.label', {}, true)\"}],attrs:{\"p\":\"\"}}),(!_vm.metricsEnabled)?_c('button',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.controllerLinkTooltip),expression:\"controllerLinkTooltip\"}],staticClass:\"btn role-primary ml-10\",attrs:{\"data-testid\":\"kw-monitoring-checklist-step-config-button\",\"disabled\":_vm.controllerLinkDisabled},on:{\"click\":function($event){return _vm.controllerAppRoute()}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.monitoring.prerequisites.controllerConfig.button\"))+\" \")]):_vm._e()])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MetricsChecklist.vue?vue&type=template&id=cf603ff2&scoped=true&\"\nimport script from \"./MetricsChecklist.vue?vue&type=script&lang=js&\"\nexport * from \"./MetricsChecklist.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MetricsChecklist.vue?vue&type=style&index=0&id=cf603ff2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf603ff2\",\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsTab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MetricsTab.vue?vue&type=template&id=4829eb55&\"\nimport script from \"./MetricsTab.vue?vue&type=script&lang=js&\"\nexport * from \"./MetricsTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".policy-table-container[data-v-ab725830]{display:flex;flex-direction:column;gap:1rem}.filter[data-v-ab725830]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end;align-items:center}.filter>*[data-v-ab725830]{margin:10px;max-width:33%}.filter[data-v-ab725830]>:first-child{margin-left:0}.filter[data-v-ab725830]>:last-child{margin-right:0}.filter__category[data-v-ab725830]{min-width:200px;height:unset}.filter__reset[data-v-ab725830],.filter__search[data-v-ab725830]{height:61px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export function proxyUrl(service: any, port: number): string {\n const view: string = service?.links['view'];\n const idx: number = view.lastIndexOf(`/`);\n\n return proxyUrlFromBase(view.slice(0, idx), 'http', service?.metadata.name, port);\n}\n\nexport function proxyUrlFromBase(base: string, scheme: string, name: string, port: number, path?: any): string {\n const schemaNamePort = (scheme ? `${ encodeURIComponent(scheme) }:` : '') + encodeURIComponent(name) + (port ? `:${ encodeURIComponent(port) }` : '');\n\n const cleanPath = `/${ (path || '').replace(/^\\/+/g, '') }`;\n const cleanBase = base.replace(/\\/+$/g, '');\n\n const out = `${ cleanBase }/${ schemaNamePort }/proxy${ cleanPath }`;\n\n return out;\n}\n","import isEmpty from 'lodash/isEmpty';\n\nimport {\n KUBEWARDEN, JaegerConfig, PolicyTrace, PolicyTraceConfig, Tag\n} from '../types';\nimport { proxyUrl } from '../utils/service';\n\n/** TODO: Update the `any` types throughout this file */\n\n/**\n * Fetches trace reports from Jaeger for each related policy or singular policy.\n * @param config `JaegerConfig` | Contains the `store`, `jaegerQueryService`, `resource` (policy-server or policy type),\n * `relatedPolicies?` needed for policy server, `policy?` for individual policies, `time?` for trace timeframe.\n * @returns `PolicyTraceConfig | null` | A scaffold object which contains the policy name, cluster id, and traces for the policy.\n */\nexport async function jaegerTraces(config: JaegerConfig): Promise {\n const {\n store, queryService, resource, relatedPolicies, policy, time\n } = config;\n\n try {\n const proxy = proxyUrl(queryService, 16686);\n\n const promises = [];\n\n if ( !isEmpty(relatedPolicies) ) {\n relatedPolicies?.forEach((p: any) => {\n const hash = jaegerTraceRequest(store, proxy, p, time);\n\n if ( hash ) {\n promises.push(hash);\n }\n });\n } else if ( policy ) {\n promises.push(jaegerTraceRequest(store, proxy, policy, time));\n } else {\n throw new Error('Policy is undefined');\n }\n\n let res = await Promise.all(promises);\n\n res = res.flatMap(o => o?.data);\n\n return scaffoldPolicyTrace(store, res, resource, relatedPolicies, policy);\n } catch (e) {\n console.warn(`Error fetching Jaeger traces: ${ e }`); // eslint-disable-line no-console\n }\n\n return null;\n}\n\nexport function jaegerPolicyName(policy: any) {\n let out = null;\n\n switch (policy?.kind) {\n case 'ClusterAdmissionPolicy':\n out = `clusterwide-${ policy?.metadata?.name }`;\n break;\n\n case 'AdmissionPolicy':\n out = `namespaced-${ policy?.metadata?.namespace }-${ policy?.metadata?.name }`;\n break;\n\n default:\n break;\n }\n\n return out;\n}\n\nfunction jaegerTraceRequest(store: any, proxyUrl: any, policy: any, time?: any) {\n let apiPath = null;\n\n const name = jaegerPolicyName(policy);\n const lookbackTime = time || '2d';\n\n const options = `lookback=${ lookbackTime }&tags={\"policy_id\"%3A\"${ name }\"}`;\n\n // The service `kubewarden-policy-server` is **not** a k8s Service\n apiPath = `api/traces?service=kubewarden-policy-server&operation=validation&${ options }`;\n const JAEGER_PATH = `${ proxyUrl + apiPath }`;\n\n return store.dispatch('cluster/request', { url: JAEGER_PATH });\n}\n\nfunction scaffoldPolicyTrace(store: any, traces: any, resource: any, relatedPolicies: any, policy: any): any {\n const currentCluster = store.getters['currentCluster'];\n const out = [];\n\n function filterTraces(p: any) {\n const policyName = jaegerPolicyName(p);\n\n return traces.reduce((acc: any, trace: any): PolicyTrace[] => {\n let out = {};\n\n const validationSpan = trace.spans.find((span: any) => span.operationName === 'validation');\n const matchedTag = validationSpan?.tags?.find((tag: any) => tag?.key === 'policy_id' && tag?.value === policyName);\n\n if ( matchedTag ) {\n const convertedTags = convertTagsToObject(validationSpan.tags);\n\n out = {\n id: trace.traceID,\n allowed: convertedTags.allowed,\n mode: p.spec.mode,\n name: convertedTags.name,\n operation: convertedTags.operation,\n kind: convertedTags.kind,\n namespace: convertedTags.namespace || null,\n startTime: validationSpan.startTime,\n duration: validationSpan.duration,\n responseMessage: convertedTags.response_message,\n responseCode: convertedTags.response_code,\n mutated: convertedTags.mutated\n };\n }\n\n if ( !isEmpty(out) ) {\n acc.push(out);\n store.dispatch('kubewarden/updatePolicyTraces', {\n policyName: p.metadata.name,\n cluster: currentCluster?.id,\n updatedTrace: out\n });\n }\n\n return acc;\n }, []);\n }\n\n if ( resource === KUBEWARDEN.POLICY_SERVER ) {\n for ( const relatedPolicy of relatedPolicies ) {\n const relatedTraces = filterTraces(relatedPolicy);\n\n if ( !isEmpty(relatedTraces) ) {\n out.push({\n policyName: relatedPolicy.metadata.name,\n cluster: currentCluster?.id,\n traces: relatedTraces\n });\n }\n }\n } else {\n const relatedTraces = filterTraces(policy);\n\n if ( !isEmpty(relatedTraces) ) {\n out.push({\n policyName: policy.metadata.name,\n cluster: currentCluster?.id,\n traces: relatedTraces\n });\n }\n }\n\n return out;\n}\n\nexport function convertTagsToObject(arr: Tag[]): Record {\n const result: Record = {};\n\n for (const item of arr) {\n switch (item.type) {\n case 'string':\n result[item.key] = item.value as string;\n break;\n case 'int64':\n result[item.key] = parseInt(item.value as string, 10);\n break;\n case 'float64':\n result[item.key] = parseFloat(item.value as string);\n break;\n case 'bool':\n result[item.key] = item.value === 'true';\n break;\n default:\n result[item.key] = item.value;\n }\n }\n\n return result;\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".relative[data-v-a88dafa8]{position:relative}.policy__mode[data-v-a88dafa8]{display:flex;align-items:center}.policy__mode i[data-v-a88dafa8]{margin-left:5px;font-size:22px;color:var(--warning)}.gauges[data-v-a88dafa8],.gaugesContainer[data-v-a88dafa8]{display:flex}.gauges[data-v-a88dafa8]{justify-content:space-around;flex-wrap:wrap;justify-content:left}.gauges .count-gauge[data-v-a88dafa8]{width:46%;margin-bottom:10px;flex:initial}.gauges>*[data-v-a88dafa8]{flex:1;margin-right:1.75%}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceChecklist.vue?vue&type=style&index=0&id=63ad3d60&prod&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsChecklist.vue?vue&type=style&index=0&id=cf603ff2&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModeDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdateModeDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UpdateModeDialog.vue?vue&type=template&id=36b40387&scoped=true&\"\nimport script from \"./UpdateModeDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdateModeDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdateModeDialog.vue?vue&type=style&index=0&id=36b40387&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36b40387\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReadmePanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReadmePanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyReadmePanel.vue?vue&type=template&id=1cec5e9c&scoped=true&\"\nimport script from \"./PolicyReadmePanel.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyReadmePanel.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyReadmePanel.vue?vue&type=style&index=0&id=1cec5e9c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1cec5e9c\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=style&index=0&id=b012c5bc&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".policy-table-container[data-v-73f021fc]{display:flex;flex-direction:column;gap:1rem;padding:1rem}.policy-table-actions[data-v-73f021fc]{display:flex;justify-content:space-between;align-items:center}.filter[data-v-73f021fc]{width:100%;display:grid;grid-template-rows:1fr;grid-template-columns:repeat(2,1fr) .25fr;grid-template-areas:\\\"attributes search reset\\\";gap:1rem}.filter>*[data-v-73f021fc]{margin:.5rem 0}.filter__attributes[data-v-73f021fc]{grid-area:attributes}.filter__search[data-v-73f021fc]{grid-area:search}.filter__reset[data-v-73f021fc]{grid-area:reset}.filter__reset p[data-v-73f021fc]{line-height:1.5;white-space:wrap}[data-v-73f021fc] tr:hover{cursor:pointer}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Config.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Config.vue?vue&type=template&id=29773f24&scoped=true&\"\nimport script from \"./Config.vue?vue&type=script&lang=js&\"\nexport * from \"./Config.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Config.vue?vue&type=style&index=0&id=29773f24&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29773f24\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReadmePanel.vue?vue&type=style&index=0&id=1cec5e9c&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"[data-v-5ae37dc8] .step-container{height:auto}.step__basic[data-v-5ae37dc8]{display:flex;flex-direction:column;flex:1;overflow-x:hidden}.step__basic .spacer[data-v-5ae37dc8]{line-height:2}.step__values__controls[data-v-5ae37dc8]{display:flex;margin-bottom:15px}.step__values__controls[data-v-5ae37dc8]>:not(:last-of-type){margin-right:10px}.step__values__content[data-v-5ae37dc8],.step__values__controls--spacer[data-v-5ae37dc8]{flex:1}.step__values__content[data-v-5ae37dc8] .tab-container{overflow:auto}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=style&index=0&id=5ae37dc8&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".step__values__controls[data-v-d467cb12]{display:flex;margin-bottom:15px}.step__values__controls[data-v-d467cb12]>:not(:last-of-type){margin-right:10px}.step__values__content[data-v-d467cb12],.step__values__controls--spacer[data-v-d467cb12]{flex:1}.step__values__content[data-v-d467cb12] .tab-container{overflow:auto}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(!_vm.hideArtifactHubBanner)?[_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"kw-policy-create-ah-banner\",\"color\":\"warning\",\"closable\":true},on:{\"close\":function($event){return _vm.closeBanner('updateHideBannerArtifactHub')}}},[_c('div',[_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.policies.noArtifactHub', {}, true)),expression:\"t('kubewarden.policies.noArtifactHub', {}, true)\"}],staticClass:\"mb-10\"}),_c('AsyncButton',{attrs:{\"mode\":\"artifactHub\"},on:{\"click\":_vm.addArtifactHub}})],1)])]:_vm._e(),(!_vm.hideAirgapBanner)?[_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"kw-policy-create-ag-banner\",\"color\":\"warning\",\"closable\":true,\"label\":_vm.t('kubewarden.policies.airgap.banner')},on:{\"close\":function($event){return _vm.closeBanner('updateHideBannerAirgapPolicy')}}})]:_vm._e(),(_vm.loadingPackages)?_c('Loading'):_vm._e(),(_vm.value && !_vm.loadingPackages)?_c('Wizard',{ref:\"wizard\",staticClass:\"wizard\",attrs:{\"data-testid\":\"kw-policy-create-wizard\",\"errors\":_vm.errors,\"steps\":_vm.steps,\"show-banner\":false,\"edit-first-step\":true},on:{\"next\":_vm.reset,\"cancel\":_vm.done,\"finish\":_vm.finish},scopedSlots:_vm._u([{key:\"policies\",fn:function(){return [_c('PolicyTable',{attrs:{\"data-testid\":\"kw-policy-create-table\",\"value\":_vm.packages},on:{\"selectType\":function($event){return _vm.selectType($event)}}})]},proxy:true},{key:\"values\",fn:function(){return [_c('div',{staticClass:\"banner__title\"},[_c('h2',[_vm._v(_vm._s(_vm.bannerTitle))]),(!_vm.customPolicy)?[_c('p',{staticClass:\"banner__short-description\"},[_vm._v(\" \"+_vm._s(_vm.shortDescription)+\" \")]),_c('button',{staticClass:\"btn btn-sm role-link banner__readme-button\",on:{\"click\":_vm.showReadme}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyConfig.description.showReadme'))+\" \")])]:_vm._e()],2),_c('Values',{attrs:{\"value\":_vm.value,\"chart-values\":_vm.chartValues,\"yaml-values\":_vm.yamlValues,\"mode\":_vm.mode,\"custom-policy\":_vm.customPolicy},on:{\"editor\":$event => _vm.yamlOption = $event,\"updateYamlValues\":$event => _vm.yamlValues = $event}})]},proxy:true},{key:\"finish\",fn:function(){return [_c('AsyncButton',{attrs:{\"data-testid\":\"kw-policy-create-finish-button\",\"disabled\":!_vm.canFinish,\"mode\":\"finish\"},on:{\"click\":_vm.finish}})]},proxy:true}],null,false,3245187313),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_vm._e(),(_vm.packageValues && !_vm.customPolicy)?[_c('PolicyReadmePanel',{ref:\"readmePanel\",attrs:{\"package-values\":_vm.packageValues}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"policy-table-container\"},[_c('div',{staticClass:\"filter\"},[(_vm.attributeOptions.length)?_c('LabeledSelect',{staticClass:\"filter__attributes\",attrs:{\"data-testid\":\"kw-table-filter-source\",\"clearable\":true,\"taggable\":true,\"mode\":_vm.mode,\"multiple\":true,\"label-key\":\"kubewarden.utils.attributes.label\",\"options\":_vm.attributeOptions},on:{\"selecting\":e => _vm.handleAttributeSelect(e)},model:{value:(_vm.attributes),callback:function ($$v) {_vm.attributes=$$v},expression:\"attributes\"}}):_vm._e(),_c('LabeledInput',{ref:\"searchQuery\",staticClass:\"input-sm filter__search\",attrs:{\"data-testid\":\"kw-table-filter-search\",\"mode\":_vm.mode,\"label\":_vm.t('kubewarden.utils.search'),\"placeholder\":_vm.t('kubewarden.generic.name')},model:{value:(_vm.searchQuery),callback:function ($$v) {_vm.searchQuery=$$v},expression:\"searchQuery\"}}),_c('button',{ref:\"btn\",staticClass:\"btn role-tertiary filter__reset\",attrs:{\"data-testid\":\"kw-table-filter-refresh\",\"type\":\"button\"},on:{\"click\":_vm.refresh}},[_c('p',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.utils.resetFilter'))+\" \")])])],1),_c('div',{staticClass:\"policy-table-actions\"},[_c('Checkbox',{attrs:{\"label\":_vm.t('kubewarden.utils.official.label'),\"data-testid\":\"kw-table-filter-official\"},model:{value:(_vm.showKubewardenOfficial),callback:function ($$v) {_vm.showKubewardenOfficial=$$v},expression:\"showKubewardenOfficial\"}}),_c('button',{ref:\"btn\",staticClass:\"btn role-tertiary\",attrs:{\"data-testid\":\"kw-table-custom-buttom\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('selectType', 'custom')}}},[_c('p',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.utils.custom.create'))+\" \")])])],1),_c('SortableTableWrapper',{attrs:{\"rows\":_vm.filteredSubtypes,\"headers\":_vm.POLICY_TABLE_HEADERS,\"table-actions\":false,\"row-actions\":false,\"key-field\":\"package_id\",\"default-sort-by\":\"name\",\"paging\":true,\"search\":false},on:{\"selectRow\":(row) => _vm.$emit('selectType', row)}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ArtifactHubPackage } from '../types';\n\n/**\n * Extracts resource kinds from a list of ArtifactHub packages with the `kubewarden/resources` annotation.\n * @param artifactHubPackages\n * @returns `string[]` | Resource kinds\n */\nexport function resourcesFromAnnotation(artifactHubPackages: ArtifactHubPackage[]): string[] | void {\n const out: string[] = [];\n\n const resources = artifactHubPackages?.flatMap((artifactHubPackage) => {\n const annotation = artifactHubPackage?.data?.['kubewarden/resources'];\n\n if ( annotation ) {\n return annotation;\n }\n });\n\n resources?.flatMap((resource) => {\n if ( resource ) {\n const split = resource.split(',');\n\n if ( split.length > 1 ) {\n split.forEach((s: string) => out.push(s.trim()));\n } else {\n out.push(resource);\n }\n }\n\n return [];\n })?.sort();\n\n if ( !out || out?.length === 0 ) {\n return [];\n }\n\n return [...new Set(out.filter(Boolean))];\n}\n\n/**\n * Checks the resources within a ArtifactHub package's `kubewarden/resources` annotation to determine if\n * the policy is targeting non-namespaced resources. Needed to gate CAP from AP grid.\n * @param artifactHubPackage `schemas`\n * @returns Boolean\n */\nexport function isGlobalPolicy(artifactHubPackage: ArtifactHubPackage, schemas: any): Boolean {\n if ( artifactHubPackage ) {\n const resources: string[] | undefined = artifactHubPackage.data?.['kubewarden/resources']?.split(',');\n let targetsNonNamespaced: Boolean = false;\n\n if ( resources ) {\n for ( const resource of resources ) {\n targetsNonNamespaced = schemas?.some((schema: any) => (\n schema?.attributes?.kind === resource && (schema?.attributes?.namespaced === false || undefined)\n ));\n }\n }\n\n return targetsNonNamespaced;\n }\n\n return false;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('SortableTable',{ref:\"sortableTable\",attrs:{\"rows\":_vm.rows,\"headers\":_vm.headers,\"table-actions\":_vm.tableActions,\"row-actions\":_vm.rowActions,\"key-field\":_vm.keyField,\"default-sort-by\":_vm.defaultSortBy,\"paging\":_vm.paging,\"search\":_vm.search}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SortableTableWrapper.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SortableTableWrapper.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SortableTableWrapper.vue?vue&type=template&id=7934d794&\"\nimport script from \"./SortableTableWrapper.vue?vue&type=script&lang=js&\"\nexport * from \"./SortableTableWrapper.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyTable.vue?vue&type=template&id=73f021fc&scoped=true&\"\nimport script from \"./PolicyTable.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyTable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyTable.vue?vue&type=style&index=0&id=73f021fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73f021fc\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=b012c5bc&scoped=true&\"\nimport script from \"./Create.vue?vue&type=script&lang=js&\"\nexport * from \"./Create.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Create.vue?vue&type=style&index=0&id=b012c5bc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b012c5bc\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Values.vue?vue&type=template&id=5ae37dc8&scoped=true&\"\nimport script from \"./Values.vue?vue&type=script&lang=js&\"\nexport * from \"./Values.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Values.vue?vue&type=style&index=0&id=5ae37dc8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ae37dc8\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.policyserver.vue?vue&type=template&id=5e7084d1&\"\nimport script from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[(_vm.isCreate || _vm.isEdit)?_c('div',{staticClass:\"step__values__controls\"},[_c('ButtonGroup',{attrs:{\"data-testid\":\"kw-policy-config-yaml-option\",\"options\":_vm.YAML_OPTIONS,\"inactive-class\":\"bg-disabled btn-sm\",\"active-class\":\"bg-primary btn-sm\"},model:{value:(_vm.yamlOption),callback:function ($$v) {_vm.yamlOption=$$v},expression:\"yamlOption\"}})],1):_vm._e(),_c('div',{staticClass:\"scroll__container\"},[_c('div',{staticClass:\"scroll__content\"},[(_vm.showForm)?[_c('Tabbed',{ref:\"tabs\",staticClass:\"step__values__content\",attrs:{\"side-tabs\":true},on:{\"changed\":function($event){return _vm.tabChanged($event)}}},[(_vm.valuesComponent)?[_c(_vm.valuesComponent,{tag:\"component\",attrs:{\"mode\":_vm.mode,\"custom-policy\":_vm.customPolicy},model:{value:(_vm.chartValues),callback:function ($$v) {_vm.chartValues=$$v},expression:\"chartValues\"}})]:_vm._e()],2)]:((_vm.isCreate || _vm.isEdit) && !_vm.showForm)?[_c('YamlEditor',{ref:\"yaml\",staticClass:\"step__values__content\",attrs:{\"data-testid\":\"kw-policy-config-yaml-editor\",\"scrolling\":true,\"initial-yaml-values\":_vm.originalYamlValues,\"editor-mode\":_vm.editorMode,\"hide-preview-buttons\":true},on:{\"onChanges\":_vm.updateYamlValues},model:{value:(_vm.currentYamlValues),callback:function ($$v) {_vm.currentYamlValues=$$v},expression:\"currentYamlValues\"}})]:_vm._e(),_c('ResourceCancelModal',{ref:\"cancelModal\",attrs:{\"data-testid\":\"kw-policy-config-yaml-cancel\",\"is-cancel-modal\":false,\"is-form\":true},on:{\"cancel-cancel\":function($event){_vm.preYamlOption = _vm.yamlOption},\"confirm-cancel\":function($event){_vm.yamlOption = _vm.preYamlOption}}})],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Values.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Values.vue?vue&type=template&id=d467cb12&scoped=true&\"\nimport script from \"./Values.vue?vue&type=script&lang=js&\"\nexport * from \"./Values.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Values.vue?vue&type=style&index=0&id=d467cb12&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d467cb12\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isCreate)?_c('Create',{attrs:{\"value\":_vm.value,\"mode\":_vm.mode}}):_c('CruResource',{attrs:{\"resource\":_vm.value,\"mode\":_vm.realMode,\"can-yaml\":false},on:{\"finish\":_vm.finish}},[_c('Config',{attrs:{\"value\":_vm.value,\"mode\":_vm.realMode},on:{\"updateYamlValues\":_vm.updateYamlValuesFromEdit}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=template&id=27ab086c&\"\nimport script from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".content[data-v-29773f24]{position:relative;z-index:1}.banner__title[data-v-29773f24]{padding-top:10px;margin-bottom:10px;border-bottom:1px solid var(--border);min-height:60px}.banner__readme-button[data-v-29773f24]{padding:0 7px 0 0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTable.vue?vue&type=style&index=0&id=73f021fc&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProgressBarMulti.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProgressBarMulti.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProgressBarMulti.vue?vue&type=template&id=abc33690&scoped=true&\"\nimport script from \"./ProgressBarMulti.vue?vue&type=script&lang=js&\"\nexport * from \"./ProgressBarMulti.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProgressBarMulti.vue?vue&type=style&index=0&id=abc33690&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"abc33690\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicySummaryGraph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicySummaryGraph.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicySummaryGraph.vue?vue&type=template&id=68a4b45d&\"\nimport script from \"./PolicySummaryGraph.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicySummaryGraph.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicySummaryGraph.vue?vue&type=style&index=0&id=68a4b45d&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".col-scale{position:relative}.col-scale .trigger{width:100%}.scale{margin:0;padding:0;line-height:normal}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_vm._v(\" \"+_vm._s(_vm.resources)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableResources.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableResources.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyTableResources.vue?vue&type=template&id=7d974c91&\"\nimport script from \"./PolicyTableResources.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyTableResources.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=style&index=0&id=80bba75c&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',_vm._l((_vm.resourceLabels),function(resource,i){return _c('span',{key:i},[_vm._v(\" \"+_vm._s(resource)+\" \")])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyResources.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyResources.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyResources.vue?vue&type=template&id=2d2cff57&\"\nimport script from \"./PolicyResources.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyResources.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canShow)?_c('div',{staticClass:\"pr-summary\"},[_c('v-popover',{staticClass:\"text-center hand\",attrs:{\"placement\":\"top\",\"open-group\":_vm.value.id,\"trigger\":\"click\",\"offset\":\"1\"},scopedSlots:_vm._u([{key:\"popover\",fn:function(){return [_c('div',{staticClass:\"pr-summary__content\"},[_c('div',_vm._l((_vm.summaryParts),function(obj){return _c('div',{key:obj.key,staticClass:\"counts\"},[_c('span',{staticClass:\"text-left pr-20\",class:{[obj.textColor]: true}},[_vm._v(\" \"+_vm._s(obj.label)+\" \")]),_c('span',{staticClass:\"text-right\"},[_vm._v(\" \"+_vm._s(obj.value)+\" \")])])}),0)])]},proxy:true}],null,false,3136338994)},[[_c('div',{staticClass:\"pr-summary__container\"},_vm._l((_vm.summaryParts),function(obj){return _c('div',{key:`${obj.key}-badge`},[(obj.value)?_c('div',{staticClass:\"badge\",class:{[obj.bgColor]: true}},[_c('span',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(obj.label),expression:\"obj.label\"}]},[_vm._v(_vm._s(obj.value))])]):_vm._e()])}),0)]],2)],1):_c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyReportSummary.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyReportSummary.vue?vue&type=template&id=80bba75c&scoped=true&\"\nimport script from \"./PolicyReportSummary.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyReportSummary.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyReportSummary.vue?vue&type=style&index=0&id=80bba75c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"80bba75c\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerDeployment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerDeployment.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyServerDeployment.vue?vue&type=template&id=2a8202a5&scoped=true&\"\nimport script from \"./PolicyServerDeployment.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyServerDeployment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyServerDeployment.vue?vue&type=style&index=0&id=2a8202a5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a8202a5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_vm._v(\" \"+_vm._s(_vm.features)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableFeatures.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableFeatures.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyTableFeatures.vue?vue&type=template&id=7eb8d6dc&\"\nimport script from \"./PolicyTableFeatures.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyTableFeatures.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.stateDisplay)?_c('BadgeState',{attrs:{\"color\":_vm.stateBackground,\"label\":_vm.capitalizeMessage(_vm.stateDisplay)}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyServerStatus.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyServerStatus.vue?vue&type=template&id=3d2005ff&\"\nimport script from \"./PolicyServerStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyServerStatus.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableBadges.vue?vue&type=style&index=0&id=27742bc9&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a ","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableBadges.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyTableBadges.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyTableBadges.vue?vue&type=template&id=27742bc9&scoped=true&\"\nimport script from \"./PolicyTableBadges.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyTableBadges.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyTableBadges.vue?vue&type=style&index=0&id=27742bc9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27742bc9\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n\x3c!-- RESOURCE DEPLOYMENT ICON --\x3e\n\n\x3c!-- NODE ICON --\x3e\n\n\x3c!-- RESOURCE OTHER ICON --\x3e\n\n\n`;var Kw={name:"ForceDirectedTreeChart",components:{BadgeState:rr["a"]},props:{data:{type:[Array,Object],required:!0},fdcConfig:{type:Object,required:!0}},data(){return{dataWatcher:void 0,parsedInfo:void 0,root:void 0,allNodesData:void 0,allLinks:void 0,rootNode:void 0,node:void 0,link:void 0,svg:void 0,zoom:void 0,simulation:void 0,isChartFirstRendered:!1,isChartFirstRenderAnimationFinished:!1,moreInfo:{}}},methods:{watcherFunction(e){if(e.length)if(this.isChartFirstRendered){const e=this.fdcConfig.parseData(this.data),t=this.flatten(e);let n=!1;t.forEach(e=>{const t=this.allNodesData.findIndex(t=>e.matchingId===t.data.matchingId);t>-1&&this.allNodesData[t].data.state!==e.state&&(this.allNodesData[t].data.state=e.state,this.allNodesData[t].data.stateLabel=e.stateLabel,this.allNodesData[t].data.stateColor=e.stateColor,n=!0,this.allNodesData[t].data.active&&this.setDetailsInfo(this.allNodesData[t].data,!1))}),n&&this.updateChart(!1,!1)}else this.parsedInfo=this.fdcConfig.parseData(this.data),this.setDetailsInfo(this.parsedInfo,!1),this.parsedInfo.active=!0,this.renderChart(),this.updateChart(!0,!0),this.isChartFirstRendered=!0},renderChart(){this.zoom=qw().scaleExtent([1/8,16]).on("zoom",this.zoomed);const e=Mw.scale(1).translate(0,0);this.rootNode=this.svg.append("g").attr("class","root-node"),this.svg.call(this.zoom),this.svg.call(this.zoom.transform,e),this.simulation=Pp().force("charge",$p().strength(this.fdcConfig.simulationParams.fdcStrength).distanceMax(this.fdcConfig.simulationParams.fdcDistanceMax)).force("collision",Zd(this.fdcConfig.simulationParams.fdcForceCollide)).force("center",Od(this.fdcConfig.chartWidth/2,this.fdcConfig.chartHeight/2)).alphaDecay(this.fdcConfig.simulationParams.fdcAlphaDecay).on("tick",this.ticked).on("end",()=>{this.isChartFirstRenderAnimationFinished||(this.zoomFit(),this.isChartFirstRenderAnimationFinished=!0)})},updateChart(e,t){e&&(this.root=Qp(this.parsedInfo)),t&&(this.allNodesData=this.flatten(this.root),this.allLinks=this.root.links()),this.link=this.rootNode.selectAll(".link").data(this.allLinks,e=>e.target.id),this.link.exit().remove();const n=this.link.enter().append("line").attr("class","link").style("opacity","0.2").style("stroke-width",4);this.link=n.merge(this.link),this.node=this.rootNode.selectAll(".node").data(this.allNodesData,e=>e.id).attr("class",this.mainNodeClass),this.node.exit().remove();const r=this.node.enter().append("g").attr("class",this.mainNodeClass).style("opacity",1).on("click",(e,t)=>{this.setDetailsInfo(t.data,!0)}).call(xd().on("start",this.dragStarted).on("drag",this.dragging).on("end",this.dragEnded));r.append("circle").attr("r",this.setNodeRadius),r.append("circle").attr("r",e=>this.setNodeRadius(e)-5).attr("class","node-hover-layer"),r.append("svg").html(e=>{const t=this.fdcConfig.fetchNodeIcon(e);return zw(t)}).attr("x",this.nodeImagePosition).attr("y",this.nodeImagePosition).attr("height",this.nodeImageSize).attr("width",this.nodeImageSize),this.node=r.merge(this.node),this.simulation.nodes(this.allNodesData),this.simulation.force("link",ep().id(e=>e.id).distance(100).links(this.allLinks))},mainNodeClass(e){var t,n;const r=null!==(t=e.data)&&void 0!==t&&t.state?e.data.state.toLowerCase():"unkown_status",i=["node"];ir["a"][r]&&ir["a"][r].color?i.push("node-"+ir["a"][r].color):i.push("node-default-fill"),null!==(n=e.data)&&void 0!==n&&n.active&&i.push("active");const a=this.fdcConfig.extendNodeClass(e).concat(i);return a.join(" ")},setNodeRadius(e){const{radius:t}=this.fdcConfig.nodeDimensions(e);return t},nodeImageSize(e){const{size:t}=this.fdcConfig.nodeDimensions(e);return t},nodeImagePosition(e){const{position:t}=this.fdcConfig.nodeDimensions(e);return t},setDetailsInfo(e,t){this.moreInfo=Object.assign([],this.fdcConfig.infoDetails(e)),t&&(this.allNodesData.forEach((t,n)=>{t.data.matchingId===e.matchingId?this.allNodesData[n].data.active=!0:this.allNodesData[n].data.active=!1}),this.updateChart(!1,!1))},zoomFit(){const e=ld(".root-node"),t=30,n=e.node().getBoundingClientRect(),r=e.node().getBBox(),i=e.node().parentElement,a=i.clientWidth,o=i.clientHeight,s=n.width,l=n.height,c=r.x+s/2,u=r.y+l/2;if(0===s||0===l)return;const d=1/Math.max(s/(a-t),l/(o-t)),p=[a/2-d*c,o/2-d*u],f=Mw.translate(p[0],p[1]).scale(d);this.svg.call(this.zoom.transform,f)},ticked(){this.link.attr("x1",e=>e.source.x).attr("y1",e=>e.source.y).attr("x2",e=>e.target.x).attr("y2",e=>e.target.y),this.node.attr("transform",e=>`translate(${e.x}, ${e.y})`)},dragStarted(e,t){e.active||this.simulation.alphaTarget(.3).restart(),t.fx=t.x,t.fy=t.y},dragging(e,t){t.fx=e.x,t.fy=e.y},dragEnded(e,t){e.active||this.simulation.alphaTarget(0),t.fx=void 0,t.fy=void 0},zoomed(e){this.rootNode.attr("transform",e.transform)},flatten(e){const t=[];let n=0;function r(e){e.children&&e.children.forEach(r),e.id?++n:e.id=++n,t.push(e)}return r(e),t}},mounted(){this.svg=ld("#tree").append("svg").attr("viewBox",`0 0 ${this.fdcConfig.chartWidth} ${this.fdcConfig.chartHeight}`).attr("preserveAspectRatio","none"),this.dataWatcher=this.$watch(this.fdcConfig.watcherProp,(function(e){this.watcherFunction(e)}),{deep:!0,immediate:!0})},unmounted(){this.dataWatcher()}},Ww=Kw,Yw=(n("4ba5"),Object(L["a"])(Ww,Pr,$r,!1,null,null,null)),Xw=Yw.exports;n("4048"),n("4549"),n("bcb3");const Zw=(e,t)=>{const n={};for(const[r,i]of Object.entries(e)){const e=t.getters[i.inStoreType+"/schemaFor"](i.type),a=i.schemaValidator?i.schemaValidator(e):!!e;a&&(n[r]=t.dispatch(i.inStoreType+"/findAll",{type:i.type}))}return Object(x["a"])(n)};function Jw(e){var t,n;return(null===(t=e.query)||void 0===t?void 0:t.mode)===w["w"]?w["w"]:null!==(n=e.params)&&void 0!==n&&n.id?e.query.mode||w["A"]:w["r"]}async function Qw(e,t){let n;const r={headers:{accept:"application/yaml"}};return t.hasLink("view")&&(n=(await t.followLink("view",r)).data),t.cleanForDownload(n)}var eE={components:{Loading:q["a"],DetailTop:Mr,ForceDirectedTreeChart:Xw,ResourceYaml:Jn["a"],Masthead:cr,IconMessage:kn},mixins:[Zn["a"]],props:{storeOverride:{type:String,default:null},resourceOverride:{type:String,default:null},parentRouteOverride:{type:String,default:null},flexContent:{type:Boolean,default:!1},componentTestid:{type:String,default:"resource-details"}},async fetch(){const e=this.$store,t=this.$route,n=t.params;let r=this.resourceOverride||n.resource;const i=this.storeOverride||e.getters["currentStore"](r),a=this.realMode;let{namespace:o,id:l}=n;const c=[w["p"],w["w"],w["y"]].includes(a)?w["r"]:a,u=e.getters["type-map/hasGraph"](r),d=!!u,p=e.getters["type-map/hasCustomDetail"](r,l),f=e.getters["type-map/hasCustomEdit"](r,l),h=e.getters[i+"/all"](s["x"]),m=t.query[w["a"]];let v,g=!1;v=c!==w["A"]||!p||m&&m!==w["s"]?c===w["A"]&&d&&m===w["v"]?w["v"]:!f||m&&m!==w["q"]?w["B"]:w["q"]:w["s"],this.as=v;const b=e.getters["type-map/optionsFor"](r);this.showMasthead=![w["r"],w["t"]].includes(c)||b.resourceEditMasthead;const y=b.canYaml;b.resource&&(r=b.resource);const _=e.getters[i+"/schemaFor"](r);let E,x,O,S;if(a===w["r"]||a===w["w"]){var N;o||(o=e.getters["defaultNamespace"]);const t={type:r};null!==_&&void 0!==_&&null!==(N=_.attributes)&&void 0!==N&&N.namespaced&&(t.metadata={namespace:o}),O=await e.dispatch(i+"/create",t),x=await e.dispatch(i+"/clone",{resource:O}),E=await e.dispatch(i+"/clone",{resource:O}),!0===E.forceYaml&&(v=w["B"],this.as=v),v===w["B"]&&(null!==_&&void 0!==_&&_.fetchResourceFields&&await _.fetchResourceFields(),S=Object(Qn["b"])(h,r,t))}else{var A;if(v===w["v"]){const e=await Zw({cluster:{inStoreType:"management",type:s["g"].CLUSTER},bundle:{inStoreType:"management",type:s["g"].BUNDLE},bundleDeployment:{inStoreType:"management",type:s["g"].BUNDLE_DEPLOYMENT}},this.$store);this.canViewChart=e.cluster&&e.bundle&&e.bundleDeployment}let t=l;null!==(A=_.attributes)&&void 0!==A&&A.namespaced&&o&&(t=`${o}/${t}`);try{O=await e.dispatch(i+"/find",{type:r,id:t,opt:{watch:!0}})}catch(T){404!==T.status&&403!==T.status||e.dispatch("loadingError",new Error(this.t("nav.failWhale.resourceIdNotFound",{resource:r,fqid:t},!0))),O={},g=t}E=a===w["A"]?O:await e.dispatch(i+"/clone",{resource:O}),x=await e.dispatch(i+"/clone",{resource:O}),v===w["B"]&&(S=await Qw(this.$store,O)),v===w["v"]&&(this.chartData=O),[w["p"],w["w"],w["y"]].includes(a)&&(E.cleanForNew(),S=E.cleanYaml(S,a))}E=await e.dispatch(i+"/cleanForDetail",E);const C={hasGraph:d,getGraphConfig:u,hasCustomDetail:p,hasCustomEdit:f,canViewYaml:y,resource:r,as:v,yaml:S,initialModel:x,liveModel:O,mode:c,value:E,notFound:g};for(const s in C)this[s]=C[s];this.mode===w["r"]&&this.value.applyDefaults(this,a)},data(){return{chartData:null,resourceSubtype:null,hasGraph:null,hasCustomDetail:null,hasCustomEdit:null,resource:null,asYaml:null,yaml:null,liveModel:null,initialModel:null,mode:null,as:null,value:null,model:null,notFound:null,canViewChart:!0}},computed:{realMode(){const e=Jw(this.$route);return e},isView(){return this.mode===w["A"]},isYaml(){return this.as===w["B"]},isDetail(){return this.as===w["s"]},isGraph(){return this.as===w["v"]},offerPreview(){return this.as===w["B"]&&[w["t"],w["p"],w["w"],w["y"]].includes(this.mode)},showComponent(){switch(this.as){case w["s"]:return this.detailComponent;case w["q"]:return this.editComponent}return null}},watch:{"$route.query"(e,t){const n=Object(en["e"])(e),r=Object(en["e"])(t);delete n[w["h"]],delete r[w["h"]],this.isView||(delete n[w["a"]],delete r[w["a"]]);const i=Object.keys(Object(en["g"])(n,r));(i.includes(w["e"])||i.includes(w["a"]))&&this.$fetch()},async"value.metadata.resourceVersion"(e,t){this.mode===w["A"]&&this.as===w["B"]&&e&&t&&e!==t&&(this.yaml=await Qw(this.$store,this.liveModel))}},created(){const e=this.$route.params.id,t=this.resourceOverride||this.$route.params.resource,n=this.$store.getters["type-map/optionsFor"](t),r=n.resourceDetail||n.resource||t,i=n.resourceEdit||n.resource||t;this.detailComponent=this.$store.getters["type-map/importDetail"](r,e),this.editComponent=this.$store.getters["type-map/importEdit"](i,e)},methods:{setSubtype(e){this.resourceSubtype=e},keyAction(e){const t=this.liveModel;null!==t&&void 0!==t&&t[e]&&t[e]()}}},tE=eE,nE=(n("d2f5"),Object(L["a"])(tE,Yn,Xn,!1,null,"c7788ab2",null)),rE=nE.exports,iE={name:"KubewardenResourceCreate",components:{ResourceDetail:rE}},aE=iE,oE=Object(L["a"])(aE,Kn,Wn,!1,null,null,null),sE=oE.exports,lE=function(){var e=this,t=e._self._c;return t("ResourceDetail")},cE=[],uE={name:"KubewardenResourcedId",components:{ResourceDetail:rE}},dE=uE,pE=Object(L["a"])(dE,lE,cE,!1,null,null,null),fE=pE.exports,hE=function(){var e=this,t=e._self._c;return t("ResourceDetail")},mE=[],vE={name:"KubewardenResourcedNamespaceId",components:{ResourceDetail:rE}},gE=vE,bE=Object(L["a"])(gE,hE,mE,!1,null,null,null),yE=bE.exports;const _E=[{name:"c-cluster-"+l["k"],path:"/c/:cluster/"+l["k"],component:bt,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-${l["q"]}`,path:`/c/:cluster/${l["k"]}/${l["q"]}`,component:Dt,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource`,path:`/c/:cluster/${l["k"]}/:resource`,component:zn,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-create`,path:`/c/:cluster/${l["k"]}/:resource/create`,component:sE,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-id`,path:`/c/:cluster/${l["k"]}/:resource/:id`,component:fE,meta:{product:l["k"],pkg:l["k"]}},{name:`c-cluster-${l["k"]}-resource-namespace-id`,path:`/c/:cluster/${l["k"]}/:resource/:namespace/:id`,component:yE,meta:{product:l["k"],pkg:l["k"]}}];var wE=_E,EE={airGapped:e=>e.airGapped,hideBannerDefaults:e=>e.hideBannerDefaults,hideBannerArtifactHub:e=>e.hideBannerArtifactHub,hideBannerAirgapPolicy:e=>e.hideBannerAirgapPolicy,controllerApp:e=>e.controllerApp,kubewardenCrds:e=>e.kubewardenCrds,policyReports:e=>e.policyReports,clusterPolicyReports:e=>e.clusterPolicyReports,policyTraces:e=>e.policyTraces,refreshingCharts:e=>e.refreshingCharts},xE={updateAirGapped(e,t){e.airGapped=t},updateHideBannerDefaults(e,t){e.hideBannerDefaults=t},updateHideBannerArtifactHub(e,t){e.hideBannerArtifactHub=t},updateHideBannerAirgapPolicy(e,t){e.hideBannerAirgapPolicy=t},updateControllerApp(e,t){var n;(null===(n=e.controllerApp)||void 0===n?void 0:n.id)===(null===t||void 0===t?void 0:t.id)?(e.controllerApp.metadata=t.metadata,e.controllerApp.spec=t.spec,e.controllerApp.status=t.status):e.controllerApp=t},removeControllerApp(e,t){var n;const r=(null===(n=e.controllerApp)||void 0===n?void 0:n.id)===(null===t||void 0===t?void 0:t.id);r&&(e.controllerApp=null)},updateKubewardenCrds(e,t){const n=e.kubewardenCrds.find(e=>{var n,r;return(null===e||void 0===e||null===(n=e.metadata)||void 0===n?void 0:n.name)===(null===t||void 0===t||null===(r=t.metadata)||void 0===r?void 0:r.name)});n?(n.metadata=t.metadata,n.spec=t.spec,n.status=t.status):e.kubewardenCrds.push(t)},removeKubewardenCrds(e,t){const n=e.kubewardenCrds.findIndex(e=>{var n,r;return(null===e||void 0===e||null===(n=e.metadata)||void 0===n?void 0:n.name)===(null===t||void 0===t||null===(r=t.metadata)||void 0===r?void 0:r.name)});-1!==n&&e.kubewardenCrds.splice(n,1)},updateReports(e,{reportArrayKey:t,updatedReport:n}){const r=e[t],i=r.find(e=>e.id===n.id);i?(i.results=n.results,i.summary=n.summary):r.push(n)},removePolicyReportById(e,t){const n=e.policyReports.findIndex(e=>e.id===t);-1!==n&&e.policyReports.splice(n,1)},updatePolicyTraces(e,t){const{policyName:n,cluster:r,updatedTrace:i}=t,a=e.policyTraces.find(e=>e.policyName===n);let o=null===a||void 0===a?void 0:a.traces.find(e=>e.id===i.id);o?o=i:a?null===a||void 0===a||a.traces.push(i):e.policyTraces.push({policyName:n,cluster:r,traces:[i]})},removeTraceById(e,t,n){const r=e.policyTraces.find(e=>e.policyName===t.policyName),i=null===r||void 0===r?void 0:r.traces.findIndex(e=>e.id===n.id);i&&-1!==i&&(null===r||void 0===r||r.traces.splice(i,1))},updateRefreshingCharts(e,t){e.refreshingCharts=t}},OE={updateAirGapped({commit:e},t){e("updateAirGapped",t)},updateHideBannerDefaults({commit:e},t){e("updateHideBannerDefaults",t)},updateHideBannerArtifactHub({commit:e},t){e("updateHideBannerArtifactHub",t)},updateHideBannerAirgapPolicy({commit:e},t){e("updateHideBannerAirgapPolicy",t)},updatePolicyReports({commit:e},t){e("updateReports",{reportArrayKey:"policyReports",updatedReport:t})},updateClusterPolicyReports({commit:e},t){e("updateReports",{reportArrayKey:"clusterPolicyReports",updatedReport:t})},updatePolicyTraces({commit:e},t){e("updatePolicyTraces",t)},removePolicyTraceById({commit:e},t,n){e("removePolicyTraceById",t,n)},updateRefreshingCharts({commit:e},t){e("updateRefreshingCharts",t)},updateControllerApp({commit:e},t){e("updateControllerApp",t)},removeControllerApp({commit:e},t){e("removeControllerApp",t)},updateKubewardenCrds({commit:e},t){e("updateKubewardenCrds",t)},removeKubewardenCrds({commit:e},t){e("removeKubewardenCrds",t)}};const SE=e=>({state:()=>({airGapped:e.airGapped,fleetRepos:e.fleetRepos,hideBannerDefaults:e.hideBannerDefaults,hideBannerArtifactHub:e.hideBannerArtifactHub,hideBannerAirgapPolicy:e.hideBannerAirgapPolicy,controllerApp:e.controllerApp,kubewardenCrds:e.kubewardenCrds,policyReports:e.policyReports,clusterPolicyReports:e.clusterPolicyReports,policyTraces:e.policyTraces,refreshingCharts:e.refreshingCharts}),getters:{...EE},mutations:{...xE},actions:{...OE}}),NE={namespace:l["k"]};var AE={specifics:SE({airGapped:!1,fleetRepos:[],hideBannerDefaults:!1,hideBannerArtifactHub:!1,hideBannerAirgapPolicy:!1,controllerApp:null,kubewardenCrds:[],policyReports:[],clusterPolicyReports:[],policyTraces:[],refreshingCharts:!1}),config:NE},CE=n("8bbf"),TE=n.n(CE),kE=n("8276"),RE=n("3e09"),LE=n.n(RE);const IE=["code","li","a","p","b","br","ul","pre","span","div","i","em","strong","h1","h2","h3","h4","h5","h6","table","thead","tr","th","tbody","td","blockquote"];LE.a.addHook("uponSanitizeAttribute",(e,t)=>{"A"===e.tagName&&"target"===t.attrName&&"_blank"===t.attrValue&&(t.forceKeepAttr=!0)}),LE.a.addHook("afterSanitizeAttributes",e=>{if("A"===e.tagName&&"_blank"===(null===e||void 0===e?void 0:e.target)){var t;const n=["noopener","noreferrer","nofollow"],r=null!==(t=e.rel)&&void 0!==t&&t.length?e.rel.split(" "):[],i=Object(he["m"])([...n,...r]);e.setAttribute("rel",i.join(" "))}});const DE=(e,t={ALLOWED_TAGS:IE})=>LE.a.sanitize(e,t);function ME(e){const t=typeof e;return"string"===t?DE(e):e&&"object"===t&&"string"===typeof e.content?{...e,content:DE(e.content)}:e}function PE(e,{value:t,oldValue:n,modifiers:r}){const i=ME(t);kE["a"].bind(e,{value:i,oldValue:n,modifiers:r})}const $E={...kE["a"],bind:PE,update:PE};var jE=$E;console.warn("Importing cleanTooltipDirective from plugins has been deprecated, use shell/directives/clean-tooltip.js instead.\nMake sure to invoke it using Vue.directive('clean-tooltip', cleanTooltipDirective ) to maintain compatibility."),TE.a.directive("clean-tooltip",jE);const BE={inserted(e,t){e.innerHTML=DE(t.value)},componentUpdated(e,t){e.innerHTML=DE(t.value)},unbind(e){e.innerHTML=""}};var FE=BE;console.warn("Importing cleanHtmlDirective from plugins has been deprecated, use shell/directives/clean-html.js instead. \nMake sure to invoke Vue.directive('clean-html', cleanHtmlDirective) to maintain compatibility."),TE.a.directive("clean-html",FE);const UE=async e=>{await Object(z["g"])(e,!1),await Object(z["g"])(e,!0)};var GE=function(e,t){a(e),e.metadata=n("9224"),e.addProduct(n("6102")),e.addDashboardStore(AE.config.namespace,AE.specifics,AE.config),e.addRoutes(wE),e.addNavHooks(UE),e.addPanel(o["d"].RESOURCE_LIST,{path:[{urlPath:"explorer/projectsnamespaces",endsWith:!0}]},{component:()=>n.e(0).then(n.bind(null,"6ba7"))}),e.addPanel(o["d"].RESOURCE_LIST,{resource:[s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{component:()=>n.e(0).then(n.bind(null,"6ba7"))}),e.addTableColumn(o["f"].RESOURCE,{path:[{urlPath:"explorer/projectsnamespaces",endsWith:!0}]},{name:"policy-reports",labelKey:"kubewarden.policyReporter.headers.policyReports.label",getValue:e=>e,weight:3,formatter:"PolicyReportSummary"}),e.addTableColumn(o["f"].RESOURCE,{resource:[s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{name:"policy-reports",labelKey:"kubewarden.policyReporter.headers.label",getValue:e=>e,weight:3,formatter:"PolicyReportSummary"}),e.addTab(o["e"].RESOURCE_DETAIL,{resource:[s["n"],s["r"],s["H"].CRON_JOB,s["H"].DAEMON_SET,s["H"].DEPLOYMENT,s["H"].JOB,s["H"].STATEFUL_SET,s["j"],s["z"]]},{name:"policy-report-tab",labelKey:"kubewarden.policyReporter.headers.label",weight:-5,showHeader:!0,component:()=>n.e(13).then(n.bind(null,"8564"))})};t["default"]=GE},"1c46":function(e,t,n){var r=n("3bf1");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("141ab997",r,!0,{sourceMap:!1,shadowMode:!1})},"1cbd":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".percentage-bar[data-v-620caa7e]{display:flex;flex-direction:row}.percentage-bar .percentage-value[data-v-620caa7e]{word-break:keep-all}",""]),e.exports=t},"1d19":function(e,t,n){"use strict";n.d(t,"c",(function(){return s})),n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return m}));var r=n("e24b"),i=n("2cb5");const a={"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object","[object FileList]":"filelist"},{toString:o}=Object.prototype;function s(e){if(null===e)return"null";if(void 0===e)return"undefined";let t=a[o.call(e)]||"object";return"object"===t&&(e instanceof Error?t="error":e instanceof Date&&(t="date")),t}function l(e,t){const n=e-t;return(n>0)-(n<0)}const c={undefined:0,null:1,boolean:2,number:3,string:4,array:5,object:6,instance:7,function:8,class:9,date:10};function u(e,t){const n=s(e),r=s(t),i=l(c[n],c[r]);if(i)return i;switch(n){case"boolean":case"number":return l(e,t);case"string":return l(e.localeCompare(t),0);case"array":{const n=e.length,r=t.length,i=Math.min(n,r);for(let a=0;a{for(let a=0;ae.match(h)?Object(i["p"])(e,10,"0"):e).join("").trim()}},"1d5f":function(e){e.exports=JSON.parse('{"hasStylesheet":"true"}')},"1dbe":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,'.chart-container{display:flex;background-color:var(--body-bg);position:relative;border:1px solid var(--border);border-radius:var(--border-radius);min-height:100px}.chart-container .loading-container{content:"";position:absolute;top:0;left:0;width:100%;height:100%;border-radius:var(--border-radius);background-color:var(--body-bg);z-index:2;display:flex;align-items:center;justify-content:center;flex-direction:column}.chart-container .loading-container i{font-size:24px}.chart-container #tree{width:70%;height:-moz-fit-content;height:fit-content}.chart-container #tree svg{margin-top:3px}.chart-container #tree .link{stroke:var(--darker)}.chart-container #tree .node{cursor:pointer}.chart-container #tree .node.active .node-hover-layer{display:block}.chart-container #tree .node.repo.active>circle{transform:scale(1.2)}.chart-container #tree .node.bundle.active>circle{transform:scale(1.35)}.chart-container #tree .node.bundle-deployment.active>circle{transform:scale(1.6)}.chart-container #tree .node.node-default-fill>circle,.chart-container #tree .node.repo>circle{fill:var(--muted)}.chart-container #tree .node:not(.repo).node-success>circle{fill:var(--success)}.chart-container #tree .node:not(.repo).node-info>circle{fill:var(--info)}.chart-container #tree .node:not(.repo).node-warning>circle{fill:var(--warning)}.chart-container #tree .node:not(.repo).node-error>circle{fill:var(--error)}.chart-container #tree .node .node-hover-layer{stroke:var(--body-bg);stroke-width:2;display:none}.chart-container .more-info-container{width:30%;position:relative;border-left:1px solid var(--border);background-color:var(--body-bg);overflow:hidden}.chart-container .more-info-container,.chart-container .more-info-container .more-info{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.chart-container .more-info-container .more-info{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;padding:20px;overflow-y:auto}.chart-container .more-info-container .more-info table td{vertical-align:top;padding-bottom:10px}.chart-container .more-info-container .more-info table td.align-middle{vertical-align:middle}.chart-container .more-info-container .more-info table .more-info-item-label{color:var(--darker);margin-right:8px}.chart-container .more-info-container .more-info table .single-error{color:var(--error)}.chart-container .more-info-container .more-info table p{line-height:1.5em}',""]),e.exports=t},"1ec9":function(e,t,n){var r=n("fa8a"),i=n("44d9"),a=n("1386"),o=n("052a"),s=n("2fab"),l=n("e3f8");function c(e){var t=this.__data__=new r(e);this.size=t.size}c.prototype.clear=i,c.prototype["delete"]=a,c.prototype.get=o,c.prototype.has=s,c.prototype.set=l,e.exports=c},"1f4e":function(e,t){const n="[A-Za-z$_][0-9A-Za-z$_]*",r=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],i=["true","false","null","undefined","NaN","Infinity"],a=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],o=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],s=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],l=["arguments","this","super","console","window","document","localStorage","module","global"],c=[].concat(s,a,o);function u(e){const t=e.regex,u=(e,{after:t})=>{const n="",end:""},f=/<[A-Za-z0-9\\._:-]+\s*\/>/,h={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{const n=e[0].length+e.index,r=e.input[n];if("<"===r||","===r)return void t.ignoreMatch();let i;">"===r&&(u(e,{after:n})||t.ignoreMatch());const a=e.input.substring(n);(i=a.match(/^\s+extends\s+/))&&0===i.index&&t.ignoreMatch()}},m={$pattern:n,keyword:r,literal:i,built_in:c,"variable.language":l},v="[0-9](_?[0-9])*",g=`\\.(${v})`,b="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",y={className:"number",variants:[{begin:`(\\b(${b})((${g})|\\.)?|(${g}))[eE][+-]?(${v})\\b`},{begin:`\\b(${b})\\b((${g})\\b|\\.)?|(${g})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:m,contains:[]},w={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},E={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,_],subLanguage:"css"}},x={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,_]},O=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),S={className:"comment",variants:[O,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},N=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,w,E,x,y];_.contains=N.concat({begin:/\{/,end:/\}/,keywords:m,contains:["self"].concat(N)});const A=[].concat(S,_.contains),C=A.concat([{begin:/\(/,end:/\)/,keywords:m,contains:["self"].concat(A)}]),T={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:m,contains:C},k={variants:[{match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,t.concat(d,"(",t.concat(/\./,d),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},R={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...a,...o]}},L={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},I={variants:[{match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[T],illegal:/%/},D={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function M(e){return t.concat("(?!",e.join("|"),")")}const P={match:t.concat(/\b/,M([...s,"super"]),d,t.lookahead(/\(/)),className:"title.function",relevance:0},$={begin:t.concat(/\./,t.lookahead(t.concat(d,/(?![0-9A-Za-z$_(])/))),end:d,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},j={match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},T]},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",F={match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(B)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[T]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:m,exports:{PARAMS_CONTAINS:C,CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),L,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,w,E,x,S,y,R,{className:"attr",begin:d+t.lookahead(":"),relevance:0},F,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[S,e.REGEXP_MODE,{className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:m,contains:C}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:p.begin,end:p.end},{match:f},{begin:h.begin,"on:begin":h.isTrulyOpeningTag,end:h.end}],subLanguage:"xml",contains:[{begin:h.begin,end:h.end,skip:!0,contains:["self"]}]}]},I,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[T,e.inherit(e.TITLE_MODE,{begin:d,className:"title.function"})]},{match:/\.\.\./,relevance:0},$,{match:"\\$"+d,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[T]},P,D,k,j,{match:/\$[(.]/}]}}function d(e){const t=u(e),a=n,o=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],s={beginKeywords:"namespace",end:/\{/,excludeEnd:!0,contains:[t.exports.CLASS_REFERENCE]},d={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:o},contains:[t.exports.CLASS_REFERENCE]},p={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},f=["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"],h={$pattern:n,keyword:r.concat(f),literal:i,built_in:c.concat(o),"variable.language":l},m={className:"meta",begin:"@"+a},v=(e,t,n)=>{const r=e.contains.findIndex(e=>e.label===t);if(-1===r)throw new Error("can not find mode to replace");e.contains.splice(r,1,n)};Object.assign(t.keywords,h),t.exports.PARAMS_CONTAINS.push(m),t.contains=t.contains.concat([m,s,d]),v(t,"shebang",e.SHEBANG()),v(t,"use_strict",p);const g=t.contains.find(e=>"func.def"===e.label);return g.relevance=0,Object.assign(t,{name:"TypeScript",aliases:["ts","tsx"]}),t}e.exports=d},"1fcb":function(e,t,n){var r=n("3336"),i=n("c294"),a=i((function(e,t,n){r(e,t,n)}));e.exports=a},"1fce":function(e,t){function n(e,t){var n=-1,r=null==e?0:e.length,i=Array(r);while(++ni[data-v-152d892c]{font-size:20px;height:20px;margin-right:5px;width:20px}.search-box[data-v-152d892c]{height:40px;margin-left:10px;min-width:180px}",""]),e.exports=t},2105:function(e,t,n){(function(t,n){e.exports=n()})("undefined"!==typeof self&&self,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),i=n(2),a=function(){function e(t,n){this.expression=t,this.options=n,this.expressionParts=new Array(5),e.locales[n.locale]?this.i18n=e.locales[n.locale]:(console.warn("Locale '"+n.locale+"' could not be found; falling back to 'en'."),this.i18n=e.locales["en"]),void 0===n.use24HourTimeFormat&&(n.use24HourTimeFormat=this.i18n.use24HourTimeFormatByDefault())}return e.toString=function(t,n){var r=void 0===n?{}:n,i=r.throwExceptionOnParseError,a=void 0===i||i,o=r.verbose,s=void 0!==o&&o,l=r.dayOfWeekStartIndexZero,c=void 0===l||l,u=r.use24HourTimeFormat,d=r.locale,p=void 0===d?"en":d,f={throwExceptionOnParseError:a,verbose:s,dayOfWeekStartIndexZero:c,use24HourTimeFormat:u,locale:p},h=new e(t,f);return h.getFullDescription()},e.initialize=function(t){e.specialCharacters=["/","-",",","*"],t.load(e.locales)},e.prototype.getFullDescription=function(){var e="";try{var t=new i.CronParser(this.expression,this.options.dayOfWeekStartIndexZero);this.expressionParts=t.parse();var n=this.getTimeOfDayDescription(),r=this.getDayOfMonthDescription(),a=this.getMonthDescription(),o=this.getDayOfWeekDescription(),s=this.getYearDescription();e+=n+r+o+a+s,e=this.transformVerbosity(e,this.options.verbose),e=e.charAt(0).toLocaleUpperCase()+e.substr(1)}catch(l){if(this.options.throwExceptionOnParseError)throw""+l;e=this.i18n.anErrorOccuredWhenGeneratingTheExpressionD()}return e},e.prototype.getTimeOfDayDescription=function(){var t=this.expressionParts[0],n=this.expressionParts[1],i=this.expressionParts[2],a="";if(r.StringUtilities.containsAny(n,e.specialCharacters)||r.StringUtilities.containsAny(i,e.specialCharacters)||r.StringUtilities.containsAny(t,e.specialCharacters))if(t||!(n.indexOf("-")>-1)||n.indexOf(",")>-1||n.indexOf("/")>-1||r.StringUtilities.containsAny(i,e.specialCharacters))if(!t&&i.indexOf(",")>-1&&-1==i.indexOf("-")&&-1==i.indexOf("/")&&!r.StringUtilities.containsAny(n,e.specialCharacters)){var o=i.split(",");a+=this.i18n.at();for(var s=0;s0&&c.length>0&&(a+=", "),a+=c,a.length>0&&u.length>0&&(a+=", "),a+=u}else{var d=n.split("-");a+=r.StringUtilities.format(this.i18n.everyMinuteBetweenX0AndX1(),this.formatTime(i,d[0],""),this.formatTime(i,d[1],""))}else a+=this.i18n.atSpace()+this.formatTime(i,n,t);return a},e.prototype.getSecondsDescription=function(){var e=this,t=this.getSegmentDescription(this.expressionParts[0],this.i18n.everySecond(),(function(e){return e}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Seconds(),t)}),(function(t){return e.i18n.secondsX0ThroughX1PastTheMinute()}),(function(t){return"0"==t?"":parseInt(t)<20?e.i18n.atX0SecondsPastTheMinute():e.i18n.atX0SecondsPastTheMinuteGt20()||e.i18n.atX0SecondsPastTheMinute()}));return t},e.prototype.getMinutesDescription=function(){var e=this,t=this.expressionParts[0],n=this.expressionParts[2],i=this.getSegmentDescription(this.expressionParts[1],this.i18n.everyMinute(),(function(e){return e}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Minutes(),t)}),(function(t){return e.i18n.minutesX0ThroughX1PastTheHour()}),(function(r){try{return"0"==r&&-1==n.indexOf("/")&&""==t?e.i18n.everyHour():parseInt(r)<20?e.i18n.atX0MinutesPastTheHour():e.i18n.atX0MinutesPastTheHourGt20()||e.i18n.atX0MinutesPastTheHour()}catch(i){return e.i18n.atX0MinutesPastTheHour()}}));return i},e.prototype.getHoursDescription=function(){var e=this,t=this.expressionParts[2],n=this.getSegmentDescription(t,this.i18n.everyHour(),(function(t){return e.formatTime(t,"0","")}),(function(t){return r.StringUtilities.format(e.i18n.everyX0Hours(),t)}),(function(t){return e.i18n.betweenX0AndX1()}),(function(t){return e.i18n.atX0()}));return n},e.prototype.getDayOfWeekDescription=function(){var e=this,t=this.i18n.daysOfTheWeek(),n=null;return n="*"==this.expressionParts[5]?"":this.getSegmentDescription(this.expressionParts[5],this.i18n.commaEveryDay(),(function(e){var n=e;return e.indexOf("#")>-1?n=e.substr(0,e.indexOf("#")):e.indexOf("L")>-1&&(n=n.replace("L","")),t[parseInt(n)]}),(function(t){return 1==parseInt(t)?"":r.StringUtilities.format(e.i18n.commaEveryX0DaysOfTheWeek(),t)}),(function(t){return e.i18n.commaX0ThroughX1()}),(function(t){var n=null;if(t.indexOf("#")>-1){var r=t.substring(t.indexOf("#")+1),i=null;switch(r){case"1":i=e.i18n.first();break;case"2":i=e.i18n.second();break;case"3":i=e.i18n.third();break;case"4":i=e.i18n.fourth();break;case"5":i=e.i18n.fifth();break}n=e.i18n.commaOnThe()+i+e.i18n.spaceX0OfTheMonth()}else if(t.indexOf("L")>-1)n=e.i18n.commaOnTheLastX0OfTheMonth();else{var a="*"!=e.expressionParts[3];n=a?e.i18n.commaAndOnX0():e.i18n.commaOnlyOnX0()}return n})),n},e.prototype.getMonthDescription=function(){var e=this,t=this.i18n.monthsOfTheYear(),n=this.getSegmentDescription(this.expressionParts[4],"",(function(e){return t[parseInt(e)-1]}),(function(t){return 1==parseInt(t)?"":r.StringUtilities.format(e.i18n.commaEveryX0Months(),t)}),(function(t){return e.i18n.commaMonthX0ThroughMonthX1()||e.i18n.commaX0ThroughX1()}),(function(t){return e.i18n.commaOnlyInMonthX0?e.i18n.commaOnlyInMonthX0():e.i18n.commaOnlyInX0()}));return n},e.prototype.getDayOfMonthDescription=function(){var e=this,t=null,n=this.expressionParts[3];switch(n){case"L":t=this.i18n.commaOnTheLastDayOfTheMonth();break;case"WL":case"LW":t=this.i18n.commaOnTheLastWeekdayOfTheMonth();break;default:var i=n.match(/(\d{1,2}W)|(W\d{1,2})/);if(i){var a=parseInt(i[0].replace("W","")),o=1==a?this.i18n.firstWeekday():r.StringUtilities.format(this.i18n.weekdayNearestDayX0(),a.toString());t=r.StringUtilities.format(this.i18n.commaOnTheX0OfTheMonth(),o);break}var s=n.match(/L-(\d{1,2})/);if(s){var l=s[1];t=r.StringUtilities.format(this.i18n.commaDaysBeforeTheLastDayOfTheMonth(),l);break}if("*"==n&&"*"!=this.expressionParts[5])return"";t=this.getSegmentDescription(n,this.i18n.commaEveryDay(),(function(t){return"L"==t?e.i18n.lastDay():e.i18n.dayX0?r.StringUtilities.format(e.i18n.dayX0(),t):t}),(function(t){return"1"==t?e.i18n.commaEveryDay():e.i18n.commaEveryX0Days()}),(function(t){return e.i18n.commaBetweenDayX0AndX1OfTheMonth()}),(function(t){return e.i18n.commaOnDayX0OfTheMonth()}));break}return t},e.prototype.getYearDescription=function(){var e=this,t=this.getSegmentDescription(this.expressionParts[6],"",(function(e){return/^\d+$/.test(e)?new Date(parseInt(e),1).getFullYear().toString():e}),(function(t){return r.StringUtilities.format(e.i18n.commaEveryX0Years(),t)}),(function(t){return e.i18n.commaYearX0ThroughYearX1()||e.i18n.commaX0ThroughX1()}),(function(t){return e.i18n.commaOnlyInYearX0?e.i18n.commaOnlyInYearX0():e.i18n.commaOnlyInX0()}));return t},e.prototype.getSegmentDescription=function(e,t,n,i,a,o){var s=this,l=null;if(e)if("*"===e)l=t;else if(r.StringUtilities.containsAny(e,["/","-",","]))if(e.indexOf("/")>-1){var c=e.split("/");if(l=r.StringUtilities.format(i(c[1]),c[1]),c[0].indexOf("-")>-1){var u=this.generateBetweenSegmentDescription(c[0],a,n);0!=u.indexOf(", ")&&(l+=", "),l+=u}else if(!r.StringUtilities.containsAny(c[0],["*",","])){var d=r.StringUtilities.format(o(c[0]),n(c[0]));d=d.replace(", ",""),l+=r.StringUtilities.format(this.i18n.commaStartingX0(),d)}}else if(e.indexOf(",")>-1){c=e.split(",");for(var p="",f=0;f0&&c.length>2&&(p+=",",f0&&c.length>1&&(f==c.length-1||2==c.length)&&(p+=this.i18n.spaceAnd()+" "),c[f].indexOf("-")>-1){u=this.generateBetweenSegmentDescription(c[f],(function(e){return s.i18n.commaX0ThroughX1()}),n);u=u.replace(", ",""),p+=u}else p+=n(c[f]);l=r.StringUtilities.format(o(e),p)}else e.indexOf("-")>-1&&(l=this.generateBetweenSegmentDescription(e,a,n));else l=r.StringUtilities.format(o(e),n(e));else l="";return l},e.prototype.generateBetweenSegmentDescription=function(e,t,n){var i="",a=e.split("-"),o=n(a[0]),s=n(a[1]);s=s.replace(":00",":59");var l=t(e);return i+=r.StringUtilities.format(l,o,s),i},e.prototype.formatTime=function(e,t,n){var r=parseInt(e),i="",a=!1;this.options.use24HourTimeFormat||(a=this.i18n.setPeriodBeforeTime&&this.i18n.setPeriodBeforeTime(),i=a?this.getPeriod(r)+" ":" "+this.getPeriod(r),r>12&&(r-=12),0===r&&(r=12));var o=t,s="";return n&&(s=":"+("00"+n).substring(n.length)),""+(a?i:"")+("00"+r.toString()).substring(r.toString().length)+":"+("00"+o.toString()).substring(o.toString().length)+s+(a?"":i)},e.prototype.transformVerbosity=function(e,t){return t||(e=e.replace(new RegExp(", "+this.i18n.everyMinute(),"g"),""),e=e.replace(new RegExp(", "+this.i18n.everyHour(),"g"),""),e=e.replace(new RegExp(this.i18n.commaEveryDay(),"g"),""),e=e.replace(/\, ?$/,"")),e},e.prototype.getPeriod=function(e){return e>=12?this.i18n.pm&&this.i18n.pm()||"PM":this.i18n.am&&this.i18n.am()||"AM"},e.locales={},e}();t.ExpressionDescriptor=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.format=function(e){for(var t=[],n=1;n-1}))},e}();t.StringUtilities=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){void 0===t&&(t=!0),this.expression=e,this.dayOfWeekStartIndexZero=t}return e.prototype.parse=function(){var e=this.extractParts(this.expression);return this.normalize(e),this.validate(e),e},e.prototype.extractParts=function(e){if(!this.expression)throw new Error("Expression is empty");var t=e.trim().split(/[ ]+/);if(t.length<5)throw new Error("Expression has only "+t.length+" part"+(1==t.length?"":"s")+". At least 5 parts are required.");if(5==t.length)t.unshift(""),t.push("");else if(6==t.length)/\d{4}$/.test(t[5])?t.unshift(""):t.push("");else if(t.length>7)throw new Error("Expression has "+t.length+" parts; too many!");return t},e.prototype.normalize=function(e){var t=this;if(e[3]=e[3].replace("?","*"),e[5]=e[5].replace("?","*"),e[2]=e[2].replace("?","*"),0==e[0].indexOf("0/")&&(e[0]=e[0].replace("0/","*/")),0==e[1].indexOf("0/")&&(e[1]=e[1].replace("0/","*/")),0==e[2].indexOf("0/")&&(e[2]=e[2].replace("0/","*/")),0==e[3].indexOf("1/")&&(e[3]=e[3].replace("1/","*/")),0==e[4].indexOf("1/")&&(e[4]=e[4].replace("1/","*/")),0==e[5].indexOf("1/")&&(e[5]=e[5].replace("1/","*/")),0==e[6].indexOf("1/")&&(e[6]=e[6].replace("1/","*/")),e[5]=e[5].replace(/(^\d)|([^#/\s]\d)/g,(function(e){var n=e.replace(/\D/,""),r=n;return t.dayOfWeekStartIndexZero?"7"==n&&(r="0"):r=(parseInt(n)-1).toString(),e.replace(n,r)})),"L"==e[5]&&(e[5]="6"),"?"==e[3]&&(e[3]="*"),e[3].indexOf("W")>-1&&(e[3].indexOf(",")>-1||e[3].indexOf("-")>-1))throw new Error("The 'W' character can be specified only when the day-of-month is a single day, not a range or list of days.");var n={SUN:0,MON:1,TUE:2,WED:3,THU:4,FRI:5,SAT:6};for(var r in n)e[5]=e[5].replace(new RegExp(r,"gi"),n[r].toString());var i={JAN:1,FEB:2,MAR:3,APR:4,MAY:5,JUN:6,JUL:7,AUG:8,SEP:9,OCT:10,NOV:11,DEC:12};for(var a in i)e[4]=e[4].replace(new RegExp(a,"gi"),i[a].toString());"0"==e[0]&&(e[0]=""),/\*|\-|\,|\//.test(e[2])||!/\*|\//.test(e[1])&&!/\*|\//.test(e[0])||(e[2]+="-"+e[2]);for(var o=0;o-1&&!/^\*|\-|\,/.test(e[o])){var s=null;switch(o){case 4:s="12";break;case 5:s="6";break;case 6:s="9999";break;default:s=null;break}if(null!=s){var l=e[o].split("/");e[o]=l[0]+"-"+s+"/"+l[1]}}},e.prototype.validate=function(e){this.assertNoInvalidCharacters("DOW",e[5]),this.assertNoInvalidCharacters("DOM",e[3])},e.prototype.assertNoInvalidCharacters=function(e,t){var n=t.match(/[A-KM-VX-Z]+/gi);if(n&&n.length)throw new Error(e+" part contains invalid values: '"+n.toString()+"'")},e}();t.CronParser=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.prototype.atX0SecondsPastTheMinuteGt20=function(){return null},e.prototype.atX0MinutesPastTheHourGt20=function(){return null},e.prototype.commaMonthX0ThroughMonthX1=function(){return null},e.prototype.commaYearX0ThroughYearX1=function(){return null},e.prototype.use24HourTimeFormatByDefault=function(){return!1},e.prototype.anErrorOccuredWhenGeneratingTheExpressionD=function(){return"An error occured when generating the expression description. Check the cron expression syntax."},e.prototype.everyMinute=function(){return"every minute"},e.prototype.everyHour=function(){return"every hour"},e.prototype.atSpace=function(){return"At "},e.prototype.everyMinuteBetweenX0AndX1=function(){return"Every minute between %s and %s"},e.prototype.at=function(){return"At"},e.prototype.spaceAnd=function(){return" and"},e.prototype.everySecond=function(){return"every second"},e.prototype.everyX0Seconds=function(){return"every %s seconds"},e.prototype.secondsX0ThroughX1PastTheMinute=function(){return"seconds %s through %s past the minute"},e.prototype.atX0SecondsPastTheMinute=function(){return"at %s seconds past the minute"},e.prototype.everyX0Minutes=function(){return"every %s minutes"},e.prototype.minutesX0ThroughX1PastTheHour=function(){return"minutes %s through %s past the hour"},e.prototype.atX0MinutesPastTheHour=function(){return"at %s minutes past the hour"},e.prototype.everyX0Hours=function(){return"every %s hours"},e.prototype.betweenX0AndX1=function(){return"between %s and %s"},e.prototype.atX0=function(){return"at %s"},e.prototype.commaEveryDay=function(){return", every day"},e.prototype.commaEveryX0DaysOfTheWeek=function(){return", every %s days of the week"},e.prototype.commaX0ThroughX1=function(){return", %s through %s"},e.prototype.first=function(){return"first"},e.prototype.second=function(){return"second"},e.prototype.third=function(){return"third"},e.prototype.fourth=function(){return"fourth"},e.prototype.fifth=function(){return"fifth"},e.prototype.commaOnThe=function(){return", on the "},e.prototype.spaceX0OfTheMonth=function(){return" %s of the month"},e.prototype.lastDay=function(){return"the last day"},e.prototype.commaOnTheLastX0OfTheMonth=function(){return", on the last %s of the month"},e.prototype.commaOnlyOnX0=function(){return", only on %s"},e.prototype.commaAndOnX0=function(){return", and on %s"},e.prototype.commaEveryX0Months=function(){return", every %s months"},e.prototype.commaOnlyInX0=function(){return", only in %s"},e.prototype.commaOnTheLastDayOfTheMonth=function(){return", on the last day of the month"},e.prototype.commaOnTheLastWeekdayOfTheMonth=function(){return", on the last weekday of the month"},e.prototype.commaDaysBeforeTheLastDayOfTheMonth=function(){return", %s days before the last day of the month"},e.prototype.firstWeekday=function(){return"first weekday"},e.prototype.weekdayNearestDayX0=function(){return"weekday nearest day %s"},e.prototype.commaOnTheX0OfTheMonth=function(){return", on the %s of the month"},e.prototype.commaEveryX0Days=function(){return", every %s days"},e.prototype.commaBetweenDayX0AndX1OfTheMonth=function(){return", between day %s and %s of the month"},e.prototype.commaOnDayX0OfTheMonth=function(){return", on day %s of the month"},e.prototype.commaEveryHour=function(){return", every hour"},e.prototype.commaEveryX0Years=function(){return", every %s years"},e.prototype.commaStartingX0=function(){return", starting %s"},e.prototype.daysOfTheWeek=function(){return["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},e.prototype.monthsOfTheYear=function(){return["January","February","March","April","May","June","July","August","September","October","November","December"]},e}();t.en=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(0),i=n(5);r.ExpressionDescriptor.initialize(new i.enLocaleLoader),t.default=r.ExpressionDescriptor;var a=r.ExpressionDescriptor.toString;t.toString=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3),i=function(){function e(){}return e.prototype.load=function(e){e["en"]=new r.en},e}();t.enLocaleLoader=i}])}))},"212d":function(e,t,n){var r=n("bf10"),i=n("201b"),a=r(i,"Promise");e.exports=a},"21a1":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".operator .vs__dropdown-option[data-v-3512fedb]{padding:3px 6px 3px 6px!important}.remove-expression[data-v-3512fedb]{padding:8px;position:absolute;margin-bottom:10px;right:0;top:0;z-index:2}.remove-expression i[data-v-3512fedb]{font-size:2em}.remove-container[data-v-3512fedb]{display:flex;justify-content:center}.match-expression-header[data-v-3512fedb],.match-expression-row[data-v-3512fedb]{display:grid;grid-template-columns:1fr 1fr 1fr;margin:5px 0;grid-gap:1.75%}.match-expression-header>LABEL[data-v-3512fedb],.match-expression-row>LABEL[data-v-3512fedb]{margin:0}.match-expression-header[data-v-3512fedb]:not(.view),.match-expression-row[data-v-3512fedb]:not(.view){grid-template-columns:repeat(3,1fr) 50px}.match-expression-row>div>input[data-v-3512fedb]{min-height:40px!important}.match-expression-header-matching[data-v-3512fedb],.match-expression-row-matching[data-v-3512fedb]{grid-template-columns:1fr 1fr 1fr 1fr}.match-expression-header-matching[data-v-3512fedb]:not(.view),.match-expression-row-matching[data-v-3512fedb]:not(.view){grid-template-columns:1fr 1fr 1fr 1fr 100px}",""]),e.exports=t},"21a3":function(e,t){const n="2.0.0",r=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,a=16,o=r-6,s=["major","premajor","minor","preminor","patch","prepatch","prerelease"];e.exports={MAX_LENGTH:r,MAX_SAFE_COMPONENT_LENGTH:a,MAX_SAFE_BUILD_LENGTH:o,MAX_SAFE_INTEGER:i,RELEASE_TYPES:s,SEMVER_SPEC_VERSION:n,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}},"22a0":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"mt-20 mb-20 sources__container"},[t("div",[t("LabeledInput",{ref:"authorityName",staticClass:"mb-20 mt-20",attrs:{"data-testid":"ps-config-authority-name-input",type:"multiline",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.endpoint"),mode:e.mode,disabled:e.isView,placeholder:e.t("kubewarden.policyServerConfig.sourceAuthorities.placeholder"),required:""},model:{value:e.chartValues.registryName,callback:function(t){e.$set(e.chartValues,"registryName",t)},expression:"chartValues.registryName"}}),[e._l(e.chartValues.certs,(function(n,r){return[t("div",{key:r,staticClass:"sources__container__cert"},[t("LabeledInput",{ref:"authorityCert",refInFor:!0,staticClass:"p-10 col span-6",attrs:{"data-testid":"ps-config-authority-cert-input-"+r,type:"multiline",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.label"),mode:e.mode,disabled:e.isView,required:"",placeholder:e.t("secret.certificate.certificatePlaceholder")},model:{value:e.chartValues.certs[r],callback:function(t){e.$set(e.chartValues.certs,r,t)},expression:"chartValues.certs[cIndex]"}}),t("div",{staticClass:"remove"},[t("button",{staticClass:"btn role-link remove",attrs:{"data-testid":"ps-config-authority-cert-remove-button-"+r,type:"button",disabled:e.isView},on:{click:function(t){return e.removeCert(r)}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.remove"))+" ")])])],1)]})),t("button",{staticClass:"btn role-tertiary add",attrs:{"data-testid":"ps-config-authority-cert-add-button",type:"button",disabled:e.isView},on:{click:function(t){return e.addCertificate()}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.add"))+" ")]),t("FileSelector",{staticClass:"btn role-link",attrs:{"data-testid":"ps-config-authority-select-file",label:e.t("kubewarden.policyServerConfig.sourceAuthorities.certificate.file"),disabled:e.isView},on:{selected:function(t){return e.handleSelectFile(t)}}})]],2),e._t("remove"),t("hr",{staticClass:"mt-20 mb-20"})],2)},i=[],a=n("da25"),o=n("bddd"),s=n("8b2c"),l=n("8e93"),c={props:{mode:{type:String,default:a["t"]},value:{type:Object,default:()=>{}}},components:{FileSelector:s["b"],LabeledInput:l["a"]},data(){return{chartValues:this.value}},watch:{"chartValues.registryName":"update","chartValues.certs":{deep:!0,handler:"update"}},computed:{isView(){return this.mode===a["A"]}},methods:{addCertificate(){this.chartValues.certs.push("")},handleSelectFile(e){Object(s["a"])("crt"),this.chartValues.certs.push(e)},removeCert(e){Object(o["h"])(this.chartValues.certs,e)},update(){this.$emit("update",this.value)}}},u=c,d=(n("3b52"),n("d802")),p=Object(d["a"])(u,r,i,!1,null,"5fa70040",null);t["default"]=p.exports},2357:function(e,t,n){var r=n("e972"),i=/^\s+/;function a(e){return e?e.slice(0,r(e)+1).replace(i,""):e}e.exports=a},2359:function(e,t,n){"use strict";var r=n("8bbf"),i=n.n(r),a=n("9ce4"),o=n("907c"),s=n("8535");const l="all",c="ns",u="project",d=c+"://",p=u+"://",f=l,h=l+"://system",m=l+"://user",v="namespaced://true",g="namespaced://false",b={DIVIDER:"divider",PROJECT:"project",NAMESPACE:"namespace",SPECIAL:"special"};var y=n("6d47");n("2cb5"),n("1fcb"),n("79ad"),n("c5e6"),n("9c09");n("0788");var _=n("66fb");function w(e,t,n){return t=E(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e){var t=x(e,"string");return"symbol"===typeof t?t:String(t)}function x(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class O{constructor(){w(this,"cachedGcPrefs",_["a"]),w(this,"cachedGcPrefsStamp",""),w(this,"debugLog",(...e)=>{O.ENABLE_DEBUG_LOGGING&&console.debug("GC",...e)}),w(this,"gcLastRun",0),w(this,"getUiPerfGarbageCollection",e=>{var t;const n=null===(t=e.management.types[o["l"].SETTING])||void 0===t?void 0:t.list.find(e=>e.id===s["b"].UI_PERFORMANCE);if(!n||!n.value)return;const r=`${n.metadata.generation}-${n.metadata.resourceVersion}`;if(this.cachedGcPrefsStamp!==r){this.debugLog(`Updating ${s["b"].UI_PERFORMANCE} cache`),this.cachedGcPrefsStamp=r;const e=JSON.parse(n.value);this.cachedGcPrefs=e.garbageCollection}return this.cachedGcPrefs}),w(this,"lastAccessedCache",{}),w(this,"lastRouteChange",0)}gcEnabledAll(e,t){return this.gcEnabledForStore(e.state)&&this.gcEnabledSetting(e)&&this.gcEnabledForType(e,t)}gcEnabledSetting(e){const{rootState:t}=e,n=this.getUiPerfGarbageCollection(t);return null===n||void 0===n?void 0:n.enabled}gcEnabledForStore(e){var t;return null===e||void 0===e||null===(t=e.config)||void 0===t?void 0:t.supportsGc}gcEnabledForType(e,t){const{getters:n}=e;return!(!t||n.gcIgnoreTypes[t])}gcEnabledInterval(e){const{rootState:t}=e,n=this.getUiPerfGarbageCollection(t);return{enabled:null===n||void 0===n?void 0:n.enabledInterval,interval:(null===n||void 0===n?void 0:n.interval)||0}}gcEnabledRoute(e){const{rootState:t}=e,n=this.getUiPerfGarbageCollection(t);return null===n||void 0===n?void 0:n.enabledOnNavigate}garbageCollect(e,t={}){const n=(new Date).getTime();if(null===this.gcLastRun||n-this.gcLastRun{var d;if(!l)return void this.debugLog(a+": Skipping (no accessed time)");if(!this.gcEnabledForType(e,a))return void this.debugLog(a+": Skipping (type ignored by store)");if(t[a])return void this.debugLog(a+": Skipping (navigating to type)");if(n-l<=c)return void this.debugLog(a+": Skipping (recently accessed)");if(void 0!==this.lastRouteChange&&this.lastRouteChange0&&console.info("Garbage Collected Resources",r),this.debugLog("------ Finished ------")}gcUpdateLastAccessed(e,t){if(!this.gcEnabledAll(e,t))return;const n=e.state.config.namespace;this.lastAccessedCache[n]||(this.lastAccessedCache[n]={}),this.lastAccessedCache[n][t]=(new Date).getTime()}gcUpdateRouteChanged(){this.lastRouteChange=(new Date).getTime()}gcResetStore(e){const t=e.config.namespace;delete this.lastAccessedCache[t],this.debugLog("Forgetting Store:",t)}gcResetType(e,t){const n=e.config.namespace;this.lastAccessedCache[n]&&(delete this.lastAccessedCache[n][t],this.debugLog("Forgetting Type:",n,t))}}w(O,"ENABLE_DEBUG_LOGGING",!1),w(O,"GC_RE_RUN_GAP",5e3);new O;n("4048"),n("080b");const S=e=>{const t=e["management/byId"](o["l"].SETTING,s["b"].UI_PERFORMANCE);let n={};if(null!==t&&void 0!==t&&t.value)try{n=JSON.parse(t.value)}catch(r){console.warn("ui-performance setting contains invalid data")}return Object.assign(s["a"],n||{})};function N(e,t,n){return t=A(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function A(e){var t=C(e,"string");return"symbol"===typeof t?t:String(t)}function C(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class T{isApplicable(e){return Array.isArray(e.namespaced)}isEnabled(e){var t;const n=e["currentProduct"];if("cluster"!==(null===n||void 0===n?void 0:n.inStore))return!1;if(null!==n&&void 0!==n&&n.showWorkspaceSwitcher)return!1;const r=S(e);return!(null===(t=r.forceNsFilterV2)||void 0===t||!t.enabled)}checkAndCreateParam(e){return this.isApplicable(e)?this.createParam(e.namespaced):""}createParam(e){if(!e||!e.length)return"";const t=e.reduce((e,t)=>{const n=t.replace(d,"").replace(p,"");return n.startsWith("-")?e.exclude.push(t.substring(1,t.length)):e.include.push(n),e},{include:[],exclude:[]});let n="";return t.include.length&&(n=`${T.param}=${t.include.join(",")}`),t.exclude.length&&(n=`${T.param}!=${t.exclude.join(",")}`),n}}N(T,"param","projectsornamespaces");var k=new T,R={data(){return{forceUpdateLiveAndDelayed:0}},computed:{...Object(a["b"])(["currentProduct","currentCluster","namespaceFilters"]),namespaceFilterRequired(){return this.__namespaceRequired&&!this.__validFilter},namespaceFilter(){return this.__namespaceRequired?this.__validFilter:""},__validFilter(){const e=this.namespaceFilters.length&&this.namespaceFilters.every(e=>e.startsWith(c)||e.startsWith(u));return e?this.namespaceFilters:null},__namespaceRequired(){return!!k.isEnabled(this.$store.getters)&&this.__areResourcesNamespaced},__areResourcesNamespaced(){return"cluster"===this.currentProduct.inStore&&(this.loadResources||[]).every(e=>{var t;const n=this.$store.getters["cluster/schemaFor"](e);return null===n||void 0===n||null===(t=n.attributes)||void 0===t?void 0:t.namespaced})}},watch:{async namespaceFilter(e){e&&(this.$options.name!==y["a"]&&this.$fetch&&await this.$fetch(),this.forceUpdateLiveAndDelayed=(new Date).getTime())}}},L=n("5000"),I=n("bddd"),D=n("e24b"),M=n("9c36");function P(e,t,n){return t=$(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function $(e){var t=j(e,"string");return"symbol"===typeof t?t:String(t)}function j(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class B{constructor(){P(this,"validNsProjectFilters",[f,h,m,h,b.NAMESPACE,b.PROJECT,v,g])}getSettings({rootGetters:e}){const t=S(e);return t.serverPagination}isSteveCacheEnabled({rootGetters:e}){var t;return null===(t=e["features/get"])||void 0===t?void 0:t.call(e,M["b"])}isEnabled({rootGetters:e},t){var n;if(!this.isSteveCacheEnabled({rootGetters:e}))return!1;const r=this.getSettings({rootGetters:e});if(null===r||void 0===r||!r.enabled)return!1;if(!t)return!1;const i=null===(n=r.stores)||void 0===n?void 0:n[t.store];if(!i)return!1;if(!t.resource)return!0;if(i.resources.enableAll)return!0;if(!t.resource.id)return!1;const a=!e["type-map/configuredHeaders"](t.resource.id)&&!e["type-map/configuredPaginationHeaders"](t.resource.id)&&!e["type-map/hasCustomList"](t.resource.id);return!(!i.resources.enableSome.generic||!a)||!!i.resources.enableSome.enabled.includes(t.resource.id)}validateNsProjectFilters(e){return null===e||void 0===e?void 0:e.every(e=>this.validateNsProjectFilter(e))}validateNsProjectFilter(e){return!(!e.startsWith(d)&&!e.startsWith(p))||this.validNsProjectFilters.includes(e)}paginationFilterEqual(e,t){return e.param===t.param&&e.equals===t.equals&&Object(I["k"])(e.fields,t.fields,!0)}paginationFiltersEqual(e,t){if(e&&(null===e||void 0===e?void 0:e.length)!==(null===t||void 0===t?void 0:t.length))return!1;for(let n=0;nnew z({value:e.replace(d,"").replace(p,"")}));super({param:"projectsornamespaces",equals:e,fields:n})}}class X{constructor({page:e=1,pageSize:t=10,sort:n=[],filters:r=[],projectsOrNamespaces:i=[]}){H(this,"page",void 0),H(this,"pageSize",void 0),H(this,"sort",void 0),H(this,"filters",void 0),H(this,"projectsOrNamespaces",void 0),this.page=e,this.pageSize=t,this.sort=n,this.filters=r?Array.isArray(r)?r:[r]:[],this.projectsOrNamespaces=i?Array.isArray(i)?i:[i]:[]}}function Z(e,t,n){return t=J(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function J(e){var t=Q(e,"string");return"symbol"===typeof t?t:String(t)}function Q(e,t){if("object"!==typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}class ee{handlePrefAndSettingFilter(e,t,n){return e.reduce((e,r)=>{const i=!t&&r.isObscure,a=!!n&&r.isSystem;return(i||a)&&e.push(W.createSingleField({field:"metadata.namespace",value:r.name,equals:!1})),e},[])}handleSystemOrUserFilter(e,t,n){const r=e.filter(e=>e.isSystem);return t?[W.createMultipleFields(r.map(e=>new z({field:"metadata.namespace",value:e.name})))]:r.map(e=>W.createSingleField({field:"metadata.namespace",value:e.name,equals:!1}))}handleSelectionFilter(e,t){const n=[new Y({projectOrNamespace:e})];return t?{projectsOrNamespaces:n,filters:e.filter(e=>e.startsWith(p)).map(e=>W.createSingleField({field:"metadata.namespace",value:e.replace(p,""),equals:!1}))}:{projectsOrNamespaces:n,filters:[]}}}class te extends ee{convertArrayPath(e){return e.startsWith("metadata.fields.")?`metadata.fields[${e.substring(16)}]`:e}createSortForPagination(e){return this.convertArrayPath(e)}createParamsFromNsFilter({allNamespaces:e,selection:t,isAllNamespaces:n,isLocalCluster:r,showDynamicRancherNamespaces:i,productHidesSystemNamespaces:a}){if(n&&i&&!a)return{projectsOrNamespaces:[],filters:[]};let o=[],s=[];i&&!a||(s=this.handlePrefAndSettingFilter(e,i,a));const l=t[0]===h,c=t[0]===m;if(1===t.length&&(l||c))s.push(...this.handleSystemOrUserFilter(e,l,c));else{const e=this.handleSelectionFilter(t,r);o=e.projectsOrNamespaces,s.push(...e.filters)}return{projectsOrNamespaces:o,filters:s}}createParamsForPagination(e,t){var n,r;if(!t.pagination)return;const i=[],a=this.convertPaginationParams(e,t.pagination.projectsOrNamespaces);if(a&&i.push(a),t.pagination.page&&i.push("page="+t.pagination.page),t.pagination.pageSize&&i.push("pagesize="+t.pagination.pageSize),null!==(n=t.pagination.sort)&&void 0!==n&&n.length){const n={checked:new Array,invalid:new Array},r=t.pagination.sort.map(t=>(this.validateField(n,e,t.field),`${t.asc?"":"-"}${this.convertArrayPath(t.field)}`)).join(",");i.push("sort="+r),n.invalid.length&&console.warn(`Pagination API does not support sorting '${e.id}' by the requested fields: ${Object(I["m"])(n.invalid).join(", ")}`)}if(null!==(r=t.pagination.filters)&&void 0!==r&&r.length){const n=this.convertPaginationParams(e,t.pagination.filters);n&&i.push(n)}return i.join("&")}validateField(e,t,n){n&&(e.checked.includes(n)||(e.checked.push(n),[te.VALID_FIELDS[""],te.VALID_FIELDS[t.id]].find(e=>null===e||void 0===e?void 0:e.find(e=>e.startsWith?!!n.startsWith(e.field)||void 0:n===e.field))||null!==t&&void 0!==t&&t.attributes.columns.find(e=>e.field.replace("$.","").replace("[",".").replace("]","")===n)||e.invalid.push(n)))}convertPaginationParams(e,t=[]){const n={checked:new Array,invalid:new Array},r=t.filter(e=>!!e.fields.length).map(t=>{const r=t.fields.map(t=>{if(t.field){this.validateField(n,e,t.field);const r=t.exact?`'${t.value}'`:t.value;return`${this.convertArrayPath(t.field)}${t.equals?"=":"!="}${r}`}return t.value}).join(",");return`${t.param}${t.equals?"=":"!="}${r}`}),i=r.reduce((e,t)=>(e[t]=!0,e),{}),a=Object.keys(i).join("&");return n.invalid.length&&console.warn(`Pagination API does not support filtering '${e.id}' by the requested fields: ${Object(I["m"])(n.invalid).join(", ")}`),a}}Z(te,"VALID_FIELDS",{"":[{field:"metadata.name"},{field:"metadata.namespace"},{field:"metadata.creationTimestamp"}],[o["p"]]:[{field:"status.nodeInfo.kubeletVersion"},{field:"status.nodeInfo.operatingSystem"}],[o["r"]]:[{field:"spec.containers.image"},{field:"spec.nodeName"}],[o["l"].NODE]:[{field:"status.nodeName"}],[o["b"]]:[{field:"metadata.labels[harvesterhci.io/cloud-init-template]"}],[o["n"]]:[{field:"metadata.labels[field.cattle.io/projectId]"}]});var ne=new te,re={data(){return{forceUpdateLiveAndDelayed:0,pPagination:null,debouncedSetPagination:G()(this.setPagination,50),requestFilters:{filters:[],projectsOrNamespaces:[]}}},methods:{setPagination(e){e&&(this.pPagination=e)},paginationChanged(e){var t;const n=e.filter.searchQuery?e.filter.searchFields.map(t=>new z({field:t,value:e.filter.searchQuery,exact:!1})):[],r=new X({page:e.page,pageSize:e.perPage,sort:null===(t=e.sort)||void 0===t?void 0:t.map(t=>({field:t,asc:!e.descending})),projectsOrNamespaces:this.requestFilters.projectsOrNamespaces,filters:[new W({fields:n}),...this.requestFilters.filters]});this.debouncedSetPagination(r)},namespaceFilterChanged(e){var t,n;if(!this.canPaginate||null===(t=this.schema)||void 0===t||null===(t=t.attributes)||void 0===t||!t.namespaced)return;const{projectsOrNamespaces:r,filters:i}=ne.createParamsFromNsFilter({allNamespaces:this.$store.getters[(null===(n=this.currentProduct)||void 0===n?void 0:n.inStore)+"/all"](o["n"]),selection:e,isAllNamespaces:this.isAllNamespaces,isLocalCluster:this.$store.getters["currentCluster"].isLocal,showDynamicRancherNamespaces:this.showDynamicRancherNamespaces,productHidesSystemNamespaces:this.productHidesSystemNamespaces});this.requestFilters.filters=i,this.requestFilters.projectsOrNamespaces=r,this.pPagination&&this.debouncedSetPagination({...this.pPagination})},paginationEqual(e,t){return!!e.page&&!!F.paginationEqual(e,t)}},computed:{...Object(a["b"])(["currentProduct","isAllNamespaces"]),namespaceFilters(){return this.$store.getters["namespaceFilters"]},paginationNsFilterRequired(){return this.canPaginate&&!this.__validPaginationNsFilter},__validPaginationNsFilter(){return F.validateNsProjectFilters(this.namespaceFilters)},isResourceList(){return!!this.hasListComponent},pagination(){if(!this.isResourceList)return this.canPaginate?this.pPagination:""},canPaginate(){var e,t,n;if(!this.isResourceList)return this.resource&&(null===(e=(t=this.$store.getters)[(null===(n=this.currentProduct)||void 0===n?void 0:n.inStore)+"/paginationEnabled"])||void 0===e?void 0:e.call(t,this.resource.id||this.resource))},paginationResult(){var e;if(!this.isResourceList&&this.canPaginate)return null===(e=this.havePaginated)||void 0===e?void 0:e.result},havePaginated(){var e;if(!this.isResourceList)return this.$store.getters[(null===(e=this.currentProduct)||void 0===e?void 0:e.inStore)+"/havePage"](this.resource)},productHidesSystemNamespaces(){var e;return null===(e=this.currentProduct)||void 0===e?void 0:e.hideSystemResources},showDynamicRancherNamespaces(){return this.$store.getters["prefs/get"](L["a"])}},watch:{rows(e){this.canPaginate&&this.pagination&&!this.isResourceList&&this.pagination.page>1&&0===e.length&&this.setPagination({...this.pagination,page:this.pagination.page-1})},namespaceFilters:{immediate:!0,async handler(e,t){var n;if(!this.canPaginate||null===(n=this.schema)||void 0===n||null===(n=n.attributes)||void 0===n||!n.namespaced)return;if(this.isResourceList)return;const r=!e||0===e.length||e[0]===f,i=!t||0===t.length||t[0]===f;if(r&&i){const e=this.isAllNamespaces&&(!this.showDynamicRancherNamespaces||this.productHidesSystemNamespaces);if(!e)return}1===e.length&&[v,g].includes(e[0])||this.namespaceFilterChanged(e)}},async pagination(e,t){this.canPaginate&&(this.isResourceList||e&&this.$options.name!==y["a"]&&this.$fetch&&!this.paginationEqual(e,t)&&(await this.$fetch(!1),this.forceUpdateLiveAndDelayed=(new Date).getTime()))},async paginationResult(e,t){this.fetchPageSecondaryResources&&e&&e.timestamp!==(null===t||void 0===t?void 0:t.timestamp)&&await this.fetchPageSecondaryResources()}}};const ie=4;t["a"]={mixins:[R,re],data(){const e=this.$store.getters["management/byId"](o["l"].SETTING,s["b"].UI_PERFORMANCE);let t={};if(e&&e.value)try{t=JSON.parse(e.value)}catch(n){console.warn("ui-performance setting contains invalid data")}else t=s["a"];return{perfConfig:t,init:!1,multipleResources:[],loadResources:[this.resource],hasManualRefresh:!1,watch:!0,isTooManyItemsToAutoUpdate:!1,force:!1,incremental:!1,fetchedResourceType:[],paginating:null}},beforeDestroy(){this.init&&(this.$store.dispatch("resource-fetch/clearData"),this.fetchedResourceType.forEach(e=>{this.$store.dispatch(e.currStore+"/incrementLoadCounter",e.type)}))},computed:{...Object(a["b"])({refreshFlag:"resource-fetch/refreshFlag"}),rows(){const e=this.fetchedResourceType.find(e=>e.type===this.resource);return e?this.$store.getters[e.currStore+"/all"](this.resource):[]},loading(){return this.canPaginate?this.paginating:!this.rows.length&&this.$fetchState.pending}},watch:{async refreshFlag(e){this.init&&e&&(await this.$fetch(),this.canPaginate&&this.fetchPageSecondaryResources&&this.fetchPageSecondaryResources(!0))}},methods:{$initializeFetchData(e,t=[],n){if(!this.init){const r=n||this.$store.getters["currentStore"]();this.__gatherResourceFetchData(e,t,r),this.watch||(this.force=!0),this.isTooManyItemsToAutoUpdate&&(this.hasManualRefresh=!0)}},$fetchType(e,t=[],n){var r;const a=n||this.$store.getters["currentStore"]();this.$initializeFetchData(e,t,a),this.fetchedResourceType.find(t=>t.type===e)||this.fetchedResourceType.push({type:e,currStore:a});const o=this.$store.getters[a+"/schemaFor"](e);if(this.canPaginate){if(!this.pagination)return;const t={hasManualRefresh:this.hasManualRefresh,pagination:{...this.pagination},force:null!==this.paginating};i.a.set(this,"paginating",!0);const n=this;return this.$store.dispatch(a+"/findPage",{type:e,opt:t}).finally(()=>i.a.set(n,"paginating",!1))}let s=0;if(this.incremental){const t=this.__getCountForResources([e],this.namespaceFilter,a);s=Math.ceil(t/ie)}const l={incremental:s,watch:this.watch,force:this.force,hasManualRefresh:this.hasManualRefresh};return null!==o&&void 0!==o&&null!==(r=o.attributes)&&void 0!==r&&r.namespaced&&(l.namespaced=this.namespaceFilter),this.$store.dispatch(a+"/findAll",{type:e,opt:l})},__getCountForResources(e,t,n){const r=n||this.$store.getters["currentStore"]();return e.reduce((e,n)=>e+this.__getCountForResource(n,t,r),0)},__getCountForResource(e,t,n){var r,i,a;const s=null===(r=this.$store.getters[n+"/all"](o["c"])[0])||void 0===r?void 0:r.counts[""+e],l=t&&null!==s&&void 0!==s&&s.namespaces?null===s||void 0===s||null===(i=s.namespaces[t])||void 0===i?void 0:i.count:null===s||void 0===s||null===(a=s.summary)||void 0===a?void 0:a.count;return l||0},__gatherResourceFetchData(e,t,n){var r,i,a,o;this.init=!0;const s=null===(r=this.perfConfig)||void 0===r||null===(r=r.manualRefresh)||void 0===r?void 0:r.enabled,l=parseInt((null===(i=this.perfConfig)||void 0===i||null===(i=i.manualRefresh)||void 0===i?void 0:i.threshold)||"0",10),c=null===(a=this.perfConfig)||void 0===a||null===(a=a.incrementalLoading)||void 0===a?void 0:a.enabled,u=parseInt((null===(o=this.perfConfig)||void 0===o||null===(o=o.incrementalLoading)||void 0===o?void 0:o.threshold)||"0",10);this.multipleResources=t;let d=0,p=!0,f=!1,h=!1;const m=this.multipleResources.length?this.multipleResources:[e];d=this.__getCountForResources(m,this.namespaceFilter,n),s&&d>=l?(p=!1,f=!0):this.canPaginate&&(f=!0),h=c&&u>0&&d>=u,this.$store.dispatch("resource-fetch/updateIsTooManyItems",f),this.watch=p,this.isTooManyItemsToAutoUpdate=f,this.incremental=h}}}},2419:function(e,t,n){var r=n("872c"),i=n("aa31"),a=n("7049");function o(e){var t=-1,n=null==e?0:e.length;this.__data__=new r;while(++t*[data-v-36e18737]{margin:5px 20px 5px 0}.subheader .live-data[data-v-36e18737]{color:var(--body-text)}.state-banner[data-v-36e18737]{margin:3px 0 0 0}.masthead-state[data-v-36e18737]{font-size:medium}.masthead-istio .icon[data-v-36e18737]{vertical-align:middle;color:var(--primary)}.left-right-split[data-v-36e18737]{display:grid;align-items:center}.left-right-split .left-half[data-v-36e18737]{grid-column:1}.left-right-split .right-half[data-v-36e18737]{grid-column:2}div.actions-container>div.actions[data-v-36e18737]{display:flex;flex-direction:row;justify-content:flex-end}",""]),e.exports=t},"24cc":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".actions[data-v-3eef3a84]{text-align:right}.machine-name[data-v-3eef3a84]{font-weight:600}",""]),e.exports=t},"24da":function(e,t,n){var r=n("e942");function i(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}e.exports=i},2527:function(e,t,n){var r=n("bb6f");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("03a6b29d",r,!0,{sourceMap:!1,shadowMode:!1})},2589:function(e,t){function n(e,t){return null!=e&&t in Object(e)}e.exports=n},"25c2":function(e,t,n){var r=n("4b2c"),i=n("1fce"),a=n("c316"),o=n("6bcf"),s=1/0,l=r?r.prototype:void 0,c=l?l.toString:void 0;function u(e){if("string"==typeof e)return e;if(a(e))return i(e,u)+"";if(o(e))return c?c.call(e):"";var t=e+"";return"0"==t&&1/e==-s?"-0":t}e.exports=u},2619:function(e,t,n){var r=n("8e14");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("5e08bb6a",r,!0,{sourceMap:!1,shadowMode:!1})},"26f9":function(e,t,n){var r=n("65f5");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("0e925bf8",r,!0,{sourceMap:!1,shadowMode:!1})},"278f":function(e,t){var n="Expected a function";function r(e){if("function"!=typeof e)throw new TypeError(n);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}e.exports=r},"280a":function(e,t,n){var r=n("3584"),i=n("daca"),a=n("356f"),o=n("8bb9"),s=n("fad0"),l=n("d12b"),c=n("629b"),u=1,d=2;function p(e,t){return o(e)&&s(t)?l(c(e),t):function(n){var o=i(n,e);return void 0===o&&o===t?a(n,e):r(t,o,u|d)}}e.exports=p},2822:function(e,t,n){var r=n("4b2c"),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;function l(e){var t=a.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(l){}var i=o.call(e);return r&&(t?e[s]=n:delete e[s]),i}e.exports=l},2835:function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",[t("p",{staticClass:"col span-12 mb-20"},[e._v(" "+e._s(e.t("kubewarden.policyConfig.namespaceSelector.description"))+" ")]),[t("InfoBox",{ref:"infobox"},[t("div",{staticClass:"row mb-20"},[t("div",{staticClass:"col span-12"},[t("h4",[t("t",{attrs:{k:"kubewarden.policyConfig.namespaceSelector.matchExpressions.label"}}),t("i",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.t("kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip"),expression:"t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')"}],staticClass:"icon icon-info icon-lg"})],1),t("span",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.t("kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip"),expression:"t('kubewarden.policyConfig.namespaceSelector.matchExpressions.tooltip')"}]}),t("MatchExpressions",{ref:"matchexp",attrs:{mode:e.mode,"show-remove":!1,type:e.POD},model:{value:e.matchExpressions,callback:function(t){e.matchExpressions=t},expression:"matchExpressions"}})],1)]),t("h4",[t("t",{attrs:{k:"kubewarden.policyConfig.namespaceSelector.matchLabels.label"}}),t("i",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.t("kubewarden.policyConfig.namespaceSelector.matchLabels.tooltip"),expression:"t('kubewarden.policyConfig.namespaceSelector.matchLabels.tooltip')"}],staticClass:"icon icon-info icon-lg"})],1),t("div",{staticClass:"row mb-20"},[t("div",{staticClass:"col span-12"},[t("KeyValue",{attrs:{mode:e.mode},model:{value:e.matchLabels,callback:function(t){e.matchLabels=t},expression:"matchLabels"}})],1)])])]],2)},i=[],a=n("da25"),o=n("907c"),s=n("a232"),l=function(){var e=this,t=e._self._c;return t("div",[e.showRemove&&!e.isView?t("button",{staticClass:"btn role-link remove-expression",attrs:{type:"button"},on:{click:function(t){return e.$emit("remove")}}},[t("i",{staticClass:"icon icon-x"})]):e._e(),e.rules.length?t("div",{staticClass:"match-expression-header",class:{view:e.isView,"match-expression-header-matching":e.matchingSelectorDisplay}},[e.matchingSelectorDisplay?t("label",[e._v(" "+e._s(e.t("workload.scheduling.affinity.matchExpressions.matchType"))+" ")]):e._e(),t("label",[e._v(" "+e._s(e.t("workload.scheduling.affinity.matchExpressions.key"))+" ")]),t("label",[e._v(" "+e._s(e.t("workload.scheduling.affinity.matchExpressions.operator"))+" ")]),t("label",[e._v(" "+e._s(e.t("workload.scheduling.affinity.matchExpressions.value"))+" ")]),t("span")]):e._e(),e._l(e.rules,(function(n,r){return t("div",{key:n.id,staticClass:"match-expression-row",class:{view:e.isView,"mb-10":r!==e.rules.length-1,"match-expression-row-matching":e.matchingSelectorDisplay}},[e.matchingSelectorDisplay?t("div",{attrs:{"data-testid":"input-match-type-field-"+r}},[e.isView?t("div",[e._v(" "+e._s(n.matching)+" ")]):t("LabeledSelect",{attrs:{mode:e.mode,options:e.matchingSelectOptions,"data-testid":"input-match-type-field-control-"+r},on:{selecting:e.update},model:{value:n.matching,callback:function(t){e.$set(n,"matching",t)},expression:"row.matching"}})],1):e._e(),t("div",{attrs:{"data-testid":"input-match-expression-key-"+r}},[e.isView?t("div",[e._v(" "+e._s(n.key)+" ")]):e.hasKeySelectOptions?t("LabeledSelect",{attrs:{mode:e.mode,options:e.keysSelectOptions,"data-testid":"input-match-expression-key-control-select-"+r},model:{value:n.key,callback:function(t){e.$set(n,"key",t)},expression:"row.key"}}):t("input",{directives:[{name:"model",rawName:"v-model",value:n.key,expression:"row.key"}],attrs:{mode:e.mode,"data-testid":"input-match-expression-key-control-"+r},domProps:{value:n.key},on:{input:[function(t){t.target.composing||e.$set(n,"key",t.target.value)},e.update]}})],1),t("div",{attrs:{"data-testid":"input-match-expression-operator-"+r}},[e.isView?t("div",[e._v(" "+e._s(n.operator)+" ")]):t("Select",{staticClass:"operator single",attrs:{options:e.ops,clearable:!1,reduce:e=>e.value,mode:e.mode,"data-testid":"input-match-expression-operator-control-"+r},on:{input:e.update},model:{value:n.operator,callback:function(t){e.$set(n,"operator",t)},expression:"row.operator"}})],1),"Exists"===n.operator||"DoesNotExist"===n.operator?t("div",{staticClass:"no-value"},[t("label",{staticClass:"text-muted"},[e._v("…")])]):t("div",{attrs:{"data-testid":"input-match-expression-values-"+r}},[e.isView?t("div",[e._v(" "+e._s(n.values)+" ")]):t("input",{directives:[{name:"model",rawName:"v-model",value:n.values,expression:"row.values"}],attrs:{mode:e.mode,disabled:"Exists"===n.operator||"DoesNotExist"===n.operator,"data-testid":"input-match-expression-values-control-"+r},domProps:{value:n.values},on:{input:[function(t){t.target.composing||e.$set(n,"values",t.target.value)},e.update]}})]),e.showRemoveButton?t("div",{staticClass:"remove-container"},[e.isView?e._e():t("button",{staticClass:"btn role-link",style:{padding:"0px"},attrs:{type:"button",disabled:"view"===e.mode,"data-testid":"input-match-expression-remove-control-"+r},on:{click:function(t){return e.removeRule(n)}}},[t("t",{attrs:{k:"generic.remove"}})],1)]):e._e()])})),!e.isView&&e.showAddButton?t("div",{staticClass:"mt-20"},[t("button",{staticClass:"btn role-tertiary add",attrs:{type:"button","data-testid":"input-match-expression-add-rule"},on:{click:e.addRule}},[t("t",{attrs:{k:"workload.scheduling.affinity.matchExpressions.addRule"}})],1)]):e._e()],2)},c=[],u=n("47ab"),d=n("9ce4"),p=n("bddd"),f=n("e24b");function h(e,t){const n=Object.keys(e||{}),r=t||[];for(const i of n){const t=e[i],n=Object(p["e"])(r,{key:i,operator:"In"});n?Object(p["a"])(n.values,t):r.push({key:i,operator:"In",values:Object(p["g"])(t)?t:[t]})}return r}function m(e){const t={},n=[],r=[],i={};for(const a of e)"In"===a.operator&&(i[a.key]?Object(p["a"])(r,a.key):i[a.key]=!0);for(const a of e)"In"!==a.operator||1!==a.values.length||r.includes(a.key)?n.push(Object.assign({},a)):t[a.key]=a.values[0];return{matchLabels:t,matchExpressions:n}}var v=n("466b"),g={components:{Select:u["a"],LabeledSelect:v["a"]},props:{value:{type:[Array,Object],default:()=>[]},mode:{type:String,default:"edit"},type:{type:String,default:o["p"]},matchingSelectorDisplay:{type:Boolean,default:!1},initialEmptyRow:{type:Boolean,default:!1},showAddButton:{type:Boolean,default:!0},showRemoveButton:{type:Boolean,default:!0},showRemove:{type:Boolean,default:!0},keysSelectOptions:{type:Array,default:()=>[]}},data(){const e=this.$store.getters["i18n/t"],t=[{label:e("workload.scheduling.affinity.matchExpressions.in"),value:"In"},{label:e("workload.scheduling.affinity.matchExpressions.notIn"),value:"NotIn"},{label:e("workload.scheduling.affinity.matchExpressions.exists"),value:"Exists"},{label:e("workload.scheduling.affinity.matchExpressions.doesNotExist"),value:"DoesNotExist"}],n=[{label:e("workload.scheduling.affinity.matchExpressions.in"),value:"In"},{label:e("workload.scheduling.affinity.matchExpressions.notIn"),value:"NotIn"},{label:e("workload.scheduling.affinity.matchExpressions.exists"),value:"Exists"},{label:e("workload.scheduling.affinity.matchExpressions.doesNotExist"),value:"DoesNotExist"},{label:e("workload.scheduling.affinity.matchExpressions.lessThan"),value:"Lt"},{label:e("workload.scheduling.affinity.matchExpressions.greaterThan"),value:"Gt"}],r=this.type===o["p"]?n:t;let i;if(this.matchingSelectorDisplay){const e={matchFields:[],matchExpressions:[]};["matchFields","matchExpressions"].forEach(t=>{e[t]=this.parseRules(this.value[t],t)}),i=[...e.matchFields,...e.matchExpressions]}else Object(p["g"])(this.value)?(i=[...this.value],i=this.parseRules(i)):(i=h(this.value.matchLabels,this.value.matchExpressions),i=this.parseRules(i));if(!i.length&&this.initialEmptyRow&&!this.isView){const e={key:"",operator:"In",values:""};this.matchingSelectorDisplay&&(e.matching="matchExpressions"),i.push(e)}return{ops:r,rules:i,custom:[]}},computed:{isView(){return"view"===this.mode},node(){return o["p"]},pod(){return o["r"]},hasKeySelectOptions(){var e;return!(null===(e=this.keysSelectOptions)||void 0===e||!e.length)},matchingSelectOptions(){return[{label:this.t("workload.scheduling.affinity.matchExpressions.label"),value:"matchExpressions"},{label:this.t("workload.scheduling.affinity.matchFields.label"),value:"matchFields"}]},...Object(d["b"])({t:"i18n/t"})},methods:{parseRules(e,t){return null!==e&&void 0!==e&&e.length?e.map(e=>{const n=Object(f["e"])(e);return n.values&&"string"!==typeof n.values&&(n.values=n.values.join(", ")),t&&(n.matching=t),n}):[]},removeRule(e){Object(p["i"])(this.rules,e),this.update()},addRule(){const e={key:"",operator:"In",values:""};this.matchingSelectorDisplay&&(e.matching="matchExpressions"),this.rules.push(e)},update(){this.$nextTick(()=>{const e=this.rules.map(e=>{const t={key:e.key,operator:e.operator};this.matchingSelectorDisplay&&(t.matching=e.matching);let n=(e.values||"").trim();return"Exists"!==e.operator&&"DoesNotExist"!==e.operator||(n=null),null!==n&&(t.values=n.split(/\s*,\s*/)),t}).filter(e=>!!e);Object(p["g"])(this.value)||this.matchingSelectorDisplay?this.$emit("input",e):this.$emit("input",m(e))})}}},b=g,y=(n("9838"),n("d802")),_=Object(y["a"])(b,l,c,!1,null,"3512fedb",null),w=_.exports,E=function(){var e=this,t=e._self._c;return t("div",{staticClass:"info-box",class:{stepped:!!e.step}},[e.step?t("div",{staticClass:"step-number mb-10"},[t("h2",[e._v("Step "+e._s(e.step))])]):e._e(),e._t("default")],2)},x=[],O={props:{step:{type:Number,default:null}}},S=O,N=(n("2b9a"),Object(y["a"])(S,E,x,!1,null,"1c5683df",null)),A=N.exports,C={props:{mode:{type:String,default:a["r"]},value:{type:Object,default:()=>{}}},components:{KeyValue:s["a"],MatchExpressions:w,InfoBox:A},data(){var e,t;const n=Object.assign({},this.value)||{},r=(null===(e=this.value)||void 0===e?void 0:e.matchExpressions)||[],i=(null===(t=this.value)||void 0===t?void 0:t.matchLabels)||{};return{POD:o["r"],namespaceSelector:n,matchExpressions:r,matchLabels:i}},watch:{value:{deep:!0,handler(e){const t=(null===e||void 0===e?void 0:e.matchExpressions)||[],n=(null===e||void 0===e?void 0:e.matchLabels)||{};this.$set(this,"matchExpressions",t),this.$set(this,"matchLabels",n)}},matchExpressions(e){this.$set(this.namespaceSelector,"matchExpressions",e),this.$emit("input",this.namespaceSelector)},matchLabels(e){this.$set(this.namespaceSelector,"matchLabels",e),this.$emit("input",this.namespaceSelector)}}},T=C,k=Object(y["a"])(T,r,i,!1,null,null,null);t["default"]=k.exports},"2a46":function(e,t,n){var r=n("0e19"),i=n("ff00"),a=n("b4b4"),o="[object Object]",s=Function.prototype,l=Object.prototype,c=s.toString,u=l.hasOwnProperty,d=c.call(Object);function p(e){if(!a(e)||r(e)!=o)return!1;var t=i(e);if(null===t)return!0;var n=u.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==d}e.exports=p},"2a9b":function(e,t,n){e.exports=n.p+"img/harvester.765f68bd.png"},"2b9a":function(e,t,n){"use strict";n("e9a5")},"2be1":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".yaml-editor[data-v-93239522]{display:flex;flex-direction:column}.yaml-editor .fill[data-v-93239522]{flex:1}.yaml-editor[data-v-93239522] .code-mirror{position:relative}.yaml-editor[data-v-93239522] .code-mirror .CodeMirror,.yaml-editor[data-v-93239522] .code-mirror .CodeMirror .CodeMirror-gutters{background-color:var(--yaml-editor-bg)}.yaml-editor .diff-mode[data-v-93239522]{background-color:var(--diff-header-bg);padding:5px 5px;border-bottom-right-radius:0;border-bottom-left-radius:0}.yaml-editor .d2h-file-wrapper[data-v-93239522]{border-top-right-radius:0}",""]),e.exports=t},"2bfe":function(e,t,n){var r=n("24c3");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("04861a5a",r,!0,{sourceMap:!1,shadowMode:!1})},"2c47":function(e,t){function n(e){const t=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:t.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:t.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=n},"2ca2":function(e,t,n){var r=n("e519");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("dbc5f9e2",r,!0,{sourceMap:!1,shadowMode:!1})},"2cb5":function(e,t,n){"use strict";function r(e){return E(e||"").split("-").map(e=>i(e)).join(" ")}function i(e){return e=e||"",e.substr(0,1).toUpperCase()+e.substr(1)}function a(e,t,n=" ",r=!1){if(e=""+e,e.length>=t)return e;const i=t-e.length+1,a=new Array(i).join(n).substr(0,i);return r?e+a:a+e}n.d(t,"b",(function(){return r})),n.d(t,"q",(function(){return i})),n.d(t,"p",(function(){return a})),n.d(t,"e",(function(){return s})),n.d(t,"f",(function(){return l})),n.d(t,"m",(function(){return h})),n.d(t,"g",(function(){return m})),n.d(t,"l",(function(){return v})),n.d(t,"n",(function(){return g})),n.d(t,"h",(function(){return b})),n.d(t,"c",(function(){return E})),n.d(t,"a",(function(){return x})),n.d(t,"j",(function(){return O})),n.d(t,"d",(function(){return S})),n.d(t,"k",(function(){return N})),n.d(t,"o",(function(){return C})),n.d(t,"i",(function(){return T}));const o={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function s(e){return String(e).replace(/[&<>"']/g,e=>o[e])}function l(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c(e){e=Math.max(0,e||1);const t=[];let n;if(window.crypto&&window.crypto.getRandomValues){const r=new Uint32Array(e);for(window.crypto.getRandomValues(r),n=0;nt[e%t.length]).join(""):null}function m(e,t=2){return e<1&&t>=2?Math.round(100*e)/100+"%":e<10&&t>=1?Math.round(10*e)/10+"%":Math.round(e)+"%"}function v(e){return e.match(/.*[^aeiou]y$/i)?e.substr(0,e.length-1)+"ies":e.endsWith("ics")?e:e.endsWith("s")?e+"es":e+"s"}function g(e,t,n){return e.reduce((r,i,a)=>(a>=5||(r+=`${s(i)}`,a===e.length-1?r+=t:r+=a===e.length-2?n("generic.and"):n("generic.comma")),r),"")}function b(e,t=2,n=" ",r=null){e="string"===typeof e?e.split(/\n/):e||[];const i=new Array(t+1).join(n),a=e.map(e=>{let t="",n=e;if(r){const i=e.match(r);i&&(t=i[i.length-1],n=e.substr(i[0].length))}return`${t}${i}${n}`}),o=a.join("\n");return o}const y=/([a-z\d])([A-Z])/g;function _(e){return e.replace(y,"$1_$2").toLowerCase()}const w=/[ _]/g;function E(e){return _(e).replace(w,"-")}function x(e){return e=e||"",!e.match(/[^\r\n\t\x20-\x7F]/)}function O(e,t=[]){return t.some(t=>{const n=e||"",r=S(t);return n.match(r)})}function S(e,t=!0){return"string"===typeof e?t?new RegExp(`^${l(e)}$`,"i"):new RegExp(""+l(e),"i"):e}function N(e){return s(e||"").replace(/(\r\n|\r|\n)/g,"
\n")}const A=/[^."']+|"([^"]*)"|'([^']*)'/g;function C(e){return e.includes('"')||e.includes("'")?e.match(A).map(e=>e.replace(/['"]/g,"")):e.split(".")}function T(e){let t="";for(const n of e)n.includes(".")?t+=`."${n}"`:t+="."+n;return t.startsWith(".")&&(t=t.substr(1)),t}},"2cbd":function(e,t){function n(e,t){if(("constructor"!==t||"function"!==typeof e[t])&&"__proto__"!=t)return e[t]}e.exports=n},"2d03":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,"::v-deep P{font-size:medium;line-height:normal;font-weight:400;letter-spacing:normal;font-style:normal}.markdown blockquote{color:#656d76;border-left:.25em solid #d0d7de;padding:0 1em;margin-bottom:16px}.markdown table{border-collapse:collapse}.markdown TH{text-align:left;border:1px solid #e3e7eb}.markdown table tr th{font-weight:700;text-align:left;margin:0;padding:6px 13px}.markdown table tr td{text-align:left;margin:0;padding:6px 13px;border:1px solid #e3e7eb}.markdown table tr td :first-child,.markdown table tr th :first-child{margin-top:0}.markdown table tr td :last-child,.markdown table tr th :last-child{margin-bottom:0}",""]),e.exports=t},"2da2":function(e,t,n){var r=n("8148");r.Template=n("340e").Template,r.template=r.Template,e.exports=r},"2e63":function(e,t){function n(e,t){var n=-1,r=null==e?0:e.length;while(++nnew r(e,t).set.map(e=>e.map(e=>e.value).join(" ").trim().split(" "));e.exports=i},"2ed5":function(e,t,n){var r=n("73bd"),i=n("c02d");function a(e,t,n,a){var o=!n;n||(n={});var s=-1,l=t.length;while(++s/}]},s={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=e.inherit(e.APOS_STRING_MODE,{illegal:null}),c=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(s)}),u=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*(\w+)\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(s)}),d="[ \t\n]",p={scope:"string",variants:[c,l,u]},f={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},h=["false","null","true"],m=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],v=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],g=e=>{const t=[];return e.forEach(e=>{t.push(e),e.toLowerCase()===e?t.push(e.toUpperCase()):t.push(e.toLowerCase())}),t},b={keyword:m,literal:g(h),built_in:v},y=e=>e.map(e=>e.replace(/\|\d+$/,"")),_={variants:[{match:[/new/,t.concat(d,"+"),t.concat("(?!",y(v).join("\\b|"),"\\b)"),i],scope:{1:"keyword",4:"title.class"}}]},w=t.concat(r,"\\b(?!\\()"),E={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),w],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[i,t.concat(/::/,t.lookahead(/(?!class\b)/)),w],scope:{1:"title.class",3:"variable.constant"}},{match:[i,t.concat("::",t.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[i,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},x={scope:"attr",match:t.concat(r,t.lookahead(":"),t.lookahead(/(?!::)/))},O={relevance:0,begin:/\(/,end:/\)/,keywords:b,contains:[x,a,E,e.C_BLOCK_COMMENT_MODE,p,f,_]},S={relevance:0,match:[/\b/,t.concat("(?!fn\\b|function\\b|",y(m).join("\\b|"),"|",y(v).join("\\b|"),"\\b)"),r,t.concat(d,"*"),t.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[O]};O.contains.push(S);const N=[x,E,e.C_BLOCK_COMMENT_MODE,p,f,_],A={begin:t.concat(/#\[\s*/,i),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:h,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:h,keyword:["new","array"]},contains:["self",...N]},...N,{scope:"meta",match:i}]};return{case_insensitive:!1,keywords:b,contains:[A,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},o,{scope:"variable.language",match:/\$this\b/},a,S,E,{match:[/const/,/\s/,r],scope:{1:"keyword",3:"variable.constant"}},_,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:b,contains:["self",a,E,e.C_BLOCK_COMMENT_MODE,p,f]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},p,f]}}e.exports=n},3159:function(e,t,n){"use strict";n("f172")},3171:function(e,t,n){const r=n("579f"),i=(e,t,n=!1)=>{if(e instanceof r)return e;try{return new r(e,t)}catch(i){if(!n)return null;throw i}};e.exports=i},3197:function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,'.buttons{display:grid;grid-template-areas:"left right";grid-template-columns:"min-content auto"}.buttons .left{grid-area:left;text-align:left}.buttons .left .btn,.buttons .left button{margin:0 1.75% 0 0}.buttons .right{grid-area:right;text-align:right}.buttons .right .btn,.buttons .right button{margin:0 0 0 1.75%}',""]),e.exports=t},3213:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiffStyleType=t.LineMatchingType=t.OutputFormatType=t.LineType=void 0,function(e){e["INSERT"]="insert",e["DELETE"]="delete",e["CONTEXT"]="context"}(t.LineType||(t.LineType={})),t.OutputFormatType={LINE_BY_LINE:"line-by-line",SIDE_BY_SIDE:"side-by-side"},t.LineMatchingType={LINES:"lines",WORDS:"words",NONE:"none"},t.DiffStyleType={WORD:"word",CHAR:"char"}},"330a":function(e,t,n){var r=n("e2e2"),i=n("9243"),a=n("6efc"),o=n("c316"),s=n("f72d"),l=n("dda8"),c=n("09b2"),u=n("41dd"),d="[object Map]",p="[object Set]",f=Object.prototype,h=f.hasOwnProperty;function m(e){if(null==e)return!0;if(s(e)&&(o(e)||"string"==typeof e||"function"==typeof e.splice||l(e)||u(e)||a(e)))return!e.length;var t=i(e);if(t==d||t==p)return!e.size;if(c(e))return!r(e).length;for(var n in e)if(h.call(e,n))return!1;return!0}e.exports=m},3336:function(e,t,n){var r=n("1ec9"),i=n("6a68"),a=n("51db"),o=n("71bd"),s=n("b506"),l=n("cc7f"),c=n("2cbd");function u(e,t,n,d,p){e!==t&&a(t,(function(a,l){if(p||(p=new r),s(a))o(e,t,l,n,u,d,p);else{var f=d?d(c(e,l),a,l+"",e,t,p):void 0;void 0===f&&(f=a),i(e,l,f)}}),l)}e.exports=u},"340e":function(e,t,n){(function(e){function t(e,t,n){var r;return t&&"object"==typeof t&&(void 0!==t[e]?r=t[e]:n&&t.get&&"function"==typeof t.get&&(r=t.get(e))),r}function n(e,t,n,r,i,a){function o(){}function s(){}var l;o.prototype=e,s.prototype=e.subs;var c=new o;for(l in c.subs=new s,c.subsText={},c.buf="",r=r||{},c.stackSubs=r,c.subsText=a,t)r[l]||(r[l]=t[l]);for(l in r)c.subs[l]=r[l];for(l in i=i||{},c.stackPartials=i,n)i[l]||(i[l]=n[l]);for(l in i)c.partials[l]=i[l];return c}e.Template=function(e,t,n,r){e=e||{},this.r=e.code||this.r,this.c=n,this.options=r||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:u,t:c,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var r=this.partials[e],i=t[r.name];if(r.instance&&r.base==i)return r.instance;if("string"==typeof i){if(!this.c)throw new Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,r.subs){for(key in t.stackText||(t.stackText={}),r.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=n(i,r.subs,r.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,r){var i=this.ep(e,n);return i?i.ri(t,n,r):""},rs:function(e,t,n){var r=e[e.length-1];if(d(r))for(var i=0;i=0;c--)if(o=n[c],a=t(e,o,l),void 0!==a){s=!0;break}return s?(i||"function"!=typeof a||(a=this.mv(a,n,r)),a):!i&&""},ls:function(e,t,n,r,i){var a=this.options.delimiters;return this.options.delimiters=i,this.b(this.ct(c(e.call(t,r)),t,n)),this.options.delimiters=a,!1},ct:function(e,t,n){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,r,i,a,o){var s,l=t[t.length-1],c=e.call(l);return"function"==typeof c?!!r||(s=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,l,n,s.substring(i,a),o)):c},mv:function(e,t,n){var r=t[t.length-1],i=e.call(r);return"function"==typeof i?this.ct(c(i.call(r)),r,n):i},sub:function(e,t,n,r){var i=this.subs[e];i&&(this.activeSub=e,i(t,n,this,r),this.activeSub=!1)}};var r=/&/g,i=//g,o=/\'/g,s=/\"/g,l=/[&<>\"\']/;function c(e){return String(null===e||void 0===e?"":e)}function u(e){return e=c(e),l.test(e)?e.replace(r,"&").replace(i,"<").replace(a,">").replace(o,"'").replace(s,"""):e}var d=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}})(t)},"356f":function(e,t,n){var r=n("2589"),i=n("cfe4");function a(e,t){return null!=e&&i(e,t,r)}e.exports=a},3584:function(e,t,n){var r=n("06a5"),i=n("b4b4");function a(e,t,n,o,s){return e===t||(null==e||null==t||!i(e)&&!i(t)?e!==e&&t!==t:r(e,t,n,o,a,s))}e.exports=a},"35bb":function(e,t,n){var r=n("8045"),i=n("494f"),a=n("4fab"),o=a&&a.isMap,s=o?i(o):r;e.exports=s},"35d9":function(e,t,n){var r=n("f72d"),i=n("b4b4");function a(e){return i(e)&&r(e)}e.exports=a},3600:function(e,t,n){const r=n("3c28"),i=(e,t,n)=>r(e,t,n)<0;e.exports=i},"360f":function(e,t,n){const r=n("3c28"),i=(e,t,n)=>r(e,t,n)>0;e.exports=i},3675:function(e,t,n){"use strict";var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("h4",[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.title"))+" ")]),t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-level-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.level.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.level.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.level,callback:function(t){e.level=t},expression:"level"}})],1)]),t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-role-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.role.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.role.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.role,callback:function(t){e.role=t},expression:"role"}})],1)]),t("div",{staticClass:"row mb-10"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-type-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.type.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.type.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.type,callback:function(t){e.type=t},expression:"type"}})],1)]),t("div",{staticClass:"row mb-40"},[t("div",{staticClass:"col span-6"},[t("LabeledInput",{attrs:{"data-testid":`ps-config-security-context-${e.configType}-seLinuxOptions-user-input`,mode:e.mode,disabled:e.disabled,label:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.user.label"),placeholder:e.t("kubewarden.policyServerConfig.securityContexts.seLinuxOptions.user.placeholder")},on:{input:function(t){return e.updateData(t)}},model:{value:e.user,callback:function(t){e.user=t},expression:"user"}})],1)])])},i=[],a=n("da25"),o=n("15ca"),s=n("8e93"),l={props:{mode:{type:String,default:a["r"]},value:{type:Object,default:()=>{}},configType:{type:String,default:"container"},disabled:{type:Boolean,default:!1}},components:{Loading:o["a"],LabeledInput:s["a"]},async fetch(){},data(){var e,t,n,r;return{level:null===(e=this.value)||void 0===e?void 0:e.level,role:null===(t=this.value)||void 0===t?void 0:t.role,type:null===(n=this.value)||void 0===n?void 0:n.type,user:null===(r=this.value)||void 0===r?void 0:r.user}},methods:{updateData(){this.$emit("update-se-linux-options",{level:this.level,role:this.role,type:this.type,user:this.user})}}},c=l,u=n("d802"),d=Object(u["a"])(c,r,i,!1,null,null,null);t["a"]=d.exports},3819:function(e,t,n){var r=n("bf10"),i=n("201b"),a=r(i,"Set");e.exports=a},"38de":function(e,t,n){"use strict";var r=function(){var e=this,t=e._self._c;return t("section",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],attrs:{id:e.name,"aria-hidden":!e.active,role:"tabpanel"}},[e.shouldShowHeader?t("div",{staticClass:"tab-header"},[t("h2",[e._v(" "+e._s(e.labelDisplay)+" "),e.tooltip?t("i",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:e.tooltip,expression:"tooltip"}],staticClass:"icon icon-info icon-lg"}):e._e()]),e._t("tab-header-right")],2):e._e(),e._t("default",null,null,{active:e.active})],2)},i=[],a={inject:["addTab","removeTab","sideTabs"],props:{label:{default:null,type:String},labelKey:{default:null,type:String},name:{required:!0,type:String},tooltip:{default:null,type:[String,Object]},weight:{default:0,required:!1,type:Number},showHeader:{type:Boolean,default:null},displayAlertIcon:{type:Boolean,default:null},error:{type:Boolean,default:!1},badge:{default:0,required:!1,type:Number}},data(){return{active:null}},computed:{labelDisplay(){return this.labelKey?this.$store.getters["i18n/t"](this.labelKey):this.label?this.label:this.name},shouldShowHeader(){return null!==this.showHeader?this.showHeader:this.sideTabs||!1}},watch:{active(e){e&&this.$emit("active")}},mounted(){this.addTab(this)},beforeDestroy(){this.removeTab(this)}},o=a,s=(n("94fd"),n("d802")),l=Object(s["a"])(o,r,i,!1,null,"667bdd63",null);t["a"]=l.exports},"391b":function(e,t,n){"use strict";n("0c47")},3973:function(e,t,n){"use strict";n("4914")},"39dd":function(e,t,n){const r=n("f58d"),i=(e,t)=>e.sort((e,n)=>r(e,n,t));e.exports=i},"39f2":function(e,t,n){var r=n("73b4");function i(e,t){var n=null==e?0:e.length;return!!n&&r(e,t,0)>-1}e.exports=i},"3ad3":function(e,t,n){var r=n("4c0b"),i=r(Object.keys,Object);e.exports=i},"3b2d":function(e,t,n){const r=n("3171"),i=(e,t)=>{const n=r(e,t);return n&&n.prerelease.length?n.prerelease:null};e.exports=i},"3b52":function(e,t,n){"use strict";n("8212")},"3b54":function(e,t,n){var r=n("c364"),i=n("cb86"),a=n("c68c");function o(e,t,n){var o=-1,s=t.length,l={};while(++onew r(e,n).compare(new r(t,n));e.exports=i},"3c82":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"row"},[t("div",{staticClass:"col span-12"},[t("h3",{attrs:{"data-testid":"ps-config-source-authorities-title"}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.title"))+" ")]),e._l(e.rows,(function(n,r){return[t("Authority",{key:r,ref:"authority",refInFor:!0,attrs:{mode:e.mode},on:{update:function(t){return e.updateAuthority(t,r)}},scopedSlots:e._u([{key:"remove",fn:function(){return[t("button",{staticClass:"btn role-link remove btn-sm",attrs:{"data-testid":"ps-config-authority-remove-button-"+r,type:"button",disabled:e.isView},on:{click:function(t){return e.removeRegistry(r)}}},[t("i",{staticClass:"icon icon-2x icon-x"})])]},proxy:!0}],null,!0),model:{value:e.rows[r],callback:function(t){e.$set(e.rows,r,t)},expression:"rows[index]"}})]})),t("button",{staticClass:"btn role-tertiary add",attrs:{"data-testid":"ps-config-source-authorities-add-button",type:"button",disabled:e.isView},on:{click:function(t){return e.addRegistry()}}},[e._v(" "+e._s(e.t("kubewarden.policyServerConfig.sourceAuthorities.add"))+" ")])],2)])},i=[],a=n("da25"),o=n("bddd"),s=n("e24b"),l=n("22a0"),c={props:{mode:{type:String,default:a["A"]},value:{type:[Array,Object],default:()=>({})}},components:{Authority:l["default"]},fetch(){if(this.value)for(const[e,t]of Object.entries(this.value))this.rows.push({registryName:e,certs:t});else this.value={}},data(){return{rows:[]}},computed:{isView(){return this.mode===a["A"]}},methods:{addRegistry(){this.rows.push({registryName:"",certs:[]})},deleteAuthority(e){if(!Object(s["i"])(this.value)){const t=Object.keys(this.value)[e];this.$delete(this.value,[t])}},removeRegistry(e){Object(o["h"])(this.rows,e),this.deleteAuthority(e)},updateAuthority(e,t){const{registryName:n,certs:r}=e;Object(s["i"])(this.value)||this.deleteAuthority(t),this.$set(this.value,[n],r||[]),this.$emit("update",this.value)}}},u=c,d=(n("6522"),n("d802")),p=Object(d["a"])(u,r,i,!1,null,"189c4c6b",null);t["default"]=p.exports},"3c84":function(e,t,n){var r=n("a0b7");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var i=n("0ed3").default;i("ad7ac62a",r,!0,{sourceMap:!1,shadowMode:!1})},"3ca3":function(e,t,n){"use strict";n.r(t),n.d(t,"DEFAULT_POLICY_SERVER",(function(){return c})),n.d(t,"default",(function(){return u}));var r=n("330a"),i=n.n(r),a=n("907c"),o=n("90cd"),s=n("d892");class l extends s["d"]{get _availableActions(){const e=super._availableActions,t={action:"openLogs",enabled:!0,icon:"icon icon-fw icon-chevron-right",label:"View Logs"};return e.unshift(t),e}get allRelatedPolicies(){return async()=>{const e=[o["f"].ADMISSION_POLICY,o["f"].CLUSTER_ADMISSION_POLICY],t=e.filter(e=>this.$rootGetters["cluster/canList"](e)).map(e=>this.$dispatch("cluster/findAll",{type:e,opt:{force:!0}},{root:!0}));try{const e=await Promise.all(t);if(e)return e.flatMap(e=>e).filter(e=>{var t,n;return(null===(t=e.spec)||void 0===t?void 0:t.policyServer)===(null===(n=this.metadata)||void 0===n?void 0:n.name)})}catch(n){console.warn("Error fetching related policies: "+n)}}}get policyGauges(){return async()=>{const e={},t=["Active","Pending"],n=await this.allRelatedPolicies();if(!n)return e;for(const r of t.values())e[r]||(e[r]={color:Object(s["b"])(r).replace("text-",""),count:0});return null===n||void 0===n||n.map(t=>{const{stateDisplay:n}=t;e[n].count++}),e}}get tracesGauges(){return e=>{const t={};return i()(e)||null===e||void 0===e||e.flatMap(e=>{var n;null===e||void 0===e||null===(n=e.traces)||void 0===n||n.map(e=>{const{allowed:n,mode:r,mutated:i}=e;"monitor"!==r&&(t["Denied"]&&!n?t["Denied"].count++:n?t["Mutated"]&&i?t["Mutated"].count++:i&&n&&(t["Mutated"]={color:Object(s["c"])("mutated"),count:1}):t["Denied"]={color:Object(s["c"])("denied"),count:1})})}),t}}get matchingDeployment(){return async()=>{try{var e;return await this.$dispatch("cluster/findMatching",{type:a["H"].DEPLOYMENT,selector:"kubewarden/policy-server="+(null===(e=this.metadata)||void 0===e?void 0:e.name)},{root:!0})}catch(t){console.warn("Error matching policy-server to deployment",t)}}}get matchingPods(){return async()=>{try{var e;return await this.$dispatch("cluster/findMatching",{type:a["r"],selector:"app=kubewarden-policy-server-"+(null===(e=this.metadata)||void 0===e?void 0:e.name)},{root:!0})}catch(t){console.warn("Error matching policy-server to pod",t)}}}async openLogs(){try{const e=await this.matchingPods();i()(e)||this.$dispatch("wm/open",{id:this.id+"-logs",label:this.nameDisplay,icon:"file",component:"ContainerLogs",attrs:{pod:e[0]}},{root:!0})}catch(e){console.warn("Error dispatching console for pod",e)}}}const c={apiVersion:"policies.kubewarden.io/v1alpha2",kind:"PolicyServer",metadata:{annotations:{},labels:{},name:""},spec:{annotations:{},env:[{name:"KUBEWARDEN_LOG_FMT",value:"otlp"},{name:"KUBEWARDEN_LOG_LEVEL",value:"info"}],image:"ghcr.io/kubewarden/policy-server:latest",replicas:1,serviceAccountName:"",verificationConfig:"",insecureSources:[],sourceAuthorities:{}}};class u extends l{}},"3daa":function(e,t,n){var r=n("5eaa");t=r(!1),t.push([e.i,".vertical[data-v-01996ade]{flex-direction:column;width:100%}.subtle[data-v-01996ade]{opacity:.7}.message-icon[data-v-01996ade]{display:flex;align-items:center;justify-content:center;flex:1;flex-direction:column}.message-icon>I[data-v-01996ade]{font-size:64px;margin-bottom:20px}.message-icon>I.info[data-v-01996ade]{color:var(--primary)}.message-icon>I.error[data-v-01996ade]{color:var(--error)}.message-icon>I.warning[data-v-01996ade]{color:var(--warning)}.message-icon>I.success[data-v-01996ade]{color:var(--success)}.message-icon>.message[data-v-01996ade]{font-size:20px;margin-bottom:40px;max-width:60%;text-align:center;line-height:30px}",""]),e.exports=t},"3db8":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"row"},[t("Banner",{directives:[{name:"clean-html",rawName:"v-clean-html",value:e.t("kubewarden.policyServerConfig.verification.description",{},!0),expression:"t('kubewarden.policyServerConfig.verification.description', {}, true)"}],staticClass:"type-banner mb-20 mt-0",attrs:{"data-testid":"ps-config-verification-banner",color:"info"}})],1),t("div",{staticClass:"row"},[t("div",{staticClass:"col span-6"},[t("LabeledSelect",{attrs:{"data-testid":"ps-config-verification-select",mode:e.mode,label:e.t("kubewarden.policyServerConfig.verification.label"),options:e.options},model:{value:e.vConfig,callback:function(t){e.vConfig=t},expression:"vConfig"}})],1)])])},i=[],a=n("330a"),o=n.n(a),s=n("da25"),l=n("6418"),c=n("466b"),u={props:{mode:{type:String,default:s["r"]},value:{type:Object,default:null},configMaps:{type:Array,required:!0}},components:{Banner:l["a"],LabeledSelect:c["a"]},data(){return{vConfig:this.value.verificationConfig}},watch:{vConfig(e){this.$emit("update-vconfig","verificationConfig",e)}},computed:{options(){return o()(this.configMaps)?[]:this.configMaps.map(e=>e.id)}}},d=u,p=n("d802"),f=Object(p["a"])(d,r,i,!1,null,null,null);t["default"]=f.exports},"3ddb":function(e,t){function n(e){const t=["true","false","iota","nil"],n=["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"],r=["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],i=["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],a={keyword:i,type:r,literal:t,built_in:n};return{name:"Go",aliases:["golang"],keywords:a,illegal:"e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?n-1:0),i=1;i/gm),X=v(/\${[\w\W]*}/gm),Z=v(/^data-[\-\w.\u00B7-\uFFFF]/),J=v(/^aria-[\-\w]+$/),Q=v(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ee=v(/^(?:\w+script|data):/i),te=v(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ne=v(/^html$/i),re=function(){return"undefined"===typeof window?null:window},ie=function(t,n){if("object"!==e(t)||"function"!==typeof t.createPolicy)return null;var r=null,i="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(i)&&(r=n.currentScript.getAttribute(i));var a="dompurify"+(r?"#"+r:"");try{return t.createPolicy(a,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(o){return console.warn("TrustedTypes policy "+a+" could not be created."),null}};function ae(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:re(),n=function(e){return ae(e)};if(n.version="2.4.5",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var r=t.document,a=t.document,o=t.DocumentFragment,s=t.HTMLTemplateElement,l=t.Node,c=t.Element,u=t.NodeFilter,d=t.NamedNodeMap,p=void 0===d?t.NamedNodeMap||t.MozNamedAttrMap:d,f=t.HTMLFormElement,h=t.DOMParser,v=t.trustedTypes,g=c.prototype,b=P(g,"cloneNode"),y=P(g,"nextSibling"),_=P(g,"childNodes"),L=P(g,"parentNode");if("function"===typeof s){var I=a.createElement("template");I.content&&I.content.ownerDocument&&(a=I.content.ownerDocument)}var oe=ie(v,r),se=oe?oe.createHTML(""):"",le=a,ce=le.implementation,ue=le.createNodeIterator,de=le.createDocumentFragment,pe=le.getElementsByTagName,fe=r.importNode,he={};try{he=M(a).documentMode?a.documentMode:{}}catch(It){}var me={};n.isSupported="function"===typeof L&&ce&&"undefined"!==typeof ce.createHTMLDocument&&9!==he;var ve,ge,be=W,ye=Y,_e=X,we=Z,Ee=J,xe=ee,Oe=te,Se=Q,Ne=null,Ae=D({},[].concat(i($),i(j),i(B),i(U),i(H))),Ce=null,Te=D({},[].concat(i(V),i(q),i(z),i(K))),ke=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Re=null,Le=null,Ie=!0,De=!0,Me=!1,Pe=!0,$e=!1,je=!1,Be=!1,Fe=!1,Ue=!1,Ge=!1,He=!1,Ve=!0,qe=!1,ze="user-content-",Ke=!0,We=!1,Ye={},Xe=null,Ze=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Je=null,Qe=D({},["audio","video","img","source","image","track"]),et=null,tt=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),nt="http://www.w3.org/1998/Math/MathML",rt="http://www.w3.org/2000/svg",it="http://www.w3.org/1999/xhtml",at=it,ot=!1,st=null,lt=D({},[nt,rt,it],S),ct=["application/xhtml+xml","text/html"],ut="text/html",dt=null,pt=a.createElement("form"),ft=function(e){return e instanceof RegExp||e instanceof Function},ht=function(t){dt&&dt===t||(t&&"object"===e(t)||(t={}),t=M(t),ve=ve=-1===ct.indexOf(t.PARSER_MEDIA_TYPE)?ut:t.PARSER_MEDIA_TYPE,ge="application/xhtml+xml"===ve?S:O,Ne="ALLOWED_TAGS"in t?D({},t.ALLOWED_TAGS,ge):Ae,Ce="ALLOWED_ATTR"in t?D({},t.ALLOWED_ATTR,ge):Te,st="ALLOWED_NAMESPACES"in t?D({},t.ALLOWED_NAMESPACES,S):lt,et="ADD_URI_SAFE_ATTR"in t?D(M(tt),t.ADD_URI_SAFE_ATTR,ge):tt,Je="ADD_DATA_URI_TAGS"in t?D(M(Qe),t.ADD_DATA_URI_TAGS,ge):Qe,Xe="FORBID_CONTENTS"in t?D({},t.FORBID_CONTENTS,ge):Ze,Re="FORBID_TAGS"in t?D({},t.FORBID_TAGS,ge):{},Le="FORBID_ATTR"in t?D({},t.FORBID_ATTR,ge):{},Ye="USE_PROFILES"in t&&t.USE_PROFILES,Ie=!1!==t.ALLOW_ARIA_ATTR,De=!1!==t.ALLOW_DATA_ATTR,Me=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Pe=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,$e=t.SAFE_FOR_TEMPLATES||!1,je=t.WHOLE_DOCUMENT||!1,Ue=t.RETURN_DOM||!1,Ge=t.RETURN_DOM_FRAGMENT||!1,He=t.RETURN_TRUSTED_TYPE||!1,Fe=t.FORCE_BODY||!1,Ve=!1!==t.SANITIZE_DOM,qe=t.SANITIZE_NAMED_PROPS||!1,Ke=!1!==t.KEEP_CONTENT,We=t.IN_PLACE||!1,Se=t.ALLOWED_URI_REGEXP||Se,at=t.NAMESPACE||it,ke=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ke.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ke.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"===typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(ke.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),$e&&(De=!1),Ge&&(Ue=!0),Ye&&(Ne=D({},i(H)),Ce=[],!0===Ye.html&&(D(Ne,$),D(Ce,V)),!0===Ye.svg&&(D(Ne,j),D(Ce,q),D(Ce,K)),!0===Ye.svgFilters&&(D(Ne,B),D(Ce,q),D(Ce,K)),!0===Ye.mathMl&&(D(Ne,U),D(Ce,z),D(Ce,K))),t.ADD_TAGS&&(Ne===Ae&&(Ne=M(Ne)),D(Ne,t.ADD_TAGS,ge)),t.ADD_ATTR&&(Ce===Te&&(Ce=M(Ce)),D(Ce,t.ADD_ATTR,ge)),t.ADD_URI_SAFE_ATTR&&D(et,t.ADD_URI_SAFE_ATTR,ge),t.FORBID_CONTENTS&&(Xe===Ze&&(Xe=M(Xe)),D(Xe,t.FORBID_CONTENTS,ge)),Ke&&(Ne["#text"]=!0),je&&D(Ne,["html","head","body"]),Ne.table&&(D(Ne,["tbody"]),delete Re.tbody),m&&m(t),dt=t)},mt=D({},["mi","mo","mn","ms","mtext"]),vt=D({},["foreignobject","desc","title","annotation-xml"]),gt=D({},["title","style","font","a","script"]),bt=D({},j);D(bt,B),D(bt,F);var yt=D({},U);D(yt,G);var _t=function(e){var t=L(e);t&&t.tagName||(t={namespaceURI:at,tagName:"template"});var n=O(e.tagName),r=O(t.tagName);return!!st[e.namespaceURI]&&(e.namespaceURI===rt?t.namespaceURI===it?"svg"===n:t.namespaceURI===nt?"svg"===n&&("annotation-xml"===r||mt[r]):Boolean(bt[n]):e.namespaceURI===nt?t.namespaceURI===it?"math"===n:t.namespaceURI===rt?"math"===n&&vt[r]:Boolean(yt[n]):e.namespaceURI===it?!(t.namespaceURI===rt&&!vt[r])&&(!(t.namespaceURI===nt&&!mt[r])&&(!yt[n]&&(gt[n]||!bt[n]))):!("application/xhtml+xml"!==ve||!st[e.namespaceURI]))},wt=function(e){x(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(It){try{e.outerHTML=se}catch(It){e.remove()}}},Et=function(e,t){try{x(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(It){x(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Ce[e])if(Ue||Ge)try{wt(t)}catch(It){}else try{t.setAttribute(e,"")}catch(It){}},xt=function(e){var t,n;if(Fe)e=""+e;else{var r=N(e,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===ve&&at===it&&(e=''+e+"");var i=oe?oe.createHTML(e):e;if(at===it)try{t=(new h).parseFromString(i,ve)}catch(It){}if(!t||!t.documentElement){t=ce.createDocument(at,"template",null);try{t.documentElement.innerHTML=ot?se:i}catch(It){}}var o=t.body||t.documentElement;return e&&n&&o.insertBefore(a.createTextNode(n),o.childNodes[0]||null),at===it?pe.call(t,je?"html":"body")[0]:je?t.documentElement:o},Ot=function(e){return ue.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT,null,!1)},St=function(e){return e instanceof f&&("string"!==typeof e.nodeName||"string"!==typeof e.textContent||"function"!==typeof e.removeChild||!(e.attributes instanceof p)||"function"!==typeof e.removeAttribute||"function"!==typeof e.setAttribute||"string"!==typeof e.namespaceURI||"function"!==typeof e.insertBefore||"function"!==typeof e.hasChildNodes)},Nt=function(t){return"object"===e(l)?t instanceof l:t&&"object"===e(t)&&"number"===typeof t.nodeType&&"string"===typeof t.nodeName},At=function(e,t,r){me[e]&&w(me[e],(function(e){e.call(n,t,r,dt)}))},Ct=function(e){var t;if(At("beforeSanitizeElements",e,null),St(e))return wt(e),!0;if(k(/[\u0080-\uFFFF]/,e.nodeName))return wt(e),!0;var r=ge(e.nodeName);if(At("uponSanitizeElement",e,{tagName:r,allowedTags:Ne}),e.hasChildNodes()&&!Nt(e.firstElementChild)&&(!Nt(e.content)||!Nt(e.content.firstElementChild))&&k(/<[/\w]/g,e.innerHTML)&&k(/<[/\w]/g,e.textContent))return wt(e),!0;if("select"===r&&k(/\n\n \n\n \n \n \n \n\n \n \n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTable.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceTable.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceTable.vue?vue&type=template&id=29d90e0c&\"\nimport script from \"./ResourceTable.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceTable.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=style&index=0&id=b4f4e2ae&prod&lang=scss&scoped=true&\"","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/*\n Language: SQL\n Website: https://en.wikipedia.org/wiki/SQL\n Category: common, database\n */\n\n/*\n\nGoals:\n\nSQL is intended to highlight basic/common SQL keywords and expressions\n\n- If pretty much every single SQL server includes supports, then it's a canidate.\n- It is NOT intended to include tons of vendor specific keywords (Oracle, MySQL,\n PostgreSQL) although the list of data types is purposely a bit more expansive.\n- For more specific SQL grammars please see:\n - PostgreSQL and PL/pgSQL - core\n - T-SQL - https://github.com/highlightjs/highlightjs-tsql\n - sql_more (core)\n\n */\n\nfunction sql(hljs) {\n const regex = hljs.regex;\n const COMMENT_MODE = hljs.COMMENT('--', '$');\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [ { begin: /''/ } ]\n }\n ]\n };\n const QUOTED_IDENTIFIER = {\n begin: /\"/,\n end: /\"/,\n contains: [ { begin: /\"\"/ } ]\n };\n\n const LITERALS = [\n \"true\",\n \"false\",\n // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way.\n // \"null\",\n \"unknown\"\n ];\n\n const MULTI_WORD_TYPES = [\n \"double precision\",\n \"large object\",\n \"with timezone\",\n \"without timezone\"\n ];\n\n const TYPES = [\n 'bigint',\n 'binary',\n 'blob',\n 'boolean',\n 'char',\n 'character',\n 'clob',\n 'date',\n 'dec',\n 'decfloat',\n 'decimal',\n 'float',\n 'int',\n 'integer',\n 'interval',\n 'nchar',\n 'nclob',\n 'national',\n 'numeric',\n 'real',\n 'row',\n 'smallint',\n 'time',\n 'timestamp',\n 'varchar',\n 'varying', // modifier (character varying)\n 'varbinary'\n ];\n\n const NON_RESERVED_WORDS = [\n \"add\",\n \"asc\",\n \"collation\",\n \"desc\",\n \"final\",\n \"first\",\n \"last\",\n \"view\"\n ];\n\n // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word\n const RESERVED_WORDS = [\n \"abs\",\n \"acos\",\n \"all\",\n \"allocate\",\n \"alter\",\n \"and\",\n \"any\",\n \"are\",\n \"array\",\n \"array_agg\",\n \"array_max_cardinality\",\n \"as\",\n \"asensitive\",\n \"asin\",\n \"asymmetric\",\n \"at\",\n \"atan\",\n \"atomic\",\n \"authorization\",\n \"avg\",\n \"begin\",\n \"begin_frame\",\n \"begin_partition\",\n \"between\",\n \"bigint\",\n \"binary\",\n \"blob\",\n \"boolean\",\n \"both\",\n \"by\",\n \"call\",\n \"called\",\n \"cardinality\",\n \"cascaded\",\n \"case\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"char\",\n \"char_length\",\n \"character\",\n \"character_length\",\n \"check\",\n \"classifier\",\n \"clob\",\n \"close\",\n \"coalesce\",\n \"collate\",\n \"collect\",\n \"column\",\n \"commit\",\n \"condition\",\n \"connect\",\n \"constraint\",\n \"contains\",\n \"convert\",\n \"copy\",\n \"corr\",\n \"corresponding\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"create\",\n \"cross\",\n \"cube\",\n \"cume_dist\",\n \"current\",\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_row\",\n \"current_schema\",\n \"current_time\",\n \"current_timestamp\",\n \"current_path\",\n \"current_role\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"cursor\",\n \"cycle\",\n \"date\",\n \"day\",\n \"deallocate\",\n \"dec\",\n \"decimal\",\n \"decfloat\",\n \"declare\",\n \"default\",\n \"define\",\n \"delete\",\n \"dense_rank\",\n \"deref\",\n \"describe\",\n \"deterministic\",\n \"disconnect\",\n \"distinct\",\n \"double\",\n \"drop\",\n \"dynamic\",\n \"each\",\n \"element\",\n \"else\",\n \"empty\",\n \"end\",\n \"end_frame\",\n \"end_partition\",\n \"end-exec\",\n \"equals\",\n \"escape\",\n \"every\",\n \"except\",\n \"exec\",\n \"execute\",\n \"exists\",\n \"exp\",\n \"external\",\n \"extract\",\n \"false\",\n \"fetch\",\n \"filter\",\n \"first_value\",\n \"float\",\n \"floor\",\n \"for\",\n \"foreign\",\n \"frame_row\",\n \"free\",\n \"from\",\n \"full\",\n \"function\",\n \"fusion\",\n \"get\",\n \"global\",\n \"grant\",\n \"group\",\n \"grouping\",\n \"groups\",\n \"having\",\n \"hold\",\n \"hour\",\n \"identity\",\n \"in\",\n \"indicator\",\n \"initial\",\n \"inner\",\n \"inout\",\n \"insensitive\",\n \"insert\",\n \"int\",\n \"integer\",\n \"intersect\",\n \"intersection\",\n \"interval\",\n \"into\",\n \"is\",\n \"join\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"language\",\n \"large\",\n \"last_value\",\n \"lateral\",\n \"lead\",\n \"leading\",\n \"left\",\n \"like\",\n \"like_regex\",\n \"listagg\",\n \"ln\",\n \"local\",\n \"localtime\",\n \"localtimestamp\",\n \"log\",\n \"log10\",\n \"lower\",\n \"match\",\n \"match_number\",\n \"match_recognize\",\n \"matches\",\n \"max\",\n \"member\",\n \"merge\",\n \"method\",\n \"min\",\n \"minute\",\n \"mod\",\n \"modifies\",\n \"module\",\n \"month\",\n \"multiset\",\n \"national\",\n \"natural\",\n \"nchar\",\n \"nclob\",\n \"new\",\n \"no\",\n \"none\",\n \"normalize\",\n \"not\",\n \"nth_value\",\n \"ntile\",\n \"null\",\n \"nullif\",\n \"numeric\",\n \"octet_length\",\n \"occurrences_regex\",\n \"of\",\n \"offset\",\n \"old\",\n \"omit\",\n \"on\",\n \"one\",\n \"only\",\n \"open\",\n \"or\",\n \"order\",\n \"out\",\n \"outer\",\n \"over\",\n \"overlaps\",\n \"overlay\",\n \"parameter\",\n \"partition\",\n \"pattern\",\n \"per\",\n \"percent\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"period\",\n \"portion\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"precedes\",\n \"precision\",\n \"prepare\",\n \"primary\",\n \"procedure\",\n \"ptf\",\n \"range\",\n \"rank\",\n \"reads\",\n \"real\",\n \"recursive\",\n \"ref\",\n \"references\",\n \"referencing\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"release\",\n \"result\",\n \"return\",\n \"returns\",\n \"revoke\",\n \"right\",\n \"rollback\",\n \"rollup\",\n \"row\",\n \"row_number\",\n \"rows\",\n \"running\",\n \"savepoint\",\n \"scope\",\n \"scroll\",\n \"search\",\n \"second\",\n \"seek\",\n \"select\",\n \"sensitive\",\n \"session_user\",\n \"set\",\n \"show\",\n \"similar\",\n \"sin\",\n \"sinh\",\n \"skip\",\n \"smallint\",\n \"some\",\n \"specific\",\n \"specifictype\",\n \"sql\",\n \"sqlexception\",\n \"sqlstate\",\n \"sqlwarning\",\n \"sqrt\",\n \"start\",\n \"static\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"submultiset\",\n \"subset\",\n \"substring\",\n \"substring_regex\",\n \"succeeds\",\n \"sum\",\n \"symmetric\",\n \"system\",\n \"system_time\",\n \"system_user\",\n \"table\",\n \"tablesample\",\n \"tan\",\n \"tanh\",\n \"then\",\n \"time\",\n \"timestamp\",\n \"timezone_hour\",\n \"timezone_minute\",\n \"to\",\n \"trailing\",\n \"translate\",\n \"translate_regex\",\n \"translation\",\n \"treat\",\n \"trigger\",\n \"trim\",\n \"trim_array\",\n \"true\",\n \"truncate\",\n \"uescape\",\n \"union\",\n \"unique\",\n \"unknown\",\n \"unnest\",\n \"update\",\n \"upper\",\n \"user\",\n \"using\",\n \"value\",\n \"values\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"varbinary\",\n \"varchar\",\n \"varying\",\n \"versioning\",\n \"when\",\n \"whenever\",\n \"where\",\n \"width_bucket\",\n \"window\",\n \"with\",\n \"within\",\n \"without\",\n \"year\",\n ];\n\n // these are reserved words we have identified to be functions\n // and should only be highlighted in a dispatch-like context\n // ie, array_agg(...), etc.\n const RESERVED_FUNCTIONS = [\n \"abs\",\n \"acos\",\n \"array_agg\",\n \"asin\",\n \"atan\",\n \"avg\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"coalesce\",\n \"corr\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"cume_dist\",\n \"dense_rank\",\n \"deref\",\n \"element\",\n \"exp\",\n \"extract\",\n \"first_value\",\n \"floor\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"last_value\",\n \"lead\",\n \"listagg\",\n \"ln\",\n \"log\",\n \"log10\",\n \"lower\",\n \"max\",\n \"min\",\n \"mod\",\n \"nth_value\",\n \"ntile\",\n \"nullif\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"rank\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"row_number\",\n \"sin\",\n \"sinh\",\n \"sqrt\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"substring\",\n \"substring_regex\",\n \"sum\",\n \"tan\",\n \"tanh\",\n \"translate\",\n \"translate_regex\",\n \"treat\",\n \"trim\",\n \"trim_array\",\n \"unnest\",\n \"upper\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"width_bucket\",\n ];\n\n // these functions can\n const POSSIBLE_WITHOUT_PARENS = [\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_schema\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"session_user\",\n \"system_time\",\n \"system_user\",\n \"current_time\",\n \"localtime\",\n \"current_timestamp\",\n \"localtimestamp\"\n ];\n\n // those exist to boost relevance making these very\n // \"SQL like\" keyword combos worth +1 extra relevance\n const COMBOS = [\n \"create table\",\n \"insert into\",\n \"primary key\",\n \"foreign key\",\n \"not null\",\n \"alter table\",\n \"add constraint\",\n \"grouping sets\",\n \"on overflow\",\n \"character set\",\n \"respect nulls\",\n \"ignore nulls\",\n \"nulls first\",\n \"nulls last\",\n \"depth first\",\n \"breadth first\"\n ];\n\n const FUNCTIONS = RESERVED_FUNCTIONS;\n\n const KEYWORDS = [\n ...RESERVED_WORDS,\n ...NON_RESERVED_WORDS\n ].filter((keyword) => {\n return !RESERVED_FUNCTIONS.includes(keyword);\n });\n\n const VARIABLE = {\n className: \"variable\",\n begin: /@[a-z0-9]+/,\n };\n\n const OPERATOR = {\n className: \"operator\",\n begin: /[-+*/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,\n relevance: 0,\n };\n\n const FUNCTION_CALL = {\n begin: regex.concat(/\\b/, regex.either(...FUNCTIONS), /\\s*\\(/),\n relevance: 0,\n keywords: { built_in: FUNCTIONS }\n };\n\n // keywords with less than 3 letters are reduced in relevancy\n function reduceRelevancy(list, {\n exceptions, when\n } = {}) {\n const qualifyFn = when;\n exceptions = exceptions || [];\n return list.map((item) => {\n if (item.match(/\\|\\d+$/) || exceptions.includes(item)) {\n return item;\n } else if (qualifyFn(item)) {\n return `${item}|0`;\n } else {\n return item;\n }\n });\n }\n\n return {\n name: 'SQL',\n case_insensitive: true,\n // does not include {} or HTML tags ` x.length < 3 }),\n literal: LITERALS,\n type: TYPES,\n built_in: POSSIBLE_WITHOUT_PARENS\n },\n contains: [\n {\n begin: regex.either(...COMBOS),\n relevance: 0,\n keywords: {\n $pattern: /[\\w\\.]+/,\n keyword: KEYWORDS.concat(COMBOS),\n literal: LITERALS,\n type: TYPES\n },\n },\n {\n className: \"type\",\n begin: regex.either(...MULTI_WORD_TYPES)\n },\n FUNCTION_CALL,\n VARIABLE,\n STRING,\n QUOTED_IDENTIFIER,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n OPERATOR\n ]\n };\n}\n\nmodule.exports = sql;\n","/*\nLanguage: Plain text\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nDescription: Plain text without any highlighting.\nCategory: common\n*/\n\nfunction plaintext(hljs) {\n return {\n name: 'Plain text',\n aliases: [\n 'text',\n 'txt'\n ],\n disableAutodetect: true\n };\n}\n\nmodule.exports = plaintext;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.loading)?_c('div',{staticClass:\"loading-indicator\"},[(_vm.showMessage)?_c('div',{staticClass:\"overlay\",class:{ 'overlay-content-mode' : _vm.mode === 'content', 'overlay-main-mode' : _vm.mode === 'main' }},[_c('t',{attrs:{\"k\":\"generic.loading\",\"raw\":true}})],1):_vm._e()]):_c('div',[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=23723280&scoped=true&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=23723280&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23723280\",\n null\n \n)\n\nexport default component.exports","var map = {\n\t\"./kubewarden/_index\": \"61e7\",\n\t\"./kubewarden/_index.vue\": \"61e7\",\n\t\"./kubewarden/admission\": \"f0e8\",\n\t\"./kubewarden/admission/\": \"f0e8\",\n\t\"./kubewarden/admission/ContextAware\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/Resource\": \"01af\",\n\t\"./kubewarden/admission/ContextAware/Resource.vue\": \"01af\",\n\t\"./kubewarden/admission/ContextAware/index\": \"78b7\",\n\t\"./kubewarden/admission/ContextAware/index.vue\": \"78b7\",\n\t\"./kubewarden/admission/General\": \"ff83\",\n\t\"./kubewarden/admission/General.vue\": \"ff83\",\n\t\"./kubewarden/admission/NamespaceSelector\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/index\": \"2835\",\n\t\"./kubewarden/admission/NamespaceSelector/index.vue\": \"2835\",\n\t\"./kubewarden/admission/Rules\": \"6b71\",\n\t\"./kubewarden/admission/Rules/\": \"6b71\",\n\t\"./kubewarden/admission/Rules/Rule\": \"63a1\",\n\t\"./kubewarden/admission/Rules/Rule.vue\": \"63a1\",\n\t\"./kubewarden/admission/Rules/index\": \"6b71\",\n\t\"./kubewarden/admission/Rules/index.vue\": \"6b71\",\n\t\"./kubewarden/admission/Settings\": \"4d67\",\n\t\"./kubewarden/admission/Settings.vue\": \"4d67\",\n\t\"./kubewarden/admission/index\": \"f0e8\",\n\t\"./kubewarden/admission/index.vue\": \"f0e8\",\n\t\"./kubewarden/policy-server\": \"b118\",\n\t\"./kubewarden/policy-server/\": \"b118\",\n\t\"./kubewarden/policy-server/General\": \"d8b3\",\n\t\"./kubewarden/policy-server/General.vue\": \"d8b3\",\n\t\"./kubewarden/policy-server/Registry/Authority\": \"22a0\",\n\t\"./kubewarden/policy-server/Registry/Authority.vue\": \"22a0\",\n\t\"./kubewarden/policy-server/Registry/Index\": \"6b48\",\n\t\"./kubewarden/policy-server/Registry/Index.vue\": \"6b48\",\n\t\"./kubewarden/policy-server/Registry/SourceAuthorities\": \"3c82\",\n\t\"./kubewarden/policy-server/Registry/SourceAuthorities.vue\": \"3c82\",\n\t\"./kubewarden/policy-server/SecurityContexts\": \"4d89\",\n\t\"./kubewarden/policy-server/SecurityContexts.vue\": \"4d89\",\n\t\"./kubewarden/policy-server/SecurityContexts/ContainerConfiguration\": \"da16\",\n\t\"./kubewarden/policy-server/SecurityContexts/ContainerConfiguration.vue\": \"da16\",\n\t\"./kubewarden/policy-server/SecurityContexts/PodConfiguration\": \"f155\",\n\t\"./kubewarden/policy-server/SecurityContexts/PodConfiguration.vue\": \"f155\",\n\t\"./kubewarden/policy-server/Verification\": \"3db8\",\n\t\"./kubewarden/policy-server/Verification.vue\": \"3db8\",\n\t\"./kubewarden/policy-server/index\": \"b118\",\n\t\"./kubewarden/policy-server/index.vue\": \"b118\"\n};\n\nfunction webpackAsyncContext(req) {\n\treturn Promise.resolve().then(function() {\n\t\tif(!__webpack_require__.o(map, req)) {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t}\n\n\t\tvar id = map[req];\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"15d2\";\nmodule.exports = webpackAsyncContext;","/*\nLanguage: Nginx config\nAuthor: Peter Leonov \nContributors: Ivan Sagalaev \nCategory: config, web\nWebsite: https://www.nginx.com\n*/\n\n/** @type LanguageFn */\nfunction nginx(hljs) {\n const regex = hljs.regex;\n const VAR = {\n className: 'variable',\n variants: [\n { begin: /\\$\\d+/ },\n { begin: /\\$\\{\\w+\\}/ },\n { begin: regex.concat(/[$@]/, hljs.UNDERSCORE_IDENT_RE) }\n ]\n };\n const LITERALS = [\n \"on\",\n \"off\",\n \"yes\",\n \"no\",\n \"true\",\n \"false\",\n \"none\",\n \"blocked\",\n \"debug\",\n \"info\",\n \"notice\",\n \"warn\",\n \"error\",\n \"crit\",\n \"select\",\n \"break\",\n \"last\",\n \"permanent\",\n \"redirect\",\n \"kqueue\",\n \"rtsig\",\n \"epoll\",\n \"poll\",\n \"/dev/poll\"\n ];\n const DEFAULT = {\n endsWithParent: true,\n keywords: {\n $pattern: /[a-z_]{2,}|\\/dev\\/poll/,\n literal: LITERALS\n },\n relevance: 0,\n illegal: '=>',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR\n ],\n variants: [\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /'/,\n end: /'/\n }\n ]\n },\n // this swallows entire URLs to avoid detecting numbers within\n {\n begin: '([a-z]+):/',\n end: '\\\\s',\n endsWithParent: true,\n excludeEnd: true,\n contains: [ VAR ]\n },\n {\n className: 'regexp',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR\n ],\n variants: [\n {\n begin: \"\\\\s\\\\^\",\n end: \"\\\\s|\\\\{|;\",\n returnEnd: true\n },\n // regexp locations (~, ~*)\n {\n begin: \"~\\\\*?\\\\s+\",\n end: \"\\\\s|\\\\{|;\",\n returnEnd: true\n },\n // *.example.com\n { begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\" },\n // sub.example.*\n { begin: \"([a-z\\\\-]+\\\\.)+\\\\*\" }\n ]\n },\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // units\n {\n className: 'number',\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]?\\\\b',\n relevance: 0\n },\n VAR\n ]\n };\n\n return {\n name: 'Nginx config',\n aliases: [ 'nginxconf' ],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: \"upstream location\",\n end: /;|\\{/,\n contains: DEFAULT.contains,\n keywords: { section: \"upstream location\" }\n },\n {\n className: 'section',\n begin: regex.concat(hljs.UNDERSCORE_IDENT_RE + regex.lookahead(/\\s+\\{/)),\n relevance: 0\n },\n {\n begin: regex.lookahead(hljs.UNDERSCORE_IDENT_RE + '\\\\s'),\n end: ';|\\\\{',\n contains: [\n {\n className: 'attribute',\n begin: hljs.UNDERSCORE_IDENT_RE,\n starts: DEFAULT\n }\n ],\n relevance: 0\n }\n ],\n illegal: '[^\\\\s\\\\}\\\\{]'\n };\n}\n\nmodule.exports = nginx;\n","import { ActionLocation, CardLocation, ExtensionPoint } from '@shell/core/types';\nimport { isMac } from '@shell/utils/platform';\nimport { ucFirst, randomStr } from '@shell/utils/string';\nimport {\n _EDIT, _CONFIG, _DETAIL, _LIST, _CREATE\n} from '@shell/config/query-params';\nimport { getProductFromRoute } from '@shell/utils/router';\nimport { isEqual } from '@shell/utils/object';\n\nfunction checkRouteProduct($route, locationConfigParam) {\n const product = getProductFromRoute($route);\n\n // alias for the homepage\n if (locationConfigParam === 'home' && $route.name === 'home') {\n return true;\n } else if (locationConfigParam === product) {\n return true;\n }\n\n return false;\n}\n\nfunction checkRouteMode({ name, query }, locationConfigParam) {\n if (locationConfigParam === _EDIT && query.mode && query.mode === _EDIT && !query.as) {\n return true;\n } else if (locationConfigParam === _CONFIG && query.as && query.as === _CONFIG) {\n return true;\n } else if (locationConfigParam === _DETAIL && !query.as && name.includes('-id') && (!query.mode || query?.mode !== _EDIT)) {\n return true;\n // alias to target all list views\n } else if (locationConfigParam === _LIST && !name.includes('-id') && name.includes('-resource')) {\n return true;\n // alias to target create views\n } else if (locationConfigParam === _CREATE && name.endsWith('-create')) {\n return true;\n }\n\n return false;\n}\n\nfunction checkExtensionRouteBinding($route, locationConfig, context) {\n // if no configuration is passed, consider it as global\n if (!Object.keys(locationConfig).length) {\n return true;\n }\n\n const { params } = $route;\n\n // \"params\" to be checked based on the locationConfig\n // This has become overloaded with mode and context\n const paramsToCheck = [\n 'product',\n 'resource',\n 'namespace',\n 'cluster',\n 'id',\n 'mode',\n 'path',\n 'hash',\n // url query params\n 'queryParam',\n // Custom context specific params provided by the extension, not to be confused with location params\n 'context',\n ];\n\n let res = true;\n\n for (let i = 0; i < paramsToCheck.length; i++) {\n const param = paramsToCheck[i];\n\n if (locationConfig[param]) {\n const asArray = Array.isArray(locationConfig[param]) ? locationConfig[param] : [locationConfig[param]];\n\n for (let x = 0; x < asArray.length; x++) {\n const locationConfigParam = asArray[x];\n\n if (locationConfigParam) {\n if (param === 'hash') {\n res = $route.hash ? $route.hash.includes(locationConfigParam) : false;\n // handle \"product\" in a separate way...\n } else if (param === 'product') {\n res = checkRouteProduct($route, locationConfigParam);\n // also handle \"mode\" in a separate way because it mainly depends on query params\n } else if (param === 'mode') {\n res = checkRouteMode($route, locationConfigParam);\n } else if (param === 'resource') {\n // Match exact resource but also allow resource of '*' to match any resource\n res = (params[param] && locationConfigParam === '*') || locationConfigParam === params[param];\n } else if (param === 'context') {\n // Need all keys and values to match\n res = isEqual(locationConfigParam, context);\n // evaluate queryParam in route\n } else if (param === 'queryParam') {\n res = isEqual(locationConfigParam, $route.query);\n // evaluate path in route\n } else if (param === 'path' && locationConfigParam.urlPath) {\n if (locationConfigParam.endsWith) {\n res = $route.path.endsWith(locationConfigParam.urlPath);\n } else if (!Object.keys(locationConfigParam).includes('exact') || locationConfigParam.exact) {\n res = locationConfigParam.urlPath === $route.path;\n } else {\n res = $route.path.includes(locationConfigParam.urlPath);\n }\n } else if (locationConfigParam === params[param]) {\n res = true;\n } else {\n res = false;\n }\n }\n\n // If a single location config param is good then this is an param (aka ['pods', 'configmap'] = pods or configmaps)\n if (res) {\n break;\n }\n }\n\n // If a single param (set of location config params) is bad then this is not an acceptable location\n if (!res) {\n break;\n }\n }\n }\n\n return res;\n}\n\nexport function getApplicableExtensionEnhancements(pluginCtx, actionType, uiArea, currRoute, translationCtx = pluginCtx, context) {\n const extensionEnhancements = [];\n\n // gate it so that we prevent errors on older versions of dashboard\n if (pluginCtx.$plugin?.getUIConfig) {\n const actions = pluginCtx.$plugin.getUIConfig(actionType, uiArea);\n\n actions.forEach((action, i) => {\n if (checkExtensionRouteBinding(currRoute, action.locationConfig, context || {})) {\n // ADD CARD PLUGIN UI ENHANCEMENT\n if (actionType === ExtensionPoint.CARD) {\n // intercept to apply translation\n if (uiArea === CardLocation.CLUSTER_DASHBOARD_CARD && action.labelKey) {\n actions[i].label = translationCtx.t(action.labelKey);\n }\n\n // ADD ACTION PLUGIN UI ENHANCEMENT\n } else if (actionType === ExtensionPoint.ACTION) {\n // TABLE ACTION\n if (uiArea === ActionLocation.TABLE) {\n // intercept to apply translation\n if (action.labelKey) {\n actions[i].label = translationCtx.t(action.labelKey);\n }\n\n // bulkable flag\n actions[i].bulkable = actions[i].multiple || actions[i].bulkable;\n\n // populate action identifier to prevent errors\n if (!actions[i].action) {\n actions[i].action = `custom-table-action-${ randomStr(10).toLowerCase() }`;\n }\n }\n\n // extract simplified shortcut definition on plugin - HEADER ACTION\n if (uiArea === ActionLocation.HEADER && action.shortcut) {\n // if it's a string, then assume CTRL for windows and META for mac\n if (typeof action.shortcut === 'string') {\n actions[i].shortcutLabel = () => {\n return isMac ? `(\\u2318-${ action.shortcut.toUpperCase() })` : `(Ctrl-${ action.shortcut.toUpperCase() })`;\n };\n actions[i].shortcutKey = { windows: ['ctrl', action.shortcut], mac: ['meta', action.shortcut] };\n // correct check for an Object type in JS... handle the object passed\n } else if (typeof action.shortcut === 'object' && !Array.isArray(action.shortcut) && action.shortcut !== null) {\n actions[i].shortcutKey = action.shortcut;\n const keyboardCombo = isMac ? actions[i].shortcut.mac : actions[i].shortcut.windows ? actions[i].shortcut.windows : [];\n let scLabel = '';\n\n keyboardCombo.forEach((key, i) => {\n if (i < keyboardCombo.length - 1) {\n if (key === 'meta') {\n key = '\\u2318';\n } else {\n key = ucFirst(key);\n }\n scLabel += `${ key }`;\n scLabel += '-';\n } else {\n scLabel += `${ key.toUpperCase() }`;\n }\n });\n\n actions[i].shortcutLabel = () => {\n return `(${ scLabel })`;\n };\n }\n }\n }\n\n extensionEnhancements.push(actions[i]);\n }\n });\n }\n\n return extensionEnhancements;\n}\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nclass PromiseSync {\n constructor(fn) {\n fn(this._resolve.bind(this), this._reject.bind(this))\n }\n\n catch(rejected) {\n if (this.error) {\n try {\n this._resolve(rejected(this.error))\n } catch (e) {\n this._reject(e)\n }\n }\n return this\n }\n\n then(resolved, rejected) {\n if (!this.error) {\n try {\n this._resolve(resolved(this.value))\n } catch (e) {\n this._reject(e)\n }\n }\n if (rejected) this.catch(rejected)\n return this\n }\n\n _reject(error) {\n this.value = undefined\n this.error = error\n }\n\n _resolve(val) {\n if (val instanceof PromiseSync) {\n if (val.error) {\n this._reject(val.error)\n } else {\n this._resolve(val.value)\n }\n } else {\n this.value = val\n this.error = undefined\n }\n }\n}\n\nPromiseSync.all = vals =>\n new PromiseSync(resolve => {\n const resolved = vals.map(val => {\n while (val instanceof PromiseSync) {\n if (val.error) throw Error(val.error)\n val = val.value\n }\n return val\n })\n resolve(resolved)\n })\n\nPromiseSync.resolve = val => new PromiseSync(resolve => resolve(val))\n\nPromiseSync.reject = error =>\n new PromiseSync((resolve, reject) => reject(error))\n\nmodule.exports = PromiseSync\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".sources__container[data-v-5fa70040]{position:relative;display:block}.sources__container__cert[data-v-5fa70040]{display:grid;grid-template-columns:auto 150px;align-items:center;margin-bottom:10px}.sources__container__cert>.remove[data-v-5fa70040]{text-align:right}.sources__container>.remove[data-v-5fa70040]{position:absolute;padding:0;top:0;right:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.roletemplate.vue?vue&type=style&index=0&id=5050d908&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \r\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Bar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Bar.vue?vue&type=template&id=b4f4e2ae&scoped=true&\"\nimport script from \"./Bar.vue?vue&type=script&lang=js&\"\nexport * from \"./Bar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Bar.vue?vue&type=style&index=0&id=b4f4e2ae&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b4f4e2ae\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentageBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentageBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PercentageBar.vue?vue&type=template&id=620caa7e&scoped=true&\"\nimport script from \"./PercentageBar.vue?vue&type=script&lang=js&\"\nexport * from \"./PercentageBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PercentageBar.vue?vue&type=style&index=0&id=620caa7e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"620caa7e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsumptionGauge.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ConsumptionGauge.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ConsumptionGauge.vue?vue&type=template&id=3f3d0a16&\"\nimport script from \"./ConsumptionGauge.vue?vue&type=script&lang=js&\"\nexport * from \"./ConsumptionGauge.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ConsumptionGauge.vue?vue&type=style&index=0&id=3f3d0a16&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.card.isLoaded)?_c('div',{class:_vm.setLoading},[_c('i',{staticClass:\"icon-spinner animate-spin\"})]):_c('div',{staticClass:\"d-main\",class:_vm.setLoading},[_c('div',{staticClass:\"d-header\"},[_c('n-link',{attrs:{\"to\":_vm.card.link}},[_c('h1',[_vm._v(\" \"+_vm._s(_vm.t(_vm.card.title))+\" \")])])],1),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t(_vm.card.description)),expression:\"t(card.description)\"}]}),_c('n-link',{staticClass:\"btn role-secondary\",attrs:{\"to\":_vm.card.cta}},[_vm._v(\" \"+_vm._s(_vm.t(_vm.card.linkText))+\" \")]),_c('hr'),_c('div',{staticClass:\"d-slot\"},[_c('h2',[_vm._v(_vm._s(_vm.t(_vm.card.slotTitle)))]),_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Card.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Card.vue?vue&type=template&id=3335bcf8&scoped=true&\"\nimport script from \"./Card.vue?vue&type=script&lang=js&\"\nexport * from \"./Card.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Card.vue?vue&type=style&index=0&id=3335bcf8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3335bcf8\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardView.vue?vue&type=template&id=1123c0e0&scoped=true&\"\nimport script from \"./DashboardView.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardView.vue?vue&type=style&index=0&id=1123c0e0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1123c0e0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',{staticClass:\"container\"},[(!_vm.install)?_c('div',{staticClass:\"title p-10\"},[_c('div',{staticClass:\"logo mt-20 mb-10\"},[_c('img',{attrs:{\"src\":require(\"../../assets/icon-kubewarden.svg\"),\"height\":\"64\"}})]),_c('h1',{staticClass:\"mb-20\",attrs:{\"data-testid\":\"kw-install-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.title\"))+\" \")]),_c('div',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.description\"))+\" \")]),(!_vm.hasSchema)?_c('button',{staticClass:\"btn role-primary mt-20\",attrs:{\"data-testid\":\"kw-initial-install-button\"},on:{\"click\":function($event){_vm.install = true}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.button\"))+\" \")]):_vm._e()]):[(_vm.isAirgap)?[_c('Banner',{staticClass:\"mb-20 mt-20\",attrs:{\"color\":\"warning\"}},[_c('span',{attrs:{\"data-testid\":\"kw-install-ag-warning\"}},[_vm._v(_vm._s(_vm.t('kubewarden.dashboard.prerequisites.airGapped.warning')))])]),_c('Markdown',{model:{value:(_vm.docs.airgap),callback:function ($$v) {_vm.$set(_vm.docs, \"airgap\", $$v)},expression:\"docs.airgap\"}})]:[_c('InstallWizard',{ref:\"wizard\",attrs:{\"init-step-index\":_vm.initStepIndex,\"steps\":_vm.installSteps,\"data-testid\":\"kw-install-wizard\"},scopedSlots:_vm._u([{key:\"certmanager\",fn:function(){return [_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-cm-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.description\"))+\" \")]),_c('p',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t('kubewarden.dashboard.prerequisites.certManager.manualStep', null, true)),expression:\"t('kubewarden.dashboard.prerequisites.certManager.manualStep', null, true)\"}]}),_c('CopyCode',{staticClass:\"m-10 p-10\",attrs:{\"data-testid\":\"kw-cm-copy-code\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.applyCommand\"))+\" \")]),_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":\"kw-cm-open-shell\",\"disabled\":!_vm.shellEnabled,\"type\":\"button\"},on:{\"shortkey\":function($event){return _vm.currentCluster.openShell()},\"click\":function($event){return _vm.currentCluster.openShell()}}},[_c('i',{staticClass:\"icon icon-terminal icon-lg\"}),_vm._v(_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.certManager.openShell\"))+\" \")]),_vm._t(\"default\",function(){return [_c('Banner',{staticClass:\"mb-20 mt-20\",attrs:{\"color\":\"info\",\"label\":_vm.t('kubewarden.dashboard.prerequisites.certManager.stepProgress')}})]})]},proxy:true},{key:\"install\",fn:function(){return [(!_vm.kubewardenRepo)?[_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-repo-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.repository.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.prerequisites.repository.description\"))+\" \")]),_c('AsyncButton',{attrs:{\"mode\":\"kubewardenRepository\",\"data-testid\":\"kw-repo-add-button\"},on:{\"click\":_vm.addRepository}})]:[_c('h2',{staticClass:\"mt-20 mb-10\",attrs:{\"data-testid\":\"kw-app-install-title\"}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.title\"))+\" \")]),_c('p',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.description\"))+\" \")]),_c('div',{staticClass:\"chart-route\"},[(!_vm.controllerChart && !_vm.reloadReady)?_c('Loading',{staticClass:\"mt-20\",attrs:{\"mode\":\"relative\"}}):(!_vm.controllerChart && _vm.reloadReady)?[_c('Banner',{attrs:{\"color\":\"warning\"}},[_c('span',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.dashboard.appInstall.reload' ))+\" \")]),_c('button',{staticClass:\"ml-10 btn btn-sm role-primary\",attrs:{\"data-testid\":\"kw-app-install-reload\"},on:{\"click\":function($event){return _vm.reload()}}},[_vm._v(\" \"+_vm._s(_vm.t('generic.reload'))+\" \")])])]:[_c('button',{staticClass:\"btn role-primary mt-20\",attrs:{\"data-testid\":\"kw-app-install-button\",\"disabled\":!_vm.controllerChart},on:{\"click\":function($event){$event.preventDefault();return _vm.chartRoute.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(\"kubewarden.dashboard.appInstall.button\"))+\" \")])]],2)]]},proxy:true}],null,true)})]]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('code',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"copy\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.clicked.apply(null, arguments)}}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// src/clipboard-polyfill/ClipboardItem/data-types.ts\nvar TEXT_PLAIN = \"text/plain\";\nvar TEXT_HTML = \"text/html\";\n\n// src/clipboard-polyfill/debug.ts\nvar debugLogImpl = (s) => {\n};\nfunction debugLog(s) {\n debugLogImpl(s);\n}\nfunction setDebugLog(logFn) {\n debugLogImpl = logFn;\n}\nvar showWarnings = true;\nfunction suppressWarnings() {\n showWarnings = false;\n}\nfunction shouldShowWarnings() {\n return showWarnings;\n}\nfunction warnOrLog() {\n (console.warn || console.log).apply(console, arguments);\n}\nvar warn = warnOrLog.bind(\"[clipboard-polyfill]\");\n\n// src/clipboard-polyfill/builtins/window-globalThis.ts\nvar originalWindow = typeof window === \"undefined\" ? void 0 : window;\nvar originalGlobalThis = typeof globalThis === \"undefined\" ? void 0 : globalThis;\n\n// src/clipboard-polyfill/builtins/promise-constructor.ts\nvar _a, _b, _c;\nvar promiseConstructorImpl = (_c = (_a = originalWindow) == null ? void 0 : _a.Promise) != null ? _c : (_b = originalGlobalThis) == null ? void 0 : _b.Promise;\nfunction getPromiseConstructor() {\n if (!promiseConstructorImpl) {\n throw new Error(\n \"No `Promise` implementation available for `clipboard-polyfill`. Consider using: https://github.com/lgarron/clipboard-polyfill#flat-file-version-with-promise-included\"\n );\n }\n return promiseConstructorImpl;\n}\n\n// src/clipboard-polyfill/builtins/builtin-globals.ts\nvar originalNavigator = typeof navigator === \"undefined\" ? void 0 : navigator;\nvar originalNavigatorClipboard = originalNavigator == null ? void 0 : originalNavigator.clipboard;\nvar _a2;\nvar originalNavigatorClipboardRead = (_a2 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.read) == null ? void 0 : _a2.bind(\n originalNavigatorClipboard\n);\nvar _a3;\nvar originalNavigatorClipboardReadText = (_a3 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.readText) == null ? void 0 : _a3.bind(\n originalNavigatorClipboard\n);\nvar _a4;\nvar originalNavigatorClipboardWrite = (_a4 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.write) == null ? void 0 : _a4.bind(\n originalNavigatorClipboard\n);\nvar _a5;\nvar originalNavigatorClipboardWriteText = (_a5 = originalNavigatorClipboard == null ? void 0 : originalNavigatorClipboard.writeText) == null ? void 0 : _a5.bind(\n originalNavigatorClipboard\n);\nvar _a6;\nvar originalWindowClipboardItem = (_a6 = originalWindow) == null ? void 0 : _a6.ClipboardItem;\nvar promiseConstructor = getPromiseConstructor();\n\n// src/clipboard-polyfill/strategies/internet-explorer.ts\nvar ieWindow = originalWindow;\nfunction seemToBeInIE() {\n return typeof ClipboardEvent === \"undefined\" && typeof (ieWindow == null ? void 0 : ieWindow.clipboardData) !== \"undefined\" && typeof (ieWindow == null ? void 0 : ieWindow.clipboardData.setData) !== \"undefined\";\n}\nfunction writeTextIE(text) {\n if (!ieWindow.clipboardData) {\n return false;\n }\n var success = ieWindow.clipboardData.setData(\"Text\", text);\n if (success) {\n debugLog(\"writeTextIE worked\");\n }\n return success;\n}\nfunction readTextIE() {\n if (!ieWindow.clipboardData) {\n throw new Error(\"Cannot read IE clipboard Data \");\n }\n var text = ieWindow.clipboardData.getData(\"Text\");\n if (text === \"\") {\n throw new Error(\n \"Empty clipboard or could not read plain text from clipboard\"\n );\n }\n return text;\n}\n\n// src/clipboard-polyfill/strategies/dom.ts\nfunction copyListener(tracker, data, e) {\n debugLog(\"listener called\");\n tracker.success = true;\n for (var type in data) {\n var value = data[type];\n var clipboardData = e.clipboardData;\n clipboardData.setData(type, value);\n if (type === TEXT_PLAIN && clipboardData.getData(type) !== value) {\n debugLog(\"setting text/plain failed\");\n tracker.success = false;\n }\n }\n e.preventDefault();\n}\nfunction execCopy(data) {\n var tracker = { success: false };\n var listener = copyListener.bind(this, tracker, data);\n document.addEventListener(\"copy\", listener);\n try {\n document.execCommand(\"copy\");\n } finally {\n document.removeEventListener(\"copy\", listener);\n }\n return tracker.success;\n}\nfunction copyUsingTempSelection(e, data) {\n selectionSet(e);\n var success = execCopy(data);\n selectionClear();\n return success;\n}\nfunction copyUsingTempElem(data) {\n var tempElem = document.createElement(\"div\");\n tempElem.setAttribute(\"style\", \"-webkit-user-select: text !important\");\n tempElem.textContent = \"temporary element\";\n document.body.appendChild(tempElem);\n var success = copyUsingTempSelection(tempElem, data);\n document.body.removeChild(tempElem);\n return success;\n}\nfunction copyTextUsingDOM(str) {\n debugLog(\"copyTextUsingDOM\");\n var tempElem = document.createElement(\"div\");\n tempElem.setAttribute(\"style\", \"-webkit-user-select: text !important\");\n var spanParent = tempElem;\n if (tempElem.attachShadow) {\n debugLog(\"Using shadow DOM.\");\n spanParent = tempElem.attachShadow({ mode: \"open\" });\n }\n var span = document.createElement(\"span\");\n span.innerText = str;\n spanParent.appendChild(span);\n document.body.appendChild(tempElem);\n selectionSet(span);\n var result = document.execCommand(\"copy\");\n selectionClear();\n document.body.removeChild(tempElem);\n return result;\n}\nfunction selectionSet(elem) {\n var sel = document.getSelection();\n if (sel) {\n var range = document.createRange();\n range.selectNodeContents(elem);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n}\nfunction selectionClear() {\n var sel = document.getSelection();\n if (sel) {\n sel.removeAllRanges();\n }\n}\n\n// src/clipboard-polyfill/implementations/write-fallback.ts\nfunction writeFallback(stringItem) {\n var hasTextPlain = TEXT_PLAIN in stringItem;\n if (seemToBeInIE()) {\n if (!hasTextPlain) {\n throw new Error(\"No `text/plain` value was specified.\");\n }\n if (writeTextIE(stringItem[TEXT_PLAIN])) {\n return true;\n } else {\n throw new Error(\"Copying failed, possibly because the user rejected it.\");\n }\n }\n if (execCopy(stringItem)) {\n debugLog(\"regular execCopy worked\");\n return true;\n }\n if (navigator.userAgent.indexOf(\"Edge\") > -1) {\n debugLog('UA \"Edge\" => assuming success');\n return true;\n }\n if (copyUsingTempSelection(document.body, stringItem)) {\n debugLog(\"copyUsingTempSelection worked\");\n return true;\n }\n if (copyUsingTempElem(stringItem)) {\n debugLog(\"copyUsingTempElem worked\");\n return true;\n }\n if (copyTextUsingDOM(stringItem[TEXT_PLAIN])) {\n debugLog(\"copyTextUsingDOM worked\");\n return true;\n }\n return false;\n}\n\n// src/clipboard-polyfill/promise/promise-compat.ts\nfunction promiseRecordMap(keys, f) {\n var promiseList = [];\n for (var i in keys) {\n var key = keys[i];\n promiseList.push(f(key));\n }\n return promiseConstructor.all(promiseList).then((vList) => {\n var dataOut = {};\n for (var i2 = 0; i2 < keys.length; i2++) {\n dataOut[keys[i2]] = vList[i2];\n }\n return dataOut;\n });\n}\nvar voidPromise = promiseConstructor.resolve();\nvar truePromiseFn = () => promiseConstructor.resolve(true);\nvar falsePromise = promiseConstructor.resolve(false);\nfunction rejectThrownErrors(executor) {\n return new promiseConstructor((resolve, reject) => {\n try {\n resolve(executor());\n } catch (e) {\n reject(e);\n }\n });\n}\n\n// src/clipboard-polyfill/implementations/text.ts\nfunction stringToStringItem(s) {\n var stringItem = {};\n stringItem[TEXT_PLAIN] = s;\n return stringItem;\n}\nfunction writeText(s) {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardWriteText) {\n debugLog(\"Using `navigator.clipboard.writeText()`.\");\n return originalNavigatorClipboardWriteText(s).catch(\n writeTextStringFallback\n );\n }\n return promiseConstructor.resolve(writeTextStringFallback(s));\n });\n}\nfunction writeTextStringFallback(s) {\n if (!writeFallback(stringToStringItem(s))) {\n throw new Error(\"writeText() failed\");\n }\n}\nfunction readText() {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardReadText) {\n debugLog(\"Using `navigator.clipboard.readText()`.\");\n return originalNavigatorClipboardReadText();\n }\n if (seemToBeInIE()) {\n var result = readTextIE();\n return promiseConstructor.resolve(result);\n }\n throw new Error(\"Read is not supported in your browser.\");\n });\n}\n\n// src/clipboard-polyfill/ClipboardItem/check.ts\nfunction hasItemWithType(clipboardItems, typeName) {\n for (var i in clipboardItems) {\n var item = clipboardItems[i];\n if (item.types.indexOf(typeName) !== -1) {\n return true;\n }\n }\n return false;\n}\n\n// src/clipboard-polyfill/ClipboardItem/ClipboardItemPolyfill.ts\nfunction ClipboardItemPolyfillImpl(items, options) {\n var _a7;\n var types = Object.keys(items);\n var _items = {};\n for (var type in items) {\n var item = items[type];\n if (typeof item === \"string\") {\n _items[type] = stringToBlob(type, item);\n } else {\n _items[type] = item;\n }\n }\n var presentationStyle = (_a7 = options == null ? void 0 : options.presentationStyle) != null ? _a7 : \"unspecified\";\n function getType(type2) {\n return promiseConstructor.resolve(_items[type2]);\n }\n return {\n types,\n presentationStyle,\n getType\n };\n}\nvar ClipboardItemPolyfill = ClipboardItemPolyfillImpl;\n\n// src/clipboard-polyfill/ClipboardItem/convert.ts\nfunction stringToBlob(type, str) {\n return new Blob([str], {\n type\n });\n}\nfunction blobToString(blob) {\n return new promiseConstructor((resolve, reject) => {\n var fileReader = new FileReader();\n fileReader.addEventListener(\"load\", () => {\n var result = fileReader.result;\n if (typeof result === \"string\") {\n resolve(result);\n } else {\n reject(\"could not convert blob to string\");\n }\n });\n fileReader.readAsText(blob);\n });\n}\nfunction clipboardItemToGlobalClipboardItem(clipboardItem) {\n return promiseRecordMap(clipboardItem.types, function(type) {\n return clipboardItem.getType(type);\n }).then((items) => {\n return new Promise((resolve, reject) => {\n var options = {};\n if (clipboardItem.presentationStyle) {\n options.presentationStyle = clipboardItem.presentationStyle;\n }\n if (originalWindowClipboardItem) {\n resolve(new originalWindowClipboardItem(items, options));\n } else {\n reject(\"window.ClipboardItem is not defined\");\n }\n });\n });\n}\nfunction textToClipboardItem(text) {\n var items = {};\n items[TEXT_PLAIN] = stringToBlob(text, TEXT_PLAIN);\n return new ClipboardItemPolyfill(items);\n}\nfunction getTypeAsString(clipboardItem, type) {\n return clipboardItem.getType(type).then((text) => {\n return blobToString(text);\n });\n}\nfunction toStringItem(data) {\n return promiseRecordMap(data.types, function(type) {\n return getTypeAsString(data, type);\n });\n}\n\n// src/clipboard-polyfill/implementations/blob.ts\nfunction write(data) {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardWrite && originalWindowClipboardItem) {\n var originalNavigatorClipboardWriteCached = originalNavigatorClipboardWrite;\n debugLog(\"Using `navigator.clipboard.write()`.\");\n return promiseConstructor.all(data.map(clipboardItemToGlobalClipboardItem)).then(\n (globalClipboardItems) => {\n return originalNavigatorClipboardWriteCached(globalClipboardItems).then(truePromiseFn).catch((e) => {\n if (!hasItemWithType(data, TEXT_PLAIN) && !hasItemWithType(data, TEXT_HTML)) {\n throw e;\n }\n return falsePromise;\n });\n }\n );\n }\n return falsePromise;\n }).then((success) => {\n if (success) {\n return voidPromise;\n }\n var hasTextPlain = hasItemWithType(data, TEXT_PLAIN);\n if (shouldShowWarnings() && !hasTextPlain) {\n debugLog(\n \"clipboard.write() was called without a `text/plain` data type. On some platforms, this may result in an empty clipboard. Call suppressWarnings() to suppress this warning.\"\n );\n }\n return toStringItem(data[0]).then((stringItem) => {\n if (!writeFallback(stringItem)) {\n throw new Error(\"write() failed\");\n }\n });\n });\n}\nfunction read() {\n return rejectThrownErrors(() => {\n if (originalNavigatorClipboardRead) {\n debugLog(\"Using `navigator.clipboard.read()`.\");\n return originalNavigatorClipboardRead();\n }\n return readText().then((text) => {\n return [textToClipboardItem(text)];\n });\n });\n}\nexport {\n ClipboardItemPolyfill as ClipboardItem,\n read,\n readText,\n setDebugLog,\n suppressWarnings,\n write,\n writeText\n};\n//# sourceMappingURL=clipboard-polyfill.es6.js.map\n","import * as Clipboard from 'clipboard-polyfill';\n\nexport async function copyTextToClipboard(text) {\n await Clipboard.writeText(text);\n}\n","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyCode.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyCode.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CopyCode.vue?vue&type=template&id=5f6f7450&scoped=true&\"\nimport script from \"./CopyCode.vue?vue&type=script&lang=js&\"\nexport * from \"./CopyCode.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CopyCode.vue?vue&type=style&index=0&id=5f6f7450&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f6f7450\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"header mt-20 mb-20\"},[_c('div',{staticClass:\"title\"},[(_vm.showTitle)?[_c('div',{staticClass:\"product\"},[_vm._m(0),_c('div',{staticClass:\"subtitle mr-20\"},[_c('h2',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.title'))+\" \")]),_c('span',{staticClass:\"subtext\"},[_vm._v(_vm._s(_vm.t('kubewarden.dashboard.install')))])])])]:_vm._e(),(_vm.steps.length > 1)?_c('div',{staticClass:\"subtitle\"},[_c('h2',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.t('wizard.step', {number: _vm.activeStepIndex + 1}))+\" \")]),_vm._t(\"bannerSubtext\",function(){return [_c('span',{staticClass:\"subtext\"},[_vm._v(_vm._s(_vm.activeStep.label))])]})],2):_vm._e()],2),(_vm.steps.length > 1)?[_c('div',{staticClass:\"step-sequence\"},[_c('ul',{staticClass:\"steps\",attrs:{\"tabindex\":\"0\"}},[_vm._l((_vm.steps),function(step,idx){return [_c('li',{key:step.name + 'li',class:{\n step: true,\n active: step.name === _vm.activeStep.name,\n disabled: !_vm.isAvailable(step),\n },attrs:{\"id\":step.name,\"role\":\"presentation\"}},[_c('span',{staticClass:\"controls\",attrs:{\"aria-controls\":'step' + idx + 1,\"aria-selected\":step.name === _vm.activeStep.name,\"role\":\"tab\"},on:{\"click\":function($event){$event.preventDefault();return _vm.goToStep(idx + 1, true)}}},[_c('span',{staticClass:\"icon icon-lg\",class:{\n 'icon-dot': step.name === _vm.activeStep.name,\n 'icon-dot-open': step.name !== _vm.activeStep.name,\n }}),_c('span',[_vm._v(\" \"+_vm._s(step.label)+\" \")])])]),(idx !== _vm.steps.length - 1)?_c('div',{key:step.name,staticClass:\"divider\"}):_vm._e()]})],2)])]:_vm._e()],2),_vm._t(\"stepContainer mt-20\",function(){return [_vm._l((_vm.steps),function(step){return [(step.name === _vm.activeStep.name || step.hidden)?_c('div',{key:step.name,staticClass:\"step-container\",class:{ hide: step.name !== _vm.activeStep.name && step.hidden }},[_vm._t(step.name,null,{\"step\":step})],2):_vm._e()]})]},{\"activeStep\":_vm.activeStep})],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"product-image\"},[_c('img',{staticClass:\"logo\",attrs:{\"src\":require(\"../assets/icon-kubewarden.svg\")}})])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallWizard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallWizard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstallWizard.vue?vue&type=template&id=438d868c&scoped=true&\"\nimport script from \"./InstallWizard.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallWizard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallWizard.vue?vue&type=style&index=0&id=438d868c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"438d868c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InstallView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InstallView.vue?vue&type=template&id=37141aab&scoped=true&\"\nimport script from \"./InstallView.vue?vue&type=script&lang=js&\"\nexport * from \"./InstallView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InstallView.vue?vue&type=style&index=0&id=37141aab&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37141aab\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2c2b7392&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('PolicyReporter')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[(!_vm.hasAvailability)?[_c('Banner',{staticClass:\"mt-20 mb-20\",attrs:{\"color\":\"error\",\"data-testid\":\"kw-unavailability-banner\",\"label\":_vm.t('kubewarden.unavailability.banner', { type: _vm.t('kubewarden.unavailability.type.policyReporter') })}})]:(!_vm.hasPolicyServerSchema)?[_c('div',[_c('h1',{staticClass:\"mb-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.title'))+\" \")]),_c('Banner',{staticClass:\"mt-20 mb-20\",attrs:{\"label\":_vm.t('kubewarden.policyReporter.noSchema.banner'),\"color\":\"error\",\"data-testid\":\"kw-pr-noschema-banner\"}}),_c('div',{staticClass:\"install-route\"},[_c('n-link',{attrs:{\"to\":_vm.rootKubewardenRoute()}},[_c('button',{staticClass:\"btn role-primary mt-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.noSchema.link'))+\" \")])])],1)],1)]:(!_vm.canShowReporter)?[_c('Banner',{staticClass:\"mt-20 mb-20\",attrs:{\"color\":\"error\",\"data-testid\":\"kw-pr-incompatibile-banner\"}},[_c('p',[_vm._v(_vm._s(_vm.t('kubewarden.policyReporter.incompatible.banner')))]),(_vm.controllerVersion)?_c('p',{staticClass:\"mt-10\",attrs:{\"data-testid\":\"kw-pr-controller-version-badge\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.incompatible.current'))+\": \"),_c('span',{staticClass:\"version-badge\"},[_vm._v(_vm._s(_vm.controllerVersion))])]):_vm._e()])]:(_vm.canShowReporter)?[(!_vm.reporterCrds)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.incompatible.noCrds.banner'),\"data-testid\":\"kw-pr-no-crds-banner\",\"color\":\"error\"}})]:[(!_vm.reporterReportingService)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.service.main.banner.unavailable'),\"data-testid\":\"kw-pr-main-service-unavailable-banner\",\"color\":\"warning\"}})]:(!_vm.reporterUIService)?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.service.ui.banner.unavailable'),\"data-testid\":\"kw-pr-ui-service-unavailable-banner\",\"color\":\"warning\"}})]:_vm._e(),(_vm.reporterUrl)?[_c('div',[_c('div',{staticClass:\"reporter__header mb-20\"},[_c('div',{staticClass:\"reporter__external-link\"},[_c('a',{attrs:{\"href\":_vm.reporterUrl,\"target\":\"_blank\",\"rel\":\"noopener nofollow\",\"data-testid\":\"kw-pr-reporter-link\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyReporter.link'))+\" \"),_c('i',{staticClass:\"icon icon-external-link\"})])])]),(_vm.reporterDeploymentState && _vm.reporterDeploymentState !== 'active')?[_c('Banner',{attrs:{\"label\":_vm.t('kubewarden.policyReporter.deployment.banner.unavailable', { state: _vm.reporterDeploymentState }),\"color\":\"warning\"}})]:[_c('div',{staticClass:\"reporter__container\"},[_c('iframe',{ref:\"frame\",attrs:{\"src\":_vm.reporterUrl,\"frameborder\":\"0\",\"data-testid\":\"kw-pr-iframe\"}})])]],2)]:_vm._e()]]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex';\nimport { allHashSettled } from '@shell/utils/promise';\n\nexport default {\n computed: { ...mapGetters(['currentCluster']) },\n data() {\n return { isLoadingSecondaryResources: false };\n },\n methods: {\n /**\n *\n * Function resourceManagerFetchSecondaryResources\n * This method is used to fetch what is called \"secondary resources\", which can be defined as resources that are needed to populate\n * the page/component itself (ex: used as options on a Select) but don't need to be put into Vuex store or watched to get constant updates.\n * This method allows to fetch resources for a given namespace to reduce the amount of results instead of needing to fetch all and filtering afterwards.\n *\n *\n * @param {String} resourceData.namespace - Namespace identifier\n * @param {Object} resourceData.data - Object containing info about the data needed to be fetched and how it should be parsed. Note: The KEY NEEDS to be the resource TYPE!\n * @param {Array} resourceData.data[TYPE].applyTo - The array of operations needed to be performed for the specific data TYPE\n * @param {String} resourceData.data[TYPE].applyTo[x].var - The 'this' property name that should be populated with the data fetched\n * @param {Boolean} resourceData.data[TYPE].applyTo[x].classify - Whether the data fetched should have a model applied to it\n * @param {Function} resourceData.data[TYPE].applyTo[x].parsingFunc - Optional parsing function if the fetched data needs to be parsed\n * @param {Boolean} onlyNamespaced - Only fetch namespaced resources\n */\n async resourceManagerFetchSecondaryResources(resourceData, onlyNamespaced = false) {\n const requests = {};\n const namespace = resourceData.namespace;\n\n // Only fetch types if the user is allowed to...\n Object.keys(resourceData.data).forEach((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n if (schema) {\n let url = schema.links.collection;\n\n if (schema?.attributes?.namespaced && namespace) {\n url = `${ url }/${ namespace }`;\n } else if (onlyNamespaced) {\n // Type isn't namespaced and we've been requested to only fetch namespaced types\n return;\n }\n\n requests[type] = this.$store.dispatch('cluster/request', { url });\n }\n });\n\n if (Object.keys(requests).length) {\n // this is the flag/variable that we need to apply to all places that rely on this data. Ex: LabeledSelect\n this.isLoadingSecondaryResources = true;\n const hash = await allHashSettled(requests);\n const types = Object.keys(hash);\n\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n const status = hash[type].status;\n // if it's namespaced, we get the data on 'items' prop, for non-namespaced it's 'data' prop...\n const requestData = hash[type].value.items || hash[type].value.data || hash[type].value;\n\n if (status === 'fulfilled' && resourceData.data[type] && resourceData.data[type].applyTo?.length) {\n for (let y = 0; y < resourceData.data[type].applyTo.length; y++) {\n const apply = resourceData.data[type].applyTo[y];\n let resources = requestData;\n\n if (apply.classify) {\n resources = await this.$store.dispatch('cluster/createMany', requestData);\n }\n\n if (apply.parsingFunc) {\n this[apply.var] = apply.parsingFunc(resources);\n } else {\n this[apply.var] = resources;\n }\n }\n } else if (status === 'rejected') {\n console.error(`Resource Manager - secondary data request for type ${ type } has failed`, status.error); // eslint-disable-line no-console\n }\n }\n\n this.isLoadingSecondaryResources = false;\n }\n },\n\n /**\n * Clear the cached secondary resources\n *\n * @param {*} resourceData See resourceManagerFetchSecondaryResources\n * @param {*} onlyNamespaced Clear only namespaced resources\n */\n resourceManagerClearSecondaryResources(resourceData, onlyNamespaced = false) {\n Object.keys(resourceData.data).forEach((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n if (schema) {\n if (!schema?.attributes?.namespaced && onlyNamespaced) {\n // resource isn't namespaced and we're only interested in namespaced resources\n return;\n }\n\n for (let y = 0; y < resourceData.data[type].applyTo.length; y++) {\n const apply = resourceData.data[type].applyTo[y];\n\n this[apply.var] = [];\n }\n }\n });\n }\n },\n};\n","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=1e73a328&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=1e73a328&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e73a328\",\n null\n \n)\n\nexport default component.exports","\nimport PolicyReporter from '../../../../../components/PolicyReporter/index.vue';\n\nexport default {\n name: 'KubewardenResourcedList',\n components: { PolicyReporter },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policy-reporter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policy-reporter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./policy-reporter.vue?vue&type=template&id=3096ae67&\"\nimport script from \"./policy-reporter.vue?vue&type=script&lang=ts&\"\nexport * from \"./policy-reporter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceList')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.namespaceFilterRequired)?_c('IconMessage',{attrs:{\"vertical\":true,\"subtle\":false,\"icon\":\"icon-filter_alt\"},scopedSlots:_vm._u([{key:\"message\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.t('resourceList.nsFiltering'))+\" \")]},proxy:true}],null,false,4238627989)}):(_vm.paginationNsFilterRequired)?_c('IconMessage',{attrs:{\"vertical\":true,\"subtle\":false,\"icon\":\"icon-filter_alt\"},scopedSlots:_vm._u([{key:\"message\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.t('resourceList.nsFilteringGeneric'))+\" \")]},proxy:true}])}):_c('div',[(_vm.showMasthead)?_c('Masthead',{attrs:{\"type-display\":_vm.customTypeDisplay,\"schema\":_vm.schema,\"resource\":_vm.resource,\"show-incremental-loading-indicator\":_vm.showIncrementalLoadingIndicator,\"load-resources\":_vm.loadResources,\"load-indeterminate\":_vm.loadIndeterminate}},[_c('template',{slot:\"extraActions\"},[_vm._t(\"extraActions\")],2)],2):_vm._e(),_c('ExtensionPanel',{attrs:{\"resource\":{},\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}}),(_vm.hasListComponent)?_c('div',[_c(_vm.listComponent,_vm._b({tag:\"component\",attrs:{\"incremental-loading-indicator\":_vm.showIncrementalLoadingIndicator,\"rows\":_vm.rows}},'component',_vm.$data,false))],1):_c('ResourceTable',{attrs:{\"schema\":_vm.schema,\"rows\":_vm.rows,\"alt-loading\":_vm.canPaginate,\"loading\":_vm.loading,\"headers\":_vm.headers,\"group-by\":_vm.groupBy,\"has-advanced-filtering\":_vm.hasAdvancedFiltering,\"adv-filter-hide-labels-as-cols\":_vm.advFilterHideLabelsAsCols,\"adv-filter-prevent-filtering-labels\":_vm.advFilterPreventFilteringLabels,\"use-query-params-for-simple-filtering\":_vm.useQueryParamsForSimpleFiltering,\"force-update-live-and-delayed\":_vm.forceUpdateLiveAndDelayed,\"external-pagination-enabled\":_vm.canPaginate,\"external-pagination-result\":_vm.paginationResult},on:{\"pagination-changed\":_vm.paginationChanged}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('header',{staticClass:\"with-subheader\"},[_vm._t(\"typeDescription\",function(){return [_c('TypeDescription',{attrs:{\"resource\":_vm.resource}})]}),_c('div',{staticClass:\"title\"},[_c('h1',{staticClass:\"m-0\"},[_c('TabTitle',[_vm._v(_vm._s(_vm._typeDisplay))]),_vm._v(\" \"),(_vm.isExplorer)?_c('Favorite',{attrs:{\"resource\":_vm.favoriteResource || _vm.resource}}):_vm._e()],1),(_vm.showIncrementalLoadingIndicator)?_c('ResourceLoadingIndicator',{attrs:{\"resources\":_vm.loadResources,\"indeterminate\":_vm.loadIndeterminate}}):_vm._e()],1),_c('div',{staticClass:\"sub-header\"},[_vm._t(\"subHeader\")],2),_c('div',{staticClass:\"actions-container\"},[_vm._t(\"actions\",function(){return [_c('div',{staticClass:\"actions\"},[_vm._t(\"extraActions\"),_vm._t(\"createButton\",function(){return [(_vm.hasEditComponent && _vm._isCreatable)?_c('router-link',{staticClass:\"btn role-primary\",attrs:{\"to\":_vm._createLocation,\"data-testid\":_vm.componentTestid+'-create'}},[_vm._v(\" \"+_vm._s(_vm._createButtonlabel)+\" \")]):(_vm._isYamlCreatable)?_c('router-link',{staticClass:\"btn role-primary\",attrs:{\"to\":_vm._yamlCreateLocation,\"data-testid\":_vm.componentTestid+'-create-yaml'}},[_vm._v(\" \"+_vm._s(_vm.t(\"resourceList.head.createFromYaml\"))+\" \")]):_vm._e()]})],2)]})],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('i',{staticClass:\"favorite icon\",class:{'icon-star-open': !_vm.isFavorite, 'icon-star': _vm.isFavorite},attrs:{\"tabindex\":0,\"aria-checked\":!!_vm.isFavorite,\"aria-role\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggle.apply(null, arguments)},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.toggle.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.toggle.apply(null, arguments)}]}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Favorite.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Favorite.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Favorite.vue?vue&type=template&id=f74a378a&scoped=true&\"\nimport script from \"./Favorite.vue?vue&type=script&lang=js&\"\nexport * from \"./Favorite.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Favorite.vue?vue&type=style&index=0&id=f74a378a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f74a378a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.typeDescriptionKey)?_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"color\":\"info\",\"closable\":true,\"label-key\":_vm.typeDescriptionKey},on:{\"close\":_vm.hideTypeDescription}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TypeDescription.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TypeDescription.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TypeDescription.vue?vue&type=template&id=60996d0a&\"\nimport script from \"./TypeDescription.vue?vue&type=script&lang=js&\"\nexport * from \"./TypeDescription.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.count && !_vm.haveAll)?_c('div',{staticClass:\"ml-10 resource-loading-indicator\"},[_c('div',{staticClass:\"inner\"},[_c('div',{staticClass:\"resource-loader\"},[_c('div',{staticClass:\"rl-bg\"},[_c('i',{staticClass:\"icon icon-spinner icon-spin\"}),_c('span',[_vm._v(_vm._s(_vm.t( 'resourceLoadingIndicator.loading' ))+\" \"),(!_vm.indeterminate)?_c('span',[_vm._v(_vm._s(_vm.count)+\" / \"+_vm._s(_vm.total))]):_vm._e()])])]),_c('div',{staticClass:\"resource-loader\",style:({width: _vm.width})},[_c('div',{staticClass:\"rl-fg\"},[_c('i',{staticClass:\"icon icon-spinner icon-spin\"}),_c('span',[_vm._v(_vm._s(_vm.t( 'resourceLoadingIndicator.loading' ))+\" \"),(!_vm.indeterminate)?_c('span',[_vm._v(_vm._s(_vm.count)+\" / \"+_vm._s(_vm.total))]):_vm._e()])])])])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceLoadingIndicator.vue?vue&type=template&id=6457c305&scoped=true&\"\nimport script from \"./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceLoadingIndicator.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceLoadingIndicator.vue?vue&type=style&index=0&id=6457c305&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6457c305\",\n null\n \n)\n\nexport default component.exports","export function updatePageTitle(...breadcrumb: (string | null | undefined | false)[]): void {\n document.title = breadcrumb.filter((s) => s).join(' - ');\n}\n","import { SETTING } from './settings';\n\nexport const ANY = 0;\nexport const STANDARD = 1;\nexport const CUSTOM = 2;\nexport const DOCS_BASE = 'https://ranchermanager.docs.rancher.com/v2.9';\n\nconst STANDARD_VENDOR = 'Rancher';\nconst STANDARD_PRODUCT = 'Explorer';\nconst CUSTOM_VENDOR = {\n suse: 'Rancher Prime',\n csp: 'SUSE Rancher'\n};\n\nlet mode = STANDARD;\nlet vendor = STANDARD_VENDOR;\nlet product = STANDARD_PRODUCT;\nlet brand = null;\n\nexport function setMode(m) {\n mode = m;\n}\n\nexport function setVendor(v) {\n vendor = v;\n setTitle();\n}\n\nexport function setProduct(p) {\n product = p;\n}\n\nexport function setBrand(b) {\n brand = b;\n}\n\n// -------------------------------------\n\nexport function getMode() {\n return mode;\n}\n\nexport function getBrand() {\n return brand;\n}\n\nexport function isStandard() {\n return mode === STANDARD;\n}\n\nexport function matches(pl) {\n if ( pl === ANY ) {\n return true;\n }\n\n return pl === mode;\n}\n\nexport function getVendor() {\n if ( vendor === SETTING.PL_RANCHER_VALUE ) {\n // Custom vendor override based on brand\n if (brand && CUSTOM_VENDOR[brand]) {\n return CUSTOM_VENDOR[brand];\n }\n\n return STANDARD_VENDOR;\n }\n\n return vendor;\n}\n\nexport function getProduct() {\n return product;\n}\n\nexport function setTitle() {\n const v = getVendor();\n\n if (v === 'Harvester') {\n const ico = require(`~shell/assets/images/pl/harvester.png`);\n\n document.title = 'Harvester';\n const link = document.createElement('link');\n\n link.hid = 'icon';\n link.rel = 'icon';\n link.type = 'image/x-icon';\n link.hrefv = ico;\n const head = document.getElementsByTagName('head')[0];\n\n head.appendChild(link);\n }\n}\n","\n","var render, staticRenderFns\nimport script from \"./TabTitle.vue?vue&type=script&lang=js&\"\nexport * from \"./TabTitle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TabTitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./TabTitle.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Masthead.vue?vue&type=template&id=c47575b0&scoped=true&\"\nimport script from \"./Masthead.vue?vue&type=script&lang=js&\"\nexport * from \"./Masthead.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Masthead.vue?vue&type=style&index=0&id=c47575b0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c47575b0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"message-icon\",class:{'vertical': _vm.vertical, 'subtle': _vm.subtle}},[_c('i',{staticClass:\"icon\",class:{ [_vm.icon]: true, [_vm.iconState]: !!_vm.iconState}}),_c('div',{staticClass:\"message\"},[_vm._t(\"message\",function(){return [(_vm.messageKey)?[_vm._v(\" \"+_vm._s(_vm.t(_vm.messageKey))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.message)+\" \")]]})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./IconMessage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./IconMessage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconMessage.vue?vue&type=template&id=01996ade&scoped=true&\"\nimport script from \"./IconMessage.vue?vue&type=script&lang=js&\"\nexport * from \"./IconMessage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconMessage.vue?vue&type=style&index=0&id=01996ade&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01996ade\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.extensionData.length)?_c('div',_vm._l((_vm.extensionData),function(item,i){return _c('div',{key:`extensionData${_vm.location}${i}`},[_c(item.component,{tag:\"component\",attrs:{\"resource\":_vm.resource}})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ExtensionPanel.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ExtensionPanel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExtensionPanel.vue?vue&type=template&id=1a394d3c&\"\nimport script from \"./ExtensionPanel.vue?vue&type=script&lang=js&\"\nexport * from \"./ExtensionPanel.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=155ee900&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=155ee900&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"155ee900\",\n null\n \n)\n\nexport default component.exports","\nimport ResourceList from '@shell/components/ResourceList/index.vue';\n\nexport default {\n name: 'KubewardenResourcedList',\n components: { ResourceList },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=71a8ef42&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending || _vm.notFound)?_c('Loading'):_c('div',[(_vm.showMasthead)?_c('Masthead',{attrs:{\"resource\":_vm.resource,\"value\":_vm.liveModel,\"mode\":_vm.mode,\"real-mode\":_vm.realMode,\"as\":_vm.as,\"has-graph\":_vm.hasGraph,\"has-detail\":_vm.hasCustomDetail,\"has-edit\":_vm.hasCustomEdit,\"can-view-yaml\":_vm.canViewYaml,\"resource-subtype\":_vm.resourceSubtype,\"parent-route-override\":_vm.parentRouteOverride,\"store-override\":_vm.storeOverride}},[(_vm.isView && _vm.isDetail)?_c('DetailTop',{attrs:{\"value\":_vm.liveModel}}):_vm._e()],1):_vm._e(),(_vm.isGraph && _vm.canViewChart)?_c('ForceDirectedTreeChart',{attrs:{\"data\":_vm.chartData,\"fdc-config\":_vm.getGraphConfig}}):(_vm.isYaml)?_c('ResourceYaml',{ref:\"resourceyaml\",class:{'flex-content': _vm.flexContent},attrs:{\"mode\":_vm.mode,\"yaml\":_vm.yaml,\"offer-preview\":_vm.offerPreview,\"done-route\":_vm.doneRoute,\"done-override\":_vm.value.doneOverride},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}}):_c(_vm.showComponent,_vm._b({ref:\"comp\",tag:\"component\",class:{'flex-content': _vm.flexContent},attrs:{\"done-params\":_vm.doneParams,\"done-route\":_vm.doneRoute,\"mode\":_vm.mode,\"initial-value\":_vm.initialModel,\"live-value\":_vm.liveModel,\"real-mode\":_vm.realMode},on:{\"set-subtype\":_vm.setSubtype},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},'component',_vm._data,false)),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','d']),expression:\"['shift','d']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-detail'},on:{\"shortkey\":function($event){return _vm.keyAction('goToDetail')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','c']),expression:\"['shift','c']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-config'},on:{\"shortkey\":function($event){return _vm.keyAction('goToViewConfig')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','y']),expression:\"['shift','y']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml'},on:{\"shortkey\":function($event){return _vm.keyAction('goToViewYaml')}}}):_vm._e(),(_vm.isView)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift','e']),expression:\"['shift','e']\",modifiers:{\"once\":true}}],staticClass:\"hide\",attrs:{\"data-testid\":_vm.componentTestid + '-edit'},on:{\"shortkey\":function($event){return _vm.keyAction('goToEdit')}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"masthead\"},[_c('header',[_c('div',{staticClass:\"title\"},[_c('div',{staticClass:\"primaryheader\"},[_c('h1',[(_vm.isCreate)?_c('TabTitle',{attrs:{\"showChild\":false}},[_vm._v(\" \"+_vm._s(_vm.parent.displayName)+\" \")]):_c('TabTitle',{attrs:{\"showChild\":false}},[_vm._v(\" \"+_vm._s(_vm.displayName)+\" \")]),(_vm.location)?_c('router-link',{attrs:{\"to\":_vm.location}},[_vm._v(\" \"+_vm._s(_vm.parent.displayName)+\": \")]):_c('span',[_vm._v(_vm._s(_vm.parent.displayName)+\":\")]),(_vm.value.detailPageHeaderActionOverride && _vm.value.detailPageHeaderActionOverride(_vm.realMode))?_c('span',[_vm._v(_vm._s(_vm.value.detailPageHeaderActionOverride(_vm.realMode)))]):_c('t',{staticClass:\"mastehead-resource-title\",attrs:{\"k\":'resourceDetail.header.' + _vm.realMode,\"subtype\":_vm.resourceSubtype,\"name\":_vm.displayName,\"escapehtml\":false}}),(!_vm.isCreate && _vm.parent.showState)?_c('BadgeState',{staticClass:\"masthead-state\",attrs:{\"value\":_vm.value}}):_vm._e(),(!_vm.isCreate && _vm.value.injectionEnabled)?_c('span',{staticClass:\"masthead-istio\"},[_c('i',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('projectNamespaces.isIstioInjectionEnabled')),expression:\"t('projectNamespaces.isIstioInjectionEnabled')\"}],staticClass:\"icon icon-sm icon-istio\"})]):_vm._e()],1)]),(!_vm.isCreate)?_c('div',{staticClass:\"subheader\"},[(_vm.isNamespace && _vm.project)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.project\"))+\": \"),_c('router-link',{attrs:{\"to\":_vm.project.detailLocation}},[_vm._v(_vm._s(_vm.project.nameDisplay))])],1):(_vm.isWorkspace)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.workspace\"))+\": \"),_c('router-link',{attrs:{\"to\":_vm.workspaceLocation}},[_vm._v(_vm._s(_vm.namespace))])],1):(_vm.namespace && !_vm.hasMultipleNamespaces)?_c('span',[_vm._v(\" \"+_vm._s(_vm.t(\"resourceDetail.masthead.namespace\"))+\": \"),(!_vm.hideNamespaceLocation)?_c('router-link',{attrs:{\"to\":_vm.namespaceLocation,\"data-testid\":\"masthead-subheader-namespace\"}},[_vm._v(\" \"+_vm._s(_vm.namespace)+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.namespace)+\" \")])],1):_vm._e(),(_vm.parent.showAge)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.age\"))+\": \"),_c('LiveDate',{staticClass:\"live-date\",attrs:{\"value\":_vm.value.creationTimestamp}})],1):_vm._e(),(_vm.value.showPodRestarts)?_c('span',[_vm._v(_vm._s(_vm.t(\"resourceDetail.masthead.restartCount\"))+\":\"),_c('span',{staticClass:\"live-data\"},[_vm._v(\" \"+_vm._s(_vm.value.restartCount))])]):_vm._e()]):_vm._e()]),_vm._t(\"right\",function(){return [_c('div',{staticClass:\"actions-container align-start\"},[_c('div',{staticClass:\"actions\"},[(_vm.detailsAction && _vm.currentView === _vm.DETAIL_VIEW && _vm.isView)?_c('button',{staticClass:\"btn role-primary actions mr-10\",attrs:{\"type\":\"button\",\"disabled\":!_vm.detailsAction.enabled},on:{\"click\":_vm.invokeDetailsAction}},[_vm._v(\" \"+_vm._s(_vm.detailsAction.label)+\" \")]):_vm._e(),(_vm.showSensitiveToggle)?_c('ButtonGroup',{staticClass:\"mr-10\",attrs:{\"value\":!!_vm.hideSensitiveData,\"icon-size\":\"lg\",\"options\":_vm.sensitiveOptions},on:{\"input\":_vm.toggleSensitiveData}}):_vm._e(),(_vm.viewOptions && _vm.isView)?_c('ButtonGroup',{staticClass:\"mr-10\",attrs:{\"options\":_vm.viewOptions},model:{value:(_vm.currentView),callback:function ($$v) {_vm.currentView=$$v},expression:\"currentView\"}}):_vm._e(),(_vm.isView)?_c('button',{ref:\"actions\",staticClass:\"btn role-multi-action actions\",attrs:{\"aria-haspopup\":\"true\",\"type\":\"button\"},on:{\"click\":_vm.showActions}},[_c('i',{staticClass:\"icon icon-actions\"})]):_vm._e()],1)])]})],2),_c('ExtensionPanel',{attrs:{\"resource\":_vm.value,\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}}),(_vm.banner && _vm.isView && !_vm.parent.hideBanner)?_c('Banner',{staticClass:\"state-banner mb-10\",attrs:{\"color\":_vm.banner.color,\"label\":_vm.banner.message}}):_vm._e(),(_vm.managedWarning.show)?_c('Banner',{staticClass:\"mb-20\",attrs:{\"color\":\"warning\",\"label\":_vm.t('resourceDetail.masthead.managedWarning', _vm.managedWarning)}}):_vm._e(),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { STATES } from '@shell/plugins/dashboard-store/resource-class';\nimport { FLEET } from '@shell/config/types';\n\n// some default values\nconst defaultNodeRadius = 20;\nconst defaultNodePadding = 15;\nconst chartWidth = 800;\nconst chartHeight = 500;\nconst fdcStrength = -300;\nconst fdcDistanceMax = 500;\nconst fdcForceCollide = 80;\nconst fdcAlphaDecay = 0.05;\n\n// setting up default sim params\n// check documentation here: https://github.com/d3/d3-force#forceSimulation\nconst simulationParams = {\n fdcStrength,\n fdcDistanceMax,\n fdcForceCollide,\n fdcAlphaDecay\n};\n\n/**\n * Represents a config object for FDC type\n * @param {Function} parseData - Parses the specific data for each chart. Format must be compliant with d3 data format\n * @example data format => { parent: {..., children: [ {..., children: []} ] } }\n * @param {Function} extendNodeClass - Extends the classes for each node so that the styling is correctly applied\n * @param {Function} nodeDimensions - Sets the radius of the nodes according each data type\n * @param {Function} infoDetails - Prepares the data to be displayed in the info box on the right-side of the ForceDirectedTreeChart component\n */\nexport const gitRepoGraphConfig = {\n chartWidth,\n chartHeight,\n simulationParams,\n /**\n * data prop that is used to trigger the watcher in the component. Should follow format \"data.xxxxxx\"\n */\n watcherProp: 'data.bundles',\n /**\n * Mandatory params for a child object in parseData (for statuses to work)\n * @param {String} state\n * @param {String} stateDisplay\n * @param {String} stateColor\n * @param {String} matchingId (this can be different than the actual ID, depends on the usecase)\n */\n parseData: (data) => {\n const bundles = data.bundles.map((bundle, i) => {\n const bundleLowercaseState = bundle.state ? bundle.state.toLowerCase() : 'unknown';\n const bundleStateColor = STATES[bundleLowercaseState].color;\n\n const repoChild = {\n id: bundle.id,\n matchingId: bundle.id,\n type: bundle.type,\n state: bundle.state,\n stateLabel: bundle.stateDisplay,\n stateColor: bundleStateColor,\n isBundle: true,\n errorMsg: bundle.stateDescription,\n detailLocation: bundle.detailLocation,\n children: []\n };\n\n const bds = data.bundleDeployments.filter((bd) => bundle.id === `${ bd.metadata?.labels?.['fleet.cattle.io/bundle-namespace'] }/${ bd.metadata?.labels?.['fleet.cattle.io/bundle-name'] }`);\n\n bds.forEach((bd) => {\n const bdLowercaseState = bd.state ? bd.state.toLowerCase() : 'unknown';\n const bdStateColor = STATES[bdLowercaseState]?.color;\n\n const cluster = data.clustersList.find((cluster) => {\n const clusterString = `${ cluster.namespace }-${ cluster.name }`;\n\n return bd.id.includes(clusterString);\n });\n\n repoChild.children.push({\n id: bd.id,\n matchingId: bd.id,\n type: bd.type,\n clusterId: cluster ? cluster.id : undefined,\n clusterDetailLocation: cluster ? cluster.detailLocation : undefined,\n state: bd.state,\n stateLabel: bd.stateDisplay,\n stateColor: bdStateColor,\n isBundleDeployment: true,\n errorMsg: bd.stateDescription,\n detailLocation: bd.detailLocation,\n });\n });\n\n return repoChild;\n });\n\n const repoLowercaseState = data.state ? data.state.toLowerCase() : 'unknown';\n const repoStateColor = STATES[repoLowercaseState].color;\n\n const finalData = {\n id: data.id,\n matchingId: data.id,\n type: data.type,\n state: data.state,\n stateLabel: data.stateDisplay,\n stateColor: repoStateColor,\n isRepo: true,\n errorMsg: data.stateDescription,\n detailLocation: data.detailLocation,\n children: bundles\n };\n\n return finalData;\n },\n /**\n * Used to add relevant classes to each main node instance\n */\n extendNodeClass: ({ data }) => {\n const classArray = [];\n\n // node type\n data?.isRepo ? classArray.push('repo') : data?.isBundle ? classArray.push('bundle') : classArray.push('bundle-deployment');\n\n return classArray;\n },\n /**\n * Used to add the correct icon to each node\n */\n fetchNodeIcon: ({ data }) => {\n if (data?.isRepo) {\n return 'git';\n }\n\n if ( data?.isBundle) {\n if (data?.id.indexOf('helm') !== -1) {\n return 'helm';\n }\n\n return 'bundle';\n }\n\n if (data?.isBundleDeployment) {\n return 'node';\n }\n },\n /**\n * Used to set node dimensions\n */\n nodeDimensions: ({ data }) => {\n if (data?.isRepo) {\n const radius = defaultNodeRadius * 3;\n const padding = defaultNodePadding * 2.5;\n\n return {\n radius,\n size: (radius * 2) - padding,\n position: -(((radius * 2) - padding) / 2)\n };\n }\n if (data?.isBundle) {\n const radius = defaultNodeRadius * 2;\n const padding = defaultNodePadding;\n\n if (data?.id.indexOf('helm') !== -1) {\n return {\n radius,\n size: (radius * 1.5) - padding,\n position: -(((radius * 1.5) - padding) / 2)\n };\n }\n\n return {\n radius,\n size: (radius * 1.7) - padding,\n position: -(((radius * 1.7) - padding) / 2)\n };\n }\n\n return {\n radius: defaultNodeRadius,\n size: (defaultNodeRadius * 2) - defaultNodePadding,\n position: -(((defaultNodeRadius * 2) - defaultNodePadding) / 2)\n };\n },\n /**\n * Use @param {Obj} valueObj for compound values (usually associated with a template of some sort on the actual component)\n * or @param value for a simple straightforward value\n */\n infoDetails: (data) => {\n let dataType;\n\n switch (data.type) {\n case FLEET.GIT_REPO:\n dataType = 'GitRepo';\n break;\n case FLEET.BUNDLE:\n dataType = 'Bundle';\n break;\n case FLEET.BUNDLE_DEPLOYMENT:\n dataType = 'BundleDeployment';\n break;\n default:\n dataType = data.type;\n break;\n }\n\n const moreInfo = [\n {\n labelKey: 'fleet.fdc.type',\n value: dataType\n },\n {\n type: 'title-link',\n labelKey: 'fleet.fdc.id',\n valueObj: {\n id: data.id,\n detailLocation: data.detailLocation\n }\n }\n ];\n\n if (data.isBundleDeployment) {\n moreInfo.push({\n type: 'title-link',\n labelKey: 'fleet.fdc.cluster',\n valueObj: {\n id: data.clusterId,\n detailLocation: data.clusterDetailLocation\n }\n });\n }\n\n moreInfo.push({\n type: 'state-badge',\n labelKey: 'fleet.fdc.state',\n valueObj: {\n stateColor: data.stateColor,\n stateLabel: data.stateLabel\n }\n });\n\n if (data.errorMsg) {\n moreInfo.push({\n type: 'single-error',\n labelKey: 'fleet.fdc.error',\n value: data.errorMsg\n });\n }\n\n return moreInfo;\n }\n};\n","import { DSL } from '@shell/store/type-map';\nimport { FLEET } from '@shell/config/types';\nimport { STATE, NAME as NAME_COL, AGE } from '@shell/config/table-headers';\nimport { FLEET as FLEET_FEATURE } from '@shell/store/features';\nimport { gitRepoGraphConfig } from '@shell/pages/c/_cluster/fleet/GitRepoGraphConfig';\nimport { BLANK_CLUSTER } from '@shell/store/store-types.js';\n\nexport const NAME = 'fleet';\nexport const CHART_NAME = 'fleet';\n\nexport function init(store) {\n const {\n product,\n basicType,\n weightType,\n configureType,\n headers,\n // mapType,\n virtualType,\n } = DSL(store, NAME);\n\n product({\n ifHaveType: FLEET.GIT_REPO,\n ifFeature: FLEET_FEATURE,\n icon: 'fleet',\n inStore: 'management',\n removable: false,\n showClusterSwitcher: false,\n showWorkspaceSwitcher: true,\n to: {\n name: 'c-cluster-fleet',\n params: { resource: FLEET.DASHBOARD, cluster: BLANK_CLUSTER }\n },\n });\n\n virtualType({\n labelKey: 'fleet.dashboard.menuLabel',\n icon: 'folder',\n group: 'Root',\n namespaced: false,\n name: FLEET.DASHBOARD,\n weight: 110,\n route: {\n name: 'c-cluster-fleet',\n params: { resource: FLEET.DASHBOARD, cluster: BLANK_CLUSTER }\n },\n exact: true,\n });\n\n basicType([\n FLEET.DASHBOARD,\n FLEET.CLUSTER,\n FLEET.CLUSTER_GROUP,\n FLEET.GIT_REPO,\n ]);\n\n configureType(FLEET.CLUSTER, { isCreatable: false });\n configureType(FLEET.GIT_REPO, {\n showListMasthead: false, hasGraph: true, graphConfig: gitRepoGraphConfig\n });\n\n weightType(FLEET.GIT_REPO, 109, true);\n weightType(FLEET.CLUSTER, 108, true);\n weightType(FLEET.CLUSTER_GROUP, 107, true);\n\n basicType([\n FLEET.WORKSPACE,\n FLEET.BUNDLE,\n FLEET.TOKEN,\n FLEET.BUNDLE_NAMESPACE_MAPPING,\n FLEET.GIT_REPO_RESTRICTION\n ], 'advanced');\n\n headers(FLEET.WORKSPACE, [\n STATE,\n NAME_COL,\n {\n name: 'gitRepos',\n labelKey: 'tableHeaders.gitRepos',\n value: 'counts.gitRepos',\n sort: 'counts.gitRepos',\n formatter: 'Number',\n },\n {\n name: 'clusters',\n labelKey: 'tableHeaders.clusters',\n value: 'counts.clusters',\n sort: 'counts.clusters',\n formatter: 'Number',\n },\n {\n name: 'clusterGroups',\n labelKey: 'tableHeaders.clusterGroups',\n value: 'counts.clusterGroups',\n sort: 'counts.clusterGroups',\n formatter: 'Number',\n },\n AGE\n ]);\n}\n","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Masthead.vue?vue&type=template&id=36e18737&scoped=true&\"\nimport script from \"./Masthead.vue?vue&type=script&lang=js&\"\nexport * from \"./Masthead.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Masthead.vue?vue&type=style&index=0&id=36e18737&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36e18737\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"detail-top\",class:{empty: _vm.isEmpty}},[(_vm.hasNamespaces)?_c('div',{staticClass:\"labels\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.namespaces'))+\": \")]),_c('span',_vm._l((_vm.namespaces),function(namespace){return _c('router-link',{key:namespace.name,staticClass:\"namespaceLinkList\",attrs:{\"to\":namespace.detailLocation}},[_vm._v(\" \"+_vm._s(namespace.name)+\" \")])}),1)]):_vm._e(),(_vm.description)?_c('div',{staticClass:\"description\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.description'))+\": \")]),_c('span',{staticClass:\"content\"},[_vm._v(_vm._s(_vm.description))])]):_vm._e(),(_vm.hasDetails)?_c('div',_vm._l((_vm.details),function(group,index){return _c('div',{key:index,staticClass:\"details\"},_vm._l((group),function(detail){return _c('div',{key:detail.label || detail.slotName,staticClass:\"detail\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(detail.label)+\": \")]),(detail.formatter)?_c(detail.formatter,_vm._b({tag:\"component\",attrs:{\"value\":detail.content}},'component',detail.formatterOpts,false)):_c('span',[_vm._v(_vm._s(detail.content))])],1)}),0)}),0):_vm._e(),(_vm.hasLabels)?_c('div',{staticClass:\"labels\"},[_c('div',{staticClass:\"tags\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.labels'))+\": \")]),_vm._l((_vm.labels),function(prop,key){return _c('Tag',{key:key + prop},[(_vm.internalIcons[key])?_c('i',{staticClass:\"icon\",class:_vm.internalIcons[key]}):_vm._e(),(_vm.internalTooltips[key])?_c('span',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(prop ? `${key} : ${prop}` : key),expression:\"prop ? `${key} : ${prop}` : key\"}]},[_c('span',[_vm._v(_vm._s(_vm.internalTooltips[key] ? _vm.internalTooltips[key] : key))]),(_vm.showAllLabels)?_c('span',[_vm._v(\": \"+_vm._s(key))]):_vm._e()]):_c('span',[_vm._v(_vm._s(prop ? `${key} : ${prop}` : key))])])}),(_vm.showFilteredSystemLabels)?_c('a',{staticClass:\"detail-top__label-button\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleLabels.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(`resourceDetail.detailTop.${_vm.showAllLabels? 'hideLabels' : 'showLabels'}`))+\" \")]):_vm._e()],2)]):_vm._e(),(_vm.hasAnnotations)?_c('div',{staticClass:\"annotations\"},[_c('span',{staticClass:\"label\"},[_vm._v(\" \"+_vm._s(_vm.t('resourceDetail.detailTop.annotations'))+\": \")]),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleAnnotations.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.t(`resourceDetail.detailTop.${_vm.annotationsVisible? 'hideAnnotations' : 'showAnnotations'}`, {annotations: _vm.annotationCount}))+\" \")]),(_vm.annotationsVisible)?_c('div',_vm._l((_vm.annotations),function(val,key){return _c('DetailText',{key:key,staticClass:\"annotation\",attrs:{\"value\":val,\"label\":key}})}),1):_vm._e()]):_vm._e(),_c('ExtensionPanel',{attrs:{\"resource\":_vm.value,\"type\":_vm.extensionType,\"location\":_vm.extensionLocation}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"tag\"},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=0d281a35&scoped=true&\"\nimport script from \"./Tag.vue?vue&type=script&lang=js&\"\nexport * from \"./Tag.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tag.vue?vue&type=style&index=0&id=0d281a35&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d281a35\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{'force-wrap': true, 'with-copy':_vm.copy}},[(_vm.labelKey)?_c('h5',{directives:[{name:\"t\",rawName:\"v-t\",value:(_vm.labelKey),expression:\"labelKey\"}]}):(_vm.label)?_c('h5',[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e(),(_vm.isEmpty)?_c('span',{directives:[{name:\"t\",rawName:\"v-t\",value:('detailText.empty'),expression:\"'detailText.empty'\"}],staticClass:\"text-italic\"}):(_vm.isBinary)?_c('span',{staticClass:\"text-italic\"},[_vm._v(_vm._s(_vm.body))]):(_vm.jsonStr)?_c('CodeMirror',{class:{'conceal': _vm.concealed},attrs:{\"options\":{mode:{name:'javascript', json:true}, lineNumbers:false, foldGutter:false, readOnly:true},\"value\":_vm.jsonStr}}):_c('span',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.bodyHtml),expression:\"bodyHtml\"}],class:{'conceal': _vm.concealed, 'monospace': _vm.monospace && !_vm.isBinary},attrs:{\"data-testid\":\"detail-top_html\"}}),(!_vm.isBinary && !_vm.jsonStr && _vm.isLong && !_vm.expanded)?[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.expand.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.plusMore))])]:_vm._e(),(_vm.copy && !_vm.isBinary)?_c('CopyToClipboard',{staticClass:\"role-tertiary\",attrs:{\"text\":_vm.value,\"action-color\":\"\"}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AsyncButton',_vm._b({attrs:{\"icon\":\"icon-copy\",\"show-label\":_vm.showLabel,\"action-label\":\"Copy\",\"waiting-label\":\"Copying...\",\"success-label\":\"Copied!\",\"error-label\":\"Error Copying\",\"delay\":2000},on:{\"click\":_vm.clicked}},'AsyncButton',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CopyToClipboard.vue?vue&type=template&id=421d1dba&\"\nimport script from \"./CopyToClipboard.vue?vue&type=script&lang=js&\"\nexport * from \"./CopyToClipboard.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailText.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailText.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailText.vue?vue&type=template&id=348d5cf1&scoped=true&\"\nimport script from \"./DetailText.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailText.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailText.vue?vue&type=style&index=0&id=348d5cf1&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"348d5cf1\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailTop.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailTop.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DetailTop.vue?vue&type=template&id=41d1eb9c&\"\nimport script from \"./DetailTop.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailTop.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailTop.vue?vue&type=style&index=0&id=41d1eb9c&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"chart-container\",attrs:{\"data-testid\":\"gitrepo_graph\"}},[(!_vm.isChartFirstRenderAnimationFinished)?_c('div',{staticClass:\"loading-container\"},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isChartFirstRendered),expression:\"!isChartFirstRendered\"}]},[_vm._v(\" \"+_vm._s(_vm.t('fleet.fdc.loadingChart'))+\" \")]),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isChartFirstRendered && !_vm.isChartFirstRenderAnimationFinished),expression:\"isChartFirstRendered && !isChartFirstRenderAnimationFinished\"}]},[_vm._v(\" \"+_vm._s(_vm.t('fleet.fdc.renderingChart'))+\" \")]),_c('i',{staticClass:\"mt-10 icon-spinner icon-spin\"})]):_vm._e(),_c('div',{attrs:{\"id\":\"tree\"}}),_c('div',{staticClass:\"more-info-container\"},[_c('div',{staticClass:\"more-info\"},[_c('table',_vm._l((_vm.moreInfo),function(item,i){return _c('tr',{key:i},[(item.type !== 'single-error')?_c('td',{class:{'align-middle': item.type === 'state-badge'}},[_c('span',{staticClass:\"more-info-item-label\"},[_vm._v(_vm._s(_vm.t(item.labelKey))+\":\")])]):_vm._e(),(item.type === 'title-link')?_c('td',[(item.valueObj.detailLocation)?_c('span',[_c('router-link',{attrs:{\"to\":item.valueObj.detailLocation}},[_vm._v(\" \"+_vm._s(item.valueObj.id)+\" \")])],1):_c('span',[_vm._v(_vm._s(item.valueObj.id))])]):(item.type === 'state-badge')?_c('td',{staticClass:\"align-middle\"},[_c('span',[_c('BadgeState',{staticClass:\"state-bagde\",attrs:{\"color\":`bg-${item.valueObj.stateColor}`,\"label\":item.valueObj.stateLabel}})],1)]):_vm._e(),(item.type === 'single-error')?_c('td',{staticClass:\"single-error\",attrs:{\"colspan\":\"2\"}},[_c('p',[_vm._v(_vm._s(item.value))])]):_c('td',[_vm._v(\" \"+_vm._s(item.value)+\" \")])])}),0)])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection, event) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start(event).brush(event).end(event);\n });\n }\n };\n\n brush.clear = function(group, event) {\n brush.move(group, null, event);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move(event);\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move(event);\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move(event);\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move(event);\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move(event);\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default x => () => x;\n","export default function DragEvent(type, {\n sourceEvent,\n subject,\n target,\n identifier,\n active,\n x, y, dx, dy,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n subject: {value: subject, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n identifier: {value: identifier, enumerable: true, configurable: true},\n active: {value: active, enumerable: true, configurable: true},\n x: {value: x, enumerable: true, configurable: true},\n y: {value: y, enumerable: true, configurable: true},\n dx: {value: dx, enumerable: true, configurable: true},\n dy: {value: dy, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved, nonpassive)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned(event, d) {\n if (touchending || !filter.call(this, event, d)) return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture) return;\n select(event.view)\n .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n nodrag(event.view);\n nopropagation(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n\n function mousemoved(event) {\n noevent(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent(event);\n gestures.mouse(\"end\", event);\n }\n\n function touchstarted(event, d) {\n if (!filter.call(this, event, d)) return;\n var touches = event.changedTouches,\n c = container.call(this, event, d),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n\n function touchmoved(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n\n function touchended(event) {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n\n function beforestart(that, container, event, d, identifier, touch) {\n var dispatch = listeners.copy(),\n p = pointer(touch || event, container), dx, dy,\n s;\n\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch\n }), d)) == null) return;\n\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n\n return function gesture(type, event, touch) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[identifier] = gesture, n = active++; break;\n case \"end\": delete gestures[identifier], --active; // falls through\n case \"drag\": p = pointer(touch || event, container), n = active; break;\n }\n dispatch.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event,\n subject: s,\n target: drag,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch\n }),\n d\n );\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function(x, y) {\n var nodes, strength = 1;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n return force;\n}\n","export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n var nodes,\n node,\n random,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","// This is to mitigate an issue where the SVG icons being imported from the project weren't being rendered on Firefox\n// To know more about this technique, check this doc: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs\nexport const getChartIcon = (type) => `\n\n\n\n\n\n\n\n\n\n\n\n\n\n`;\n","\n\n\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7d12c8f6&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=7d12c8f6&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { Popup, popupWindowOptions } from '@shell/utils/window';\r\nimport { parse as parseUrl, addParam } from '@shell/utils/url';\r\nimport {\r\n BACK_TO, SPA, _EDIT, _FLAGGED, TIMED_OUT\r\n} from '@shell/config/query-params';\r\nimport { MANAGEMENT, NORMAN } from '@shell/config/types';\r\nimport { allHash } from '@shell/utils/promise';\r\nimport { getProductFromRoute, getResourceFromRoute } from '@shell/utils/router';\r\nimport { NAME as EXPLORER } from '@shell/config/product/explorer';\r\nimport { findBy } from '@shell/utils/array';\r\n\r\nexport function openAuthPopup(url, provider) {\r\n const popup = new Popup(() => {\r\n popup.promise = new Promise((resolve, reject) => {\r\n popup.resolve = resolve;\r\n popup.reject = reject;\r\n });\r\n\r\n window.onAuthTest = (error, code) => {\r\n if (error) {\r\n popup.reject(error);\r\n }\r\n\r\n delete window.onAuthTest;\r\n popup.resolve(code);\r\n };\r\n }, () => {\r\n popup.reject(new Error('Access was not authorized'));\r\n });\r\n\r\n popup.open(url, 'auth-test', popupWindowOptions());\r\n\r\n return popup.promise;\r\n}\r\n\r\nexport function returnTo(opt, vm) {\r\n let { route = `/auth/verify` } = opt;\r\n\r\n if ( vm.$router.options && vm.$router.options.base ) {\r\n const routerBase = vm.$router.options.base;\r\n\r\n if ( routerBase !== '/' ) {\r\n route = `${ routerBase.replace(/\\/+$/, '') }/${ route.replace(/^\\/+/, '') }`;\r\n }\r\n }\r\n\r\n let returnToUrl = `${ window.location.origin }${ route }`;\r\n\r\n const parsed = parseUrl(window.location.href);\r\n\r\n if ( parsed.query.spa !== undefined ) {\r\n returnToUrl = addParam(returnToUrl, SPA, _FLAGGED);\r\n }\r\n\r\n if ( opt.backTo ) {\r\n returnToUrl = addParam(returnToUrl, BACK_TO, opt.backTo);\r\n }\r\n\r\n if (opt.config) {\r\n returnToUrl = addParam(returnToUrl, 'config', opt.config);\r\n }\r\n\r\n return returnToUrl;\r\n}\r\n\r\n/**\r\n * Determines common auth provider info as those that are available (non-local) and the location of the enabled provider\r\n */\r\nexport const authProvidersInfo = async(store) => {\r\n const rows = await store.dispatch(`management/findAll`, { type: MANAGEMENT.AUTH_CONFIG });\r\n const nonLocal = rows.filter((x) => x.name !== 'local');\r\n const enabled = nonLocal.filter((x) => x.enabled === true );\r\n\r\n const supportedNonLocal = nonLocal.filter((x) => x.id !== 'oidc');\r\n\r\n const enabledLocation = enabled.length === 1 ? {\r\n name: 'c-cluster-auth-config-id',\r\n params: { id: enabled[0].id },\r\n query: { mode: _EDIT }\r\n } : null;\r\n\r\n return {\r\n nonLocal: supportedNonLocal,\r\n enabledLocation,\r\n enabled\r\n };\r\n};\r\n\r\nexport const checkSchemasForFindAllHash = (types, store) => {\r\n const hash = {};\r\n\r\n for (const [key, value] of Object.entries(types)) {\r\n const schema = store.getters[`${ value.inStoreType }/schemaFor`](value.type);\r\n\r\n // It could be that user has permissions for GET but not list\r\n // e.g. Standard user with GitRepo permissions try to fetch list of fleetworkspaces\r\n // user has ability to GET but not fleet workspaces\r\n // so optionally define a function that require it to pass before /findAll\r\n const validSchema = value.schemaValidator ? value.schemaValidator(schema) : !!schema;\r\n\r\n if (validSchema) {\r\n hash[key] = store.dispatch(`${ value.inStoreType }/findAll`, { type: value.type } );\r\n }\r\n }\r\n\r\n return allHash(hash);\r\n};\r\n\r\nexport const checkPermissions = (types, getters) => {\r\n const hash = {};\r\n\r\n for (const [key, value] of Object.entries(types)) {\r\n const schema = getters['management/schemaFor'](value.type);\r\n\r\n if (!schema) {\r\n hash[key] = false;\r\n\r\n continue;\r\n }\r\n\r\n // It could be that user has permissions for GET but not list\r\n // e.g. Standard user with GitRepo permissions try to fetch list of fleetworkspaces\r\n // user has ability to GET but not fleet workspaces\r\n // so optionally define a function that require it to pass before /findAll\r\n if (value.schemaValidator) {\r\n hash[key] = value.schemaValidator(schema);\r\n\r\n continue;\r\n }\r\n\r\n if (value.resourceMethods && schema) {\r\n hash[key] = value.resourceMethods.every((method) => {\r\n return (schema.resourceMethods || []).includes(method);\r\n });\r\n\r\n continue;\r\n }\r\n\r\n if (value.collectionMethods && schema) {\r\n hash[key] = value.collectionMethods.every((method) => {\r\n return (schema.collectionMethods || []).includes(method);\r\n });\r\n\r\n continue;\r\n }\r\n\r\n hash[key] = !!schema;\r\n }\r\n\r\n return allHash(hash);\r\n};\r\n\r\nexport const canViewResource = (store, resource) => {\r\n // Note - don't use the current products store... because products can override stores for resources with `typeStoreMap`\r\n const inStore = store.getters['currentStore'](resource);\r\n // There's a chance we're in an extension's product who's store could be anything, so confirm schemaFor exists\r\n const schemaFor = store.getters[`${ inStore }/schemaFor`];\r\n\r\n // In order to check a resource is valid we need these\r\n if (!inStore || !schemaFor) {\r\n return false;\r\n }\r\n\r\n // Resource is valid if a schema exists for it (standard resource, spoofed resource) or it's a virtual resource\r\n const validResource = schemaFor(resource) || store.getters['type-map/isVirtual'](resource);\r\n\r\n return !!validResource;\r\n};\r\n\r\n// ************************************************************\r\n//\r\n// BELOW ARE METHODS THAT ARE A PART OF THE AUTHENTICATED MIDDLEWARE REMOVAL. THIS IS A TEMPORARY HOME FOR THESE UTILS AND SHOULD BE REWRITTEN, MOVED OR DELETED.\r\n//\r\n// TODO: Remove and refactor everything below for more clarity and better organization. https://github.com/rancher/dashboard/issues/11111\r\n//\r\n// ************************************************************\r\n\r\n/**\r\n * Attempt to set the product in our datastore if the route matches a known product. Otherwise show an error page instead.\r\n */\r\nexport function setProduct(store, to) {\r\n let product = getProductFromRoute(to);\r\n\r\n // since all products are hardcoded as routes (ex: c-local-explorer), if we match the wildcard route it means that the product does not exist\r\n if ((product && (!to.matched.length || (to.matched.length && to.matched[0].path === '/c/:cluster/:product'))) ||\r\n // if the product grabbed from the route is not registered, then we don't have it!\r\n (product && !store.getters['type-map/isProductRegistered'](product))) {\r\n const error = new Error(store.getters['i18n/t']('nav.failWhale.productNotFound', { productNotFound: product }, true));\r\n\r\n store.dispatch('loadingError', error);\r\n\r\n throw new Error('loadingError', new Error(store.getters['i18n/t']('nav.failWhale.productNotFound', { productNotFound: product }, true)));\r\n }\r\n\r\n if ( !product ) {\r\n product = EXPLORER;\r\n }\r\n\r\n const oldProduct = store.getters['productId'];\r\n const oldStore = store.getters['currentProduct']?.inStore;\r\n\r\n if ( product !== oldProduct ) {\r\n store.commit('setProduct', product);\r\n }\r\n\r\n const neuStore = store.getters['currentProduct']?.inStore;\r\n\r\n if ( neuStore !== oldStore ) {\r\n // If the product store changes, clear the catalog.\r\n // There might be management catalog items in it vs cluster.\r\n store.commit('catalog/reset');\r\n }\r\n}\r\n\r\n/**\r\n * Check that the resource is valid, if not redirect to fail whale\r\n *\r\n * This requires that\r\n * - product is set\r\n * - product's store is set and setup (so we can check schema's within it)\r\n * - product's store has the schemaFor getter (extension stores might not have it)\r\n * - there's a resource associated with route (meta or param)\r\n */\r\nexport function validateResource(store, to) {\r\n const product = store.getters['currentProduct'];\r\n const resource = getResourceFromRoute(to);\r\n\r\n // In order to check a resource is valid we need these\r\n if (!product || !resource) {\r\n return false;\r\n }\r\n\r\n if (canViewResource(store, resource)) {\r\n return false;\r\n }\r\n\r\n // Unknown resource, redirect to fail whale\r\n\r\n const error = new Error(store.getters['i18n/t']('nav.failWhale.resourceNotFound', { resource }, true));\r\n\r\n store.dispatch('loadingError', error);\r\n\r\n throw error;\r\n}\r\n\r\n/**\r\n * Attempt to load the current user's principal\r\n */\r\nexport async function findMe(store) {\r\n // First thing we do in loadManagement is fetch principals anyway.... so don't ?me=true here\r\n const principals = await store.dispatch('rancher/findAll', {\r\n type: NORMAN.PRINCIPAL,\r\n opt: {\r\n url: '/v3/principals',\r\n redirectUnauthorized: false,\r\n }\r\n });\r\n\r\n const me = findBy(principals, 'me', true);\r\n\r\n return me;\r\n}\r\n\r\n/**\r\n * Attempt to login with default credentials. Note: I think that this may actually be outdated since we don't use these default credentials anymore on setup.\r\n */\r\nexport async function tryInitialSetup(store, password = 'admin') {\r\n try {\r\n const res = await store.dispatch('auth/login', {\r\n provider: 'local',\r\n body: {\r\n username: 'admin',\r\n password\r\n },\r\n });\r\n\r\n return res._status === 200;\r\n } catch (e) {\r\n console.error('Error trying initial setup', e); // eslint-disable-line no-console\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Record in our state management that we're indeed logged in\r\n */\r\nexport function isLoggedIn(store, me) {\r\n store.commit('auth/hasAuth', true);\r\n store.commit('auth/loggedInAs', me.id);\r\n}\r\n\r\n/**\r\n * Record in our state management that we're not logged in and then redirect to the login page\r\n */\r\nexport function notLoggedIn(store, redirect, route) {\r\n store.commit('auth/hasAuth', true);\r\n\r\n if ( route.name === 'index' ) {\r\n return redirect('/auth/login');\r\n } else {\r\n return redirect(`/auth/login?${ TIMED_OUT }`);\r\n }\r\n}\r\n\r\n/**\r\n * Record in our state management that we don't have any auth providers\r\n */\r\nexport function noAuth(store) {\r\n store.commit('auth/hasAuth', false);\r\n}\r\n","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=c7788ab2&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=c7788ab2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c7788ab2\",\n null\n \n)\n\nexport default component.exports","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourceCreate',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./create.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./create.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./create.vue?vue&type=template&id=5feb7205&\"\nimport script from \"./create.vue?vue&type=script&lang=ts&\"\nexport * from \"./create.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourcedId',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./_id.vue?vue&type=template&id=6fbed2fe&\"\nimport script from \"./_id.vue?vue&type=script&lang=ts&\"\nexport * from \"./_id.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceDetail')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport ResourceDetail from '@shell/components/ResourceDetail/index.vue';\n\nexport default {\n name: 'KubewardenResourcedNamespaceId',\n components: { ResourceDetail },\n};\n","import mod from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./_id.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./_id.vue?vue&type=template&id=5953c8d8&\"\nimport script from \"./_id.vue?vue&type=script&lang=ts&\"\nexport * from \"./_id.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { KUBEWARDEN_PRODUCT_NAME, POLICY_REPORTER_PRODUCT } from '../types';\n\nimport Dashboard from '../pages/c/_cluster/kubewarden/index.vue';\nimport PolicyReport from '../pages/c/_cluster/kubewarden/_resource/policy-reporter.vue';\nimport KubewardenResourcedList from '../pages/c/_cluster/kubewarden/_resource/index.vue';\nimport CreateKubewardenResource from '../pages/c/_cluster/kubewarden/_resource/create.vue';\nimport ViewKubewardenResource from '../pages/c/_cluster/kubewarden/_resource/_id.vue';\nimport ViewKubewardenNsResource from '../pages/c/_cluster/kubewarden/_resource/_namespace/_id.vue';\n\nconst routes = [\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }`,\n component: Dashboard,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-${ POLICY_REPORTER_PRODUCT }`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/${ POLICY_REPORTER_PRODUCT }`,\n component: PolicyReport,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource`,\n component: KubewardenResourcedList,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-create`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/create`,\n component: CreateKubewardenResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-id`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/:id`,\n component: ViewKubewardenResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n },\n {\n name: `c-cluster-${ KUBEWARDEN_PRODUCT_NAME }-resource-namespace-id`,\n path: `/c/:cluster/${ KUBEWARDEN_PRODUCT_NAME }/:resource/:namespace/:id`,\n component: ViewKubewardenNsResource,\n meta: { product: KUBEWARDEN_PRODUCT_NAME, pkg: KUBEWARDEN_PRODUCT_NAME }\n }\n];\n\nexport default routes;\n","import {\n CatalogApp, CustomResourceDefinition, PolicyReport, ClusterPolicyReport, PolicyTraceConfig\n} from '../../types';\nimport { StateConfig } from './index';\n\nexport default {\n airGapped: (state: StateConfig): Boolean => state.airGapped,\n hideBannerDefaults: (state: StateConfig): Boolean => state.hideBannerDefaults,\n hideBannerArtifactHub: (state: StateConfig): Boolean => state.hideBannerArtifactHub,\n hideBannerAirgapPolicy: (state: StateConfig): Boolean => state.hideBannerAirgapPolicy,\n controllerApp: (state: StateConfig): CatalogApp | null => state.controllerApp,\n kubewardenCrds: (state: StateConfig): CustomResourceDefinition[] => state.kubewardenCrds,\n policyReports: (state: StateConfig): PolicyReport[] => state.policyReports,\n clusterPolicyReports: (state: StateConfig): ClusterPolicyReport[] => state.clusterPolicyReports,\n policyTraces: (state: StateConfig): PolicyTraceConfig[] => state.policyTraces,\n refreshingCharts: (state: StateConfig): Boolean => state.refreshingCharts,\n};\n","import {\n CatalogApp, ClusterPolicyReport, CustomResourceDefinition, PolicyReport, PolicyTrace, PolicyTraceConfig\n} from '../../types';\nimport { StateConfig } from './index';\n\ntype ReportKeys = 'policyReports' | 'clusterPolicyReports';\n\nexport default {\n updateAirGapped(state: StateConfig, val: Boolean) {\n state.airGapped = val;\n },\n updateHideBannerDefaults(state: StateConfig, val: Boolean) {\n state.hideBannerDefaults = val;\n },\n updateHideBannerArtifactHub(state: StateConfig, val: Boolean) {\n state.hideBannerArtifactHub = val;\n },\n updateHideBannerAirgapPolicy(state: StateConfig, val: Boolean) {\n state.hideBannerAirgapPolicy = val;\n },\n\n /**\n * Updates/Adds Kubewarden Controller App into state\n * @param state\n * @param app `CatalogApp`\n */\n updateControllerApp(state: StateConfig, app: CatalogApp) {\n if ( state.controllerApp?.id === app?.id ) {\n state.controllerApp.metadata = app.metadata;\n state.controllerApp.spec = app.spec;\n state.controllerApp.status = app.status;\n } else {\n state.controllerApp = app;\n }\n },\n\n /**\n * Removes Kubewarden Controller App by ID\n * @param state\n * @param app `CatalogApp`\n */\n removeControllerApp(state: StateConfig, app: CatalogApp) {\n const existing = state.controllerApp?.id === app?.id;\n\n if ( existing ) {\n state.controllerApp = null;\n }\n },\n\n /**\n * Updates/Adds CRD to state\n * @param state\n * @param crd `CustomResourceDefinition`\n */\n updateKubewardenCrds(state: StateConfig, crd: CustomResourceDefinition) {\n const existingCrd = state.kubewardenCrds.find(c => c?.metadata?.name === crd?.metadata?.name);\n\n if ( existingCrd ) {\n existingCrd.metadata = crd.metadata;\n existingCrd.spec = crd.spec;\n existingCrd.status = crd.status;\n } else {\n state.kubewardenCrds.push(crd);\n }\n },\n\n /**\n * Removes CRD from state by `crd.metadata.name`\n * @param state\n * @param crd `CustomResourceDefinition`\n */\n removeKubewardenCrds(state: StateConfig, crd: CustomResourceDefinition) {\n const idx = state.kubewardenCrds.findIndex(c => c?.metadata?.name === crd?.metadata?.name);\n\n if ( idx !== -1 ) {\n state.kubewardenCrds.splice(idx, 1);\n }\n },\n\n /**\n * Updates/Adds a policy or cluster policy report to the store.\n * @param state - The current state object.\n * @param reportArrayKey - The key to the report array in the state to update (e.g., 'policyReports' or 'clusterPolicyReports').\n * @param updatedReport - The report object to update or add.\n */\n updateReports(\n state: StateConfig,\n { reportArrayKey, updatedReport }: { reportArrayKey: ReportKeys, updatedReport: T }\n ): void {\n const reportArray = state[reportArrayKey] as Array;\n const existingReport = reportArray.find(report => report.id === updatedReport.id);\n\n if ( existingReport ) {\n existingReport.results = updatedReport.results;\n existingReport.summary = updatedReport.summary;\n } else {\n reportArray.push(updatedReport);\n }\n },\n\n /**\n * Searches and then removes a report by id from the store\n * @param state\n * @param reportId\n */\n removePolicyReportById(state: StateConfig, reportId: String) {\n const idx = state.policyReports.findIndex(report => report.id === reportId);\n\n if ( idx !== -1 ) {\n state.policyReports.splice(idx, 1);\n }\n },\n\n /**\n * Finds the existing policy object and adds the related traces.\n * @param state\n * @param policy\n * @param updatedTrace\n */\n updatePolicyTraces(state: StateConfig, val: { policyName: string, cluster: string, updatedTrace: PolicyTrace }) {\n const { policyName, cluster, updatedTrace } = val;\n const existingPolicyObj = state.policyTraces.find((traceObj: PolicyTraceConfig) => traceObj.policyName === policyName);\n let existingTrace = existingPolicyObj?.traces.find((trace: PolicyTrace) => trace.id === updatedTrace.id);\n\n if ( existingTrace ) {\n existingTrace = updatedTrace;\n } else if ( !existingPolicyObj ) {\n state.policyTraces.push({\n policyName,\n cluster,\n traces: [updatedTrace]\n });\n } else {\n // If the trace doesn't exist, add it to the store\n existingPolicyObj?.traces.push(updatedTrace);\n }\n },\n /**\n * Searches for the existing policy object and removes a trace by the traceID from the store\n * @param state\n * @param policy\n * @param updatedTrace\n */\n removeTraceById(state: StateConfig, policy: PolicyTraceConfig, updatedTrace: PolicyTrace) {\n const existingPolicyObj = state.policyTraces.find((traceObj: PolicyTraceConfig) => traceObj.policyName === policy.policyName);\n const idx = existingPolicyObj?.traces.findIndex((trace: PolicyTrace) => trace.id === updatedTrace.id);\n\n if ( idx && idx !== -1 ) {\n existingPolicyObj?.traces.splice(idx, 1);\n }\n },\n\n updateRefreshingCharts(state: StateConfig, val: Boolean) {\n state.refreshingCharts = val;\n }\n};\n","import {\n CatalogApp, CustomResourceDefinition, PolicyReport, ClusterPolicyReport, PolicyTraceConfig, PolicyTrace\n} from '../../types';\n\nexport default {\n updateAirGapped({ commit }: any, val: Boolean) {\n commit('updateAirGapped', val);\n },\n\n // Defaults banner\n updateHideBannerDefaults({ commit }: any, val: Boolean) {\n commit('updateHideBannerDefaults', val);\n },\n\n // ArtifactHub banner\n updateHideBannerArtifactHub({ commit }: any, val: Boolean) {\n commit('updateHideBannerArtifactHub', val);\n },\n updateHideBannerAirgapPolicy({ commit }: any, val: Boolean) {\n commit('updateHideBannerAirgapPolicy', val);\n },\n\n // Policy and Cluster Policy Reports\n updatePolicyReports({ commit }: any, updatedReport: PolicyReport) {\n commit('updateReports', { reportArrayKey: 'policyReports', updatedReport });\n },\n updateClusterPolicyReports({ commit }: any, updatedReport: ClusterPolicyReport) {\n commit('updateReports', { reportArrayKey: 'clusterPolicyReports', updatedReport });\n },\n\n // Policy traces\n updatePolicyTraces({ commit }: any, val: { policyName: string, updatedTrace: PolicyTrace }) {\n commit('updatePolicyTraces', val);\n },\n removePolicyTraceById({ commit }: any, policy: PolicyTraceConfig, trace: PolicyTrace) {\n commit('removePolicyTraceById', policy, trace);\n },\n\n // Charts\n updateRefreshingCharts({ commit }: any, val: Boolean) {\n commit('updateRefreshingCharts', val);\n },\n\n // Catalog\n updateControllerApp({ commit }: any, val: CatalogApp) {\n commit('updateControllerApp', val);\n },\n removeControllerApp({ commit }: any, val: CatalogApp) {\n commit('removeControllerApp', val);\n },\n updateKubewardenCrds({ commit }: any, val: CustomResourceDefinition) {\n commit('updateKubewardenCrds', val);\n },\n removeKubewardenCrds({ commit }: any, val: CustomResourceDefinition) {\n commit('removeKubewardenCrds', val);\n }\n};\n","import { CoreStoreSpecifics, CoreStoreConfig } from '@shell/core/types';\n\nimport {\n KUBEWARDEN_PRODUCT_NAME,\n CatalogApp,\n CustomResourceDefinition,\n FleetGitRepo,\n PolicyReport,\n PolicyTraceConfig,\n ClusterPolicyReport\n} from '../../types';\n\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport interface StateConfig {\n airGapped: Boolean;\n fleetRepos: FleetGitRepo[];\n hideBannerDefaults: Boolean;\n hideBannerArtifactHub: Boolean;\n hideBannerAirgapPolicy: Boolean;\n controllerApp: CatalogApp | null;\n kubewardenCrds: CustomResourceDefinition[];\n policyReports: PolicyReport[];\n clusterPolicyReports: ClusterPolicyReport[];\n policyTraces: PolicyTraceConfig[];\n refreshingCharts: Boolean;\n}\n\nconst kubewardenFactory = (config: StateConfig): CoreStoreSpecifics => {\n return {\n state: (): StateConfig => {\n return {\n airGapped: config.airGapped,\n fleetRepos: config.fleetRepos,\n hideBannerDefaults: config.hideBannerDefaults,\n hideBannerArtifactHub: config.hideBannerArtifactHub,\n hideBannerAirgapPolicy: config.hideBannerAirgapPolicy,\n controllerApp: config.controllerApp,\n kubewardenCrds: config.kubewardenCrds,\n policyReports: config.policyReports,\n clusterPolicyReports: config.clusterPolicyReports,\n policyTraces: config.policyTraces,\n refreshingCharts: config.refreshingCharts\n };\n },\n\n getters: { ...getters },\n mutations: { ...mutations },\n actions: { ...actions },\n };\n};\n\nconst config: CoreStoreConfig = { namespace: KUBEWARDEN_PRODUCT_NAME };\n\nexport default {\n specifics: kubewardenFactory({\n airGapped: false,\n fleetRepos: [],\n hideBannerDefaults: false,\n hideBannerArtifactHub: false,\n hideBannerAirgapPolicy: false,\n controllerApp: null,\n kubewardenCrds: [],\n policyReports: [],\n clusterPolicyReports: [],\n policyTraces: [],\n refreshingCharts: false\n }),\n config\n};\n","import DOMPurify from 'dompurify';\nimport { uniq } from '@shell/utils/array';\n\nconst ALLOWED_TAGS = [\n 'code',\n 'li',\n 'a',\n 'p',\n 'b',\n 'br',\n 'ul',\n 'pre',\n 'span',\n 'div',\n 'i',\n 'em',\n 'strong',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'table',\n 'thead',\n 'tr',\n 'th',\n 'tbody',\n 'td',\n 'blockquote'\n];\n\n// Allow 'A' tags to keep the target=_blank attribute if they have it\nDOMPurify.addHook('uponSanitizeAttribute', (node, data) => {\n if (node.tagName === 'A' && data.attrName === 'target' && data.attrValue === '_blank') {\n data.forceKeepAttr = true;\n }\n});\n\n// Ensure if an 'A' tag has target=_blank that we add noopener, noreferrer and nofollow to the 'rel' attribute\nDOMPurify.addHook('afterSanitizeAttributes', (node) => {\n if (node.tagName === 'A' && node?.target === '_blank') {\n const rel = ['noopener', 'noreferrer', 'nofollow'];\n const existingRel = node.rel?.length ? node.rel.split(' ') : [];\n const combined = uniq([...rel, ...existingRel]);\n\n node.setAttribute('rel', combined.join(' '));\n }\n});\n\nexport const purifyHTML = (value, options = { ALLOWED_TAGS }) => {\n return DOMPurify.sanitize(value, options);\n};\n","import { VTooltip } from 'v-tooltip';\nimport { purifyHTML } from '@shell/plugins/clean-html';\n\nfunction purifyContent(value) {\n const type = typeof value;\n\n if (type === 'string') {\n return purifyHTML(value);\n } else if (value && type === 'object' && typeof value.content === 'string') {\n return { ...value, content: purifyHTML(value.content) };\n } else {\n return value;\n }\n}\n\nfunction bind(el, { value, oldValue, modifiers }) {\n const purifiedValue = purifyContent(value);\n\n VTooltip.bind(\n el,\n {\n value: purifiedValue, oldValue, modifiers\n });\n}\n\nconst cleanTooltipDirective = {\n ...VTooltip,\n bind,\n update: bind,\n};\n\nexport default cleanTooltipDirective;\n","import Vue from 'vue';\nimport cleanTooltipDirective from '@shell/directives/clean-tooltip';\n\nexport default cleanTooltipDirective;\n/* eslint-disable-next-line no-console */\nconsole.warn(`Importing cleanTooltipDirective from plugins has been deprecated, use shell/directives/clean-tooltip.js instead.\nMake sure to invoke it using Vue.directive('clean-tooltip', cleanTooltipDirective ) to maintain compatibility.`);\nVue.directive('clean-tooltip', cleanTooltipDirective);\n","import { purifyHTML } from '@shell/plugins/clean-html';\n\nconst cleanHtmlDirective = {\n inserted(el, binding) {\n el.innerHTML = purifyHTML(binding.value);\n },\n componentUpdated(el, binding) {\n el.innerHTML = purifyHTML(binding.value);\n },\n unbind(el) {\n el.innerHTML = '';\n }\n};\n\nexport default cleanHtmlDirective;\n","import Vue from 'vue';\nimport cleanHtmlDirective from '@shell/directives/clean-html';\n\nexport default cleanHtmlDirective;\n\n/* eslint-disable-next-line no-console */\nconsole.warn(`Importing cleanHtmlDirective from plugins has been deprecated, use shell/directives/clean-html.js instead. \nMake sure to invoke Vue.directive('clean-html', cleanHtmlDirective) to maintain compatibility.`);\nVue.directive('clean-html', cleanHtmlDirective);\n","import { importTypes } from '@rancher/auto-import';\nimport {\n IPlugin, TableColumnLocation, TabLocation, PanelLocation, OnNavToPackage\n} from '@shell/core/types';\nimport {\n NAMESPACE, POD, WORKLOAD_TYPES, INGRESS, SERVICE\n} from '@shell/config/types';\n\nimport kubewardenRoutes from './routes/kubewarden-routes';\nimport kubewardenStore from './store/kubewarden';\nimport { getReports } from './modules/policyReporter';\n\n// fix missing directives on dashboard v2.7.2\nimport '@shell/plugins/clean-tooltip-directive';\nimport '@shell/plugins/clean-html-directive';\n\nconst onEnter: OnNavToPackage = async(store) => {\n await getReports(store, false);\n await getReports(store, true);\n};\n\n// Init the package\nexport default function($plugin: IPlugin, args: any) {\n // Auto-import model, detail, edit from the folders\n importTypes($plugin);\n\n // Provide plugin metadata from package.json\n $plugin.metadata = require('./package.json');\n\n // Load product\n $plugin.addProduct(require('./config/kubewarden'));\n\n // Add Vuex store\n $plugin.addDashboardStore(kubewardenStore.config.namespace, kubewardenStore.specifics, kubewardenStore.config);\n\n // Routes\n $plugin.addRoutes(kubewardenRoutes);\n\n // Add hooks to Vue navigation world\n $plugin.addNavHooks(onEnter);\n\n /** Panels */\n $plugin.addPanel(\n PanelLocation.RESOURCE_LIST,\n { path: [{ urlPath: 'explorer/projectsnamespaces', endsWith: true }] },\n { component: () => import('./components/PolicyReporter/ReporterPanel.vue') }\n );\n\n $plugin.addPanel(\n PanelLocation.RESOURCE_LIST,\n {\n resource: [\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n { component: () => import('./components/PolicyReporter/ReporterPanel.vue') }\n );\n\n /** Columns */\n // Policy Reports for Project Namespaces\n $plugin.addTableColumn(\n TableColumnLocation.RESOURCE,\n { path: [{ urlPath: 'explorer/projectsnamespaces', endsWith: true }] },\n {\n name: 'policy-reports',\n labelKey: 'kubewarden.policyReporter.headers.policyReports.label',\n getValue: (row: any) => row,\n weight: 3,\n formatter: 'PolicyReportSummary'\n }\n );\n\n // Policy Reports for namespaced resources\n $plugin.addTableColumn(\n TableColumnLocation.RESOURCE,\n {\n resource: [\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n {\n name: 'policy-reports',\n labelKey: 'kubewarden.policyReporter.headers.label',\n getValue: (row: any) => row,\n weight: 3,\n formatter: 'PolicyReportSummary'\n }\n );\n\n /** Tabs */\n $plugin.addTab(\n TabLocation.RESOURCE_DETAIL,\n {\n resource: [\n NAMESPACE,\n POD,\n WORKLOAD_TYPES.CRON_JOB,\n WORKLOAD_TYPES.DAEMON_SET,\n WORKLOAD_TYPES.DEPLOYMENT,\n WORKLOAD_TYPES.JOB,\n WORKLOAD_TYPES.STATEFUL_SET,\n INGRESS,\n SERVICE\n ]\n },\n {\n name: 'policy-report-tab',\n labelKey: 'kubewarden.policyReporter.headers.label',\n weight: -5,\n showHeader: true,\n component: () => import('./components/PolicyReporter/ResourceTab.vue')\n }\n );\n}\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Authority.vue?vue&type=template&id=5fa70040&scoped=true&\"\nimport script from \"./Authority.vue?vue&type=script&lang=js&\"\nexport * from \"./Authority.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Authority.vue?vue&type=style&index=0&id=5fa70040&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5fa70040\",\n null\n \n)\n\nexport default component.exports","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","export const NAMESPACE_FILTER_ALL_PREFIX = 'all';\nexport const NAMESPACE_FILTER_NS_PREFIX = 'ns';\nexport const NAMESPACE_FILTER_P_PREFIX = 'project';\n\nexport const NAMESPACE_FILTER_NS_FULL_PREFIX = `${ NAMESPACE_FILTER_NS_PREFIX }://`;\nexport const NAMESPACE_FILTER_P_FULL_PREFIX = `${ NAMESPACE_FILTER_P_PREFIX }://`;\n\nexport const NAMESPACE_FILTER_ALL = NAMESPACE_FILTER_ALL_PREFIX;\nexport const NAMESPACE_FILTER_ALL_SYSTEM = `${ NAMESPACE_FILTER_ALL_PREFIX }://system`;\nexport const NAMESPACE_FILTER_ALL_USER = `${ NAMESPACE_FILTER_ALL_PREFIX }://user`;\nexport const NAMESPACE_FILTER_ALL_ORPHANS = `${ NAMESPACE_FILTER_ALL_PREFIX }://orphans`;\nexport const NAMESPACE_FILTER_NAMESPACED_PREFIX = 'namespaced://';\nexport const NAMESPACE_FILTER_NAMESPACED_YES = 'namespaced://true';\nexport const NAMESPACE_FILTER_NAMESPACED_NO = 'namespaced://false';\n\nexport const NAMESPACE_FILTER_KINDS = {\n DIVIDER: 'divider',\n PROJECT: 'project',\n NAMESPACE: 'namespace',\n SPECIAL: 'special'\n};\n\nconst SEPARATOR = '__%%__';\n\nexport const createNamespaceFilterKey = (clusterId, product) => {\n if (!product?.customNamespaceFilter) {\n return clusterId;\n }\n\n return createNamespaceFilterKeyWithId(clusterId, product.name);\n};\nexport const createNamespaceFilterKeyWithId = (clusterId, productId) => {\n return `${ clusterId }${ SEPARATOR }${ productId }`;\n};\n\nexport const splitNamespaceFilterKey = (key) => {\n const [clusterId, productId] = key.split(SEPARATOR);\n\n return {\n clusterId,\n productId\n };\n};\n","import { SETTING } from '@shell/config/settings';\nimport { COUNT, MANAGEMENT } from '@shell/config/types';\nimport { GC_DEFAULTS, GC_PREFERENCES } from './gc-types';\n\nclass GarbageCollect {\n private static ENABLE_DEBUG_LOGGING = false;\n\n /**\n * Don't run GC if it's been run within 5 seconds\n */\n private static GC_RE_RUN_GAP = 1000 * 5;\n\n private cachedGcPrefs: GC_PREFERENCES = GC_DEFAULTS;\n\n private cachedGcPrefsStamp = '';\n\n private debugLog = (...args: any) => {\n if (GarbageCollect.ENABLE_DEBUG_LOGGING) {\n console.debug('GC', ...args); // eslint-disable-line no-console\n }\n };\n\n /**\n * Time the GC last ran\n */\n private gcLastRun: number | null = 0;\n\n /**\n * To avoid JSON.parse on the `ui-performance` setting keep a local cache\n */\n private getUiPerfGarbageCollection = (rootState: any) => {\n const uiPerfSetting = rootState.management.types[MANAGEMENT.SETTING]?.list.find((s: any) => s.id === SETTING.UI_PERFORMANCE);\n\n if (!uiPerfSetting || !uiPerfSetting.value) {\n // Could be in the process of logging out\n return undefined;\n }\n const stamp = `${ uiPerfSetting.metadata.generation }-${ uiPerfSetting.metadata.resourceVersion }`;\n\n if (this.cachedGcPrefsStamp !== stamp) {\n this.debugLog(`Updating ${ SETTING.UI_PERFORMANCE } cache`);\n this.cachedGcPrefsStamp = stamp;\n const uiPerfSettingParsed = JSON.parse(uiPerfSetting.value);\n\n this.cachedGcPrefs = uiPerfSettingParsed.garbageCollection;\n }\n\n return this.cachedGcPrefs;\n };\n\n /**\n * The last time a resource was accessed by either find or getters style functions\n */\n private lastAccessedCache: {\n [store: string]: {\n [type: string]: number;\n }\n } = {}\n\n /**\n * Track when a logged in route changes.\n */\n private lastRouteChange = 0;\n\n // ------------- GC Enabled ---------------------\n\n gcEnabledAll(pseudoCtx: any, type: string) {\n return this.gcEnabledForStore(pseudoCtx.state) && this.gcEnabledSetting(pseudoCtx) && this.gcEnabledForType(pseudoCtx, type);\n }\n\n gcEnabledSetting(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return uiPerfGarbageCollection?.enabled;\n }\n\n gcEnabledForStore(state: any) {\n return state?.config?.supportsGc;\n }\n\n /**\n * Store can require certain types are not GC'd (for example `cluster` and `schema`s, `counts`, etc)\n */\n gcEnabledForType(pseudoCtx: any, type: string) {\n const { getters } = pseudoCtx;\n\n if (!type || getters.gcIgnoreTypes[type]) {\n return false;\n }\n\n return true;\n }\n\n gcEnabledInterval(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return {\n enabled: uiPerfGarbageCollection?.enabledInterval,\n interval: uiPerfGarbageCollection?.interval || 0\n };\n }\n\n gcEnabledRoute(pseudoCtx: any) {\n const { rootState } = pseudoCtx;\n\n // Don't use a getter... as we'll end up triggering ourselves again\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n return uiPerfGarbageCollection?.enabledOnNavigate;\n }\n\n // ------------- GC (actual) ---------------------\n\n /**\n * Remove stale resource types from the store and stop watching them for changes\n */\n garbageCollect(ctx: any, ignoreTypes: {[type: string]: boolean} = {}) {\n const now = new Date().getTime();\n\n // Is gc currently running OR has run in the past GC_RE_RUN_GAP return early\n if (this.gcLastRun === null || now - this.gcLastRun < GarbageCollect.GC_RE_RUN_GAP) {\n this.debugLog('Skipping (running or recently run)', this.gcLastRun ? new Date(this.gcLastRun) : 'running');\n\n return;\n }\n\n this.gcLastRun = null;\n const gcd: {[type: string]: number} = {};\n\n try {\n const { getters, rootState, dispatch } = ctx;\n\n if (!rootState.clusterReady) {\n this.debugLog('Skipping (cluster not ready)');\n this.gcLastRun = new Date().getTime();\n\n return ;\n }\n this.debugLog(`------ Started ------`);\n\n const uiPerfGarbageCollection = this.getUiPerfGarbageCollection(rootState);\n\n if (!uiPerfGarbageCollection) {\n return ;\n }\n const maxAge = uiPerfGarbageCollection.ageThreshold * 1000;\n const maxCount = uiPerfGarbageCollection.countThreshold;\n\n this.debugLog(`Max Age: ${ maxAge }. Max Count: ${ maxCount }`);// , 'Cache', this.lastAccessedCache\n\n const store = ctx.state.config.namespace;\n\n // this.debugLog('Cache', this.lastAccessedCache);\n\n Object.entries((this.lastAccessedCache[store] || {})).forEach(([type, lastAccessed]) => {\n if (!lastAccessed) {\n // There's no last accessed time... gc is probably disabled in another way\n this.debugLog(`${ type }: Skipping (no accessed time)`);\n\n return;\n }\n\n if (!this.gcEnabledForType(ctx, type)) {\n // This specific store is telling us to ignore the type (for example `cluster` store will not GC schema's, counts, etc)\n this.debugLog(`${ type }: Skipping (type ignored by store)`);\n\n return;\n }\n\n if (ignoreTypes[type]) {\n // We're going to a place that needs the resource\n this.debugLog(`${ type }: Skipping (navigating to type)`);\n\n return;\n }\n\n if (now - lastAccessed <= maxAge) {\n // The resource was recently accessed\n\n this.debugLog(`${ type }: Skipping (recently accessed)`);\n\n return;\n }\n\n if (this.lastRouteChange !== undefined && this.lastRouteChange < lastAccessed ) {\n // The resource is being used in the current route/page\n this.debugLog(`${ type }: Skipping (used in current route/page)`);\n\n return;\n }\n\n const countFromResource = getters.all(COUNT)[0].counts[type]?.summary.count;\n const currentCount = countFromResource ?? 0;\n\n if (currentCount === undefined || currentCount < maxCount) {\n // There's too few resources, we might as well keep them to avoid a network request when we need them again\n this.debugLog(`${ type }: Skipping (too few of resource)`);\n\n return;\n }\n\n this.debugLog(`${ type }: Removing from store`);\n dispatch('forgetType', type);\n gcd[type] = currentCount;\n });\n\n this.gcLastRun = new Date().getTime();\n } catch (e) {\n this.debugLog(`: Error`, e);\n this.gcLastRun = new Date().getTime();\n }\n\n if (Object.keys(gcd).length > 0) {\n console.info('Garbage Collected Resources', gcd); // eslint-disable-line no-console\n }\n\n this.debugLog(`------ Finished ------`);\n }\n\n // ------------- GC Update local cache ---------------------\n\n /**\n * Update the time that the resource type was accessed\n * This needs to run after any type initialisation (aka registerType)\n */\n gcUpdateLastAccessed(pseudoCtx: any, type: string) {\n if (!this.gcEnabledAll(pseudoCtx, type)) {\n return;\n }\n const store = pseudoCtx.state.config.namespace;\n\n if (!this.lastAccessedCache[store]) {\n this.lastAccessedCache[store] = {};\n }\n\n this.lastAccessedCache[store][type] = new Date().getTime();\n }\n\n /**\n * Update the time the user last changed routes\n */\n gcUpdateRouteChanged() {\n this.lastRouteChange = new Date().getTime();\n }\n\n // ------------- GC reset ---------------------\n\n /**\n * Remove all cached access times for the given store\n */\n gcResetStore(state: any) {\n const store = state.config.namespace;\n\n delete this.lastAccessedCache[store];\n\n this.debugLog('Forgetting Store:', store);\n }\n\n /**\n * Remove cached access time for the given resource type\n */\n gcResetType(state: any, type: string) {\n const store = state.config.namespace;\n\n if (!this.lastAccessedCache[store]) {\n return;\n }\n delete this.lastAccessedCache[store][type];\n\n this.debugLog('Forgetting Type:', store, type);\n }\n}\n\nconst gc = new GarbageCollect();\n\nexport default gc;\n","import { MANAGEMENT } from '@shell/config/types';\nimport { Store } from 'vuex';\nimport { DEFAULT_PERF_SETTING, PerfSettings, SETTING } from '@shell/config/settings';\nimport { pluralize } from '@shell/utils/string';\nimport { _MULTI } from '@shell/plugins/dashboard-store/actions';\n\nexport const fetchOrCreateSetting = async(store: Store, id: string, val: string, save = true): Promise => {\n let setting;\n\n try {\n setting = await store.dispatch('management/find', { type: MANAGEMENT.SETTING, id });\n } catch {\n const schema = store.getters['management/schemaFor'](MANAGEMENT.SETTING);\n const url = schema.linkFor('collection');\n\n setting = await store.dispatch('management/create', {\n type: MANAGEMENT.SETTING, metadata: { name: id }, value: val, default: val || ''\n });\n if ( save ) {\n await setting.save({ url });\n }\n }\n\n return setting;\n};\n\n/**\n * Fetch a specific setting that might not exist\n * We fetch all settings - reality is Rancher will have done this already, so there's no overhead in doing\n * this - but if we fetch a specific setting that does not exist, we will get a 404, which we don't want\n */\nexport const fetchSetting = async(store: Store, id: string): Promise => {\n const all = await store.dispatch('management/findAll', { type: MANAGEMENT.SETTING });\n const setting = (all || []).find((setting: any) => setting.id === id);\n\n return setting;\n};\n\n/**\n * Carefully fetch mgmt settings\n *\n * Ensures that\n * - Concurrent calls to this function will only result in a single http request\n * - Subsequent calls, when either logged in or logged out, will only result in a single http request\n * - Logged out call will fetch partial settings, after logging in another call will fetch all settings\n *\n * Will be used in many places, particularly multiple times when loading the dashboard\n *\n * Note - We need to specify the url for cases where it can't be determined (i.e. we haven't fetched schemas)\n */\nexport const fetchInitialSettings = async(store: Store): Promise => {\n const generation = store.getters['management/generation'](MANAGEMENT.SETTING);\n // We use this as it copies the previous mechanism this was based on (in findAll)\n // There is the getter `auth/loggedInAs` (which is set given `fromHeader`), but that's initialised after the first call to here (see `authenticated`)\n const header = store.getters['auth/fromHeader'];\n const authed = `${ header }` === 'true' || `${ header }` === 'none';\n\n if (authed) {\n // We're authed, we will always get the full list\n return await store.dispatch('management/findAll', {\n type: MANAGEMENT.SETTING,\n opt: { url: `/v1/${ pluralize(MANAGEMENT.SETTING) }` }\n } );\n }\n\n if (!generation) {\n // We're not authed, and haven't previously fetched settings (no generation)\n // Fetch settings, put them in the store, but don't say we've got all yet (so subsequent calls will run)\n return await store.dispatch('management/findAll', {\n type: MANAGEMENT.SETTING,\n opt: {\n url: `/v1/${ pluralize(MANAGEMENT.SETTING) }`,\n load: _MULTI,\n redirectUnauthorized: false\n }\n });\n }\n\n // We're not authed, but have a previous value, no need to make a http request to fetch again\n return store.getters['management/all'](MANAGEMENT.SETTING);\n};\n\nexport const setSetting = async(store: Store, id: string, val: string): Promise => {\n const setting = await fetchOrCreateSetting(store, id, val, false);\n\n setting.value = val;\n await setting.save();\n\n return setting;\n};\n\nexport const getPerformanceSetting = (rootGetters: Record any>): PerfSettings => {\n const perfSettingResource = rootGetters['management/byId'](MANAGEMENT.SETTING, SETTING.UI_PERFORMANCE);\n let perfSetting = {};\n\n if (perfSettingResource?.value) {\n try {\n perfSetting = JSON.parse(perfSettingResource.value);\n } catch (e) {\n console.warn('ui-performance setting contains invalid data'); // eslint-disable-line no-console\n }\n }\n\n // Start with the default and overwrite the values from the setting - ensures we have defaults for newly added options\n return Object.assign(DEFAULT_PERF_SETTING, perfSetting || {});\n};\n","import { NAMESPACE_FILTER_NS_FULL_PREFIX, NAMESPACE_FILTER_P_FULL_PREFIX } from '@shell/utils/namespace-filter';\nimport { getPerformanceSetting } from '@shell/utils/settings';\nimport { ActionFindAllArgs } from '@shell/types/store/dashboard-store.types';\n\nclass ProjectAndNamespaceFiltering {\n static param = 'projectsornamespaces'\n\n /**\n * Does the request `opt` definition require resources are fetched from a specific set namespaces/projects?\n */\n isApplicable(opt: ActionFindAllArgs): boolean {\n return Array.isArray(opt.namespaced);\n }\n\n isEnabled(rootGetters: any): boolean {\n const currentProduct = rootGetters['currentProduct'];\n\n // Only enable for the cluster store at the moment. In theory this should work in management as well, as they're both 'steve' stores\n if (currentProduct?.inStore !== 'cluster') {\n return false;\n }\n\n if (currentProduct?.showWorkspaceSwitcher) {\n return false;\n }\n\n const perfConfig = getPerformanceSetting(rootGetters);\n\n if (!perfConfig.forceNsFilterV2?.enabled) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Check if `opt` requires resources from specific ns/projects, if so return the required query param (x=y)\n */\n checkAndCreateParam(opt: ActionFindAllArgs): string {\n if (!this.isApplicable(opt)) {\n return '';\n }\n\n return this.createParam(opt.namespaced);\n }\n\n public createParam(namespaceFilter: string[] | undefined): string {\n if (!namespaceFilter || !namespaceFilter.length) {\n return '';\n }\n\n const namespaces = namespaceFilter.reduce((res, n) => {\n const name = n\n .replace(NAMESPACE_FILTER_NS_FULL_PREFIX, '')\n .replace(NAMESPACE_FILTER_P_FULL_PREFIX, '');\n\n if (name.startsWith('-')) {\n res.exclude.push(n.substring(1, n.length));\n } else {\n res.include.push(name);\n }\n\n return res;\n }, { include: [] as string[], exclude: [] as string[] });\n\n let res = '';\n\n if (namespaces.include.length) {\n res = `${ ProjectAndNamespaceFiltering.param }=${ namespaces.include.join(',') }`;\n }\n\n if (namespaces.exclude.length) {\n res = `${ ProjectAndNamespaceFiltering.param }!=${ namespaces.exclude.join(',') }`;\n }\n\n return res;\n }\n}\n\nexport default new ProjectAndNamespaceFiltering();\n","import { NAMESPACE_FILTER_NS_PREFIX, NAMESPACE_FILTER_P_PREFIX } from '@shell/utils/namespace-filter';\nimport { mapGetters } from 'vuex';\nimport { ResourceListComponentName } from '../components/ResourceList/resource-list.config';\nimport pAndNFiltering from '@shell/plugins/steve/projectAndNamespaceFiltering.utils';\n\n/**\n * Companion mixin used with `resource-fetch` for `ResourceList` to determine if the user needs to filter the list by a single namespace\n */\nexport default {\n\n data() {\n return { forceUpdateLiveAndDelayed: 0 };\n },\n\n computed: {\n ...mapGetters(['currentProduct', 'currentCluster', 'namespaceFilters']),\n\n /**\n * Does the user need to update the filter to supply a single namespace?\n */\n namespaceFilterRequired() {\n return this.__namespaceRequired && !this.__validFilter;\n },\n\n /**\n * Returns the namespace that requests should be filtered by\n */\n namespaceFilter() {\n return this.__namespaceRequired ? this.__validFilter : '';\n },\n\n /**\n * If the Project/Namespace filter from the header contains a valid ns / project filter ... return it\n */\n __validFilter() {\n const valid = this.namespaceFilters.length && this.namespaceFilters.every((f) => f.startsWith(NAMESPACE_FILTER_NS_PREFIX) || f.startsWith(NAMESPACE_FILTER_P_PREFIX));\n\n return valid ? this.namespaceFilters : null;\n },\n\n /**\n * Do we need to filter the list by a namespace? This will control whether the user is shown an error\n *\n * We shouldn't show an error on pages with resources that aren't namespaced\n */\n __namespaceRequired() {\n if (!pAndNFiltering.isEnabled(this.$store.getters)) {\n return false;\n }\n\n return this.__areResourcesNamespaced;\n },\n\n /**\n * Are all core list resources namespaced?\n */\n __areResourcesNamespaced() {\n // Only enable for the cluster store at the moment. In theory this should work in management as well, as they're both 'steve' stores\n if (this.currentProduct.inStore !== 'cluster') {\n return false;\n }\n\n return (this.loadResources || []).every((type) => {\n const schema = this.$store.getters['cluster/schemaFor'](type);\n\n return schema?.attributes?.namespaced;\n });\n },\n\n },\n\n watch: {\n async namespaceFilter(neu) {\n if (neu) {\n // When a NS filter is required and the user selects a different one, kick off a new set of API requests\n //\n // ResourceList has two modes\n // 1) ResourceList component handles API request to fetch resources\n // 2) Custom list component handles API request to fetch resources\n //\n // This covers case 2\n if (this.$options.name !== ResourceListComponentName && !!this.$fetch) {\n await this.$fetch();\n }\n // Ensure any live/delayed columns get updated\n this.forceUpdateLiveAndDelayed = new Date().getTime();\n }\n }\n }\n};\n","import { PaginationSettings } from '@shell/types/resources/settings';\nimport {\n NAMESPACE_FILTER_ALL_USER as ALL_USER,\n NAMESPACE_FILTER_ALL as ALL,\n NAMESPACE_FILTER_ALL_SYSTEM as ALL_SYSTEM,\n NAMESPACE_FILTER_NAMESPACED_YES as NAMESPACED_YES,\n NAMESPACE_FILTER_NAMESPACED_NO as NAMESPACED_NO,\n NAMESPACE_FILTER_KINDS,\n NAMESPACE_FILTER_NS_FULL_PREFIX,\n NAMESPACE_FILTER_P_FULL_PREFIX,\n} from '@shell/utils/namespace-filter';\nimport { PaginationArgs, PaginationParam, PaginationSort } from '@shell/types/store/pagination.types';\nimport { sameArrayObjects } from '@shell/utils/array';\nimport { isEqual } from '@shell/utils/object';\nimport { STEVE_CACHE } from '@shell/store/features';\nimport { getPerformanceSetting } from '@shell/utils/settings';\n\n/**\n * Helper functions for server side pagination\n */\nclass PaginationUtils {\n /**\n * When a ns filter isn't one or more projects/namespaces... what are the valid values?\n *\n * This basically blocks 'Not in a Project'.. which would involve a projectsornamespaces param with every ns not in a project.\n */\n validNsProjectFilters = [ALL, ALL_SYSTEM, ALL_USER, ALL_SYSTEM, NAMESPACE_FILTER_KINDS.NAMESPACE, NAMESPACE_FILTER_KINDS.PROJECT, NAMESPACED_YES, NAMESPACED_NO];\n\n private getSettings({ rootGetters }: any): PaginationSettings {\n const perf = getPerformanceSetting(rootGetters);\n\n return perf.serverPagination;\n }\n\n isSteveCacheEnabled({ rootGetters }: any): boolean {\n // We always get Feature flags as part of start up (see `dispatch('features/loadServer')` in loadManagement)\n return rootGetters['features/get']?.(STEVE_CACHE);\n }\n\n /**\n * Is pagination enabled at a global level or for a specific resource\n */\n isEnabled({ rootGetters }: any, enabledFor: {\n store: string,\n resource?: {\n id: string,\n }\n }) {\n // Cache must be enabled to support pagination api\n if (!this.isSteveCacheEnabled({ rootGetters })) {\n return false;\n }\n\n const settings = this.getSettings({ rootGetters });\n\n // No setting, not enabled\n if (!settings?.enabled) {\n return false;\n }\n\n // Missing required params, not enabled\n if (!enabledFor) {\n return false;\n }\n\n const storeSettings = settings.stores?.[enabledFor.store];\n\n // No pagination setting for target store, not enabled\n if (!storeSettings) {\n return false;\n }\n\n // Not interested in a resource, so just top level settings are checked\n if (!enabledFor.resource) {\n return true;\n }\n\n // Store says all resources are enabled\n if (storeSettings.resources.enableAll) {\n return true;\n }\n\n // given a resource... but no id... invalid\n if (!enabledFor.resource.id) {\n return false;\n }\n\n // Store says only some (those that have pagination columns not from schema and no custom list)\n const isGeneric =\n !rootGetters['type-map/configuredHeaders'](enabledFor.resource.id) &&\n !rootGetters['type-map/configuredPaginationHeaders'](enabledFor.resource.id) &&\n !rootGetters['type-map/hasCustomList'](enabledFor.resource.id);\n\n if (storeSettings.resources.enableSome.generic && isGeneric) {\n return true;\n }\n\n if (storeSettings.resources.enableSome.enabled.includes(enabledFor.resource.id)) {\n return true;\n }\n\n return false;\n }\n\n validateNsProjectFilters(nsProjectFilters: string[]) {\n return nsProjectFilters?.every((f) => this.validateNsProjectFilter(f));\n }\n\n validateNsProjectFilter(nsProjectFilter: string) {\n if (nsProjectFilter.startsWith(NAMESPACE_FILTER_NS_FULL_PREFIX) || nsProjectFilter.startsWith(NAMESPACE_FILTER_P_FULL_PREFIX)) {\n return true;\n }\n\n return this.validNsProjectFilters.includes(nsProjectFilter);\n }\n\n paginationFilterEqual(a: PaginationParam, b: PaginationParam): boolean {\n if (a.param !== b.param || a.equals !== b.equals) {\n return false;\n }\n\n return sameArrayObjects(a.fields, b.fields, true);\n }\n\n paginationFiltersEqual(a: PaginationParam[], b: PaginationParam[]): boolean {\n if (!!a && a?.length !== b?.length) {\n return false;\n }\n\n for (let i = 0; i < a.length; i++) {\n if (!this.paginationFilterEqual(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n paginationEqual(a?: PaginationArgs, b?: PaginationArgs): boolean {\n const {\n filters: aFilter = [], sort: aSort = [], projectsOrNamespaces: aPN = [], ...aPrimitiveTypes\n } = a || {};\n const {\n filters: bFilter = [], sort: bSort = [], projectsOrNamespaces: bPN = [], ...bPrimitiveTypes\n } = b || {};\n\n return isEqual(aPrimitiveTypes, bPrimitiveTypes) &&\n this.paginationFiltersEqual(aFilter, bFilter) &&\n this.paginationFiltersEqual(aPN, bPN) &&\n sameArrayObjects(aSort, bSort, true);\n }\n}\n\nexport default new PaginationUtils();\n","import { NAMESPACE_FILTER_NS_FULL_PREFIX, NAMESPACE_FILTER_P_FULL_PREFIX } from '@shell/utils/namespace-filter';\n\n// Pagination Typing\n// These structures are designed to offer both convenience and flexibility based on a common structure and are\n// converted to the url param format as per https://github.com/rancher/steve.\n//\n// Simple use cases such as filtering by a single param should be easy to use.\n// More complex filtering (and'ing and 'or'ing multiple fields) is also supported.\n//\n// The top level object `PaginationArgs` contains all properties that will be converted to url params\n//\n// The two important / complex params are currently\n// - `filter` https://github.com/rancher/steve?tab=readme-ov-file#filter\n// - represented by `PaginationParamFilter extends PaginationParam`\n// - Examples\n// - filter=metadata.name=123\n// - filter=metadata.name=123,metadata.name=456 (name is 123 OR 456)\n// - filter=metadata.name=123&filter=metadata.namespace=abc (name 123 AND namespace abc)\n// - `projectsornamespaces` https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces\n// - represented by `PaginationParamProjectOrNamespace extends PaginationParam`\n// - Examples\n// - projectsornamespaces=123\n// - projectsornamespaces=123,456 (projects or namespaces that have id 123 OR 456)\n//\n//\n// Some of the types below are defined using classes instead of TS types/interfaces\n// - Avoid making complex json objects by using clearer instance constructors\n// - Better documented\n// - Defaults (a lot of the time convenience > utility)\n// - Adds some kind of typing in pure js docs\n// - class ctor links to definition, instead of object just being a random json blob)\n// - helps VSCode jsdoc highlighting\n\n/**\n * Sort the pagination result\n *\n * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#sort\n */\nexport interface PaginationSort {\n /**\n * Name of field within the object to sort by\n */\n field: string,\n asc: boolean\n}\n\n/**\n * Filter the pagination result by these specific fields\n *\n * For example\n *\n * - metadata.name=test\n * - metadata.namespace!=system\n *\n * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#query-parameters\n */\nexport class PaginationFilterField {\n /**\n * Name of field within the object to filter by for example the x of x=y\n *\n * This can be optional for some (projectsornamespaces)\n */\n field?: string;\n /**\n * Value of field within the object to filter by for example the y of x=y\n */\n value: string;\n /**\n * Equality field within the object to filter by for example the `=` or `!=` of x=y\n */\n equals: boolean;\n /**\n * Match the field exactly. False for partial matches\n *\n * Value: pod1\n * Exact: true. \"p\" no, \"pod\", no, \"pod1\" yes\n * Exact: false. \"p\" yes, \"pod\", yes, \"pod1\" yes\n */\n exact: boolean;\n\n constructor(\n {\n field, value, equals = true, exact = true\n }:\n { field?: string; value: string; equals?: boolean; exact?: boolean;}\n ) {\n this.field = field;\n this.value = value;\n this.equals = equals;\n this.exact = exact;\n }\n}\n\n/**\n * Represents filter like params, for example\n *\n * - `filter=abc!=xyz&def=123`\n * - `projectsornamespace!=p-3456`\n *\n * ### Params\n * #### Filter\n * - For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#filter\n *\n * #### Projects Or Namespace\n * - For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces\n *\n * ### Combining Params\n * Params can be combined in two logical ways\n *\n * 1) AND\n * - Used when you would like to filter by something like a=1 AND b=2 AND c=3\n * - To do this multiple instances of `PaginationParam` are used in an array\n * - Object Structure\n * ```\n * [\n * PaginationParam,\n * PaginationParam,\n * PaginationParam\n * ]\n * ```\n * - Results in url\n * ```\n * filter=a=1&filter=b=2&filter=c=3\n * ```\n * - Examples\n * - `filter=metadata.namespace=abc&filter=metadata.name=123,property=123`\n * 2) OR\n * - Used when you would like to filter by something like a=1 OR b=2 OR c=3\n * - To do this multiple fields within a single PaginationParam is used\n * - Object Structure\n * ```\n * [\n * PaginationParam {\n * PaginationFilterField,\n * PaginationFilterField,\n * PaginationFilterField\n * }\n * ]\n * ```\n * - Results in url\n * ```\n * filter=a=1,b=2,c=3\n * ```\n *\n * - For example `filter=a=1,b=2,c=3`\n *\n *\n * This structure should give enough flexibility to cover all uses.\n *\n *\n */\nexport abstract class PaginationParam {\n /**\n * Query Param. For example `filter` or `projectsornamespaces`\n */\n param: string;\n /**\n * should fields equal param.\n *\n * For example projectsornamexspaces=x or projectsornamexspaces!=x\n */\n equals: boolean;\n /**\n * Fields to filter by\n *\n * For example metadata.namespace=abc OR metadata.namespace=xyz\n */\n fields: PaginationFilterField[];\n\n constructor(\n { param, equals = true, fields = [] }:\n {\n param: string;\n /**\n * should param equal fields\n *\n * For definition see {@link PaginationParam} `equals`\n */\n equals?: boolean;\n /**\n * Collection of fields to filter by\n *\n * For definition see {@link PaginationParam} `fields`\n */\n fields?: PaginationFilterField[];\n }) {\n this.param = param;\n this.equals = equals;\n this.fields = fields;\n }\n}\n\n/**\n * This is a convenience class for the `filter` param which works some magic, adds defaults and converts to the required PaginationParam format\n *\n * See description for {@link PaginationParam} for how multiple of these can be combined together to AND or OR together\n *\n * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#filter\n */\nexport class PaginationParamFilter extends PaginationParam {\n constructor(\n { equals = true, fields = [] }:\n {\n /**\n * should param equal fields\n *\n * For definition see {@link PaginationParam} `equals`\n */\n equals?: boolean;\n /**\n * Collection of fields to filter by.\n *\n * Fields are ORd together\n *\n * For definition see {@link PaginationParam} `fields`\n */\n fields?: PaginationFilterField[];\n }\n ) {\n super({\n param: 'filter',\n equals,\n fields\n });\n }\n\n /**\n * Convenience method when you just want an instance of {@link PaginationParamFilter} with a simple `filter=x=y` param\n */\n static createSingleField(field: { field?: string; value: string; equals?: boolean; }): PaginationParam {\n return new PaginationParamFilter({ fields: [new PaginationFilterField(field)] });\n }\n\n /**\n * Convenience method when you just want an instance of {@link PaginationParamFilter} with a simple `filter=a=1,b=2,c=3` PaginationParam\n *\n * These will be OR'd together\n */\n static createMultipleFields(fields: PaginationFilterField[]): PaginationParam {\n return new PaginationParamFilter({ fields });\n }\n}\n\n/**\n * This is a convenience class for the `projectsornamespaces` param which works some magic, adds defaults and converts to the required PaginationParam format\n *\n * See description for {@link PaginationParam} for how multiple of these can be combined together to AND or OR together\n *\n * For more information regarding the API see https://github.com/rancher/steve?tab=readme-ov-file#projectsornamespaces\n */\nexport class PaginationParamProjectOrNamespace extends PaginationParam {\n constructor(\n { equals = true, projectOrNamespace = [] }:\n {\n /**\n * should param equal fields\n * For definition see {@link PaginationParam} `equals`\n */\n equals?: boolean;\n /**\n * Collection of projects / namespace id's to filter by\n *\n * These are OR'd together\n *\n * For clarification on definition see {@link PaginationFilterField}\n */\n projectOrNamespace?: string[];\n }\n ) {\n const safeFields = projectOrNamespace.map((f) => {\n return new PaginationFilterField({\n value: f\n .replace(NAMESPACE_FILTER_NS_FULL_PREFIX, '')\n .replace(NAMESPACE_FILTER_P_FULL_PREFIX, '')\n });\n });\n\n super({\n param: 'projectsornamespaces',\n equals,\n fields: safeFields\n });\n }\n}\n\n/**\n * Pagination settings sent to actions and persisted to store\n *\n * Use this for making pagination requests that utilise the new vai cache backed API\n */\nexport class PaginationArgs {\n /**\n * Page number to fetch\n */\n page: number | null;\n /**\n * Number of results in the page\n */\n pageSize?: number | null;\n /**\n * Sort the results\n *\n * For more info see {@link PaginationSort}\n */\n sort: PaginationSort[];\n /**\n * A collection of `filter` params\n *\n * For more info see {@link PaginationParamFilter}\n */\n filters: PaginationParamFilter[];\n /**\n * A collection of `projectsornamespace` params\n *\n * For more info see {@link PaginationParamProjectOrNamespace}\n */\n projectsOrNamespaces: PaginationParamProjectOrNamespace[];\n\n /**\n * Creates an instance of PaginationArgs.\n *\n * Contains defaults to avoid creating complex json objects all the time\n */\n constructor({\n page = 1,\n pageSize = 10,\n sort = [],\n filters = [],\n projectsOrNamespaces = [],\n }:\n // This would be neater as just Partial but we lose all jsdoc\n {\n /**\n * For definition see {@link PaginationArgs} `page`\n */\n page?: number | null,\n /**\n * For definition see {@link PaginationArgs} `pageSize`\n */\n pageSize?: number | null,\n /**\n * For definition see {@link PaginationArgs} `sort`\n */\n sort?: PaginationSort[],\n /**\n * Automatically wrap if not an array\n *\n * For definition see {@link PaginationArgs} `filters`\n */\n filters?: PaginationParamFilter | PaginationParamFilter[],\n /**\n * Automatically wrap if not an array\n *\n * For definition see {@link PaginationArgs} `projectsOrNamespaces`\n */\n projectsOrNamespaces?: PaginationParamProjectOrNamespace | PaginationParamProjectOrNamespace[],\n }) {\n this.page = page;\n this.pageSize = pageSize;\n this.sort = sort;\n if (filters) {\n this.filters = Array.isArray(filters) ? filters : [filters];\n } else {\n this.filters = [];\n }\n if (projectsOrNamespaces) {\n this.projectsOrNamespaces = Array.isArray(projectsOrNamespaces) ? projectsOrNamespaces : [projectsOrNamespaces];\n } else {\n this.projectsOrNamespaces = [];\n }\n }\n}\n\n/**\n * Wrapper around {@link PaginationArgs}\n *\n * Use this for making requests that utilise filtering backed by the new vai cache backed API\n */\nexport class FilterArgs extends PaginationArgs {\n /**\n * Creates an instance of PaginationArgs.\n *\n * Contains defaults to avoid creating complex json objects all the time\n */\n constructor({\n sort = [],\n filters = [],\n projectsOrNamespaces = [],\n }:\n // This would be neater as just Partial but we lose all jsdoc\n {\n /**\n * For definition see {@link PaginationArgs} `sort`\n */\n sort?: PaginationSort[],\n /**\n * Automatically wrap if not an array\n *\n * For definition see {@link PaginationArgs} `filters`\n */\n filters?: PaginationParamFilter | PaginationParamFilter[],\n /**\n * Automatically wrap if not an array\n *\n * For definition see {@link PaginationArgs} `projectsOrNamespaces`\n */\n projectsOrNamespaces?: PaginationParamProjectOrNamespace | PaginationParamProjectOrNamespace[],\n }) {\n super({\n page: null, pageSize: null, sort, filters, projectsOrNamespaces\n });\n }\n}\n\n/**\n * Overall result of a pagination request.\n *\n * Does not contain actual resources but overall stats (count, pages, etc)\n */\nexport interface StorePaginationResult {\n count: number,\n pages: number,\n /**\n * The last time the resource was updated. Used to assist list watching for changes\n */\n timestamp: number,\n}\n\nexport interface StorePaginationRequest {\n /**\n * The single namespace to filter results by (as part of url path, not pagination params)\n */\n namespace?: string,\n /**\n * The set of pagination args used to create the request\n */\n pagination: PaginationArgs\n}\n\n/**\n * Pagination settings\n * - what was requested\n * - what was received (minus actual resources)\n *\n * Object is persisted to store\n */\nexport interface StorePagination {\n /**\n * Collection of args that is used to make the request\n */\n request: StorePaginationRequest,\n\n /**\n * Information in the response outside of the actual resources returned\n */\n result: StorePaginationResult\n}\n","import { ActionFindPageArgs } from '@shell/types/store/dashboard-store.types';\nimport { PaginationParam, PaginationFilterField, PaginationParamProjectOrNamespace, PaginationParamFilter } from '@shell/types/store/pagination.types';\nimport { NAMESPACE_FILTER_ALL_SYSTEM, NAMESPACE_FILTER_ALL_USER, NAMESPACE_FILTER_P_FULL_PREFIX } from '@shell/utils/namespace-filter';\nimport Namespace from '@shell/models/namespace';\nimport { uniq } from '@shell/utils/array';\nimport {\n CONFIG_MAP, MANAGEMENT, NAMESPACE, NODE, POD\n} from '@shell/config/types';\nimport { Schema } from 'plugins/steve/schema';\n\nclass NamespaceProjectFilters {\n /**\n * User needs all resources.... except if there's some settings which should remove resources in specific circumstances\n */\n protected handlePrefAndSettingFilter(allNamespaces: Namespace[], showDynamicRancherNamespaces: boolean, productHidesSystemNamespaces: boolean): PaginationParamFilter[] {\n // These are AND'd together\n // Not ns 1 AND ns 2\n return allNamespaces.reduce((res, ns) => {\n // Links to ns.isObscure and covers things like `c-`, `user-`, etc (see OBSCURE_NAMESPACE_PREFIX)\n const hideObscure = showDynamicRancherNamespaces ? false : ns.isObscure;\n // Links to ns.isSystem and covers things like ns with system annotation, hardcoded list, etc\n const hideSystem = productHidesSystemNamespaces ? ns.isSystem : false;\n\n if (hideObscure || hideSystem) {\n res.push(PaginationParamFilter.createSingleField({\n field: 'metadata.namespace', value: ns.name, equals: false\n }));\n }\n\n return res;\n }, [] as PaginationParamFilter[]);\n }\n\n /**\n * User needs either all user resources... or all system\n *\n * System resources revolve around the namespace's isSystem property\n *\n * Users resources are those not in system namespaces\n */\n protected handleSystemOrUserFilter(allNamespaces: Namespace[], isAllSystem: boolean, isAllUser: boolean) {\n const allSystem = allNamespaces.filter((ns) => ns.isSystem);\n\n // > Neither of these use projectsOrNamespaces to avoid scenarios where the local cluster provides a namespace which has\n // > a matching project... which could lead to results in the user project resource being included in the system filter\n if (isAllSystem) {\n // return resources in system ns 1 OR in system ns 2 ...\n // &filter=metadata.namespace=system ns 1,metadata.namespace=system ns 2\n return [PaginationParamFilter.createMultipleFields(\n allSystem.map(\n (ns) => new PaginationFilterField({ field: 'metadata.namespace', value: ns.name })\n )\n )];\n } else { // if isAllUser\n // return resources not in system ns 1 AND not in system ns 2 ...\n // &filter=metadata.namespace!=system ns 1&filter=metadata.namespace!=system ns 2\n return allSystem.map((ns) => PaginationParamFilter.createSingleField({\n field: 'metadata.namespace', value: ns.name, equals: false\n }));\n }\n }\n\n /**\n * User needs resources in a set of projects or namespaces\n */\n protected handleSelectionFilter(neu: string[], isLocalCluster: boolean) {\n // User has one or more projects or namespaces. We can pass this straight through to projectsornamespaces\n\n // return resources in project 1 OR namespace 2\n // &projectsornamespaces=project 1,namespace 2\n const projectsOrNamespaces = [\n new PaginationParamProjectOrNamespace({ projectOrNamespace: neu })\n ];\n\n if (isLocalCluster) {\n // > As per `handleSystemOrUserFilter` above, we need to be careful of the local cluster where there's namespaces related to projects with the same id\n // > In this case\n // - We're including resources in the project and it's related namespace (via projectsornamespaces)\n // - We're also then excluding resources in the related namespace (via below `filter`)\n\n // Exclude resources NOT in projects namespace 1 AND not in projects namespace 2\n // &filter=metadata.namespace!=pn1&filter=metadata.namespace!=pn2\n return {\n projectsOrNamespaces,\n filters: neu\n .filter((selection) => selection.startsWith(NAMESPACE_FILTER_P_FULL_PREFIX))\n .map((projects) => PaginationParamFilter.createSingleField({\n field: 'metadata.namespace', value: projects.replace(NAMESPACE_FILTER_P_FULL_PREFIX, ''), equals: false\n }))\n };\n }\n\n return { projectsOrNamespaces, filters: [] };\n }\n}\n\n/**\n * Helper functions for steve pagination\n */\nclass StevePaginationUtils extends NamespaceProjectFilters {\n /**\n * Filtering with the vai cache supports specific fields\n * 1) Those listed here\n * 2) Those references in the schema's attributes.fields list (which is used by generic lists)\n */\n static VALID_FIELDS: { [type: string]: { field: string, startsWith?: boolean }[]} = {\n '': [// all types\n { field: 'metadata.name' },\n { field: 'metadata.namespace' },\n // { field: 'id' }, // Pending API support\n // { field: 'metadata.state.name' }, // Pending API support\n { field: 'metadata.creationTimestamp' },\n ],\n [NODE]: [\n { field: 'status.nodeInfo.kubeletVersion' },\n { field: 'status.nodeInfo.operatingSystem' },\n ],\n [POD]: [\n { field: 'spec.containers.image' },\n { field: 'spec.nodeName' },\n ],\n [MANAGEMENT.NODE]: [\n { field: 'status.nodeName' },\n ],\n [CONFIG_MAP]: [\n { field: 'metadata.labels[harvesterhci.io/cloud-init-template]' }\n ],\n [NAMESPACE]: [\n { field: 'metadata.labels[field.cattle.io/projectId]' }\n ]\n }\n\n private convertArrayPath(path: string): string {\n if (path.startsWith('metadata.fields.')) {\n return `metadata.fields[${ path.substring(16) }]`;\n }\n\n return path;\n }\n\n public createSortForPagination(sortByPath: string): string {\n return this.convertArrayPath(sortByPath);\n }\n\n /**\n * Given the selection of projects or namespaces come up with `filter` and `projectsornamespace` query params\n */\n public createParamsFromNsFilter({\n allNamespaces,\n selection,\n isAllNamespaces,\n isLocalCluster,\n showDynamicRancherNamespaces,\n productHidesSystemNamespaces,\n }: {\n allNamespaces: Namespace[],\n selection: string[],\n /**\n * There is no user provided filter\n */\n isAllNamespaces: boolean,\n /**\n * Weird things be happening if the target cluster is local / upstream. Uses this to check what cluster we're in\n */\n isLocalCluster: boolean,\n /**\n * Links to ns.isObscure and covers things like `c-`, `user-`, etc (see OBSCURE_NAMESPACE_PREFIX)\n */\n showDynamicRancherNamespaces: boolean,\n /**\n * Links to ns.isSystem and covers things like ns with system annotation, hardcoded list, etc\n */\n productHidesSystemNamespaces: boolean,\n }): {\n projectsOrNamespaces: PaginationParamProjectOrNamespace[],\n filters: PaginationParamFilter[]\n } {\n // Hold up, why are we doing yet another way to convert the user's project / namespace filter to a set of something?\n // - When doing this for local pagination `getActiveNamespaces` provides a full list of applicable namespaces.\n // Lists then filter resource locally using those namespaces\n // - Pagination cannot take this approach of 'gimme all resources in these namespaces' primarily for the 'Only User Namespaces' case\n // - User could have 2k namespaces. This would result in 2k+ namespaces added to the url (namespace=1,namespace=2,namespace=3, etc)\n // - Instead we do\n // - All but not given settings - Gimme resources NOT in system or obscure namespaces\n // - Only System Namespaces - Gimme resources in the system namespaces (which shouldn't be many namespaces)\n // - Only User Namespaces - Gimme resources NOT in system namespaces\n // - User selection - Gimme resources in specific Projects or Namespaces\n if (isAllNamespaces && (showDynamicRancherNamespaces && !productHidesSystemNamespaces)) {\n // No-op. Everything is returned\n return {\n projectsOrNamespaces: [],\n filters: []\n };\n }\n\n // used to return resources in / not in projects/namespaces (entries are checked in both types)\n // &projectsornamespaces=project 1,namespace 2\n let projectsOrNamespaces: PaginationParamProjectOrNamespace[] = [];\n // used to return resources in / not in namespaces\n // &filter=metadata.namespace=abc\n let filters: PaginationParamFilter[] = [];\n\n if (!showDynamicRancherNamespaces || productHidesSystemNamespaces) {\n // We need to hide dynamic namespaces ('c-', 'p-', etc) OR system namespaces\n filters = this.handlePrefAndSettingFilter(allNamespaces, showDynamicRancherNamespaces, productHidesSystemNamespaces);\n }\n\n const isAllSystem = selection[0] === NAMESPACE_FILTER_ALL_SYSTEM;\n const isAllUser = selection[0] === NAMESPACE_FILTER_ALL_USER;\n\n if (selection.length === 1 && (isAllSystem || isAllUser)) {\n // Filter by resources either in or not in system namespaces\n filters.push(...this.handleSystemOrUserFilter(allNamespaces, isAllSystem, isAllUser ));\n } else {\n // User has one or more projects or namespaces\n const res = this.handleSelectionFilter(selection, isLocalCluster);\n\n projectsOrNamespaces = res.projectsOrNamespaces;\n filters.push(...res.filters);\n }\n\n return {\n projectsOrNamespaces,\n filters\n };\n }\n\n public createParamsForPagination(schema: Schema, opt: ActionFindPageArgs): string | undefined {\n if (!opt.pagination) {\n return;\n }\n\n const params: string[] = [];\n const namespaceParam = this.convertPaginationParams(schema, opt.pagination.projectsOrNamespaces);\n\n if (namespaceParam) {\n params.push(namespaceParam);\n }\n\n if (opt.pagination.page) {\n params.push(`page=${ opt.pagination.page }`);\n }\n\n if (opt.pagination.pageSize) {\n params.push(`pagesize=${ opt.pagination.pageSize }`);\n }\n\n if (opt.pagination.sort?.length) {\n const validateFields = {\n checked: new Array(),\n invalid: new Array(),\n };\n\n const joined = opt.pagination.sort\n .map((s) => {\n this.validateField(validateFields, schema, s.field);\n\n return `${ s.asc ? '' : '-' }${ this.convertArrayPath(s.field) }`;\n })\n .join(',');\n\n params.push(`sort=${ joined }`);\n\n if (validateFields.invalid.length) {\n console.warn(`Pagination API does not support sorting '${ schema.id }' by the requested fields: ${ uniq(validateFields.invalid).join(', ') }`); // eslint-disable-line no-console\n }\n }\n\n if (opt.pagination.filters?.length) {\n const filters = this.convertPaginationParams(schema, opt.pagination.filters);\n\n if (filters) {\n params.push(filters);\n }\n }\n\n // Note - There is a `limit` property that is by default 100,000. This can be disabled by using `limit=-1`,\n // but we shouldn't be fetching any pages big enough to exceed the default\n\n return params.join('&');\n }\n\n /**\n * Check if the API supports filtering by this field\n */\n private validateField(state: { checked: string[], invalid: string[]}, schema: Schema, field?: string) {\n if (!field) {\n return; // no field, so not invalid\n }\n\n if (state.checked.includes(field)) {\n return; // already checked, exit early\n }\n\n state.checked.push(field);\n\n // First check in our hardcoded list of supported filters\n if ([\n StevePaginationUtils.VALID_FIELDS[''], // Global\n StevePaginationUtils.VALID_FIELDS[schema.id], // Type specific\n ].find((fields) => fields?.find((f) => {\n if (f.startsWith) {\n if (field.startsWith(f.field)) {\n return true;\n }\n } else {\n return field === f.field;\n }\n }))) {\n return;\n }\n\n // Then check in schema (the api automatically supports these)\n if (!!schema?.attributes.columns.find(\n // This isn't the most performant, but the string is tiny\n (at) => at.field.replace('$.', '').replace('[', '.').replace(']', '') === field\n )) {\n return;\n }\n\n state.invalid.push(field);\n }\n\n /**\n * Convert our {@link PaginationParam} definition of params to a set of url params\n */\n private convertPaginationParams(schema: Schema, filters: PaginationParam[] = []): string {\n const validateFields = {\n checked: new Array(),\n invalid: new Array(),\n };\n const filterStrings = filters\n .filter((filter) => !!filter.fields.length)\n .map((filter) => {\n const joined = filter.fields\n .map((field) => {\n if (field.field) {\n // Check if the API supports filtering by this field\n this.validateField(validateFields, schema, field.field);\n\n const exactPartial = field.exact ? `'${ field.value }'` : field.value;\n\n return `${ this.convertArrayPath(field.field) }${ field.equals ? '=' : '!=' }${ exactPartial }`;\n }\n\n return field.value;\n })\n .join(','); // This means OR\n\n return `${ filter.param }${ filter.equals ? '=' : '!=' }${ joined }`;\n });\n const unique = filterStrings.reduce((res, s) => {\n res[s] = true;\n\n return res;\n }, { } as {[filterString: string] : boolean });\n\n const res = Object.keys(unique).join('&'); // This means AND\n\n if (validateFields.invalid.length) {\n console.warn(`Pagination API does not support filtering '${ schema.id }' by the requested fields: ${ uniq(validateFields.invalid).join(', ') }`); // eslint-disable-line no-console\n }\n\n return res;\n }\n}\n\nexport default new StevePaginationUtils();\n","import { NAMESPACE_FILTER_NAMESPACED_YES, NAMESPACE_FILTER_NAMESPACED_NO, NAMESPACE_FILTER_ALL } from '@shell/utils/namespace-filter';\nimport { NAMESPACE } from '@shell/config/types';\nimport { ALL_NAMESPACES } from '@shell/store/prefs';\nimport { mapGetters } from 'vuex';\nimport { ResourceListComponentName } from '../components/ResourceList/resource-list.config';\nimport paginationUtils from '@shell/utils/pagination-utils';\nimport debounce from 'lodash/debounce';\nimport { PaginationParamFilter, PaginationFilterField, PaginationArgs } from '@shell/types/store/pagination.types';\nimport stevePaginationUtils from '@shell/plugins/steve/steve-pagination-utils';\n\n/**\n * Companion mixin used with `resource-fetch` for `ResourceList` to determine if the user needs to filter the list by a single namespace\n */\nexport default {\n\n data() {\n return {\n forceUpdateLiveAndDelayed: 0,\n /**\n * This of type `OptPagination`\n */\n pPagination: null,\n // Avoid scenarios where namespace is updated just before other pagination changes come in\n debouncedSetPagination: debounce(this.setPagination, 50),\n\n /**\n * Apply these additional filters given the ns / project header selection\n */\n requestFilters: {\n filters: [],\n projectsOrNamespaces: [],\n },\n };\n },\n\n methods: {\n /**\n * @param {PaginationArgs} pagination\n */\n setPagination(pagination) {\n if (pagination) {\n this.pPagination = pagination;\n }\n },\n\n paginationChanged(event) {\n const searchFilters = event.filter.searchQuery ? event.filter.searchFields.map((field) => new PaginationFilterField({\n field,\n value: event.filter.searchQuery,\n exact: false,\n })) : [];\n\n const pagination = new PaginationArgs({\n page: event.page,\n pageSize: event.perPage,\n sort: event.sort?.map((field) => ({\n field,\n asc: !event.descending\n })),\n projectsOrNamespaces: this.requestFilters.projectsOrNamespaces,\n filters: [\n new PaginationParamFilter({ fields: searchFilters }),\n ...this.requestFilters.filters, // Apply the additional filters. these aren't from the user but from ns filtering\n ]\n });\n\n this.debouncedSetPagination(pagination);\n },\n\n namespaceFilterChanged(neu) {\n if (!this.canPaginate || !this.schema?.attributes?.namespaced) {\n return;\n }\n\n const {\n projectsOrNamespaces,\n filters\n } = stevePaginationUtils.createParamsFromNsFilter({\n allNamespaces: this.$store.getters[`${ this.currentProduct?.inStore }/all`](NAMESPACE),\n selection: neu,\n isAllNamespaces: this.isAllNamespaces,\n isLocalCluster: this.$store.getters['currentCluster'].isLocal,\n showDynamicRancherNamespaces: this.showDynamicRancherNamespaces,\n productHidesSystemNamespaces: this.productHidesSystemNamespaces,\n });\n\n this.requestFilters.filters = filters;\n this.requestFilters.projectsOrNamespaces = projectsOrNamespaces;\n\n // Kick off a change\n if (this.pPagination) {\n this.debouncedSetPagination({ ...this.pPagination });\n }\n },\n\n /**\n * @param {PaginationArgs} neu\n * @param {PaginationArgs} old\n */\n paginationEqual(neu, old) {\n if (!neu.page) {\n // Not valid, count as not equal\n return false;\n }\n\n if (paginationUtils.paginationEqual(neu, old)) {\n return true;\n }\n\n return false;\n }\n },\n\n computed: {\n ...mapGetters(['currentProduct', 'isAllNamespaces']),\n\n /**\n * Why is this a specific getter and not not in mapGetters?\n *\n * Adding it to mapGetters means the kubewarden unit tests fail as they don't mock it....\n */\n namespaceFilters() {\n return this.$store.getters['namespaceFilters'];\n },\n\n /**\n * Does the user need to update the filter to supply valid options?\n */\n paginationNsFilterRequired() {\n return this.canPaginate && !this.__validPaginationNsFilter;\n },\n\n /**\n * Check if the Project/Namespace filter from the header contains a valid ns / project filter\n */\n __validPaginationNsFilter() {\n return paginationUtils.validateNsProjectFilters(this.namespaceFilters);\n },\n\n /**\n * ResourceList imports resource-fetch --> this mixin\n * When there is no custom list this is fine (ResourceList with mixins --> ResourceTable)\n * When there is a custom list there are two instances of this mixin (ResourceList with mixins --> CustomList with mixins --> ResourceTable)\n * - In this scenario, reduce churn by exiting earlier if mixin is from parent ResourceList and leave work for CustomList mixins\n */\n isResourceList() {\n return !!this.hasListComponent;\n },\n\n /**\n * Is Pagination supported and has the table supplied pagination settings from the table?\n */\n pagination() {\n if (this.isResourceList) {\n return;\n }\n\n return this.canPaginate ? this.pPagination : '';\n },\n\n /**\n * Should this list be paginated via API?\n */\n canPaginate() {\n if (this.isResourceList) {\n return;\n }\n\n return this.resource && this.$store.getters[`${ this.currentProduct?.inStore }/paginationEnabled`]?.(this.resource.id || this.resource);\n },\n\n paginationResult() {\n if (this.isResourceList || !this.canPaginate) {\n return;\n }\n\n return this.havePaginated?.result;\n },\n\n havePaginated() {\n if (this.isResourceList) {\n return;\n }\n\n return this.$store.getters[`${ this.currentProduct?.inStore }/havePage`](this.resource);\n },\n\n /**\n * Links to ns.isSystem and covers things like ns with system annotation, hardcoded list, etc\n */\n productHidesSystemNamespaces() {\n return this.currentProduct?.hideSystemResources;\n },\n\n /**\n * Links to ns.isObscure and covers things like `c-`, `user-`, etc (see OBSCURE_NAMESPACE_PREFIX)\n */\n showDynamicRancherNamespaces() {\n return this.$store.getters['prefs/get'](ALL_NAMESPACES);\n }\n },\n\n watch: {\n /**\n * Monitor the rows to ensure deleting the last entry in a server-side paginated page doesn't\n * result in an empty page\n */\n rows(neu) {\n if (!this.canPaginate || !this.pagination || this.isResourceList) {\n return;\n }\n\n if (this.pagination.page > 1 && neu.length === 0) {\n this.setPagination({\n ...this.pagination,\n page: this.pagination.page - 1\n });\n }\n },\n\n namespaceFilters: {\n immediate: true,\n async handler(neu, old) {\n if (!this.canPaginate || !this.schema?.attributes?.namespaced) {\n return;\n }\n\n if (this.isResourceList) {\n return;\n }\n\n // Transitioning from no ns filters to no ns filters should be avoided\n const neuEmpty = !neu || neu.length === 0 || neu[0] === NAMESPACE_FILTER_ALL;\n const oldEmpty = !old || old.length === 0 || old[0] === NAMESPACE_FILTER_ALL;\n\n if (neuEmpty && oldEmpty) {\n const allButHidingSystemResources = this.isAllNamespaces && (!this.showDynamicRancherNamespaces || this.productHidesSystemNamespaces);\n\n // If we're showing all... and not hiding system or obscure ns then don't go through filter process\n if (!allButHidingSystemResources) {\n return;\n }\n }\n\n // Transitioning to a ns filter that doesn't affect the list should be avoided\n if (neu.length === 1) {\n if ([NAMESPACE_FILTER_NAMESPACED_YES, NAMESPACE_FILTER_NAMESPACED_NO].includes(neu[0])) {\n return;\n }\n }\n\n this.namespaceFilterChanged(neu);\n }\n },\n\n /**\n * When a pagination is required and the user changes page / sort / filter, kick off a new set of API requests\n *\n * @param {StorePaginationResult} neu\n * @param {StorePaginationResult} old\n */\n async pagination(neu, old) {\n if (!this.canPaginate) {\n return;\n }\n\n // ResourceList has two modes\n // 1) ResourceList component handles API request to fetch resources\n // 2) Custom list component handles API request to fetch resources\n //\n // This covers case 2, so ignore case 1\n if (this.isResourceList) {\n return;\n }\n\n if (neu && this.$options.name !== ResourceListComponentName && !!this.$fetch && !this.paginationEqual(neu, old)) {\n await this.$fetch(false);\n // Ensure any live/delayed columns get updated\n this.forceUpdateLiveAndDelayed = new Date().getTime();\n }\n },\n\n /**\n * If the pagination result has changed fetch secondary resources\n *\n * Lists should implement fetchPageSecondaryResources to fetch them\n *\n * @param {StorePaginationResult} neu\n * @param {StorePaginationResult} old\n */\n async paginationResult(neu, old) {\n if (!this.fetchPageSecondaryResources || !neu ) { // || neu.timestamp === old?.timestamp\n return;\n }\n\n if (neu.timestamp === old?.timestamp) {\n // This occurs when the user returns to the page... and pagination hasn't actually changed\n return;\n }\n\n await this.fetchPageSecondaryResources();\n }\n },\n};\n","import Vue from 'vue';\nimport { mapGetters } from 'vuex';\nimport { COUNT, MANAGEMENT } from '@shell/config/types';\nimport { SETTING, DEFAULT_PERF_SETTING } from '@shell/config/settings';\nimport ResourceFetchNamespaced from '@shell/mixins/resource-fetch-namespaced';\nimport ResourceFetchApiPagination from '@shell/mixins/resource-fetch-api-pagination';\n\n// Number of pages to fetch when loading incrementally\nconst PAGES = 4;\n\nexport default {\n\n mixins: [\n ResourceFetchNamespaced,\n ResourceFetchApiPagination\n ],\n\n data() {\n // fetching the settings related to manual refresh from global settings\n const perfSetting = this.$store.getters['management/byId'](MANAGEMENT.SETTING, SETTING.UI_PERFORMANCE);\n let perfConfig = {};\n\n if (perfSetting && perfSetting.value) {\n try {\n perfConfig = JSON.parse(perfSetting.value);\n } catch (e) {\n console.warn('ui-performance setting contains invalid data'); // eslint-disable-line no-console\n }\n } else {\n perfConfig = DEFAULT_PERF_SETTING;\n }\n\n return {\n perfConfig,\n init: false,\n multipleResources: [],\n loadResources: [this.resource],\n // manual refresh vars\n hasManualRefresh: false,\n watch: true,\n isTooManyItemsToAutoUpdate: false,\n force: false,\n // incremental loading vars\n incremental: false,\n fetchedResourceType: [],\n paginating: null,\n };\n },\n\n beforeDestroy() {\n // make sure this only runs once, for the initialized instance\n if (this.init) {\n // clear up the store to make sure we aren't storing anything that might interfere with the next rendered list view\n this.$store.dispatch('resource-fetch/clearData');\n\n this.fetchedResourceType.forEach((item) => {\n this.$store.dispatch(`${ item.currStore }/incrementLoadCounter`, item.type);\n });\n }\n },\n\n computed: {\n ...mapGetters({ refreshFlag: 'resource-fetch/refreshFlag' }),\n rows() {\n const currResource = this.fetchedResourceType.find((item) => item.type === this.resource);\n\n if (currResource) {\n return this.$store.getters[`${ currResource.currStore }/all`](this.resource);\n } else {\n return [];\n }\n },\n loading() {\n if (this.canPaginate) {\n return this.paginating;\n }\n\n return this.rows.length ? false : this.$fetchState.pending;\n },\n },\n\n watch: {\n async refreshFlag(neu) {\n // this is where the data assignment will trigger the update of the list view...\n if (this.init && neu) {\n await this.$fetch();\n if (this.canPaginate && this.fetchPageSecondaryResources) {\n this.fetchPageSecondaryResources(true);\n }\n }\n }\n },\n\n methods: {\n // this defines all the flags needed for the mechanism\n // to work. They should be defined based on the main list view\n // resource that is to be displayed. The secondary resources\n // fetched should follow what was defined (if it is manual and/or incremental)\n $initializeFetchData(type, multipleResources = [], storeType) {\n if (!this.init) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n this.__gatherResourceFetchData(type, multipleResources, currStore);\n\n // make sure after init that, if we have a manual refresh, we always set the force = true\n if (!this.watch) {\n this.force = true;\n }\n\n if (this.isTooManyItemsToAutoUpdate) {\n this.hasManualRefresh = true;\n }\n }\n },\n // data fetching for the mechanism\n $fetchType(type, multipleResources = [], storeType) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n this.$initializeFetchData(type, multipleResources, currStore);\n\n if (!this.fetchedResourceType.find((item) => item.type === type)) {\n this.fetchedResourceType.push({\n type,\n currStore\n });\n }\n\n const schema = this.$store.getters[`${ currStore }/schemaFor`](type);\n\n if (this.canPaginate) {\n if (!this.pagination) {\n // This is the initial fetchType made when resource lists are created...\n // when pagination is enabled we want to wait for the correct set of initial pagination settings to make the call\n return;\n }\n const opt = {\n hasManualRefresh: this.hasManualRefresh,\n pagination: { ...this.pagination },\n force: this.paginating !== null // Fix for manual refresh (before ripped out).\n };\n\n Vue.set(this, 'paginating', true);\n\n const that = this;\n\n return this.$store.dispatch(`${ currStore }/findPage`, {\n type,\n opt\n })\n .finally(() => Vue.set(that, 'paginating', false));\n }\n\n let incremental = 0;\n\n if (this.incremental) {\n const resourceCount = this.__getCountForResources([type], this.namespaceFilter, currStore);\n\n incremental = Math.ceil(resourceCount / PAGES);\n }\n\n const opt = {\n incremental,\n watch: this.watch,\n force: this.force,\n hasManualRefresh: this.hasManualRefresh\n };\n\n if (schema?.attributes?.namespaced) { // Is this specific resource namespaced (could be primary or secondary resource)?\n opt.namespaced = this.namespaceFilter; // namespaceFilter will only be populated if applicable for primary resource\n }\n\n return this.$store.dispatch(`${ currStore }/findAll`, {\n type,\n opt\n });\n },\n\n __getCountForResources(resourceNames, namespace, storeType) {\n const currStore = storeType || this.$store.getters['currentStore']();\n\n return resourceNames.reduce((res, type) => res + this.__getCountForResource(type, namespace, currStore), 0);\n },\n\n __getCountForResource(resourceName, namespace, storeType) {\n const resourceCounts = this.$store.getters[`${ storeType }/all`](COUNT)[0]?.counts[`${ resourceName }`]; // NB `rancher` store behaves differently, lacks counts but has resource\n const resourceCount = namespace && resourceCounts?.namespaces ? resourceCounts?.namespaces[namespace]?.count : resourceCounts?.summary?.count;\n\n return resourceCount || 0;\n },\n\n __gatherResourceFetchData(resourceName, multipleResources, currStore) {\n // flag to prevent a first data update being triggered from the requestData watcher\n this.init = true;\n\n // manual refresh settings config\n const manualDataRefreshEnabled = this.perfConfig?.manualRefresh?.enabled;\n const manualDataRefreshThreshold = parseInt(this.perfConfig?.manualRefresh?.threshold || '0', 10);\n\n // incremental loading settings config\n const incrementalLoadingEnabled = this.perfConfig?.incrementalLoading?.enabled;\n const incrementalLoadingThreshold = parseInt(this.perfConfig?.incrementalLoading?.threshold || '0', 10);\n\n // other vars\n this.multipleResources = multipleResources;\n let resourceCount = 0;\n\n // manual refresh vars\n let watch = true;\n let isTooManyItemsToAutoUpdate = false;\n\n // incremental loading vars\n let incremental = false;\n\n // get resource counts\n const resourcesForCount = this.multipleResources.length ? this.multipleResources : [resourceName];\n\n resourceCount = this.__getCountForResources(resourcesForCount, this.namespaceFilter, currStore);\n\n // manual refresh check\n if (manualDataRefreshEnabled && resourceCount >= manualDataRefreshThreshold) {\n watch = false;\n isTooManyItemsToAutoUpdate = true;\n } else if (this.canPaginate) {\n isTooManyItemsToAutoUpdate = true;\n }\n\n // incremental loading check\n incremental = incrementalLoadingEnabled && incrementalLoadingThreshold > 0 && resourceCount >= incrementalLoadingThreshold;\n\n // pass on the flag that controls the appearance of the manual refresh button on the sortable table\n this.$store.dispatch('resource-fetch/updateIsTooManyItems', isTooManyItemsToAutoUpdate);\n\n // set vars on mixin to be used on $fetchType\n this.watch = watch;\n this.isTooManyItemsToAutoUpdate = isTooManyItemsToAutoUpdate;\n this.incremental = incremental;\n },\n },\n};\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nconst handlers = require('./handlers')\nconst states = require('./states').states\n\n/**\n * The Parser is a state machine that converts tokens from the {@link Lexer}\n * into an Abstract Syntax Tree (AST), capable of being evaluated in any\n * context by the {@link Evaluator}. The Parser expects that all tokens\n * provided to it are legal and typed properly according to the grammar, but\n * accepts that the tokens may still be in an invalid order or in some other\n * unparsable configuration that requires it to throw an Error.\n * @param {{}} grammar The grammar map to use to parse Jexl strings\n * @param {string} [prefix] A string prefix to prepend to the expression string\n * for error messaging purposes. This is useful for when a new Parser is\n * instantiated to parse an subexpression, as the parent Parser's\n * expression string thus far can be passed for a more user-friendly\n * error message.\n * @param {{}} [stopMap] A mapping of token types to any truthy value. When the\n * token type is encountered, the parser will return the mapped value\n * instead of boolean false.\n */\nclass Parser {\n constructor(grammar, prefix, stopMap) {\n this._grammar = grammar\n this._state = 'expectOperand'\n this._tree = null\n this._exprStr = prefix || ''\n this._relative = false\n this._stopMap = stopMap || {}\n }\n\n /**\n * Processes a new token into the AST and manages the transitions of the state\n * machine.\n * @param {{type: }} token A token object, as provided by the\n * {@link Lexer#tokenize} function.\n * @throws {Error} if a token is added when the Parser has been marked as\n * complete by {@link #complete}, or if an unexpected token type is added.\n * @returns {boolean|*} the stopState value if this parser encountered a token\n * in the stopState mapb false if tokens can continue.\n */\n addToken(token) {\n if (this._state === 'complete') {\n throw new Error('Cannot add a new token to a completed Parser')\n }\n const state = states[this._state]\n const startExpr = this._exprStr\n this._exprStr += token.raw\n if (state.subHandler) {\n if (!this._subParser) {\n this._startSubExpression(startExpr)\n }\n const stopState = this._subParser.addToken(token)\n if (stopState) {\n this._endSubExpression()\n if (this._parentStop) return stopState\n this._state = stopState\n }\n } else if (state.tokenTypes[token.type]) {\n const typeOpts = state.tokenTypes[token.type]\n let handleFunc = handlers[token.type]\n if (typeOpts.handler) {\n handleFunc = typeOpts.handler\n }\n if (handleFunc) {\n handleFunc.call(this, token)\n }\n if (typeOpts.toState) {\n this._state = typeOpts.toState\n }\n } else if (this._stopMap[token.type]) {\n return this._stopMap[token.type]\n } else {\n throw new Error(\n `Token ${token.raw} (${token.type}) unexpected in expression: ${this._exprStr}`\n )\n }\n return false\n }\n\n /**\n * Processes an array of tokens iteratively through the {@link #addToken}\n * function.\n * @param {Array<{type: }>} tokens An array of tokens, as provided by\n * the {@link Lexer#tokenize} function.\n */\n addTokens(tokens) {\n tokens.forEach(this.addToken, this)\n }\n\n /**\n * Marks this Parser instance as completed and retrieves the full AST.\n * @returns {{}|null} a full expression tree, ready for evaluation by the\n * {@link Evaluator#eval} function, or null if no tokens were passed to\n * the parser before complete was called\n * @throws {Error} if the parser is not in a state where it's legal to end\n * the expression, indicating that the expression is incomplete\n */\n complete() {\n if (this._cursor && !states[this._state].completable) {\n throw new Error(`Unexpected end of expression: ${this._exprStr}`)\n }\n if (this._subParser) {\n this._endSubExpression()\n }\n this._state = 'complete'\n return this._cursor ? this._tree : null\n }\n\n /**\n * Indicates whether the expression tree contains a relative path identifier.\n * @returns {boolean} true if a relative identifier exists false otherwise.\n */\n isRelative() {\n return this._relative\n }\n\n /**\n * Ends a subexpression by completing the subParser and passing its result\n * to the subHandler configured in the current state.\n * @private\n */\n _endSubExpression() {\n states[this._state].subHandler.call(this, this._subParser.complete())\n this._subParser = null\n }\n\n /**\n * Places a new tree node at the current position of the cursor (to the 'right'\n * property) and then advances the cursor to the new node. This function also\n * handles setting the parent of the new node.\n * @param {{type: }} node A node to be added to the AST\n * @private\n */\n _placeAtCursor(node) {\n if (!this._cursor) {\n this._tree = node\n } else {\n this._cursor.right = node\n this._setParent(node, this._cursor)\n }\n this._cursor = node\n }\n\n /**\n * Places a tree node before the current position of the cursor, replacing\n * the node that the cursor currently points to. This should only be called in\n * cases where the cursor is known to exist, and the provided node already\n * contains a pointer to what's at the cursor currently.\n * @param {{type: }} node A node to be added to the AST\n * @private\n */\n _placeBeforeCursor(node) {\n this._cursor = this._cursor._parent\n this._placeAtCursor(node)\n }\n\n /**\n * Sets the parent of a node by creating a non-enumerable _parent property\n * that points to the supplied parent argument.\n * @param {{type: }} node A node of the AST on which to set a new\n * parent\n * @param {{type: }} parent An existing node of the AST to serve as the\n * parent of the new node\n * @private\n */\n _setParent(node, parent) {\n Object.defineProperty(node, '_parent', {\n value: parent,\n writable: true\n })\n }\n\n /**\n * Prepares the Parser to accept a subexpression by (re)instantiating the\n * subParser.\n * @param {string} [exprStr] The expression string to prefix to the new Parser\n * @private\n */\n _startSubExpression(exprStr) {\n let endStates = states[this._state].endStates\n if (!endStates) {\n this._parentStop = true\n endStates = this._stopMap\n }\n this._subParser = new Parser(this._grammar, exprStr, endStates)\n }\n}\n\nmodule.exports = Parser\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".masthead[data-v-36e18737]{padding-bottom:10px;border-bottom:1px solid var(--border);margin-bottom:10px}HEADER[data-v-36e18737]{margin:0}HEADER .title[data-v-36e18737]{overflow:hidden}.primaryheader[data-v-36e18737],.primaryheader h1[data-v-36e18737]{display:flex;flex-direction:row;align-items:center}.primaryheader h1[data-v-36e18737]{margin:0;overflow:hidden}.primaryheader h1 .mastehead-resource-title[data-v-36e18737]{padding:0 8px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.subheader[data-v-36e18737]{display:flex;flex-direction:row;color:var(--input-label)}.subheader>*[data-v-36e18737]{margin:5px 20px 5px 0}.subheader .live-data[data-v-36e18737]{color:var(--body-text)}.state-banner[data-v-36e18737]{margin:3px 0 0 0}.masthead-state[data-v-36e18737]{font-size:medium}.masthead-istio .icon[data-v-36e18737]{vertical-align:middle;color:var(--primary)}.left-right-split[data-v-36e18737]{display:grid;align-items:center}.left-right-split .left-half[data-v-36e18737]{grid-column:1}.left-right-split .right-half[data-v-36e18737]{grid-column:2}div.actions-container>div.actions[data-v-36e18737]{display:flex;flex-direction:row;justify-content:flex-end}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".actions[data-v-3eef3a84]{text-align:right}.machine-name[data-v-3eef3a84]{font-weight:600}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MatchExpressions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MatchExpressions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./MatchExpressions.vue?vue&type=template&id=3512fedb&scoped=true&\"\nimport script from \"./MatchExpressions.vue?vue&type=script&lang=js&\"\nexport * from \"./MatchExpressions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MatchExpressions.vue?vue&type=style&index=0&id=3512fedb&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3512fedb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"info-box\",class:{'stepped': !!_vm.step}},[(_vm.step)?_c('div',{staticClass:\"step-number mb-10\"},[_c('h2',[_vm._v(\"Step \"+_vm._s(_vm.step))])]):_vm._e(),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./InfoBox.vue?vue&type=template&id=1c5683df&scoped=true&\"\nimport script from \"./InfoBox.vue?vue&type=script&lang=js&\"\nexport * from \"./InfoBox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./InfoBox.vue?vue&type=style&index=0&id=1c5683df&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c5683df\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7d09310e&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","module.exports = __webpack_public_path__ + \"img/harvester.765f68bd.png\";","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoBox.vue?vue&type=style&index=0&id=1c5683df&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".yaml-editor[data-v-93239522]{display:flex;flex-direction:column}.yaml-editor .fill[data-v-93239522]{flex:1}.yaml-editor[data-v-93239522] .code-mirror{position:relative}.yaml-editor[data-v-93239522] .code-mirror .CodeMirror,.yaml-editor[data-v-93239522] .code-mirror .CodeMirror .CodeMirror-gutters{background-color:var(--yaml-editor-bg)}.yaml-editor .diff-mode[data-v-93239522]{background-color:var(--diff-header-bg);padding:5px 5px;border-bottom-right-radius:0;border-bottom-left-radius:0}.yaml-editor .d2h-file-wrapper[data-v-93239522]{border-top-right-radius:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tab.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Tab.vue?vue&type=template&id=667bdd63&scoped=true&\"\nimport script from \"./Tab.vue?vue&type=script&lang=js&\"\nexport * from \"./Tab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Tab.vue?vue&type=style&index=0&id=667bdd63&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"667bdd63\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./LabeledInput.vue?vue&type=style&index=0&id=29adcfe2&prod&scoped=true&lang=scss&\"","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.globalrole.vue?vue&type=style&index=0&id=effd72b0&prod&lang=scss&scoped=true&\"","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","export * from \"-!../../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Authority.vue?vue&type=style&index=0&id=5fa70040&prod&lang=scss&scoped=true&\"","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".container .title[data-v-37141aab]{display:flex;flex-wrap:wrap;flex-direction:column;justify-content:center;align-items:center;text-align:center;margin:100px 0}.container .description[data-v-37141aab]{line-height:20px}.container .chart-route[data-v-37141aab]{position:relative}.container .airgap-align[data-v-37141aab]{justify-content:start}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col span-12\"},[_c('h3',{attrs:{\"data-testid\":\"ps-config-source-authorities-title\"}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.sourceAuthorities.title'))+\" \")]),_vm._l((_vm.rows),function(row,index){return [_c('Authority',{key:index,ref:\"authority\",refInFor:true,attrs:{\"mode\":_vm.mode},on:{\"update\":function($event){return _vm.updateAuthority($event, index)}},scopedSlots:_vm._u([{key:\"remove\",fn:function(){return [_c('button',{staticClass:\"btn role-link remove btn-sm\",attrs:{\"data-testid\":`ps-config-authority-remove-button-${ index }`,\"type\":\"button\",\"disabled\":_vm.isView},on:{\"click\":function($event){return _vm.removeRegistry(index)}}},[_c('i',{staticClass:\"icon icon-2x icon-x\"})])]},proxy:true}],null,true),model:{value:(_vm.rows[index]),callback:function ($$v) {_vm.$set(_vm.rows, index, $$v)},expression:\"rows[index]\"}})]}),_c('button',{staticClass:\"btn role-tertiary add\",attrs:{\"data-testid\":\"ps-config-source-authorities-add-button\",\"type\":\"button\",\"disabled\":_vm.isView},on:{\"click\":function($event){return _vm.addRegistry()}}},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.sourceAuthorities.add'))+\" \")])],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SourceAuthorities.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SourceAuthorities.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SourceAuthorities.vue?vue&type=template&id=189c4c6b&scoped=true&\"\nimport script from \"./SourceAuthorities.vue?vue&type=script&lang=js&\"\nexport * from \"./SourceAuthorities.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SourceAuthorities.vue?vue&type=style&index=0&id=189c4c6b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"189c4c6b\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./LabeledSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./LabeledSelect.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LabeledSelect.vue?vue&type=template&id=352c1bcf&scoped=true&\"\nimport script from \"./LabeledSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./LabeledSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LabeledSelect.vue?vue&type=style&index=0&id=352c1bcf&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"352c1bcf\",\n null\n \n)\n\nexport default component.exports","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Select.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Select.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Select.vue?vue&type=template&id=6c2022f0&scoped=true&\"\nimport script from \"./Select.vue?vue&type=script&lang=js&\"\nexport * from \"./Select.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Select.vue?vue&type=style&index=0&id=6c2022f0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c2022f0\",\n null\n \n)\n\nexport default component.exports","/**\n * Sets the width of a DOM element. Adapted from [youmightnotneedjquery.com](https://youmightnotneedjquery.com/#set_width)\n * @param {Element} el - The target DOM element\n * @param {function | string | number} val - The desired width represented as a Number\n */\nexport function setWidth(el, val) {\n if (!el) {\n return;\n }\n\n if (typeof val === 'function') {\n val = val();\n }\n\n if (typeof val === 'string') {\n el.style.width = val;\n\n return;\n }\n\n el.style.width = `${ val }px`;\n}\n\n/**\n * Gets the width of a DOM element. Adapted from [youmightnotneedjquery.com](https://youmightnotneedjquery.com/#get_width)\n * @param {Element} el - The target DOM element\n * @returns Number representing the width for the provided element\n */\nexport function getWidth(el) {\n if (!el || !el.length) {\n return;\n }\n\n if (el.length) {\n return parseFloat(getComputedStyle(el[0]).width.replace('px', ''));\n } else {\n return parseFloat(getComputedStyle(el).width.replace('px', ''));\n }\n}\n","import Vue from 'vue';\nimport { _EDIT, _VIEW } from '@shell/config/query-params';\nimport { getWidth, setWidth } from '@shell/utils/width';\n\ninterface LabeledFormElement {\n raised: boolean;\n focused: boolean;\n blurred: number | null;\n}\n\nexport default Vue.extend({\n inheritAttrs: false,\n\n props: {\n mode: {\n type: String,\n default: _EDIT,\n },\n\n label: {\n type: String,\n default: null\n },\n\n labelKey: {\n type: String,\n default: null\n },\n\n placeholderKey: {\n type: String,\n default: null\n },\n\n tooltip: {\n type: [String, Object],\n default: null\n },\n\n hoverTooltip: {\n type: Boolean,\n default: true,\n },\n\n tooltipKey: {\n type: String,\n default: null\n },\n\n required: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n\n placeholder: {\n type: [String, Number],\n default: ''\n },\n\n value: {\n type: [String, Number, Object],\n default: ''\n },\n\n options: {\n default: null,\n type: Array\n },\n\n searchable: {\n default: false,\n type: Boolean\n },\n\n filterable: {\n default: true,\n type: Boolean\n },\n\n rules: {\n default: () => [],\n type: Array,\n // we only want functions in the rules array\n validator: (rules: any) => rules.every((rule: any) => ['function'].includes(typeof rule))\n },\n\n requireDirty: {\n default: true,\n type: Boolean\n }\n },\n\n data(): LabeledFormElement {\n return {\n raised: this.mode === _VIEW || !!`${ this.value }`,\n focused: false,\n blurred: null,\n };\n },\n\n computed: {\n requiredField(): boolean {\n // using \"any\" for a type on \"rule\" here is dirty but the use of the optional chaining operator makes it safe for what we're doing here.\n return (this.required || this.rules.some((rule: any): boolean => rule?.name === 'required'));\n },\n empty(): boolean {\n return !!`${ this.value }`;\n },\n\n isView(): boolean {\n return this.mode === _VIEW;\n },\n\n isDisabled(): boolean {\n return this.disabled || this.isView;\n },\n\n isSearchable(): boolean {\n const { searchable, canPaginate } = this as any; // This will be resolved when we migrate from mixin\n\n if (canPaginate) {\n return true;\n }\n const options = ( this.options || [] );\n\n if (searchable || options.length >= 10) {\n return true;\n }\n\n return false;\n },\n\n isFilterable(): boolean {\n const { filterable, canPaginate } = this as any; // This will be resolved when we migrate from mixin\n\n if (canPaginate) {\n return false;\n }\n\n return filterable;\n },\n\n validationMessage(): string | undefined {\n // we want to grab the required rule passed in if we can but if it's not there then we can just grab it from the formRulesGenerator\n const requiredRule = this.rules.find((rule: any) => rule?.name === 'required') as Function;\n const ruleMessages = [];\n const value = this?.value;\n\n if (requiredRule && this.blurred && !this.focused) {\n const message = requiredRule(value);\n\n if (!!message) {\n return message;\n }\n }\n\n for (const rule of this.rules as Function[]) {\n const message = rule(value);\n\n if (!!message && rule.name !== 'required') { // we're catching 'required' above so we can ignore it here\n ruleMessages.push(message);\n }\n }\n if (ruleMessages.length > 0 && (this.blurred || this.focused || !this.requireDirty)) {\n return ruleMessages.join(', ');\n } else {\n return undefined;\n }\n }\n },\n\n methods: {\n resizeHandler() {\n // since the DD is positioned there is no way to 'inherit' the size of the input, this calcs the size of the parent and set the dd width if it is smaller. If not let it grow with the regular styles\n this.$nextTick(() => {\n const DD = (this.$refs.select as HTMLElement).querySelector('ul.vs__dropdown-menu');\n\n const selectWidth = getWidth(this.$refs.select as Element) || 0;\n const dropWidth = getWidth(DD as Element) || 0;\n\n if (dropWidth < selectWidth) {\n setWidth(DD as Element, selectWidth);\n }\n });\n },\n onFocus() {\n this.$emit('on-focus');\n\n return this.onFocusLabeled();\n },\n\n onFocusLabeled() {\n this.raised = true;\n this.focused = true;\n },\n\n onBlur() {\n this.$emit('on-blur');\n\n return this.onBlurLabeled();\n },\n\n onBlurLabeled() {\n this.focused = false;\n\n if ( !this.value ) {\n this.raised = false;\n }\n\n this.blurred = Date.now();\n }\n }\n});\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".header[data-v-438d868c]{display:flex}.header .title[data-v-438d868c]{flex-basis:40%}.header .title[data-v-438d868c],.header .title .product[data-v-438d868c]{display:flex;align-items:center}.header .title .product-image[data-v-438d868c]{display:flex;min-width:40px;min-height:40px;margin:10px 10px 10px 0;overflow:hidden}.header .title .product-image .logo[data-v-438d868c]{max-width:40px;max-height:50px}.step-sequence[data-v-438d868c]{flex:1;min-height:60px;display:flex;width:100%}.step-sequence .steps[data-v-438d868c]{flex:1;margin:0 30px;display:flex;justify-content:space-between;align-items:center;list-style-type:none;padding:0}.step-sequence .steps[data-v-438d868c]:focus{outline:none;box-shadow:none}.step-sequence .steps li.step[data-v-438d868c]{display:flex;flex-direction:row;flex-grow:1;align-items:center}.step-sequence .steps li.step>span>span[data-v-438d868c]:last-of-type{padding-bottom:0}.step-sequence .steps li.step[data-v-438d868c]:last-of-type{flex-grow:0}.step-sequence .steps li.step .controls[data-v-438d868c]{display:flex;flex-direction:column;align-items:center;width:40px;overflow:visible;padding-top:15px}.step-sequence .steps li.step .controls>span[data-v-438d868c]{padding-bottom:5px;margin-bottom:5px;white-space:nowrap}.step-sequence .steps li.step.active .controls[data-v-438d868c]{color:var(--primary)}.step-sequence .steps li.step:not(.disabled) .controls:hover>*[data-v-438d868c]{color:var(--primary)!important;cursor:pointer}.step-sequence .steps li.step:not(.active) .controls>*[data-v-438d868c]{color:var(--input-disabled-text);text-decoration:none}.step-sequence .steps .divider[data-v-438d868c]{flex-basis:100%;border-top:1px solid var(--border);position:relative;height:1px;bottom:8px}.step-container[data-v-438d868c]{display:flex;flex-direction:column;justify-content:center;align-items:center}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.project.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.project.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./management.cattle.io.project.vue?vue&type=template&id=3a26ac99&scoped=true&\"\nimport script from \"./management.cattle.io.project.vue?vue&type=script&lang=js&\"\nexport * from \"./management.cattle.io.project.vue?vue&type=script&lang=js&\"\nimport style0 from \"./management.cattle.io.project.vue?vue&type=style&index=0&id=3a26ac99&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3a26ac99\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.loaded)?_c('div',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.html),expression:\"html\"}],staticClass:\"markdown\"}):_c('Loading')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Markdown.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Markdown.vue?vue&type=template&id=1e0a67a5&\"\nimport script from \"./Markdown.vue?vue&type=script&lang=js&\"\nexport * from \"./Markdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Markdown.vue?vue&type=style&index=0&id=1e0a67a5&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./pod.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./pod.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pod.vue?vue&type=template&id=3eef3a84&scoped=true&\"\nimport script from \"./pod.vue?vue&type=script&lang=js&\"\nexport * from \"./pod.vue?vue&type=script&lang=js&\"\nimport style0 from \"./pod.vue?vue&type=style&index=0&id=3eef3a84&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3eef3a84\",\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Rule.vue?vue&type=template&id=6f396b80&scoped=true&\"\nimport script from \"./Rule.vue?vue&type=script&lang=js&\"\nexport * from \"./Rule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Rule.vue?vue&type=style&index=0&id=6f396b80&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f396b80\",\n null\n \n)\n\nexport default component.exports","import { ANNOTATIONS_TO_IGNORE_REGEX, LABELS_TO_IGNORE_REGEX, DESCRIPTION } from '@shell/config/labels-annotations';\nimport omitBy from 'lodash/omitBy';\nimport pickBy from 'lodash/pickBy';\nimport Vue from 'vue';\nimport { matchesSomeRegex } from '@shell/utils/string';\nimport Resource from '@shell/plugins/dashboard-store/resource-class';\n\n// these are defined elsewhere in Steve models and will cause the error \"Cannot set property of [object Object] which has only a getter\" if defined at top-level\nexport function cleanHybridResources(data) {\n const potentialNormanHoldovers = ['state', 'name', 'description', 'labels', 'annotations'];\n\n potentialNormanHoldovers.forEach((key) => delete data[key]);\n\n return data;\n}\n\nexport default class HybridModel extends Resource {\n constructor(data, ctx, rehydrateNamespace = null, setClone = false) {\n const cleanedData = cleanHybridResources(data);\n\n super(cleanedData, ctx, rehydrateNamespace, setClone);\n }\n\n get labels() {\n const all = this.metadata?.labels || {};\n\n return omitBy(all, (value, key) => {\n return matchesSomeRegex(key, LABELS_TO_IGNORE_REGEX);\n });\n }\n\n setLabels(val) {\n if ( !this.metadata ) {\n this.metadata = {};\n }\n\n const all = this.metadata.labels || {};\n const wasIgnored = pickBy(all, (value, key) => {\n return matchesSomeRegex(key, LABELS_TO_IGNORE_REGEX);\n });\n\n Vue.set(this.metadata, 'labels', { ...wasIgnored, ...val });\n }\n\n setLabel(key, val) {\n if ( val ) {\n if ( !this.metadata ) {\n this.metadata = {};\n }\n\n if ( !this.metadata.labels ) {\n this.metadata.labels = {};\n }\n\n Vue.set(this.metadata.labels, key, val);\n } else if ( this.metadata?.labels ) {\n Vue.set(this.metadata.labels, key, undefined);\n delete this.metadata.labels[key];\n }\n }\n\n get annotations() {\n const all = this.metadata?.annotations || {};\n\n return omitBy(all, (value, key) => {\n return matchesSomeRegex(key, ANNOTATIONS_TO_IGNORE_REGEX);\n });\n }\n\n setAnnotations(val) {\n if ( !this.metadata ) {\n this.metadata = {};\n }\n\n const all = this.metadata.annotations || {};\n const wasIgnored = pickBy(all, (value, key) => {\n return matchesSomeRegex(key, ANNOTATIONS_TO_IGNORE_REGEX);\n });\n\n Vue.set(this.metadata, 'annotations', { ...wasIgnored, ...val });\n }\n\n setAnnotation(key, val) {\n if ( val ) {\n if ( !this.metadata ) {\n this.metadata = {};\n }\n\n if ( !this.metadata.annotations ) {\n this.metadata.annotations = {};\n }\n\n Vue.set(this.metadata.annotations, key, val);\n } else if ( this.metadata?.annotations ) {\n Vue.set(this.metadata.annotations, key, undefined);\n delete this.metadata.annotations[key];\n }\n }\n\n get state() {\n return this.stateObj?.name || 'unknown';\n }\n\n get description() {\n return this.metadata?.annotations?.[DESCRIPTION] || this.spec?.description || this._description;\n }\n}\n","import { DESCRIPTION } from '@shell/config/labels-annotations';\nimport HybridModel from './hybrid-class';\nimport { NEVER_ADD } from '@shell/utils/create-yaml';\nimport { deleteProperty } from '@shell/utils/object';\n\n// Some fields that are removed for YAML (NEVER_ADD) are required via API\nconst STEVE_ADD = [\n 'metadata.resourceVersion',\n 'metadata.fields',\n 'metadata.clusterName',\n 'metadata.deletionGracePeriodSeconds',\n 'metadata.generateName',\n];\nconst STEVE_NEVER_SAVE = NEVER_ADD.filter((na) => !STEVE_ADD.includes(na));\n\nexport default class SteveModel extends HybridModel {\n get name() {\n return this.metadata?.name || this._name;\n }\n\n get namespace() {\n return this.metadata?.namespace;\n }\n\n get description() {\n return this.metadata?.annotations?.[DESCRIPTION] || this.spec?.description || this._description;\n }\n\n /**\n * Set description based on the type of model available with private fallback\n */\n set description(value) {\n if (this.metadata?.annotations) {\n this.metadata.annotations[DESCRIPTION] = value;\n }\n\n if (this.spec) {\n this.spec.description = value;\n }\n\n this._description = value;\n }\n\n cleanForSave(data, forNew) {\n const val = super.cleanForSave(data);\n\n for (const field of STEVE_NEVER_SAVE) {\n deleteProperty(val, field);\n }\n\n return val;\n }\n}\n","export { default as Banner } from './Banner.vue';\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./THead.vue?vue&type=style&index=0&id=59946620&prod&lang=scss&scoped=true&\"","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","export * from \"-!../../../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SourceAuthorities.vue?vue&type=style&index=0&id=189c4c6b&prod&lang=scss&scoped=true&\"","var baseFor = require('./_baseFor'),\n castFunction = require('./_castFunction'),\n keysIn = require('./keysIn');\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nmodule.exports = forIn;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".dashboard[data-v-1123c0e0],.dashboard .head[data-v-1123c0e0]{display:flex;flex-direction:column}.dashboard .head[data-v-1123c0e0]{justify-content:space-between;align-content:center;outline:1px solid var(--border);border-radius:var(--border-radius);margin:0 0 64px 0;padding:20px;gap:20px}.dashboard .head-title[data-v-1123c0e0]{display:flex;flex-direction:column;gap:5px}.dashboard .head-title h1[data-v-1123c0e0]{margin:0}.dashboard .head-version-container[data-v-1123c0e0]{display:flex;flex-direction:row;align-items:center}.dashboard .head-upgrade[data-v-1123c0e0]{display:flex;align-items:center}.dashboard .head-upgrade[data-v-1123c0e0],.dashboard .head-version[data-v-1123c0e0]{border-radius:var(--border-radius);padding:4px 8px}.dashboard .head-subheader[data-v-1123c0e0]{font-size:1.2rem;font-weight:500;color:var(--text-secondary)}.dashboard .head-links[data-v-1123c0e0]{display:flex;gap:10px}.dashboard .get-started[data-v-1123c0e0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:20px}.dashboard .get-started .card-container[data-v-1123c0e0]{min-height:420px;padding:0}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailText.vue?vue&type=style&index=0&id=348d5cf1&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.globalrole.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.globalrole.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./management.cattle.io.globalrole.vue?vue&type=template&id=effd72b0&scoped=true&\"\nimport script from \"./management.cattle.io.globalrole.vue?vue&type=script&lang=js&\"\nexport * from \"./management.cattle.io.globalrole.vue?vue&type=script&lang=js&\"\nimport style0 from \"./management.cattle.io.globalrole.vue?vue&type=style&index=0&id=effd72b0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"effd72b0\",\n null\n \n)\n\nexport default component.exports","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDropdown.vue?vue&type=style&index=0&id=70f0de36&prod&lang=scss&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".flex-content[data-v-0557e0df]{display:flex;flex-direction:column;flex-grow:1}.footer[data-v-0557e0df]{margin-top:20px;right:0;position:sticky;bottom:0;background-color:var(--header-bg);margin-left:-20px;margin-right:-20px;margin-bottom:-20px;padding:10px 20px}.footer.edit[data-v-0557e0df]{border-top:var(--header-border-size) solid var(--header-border)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","// This file has 2 sections that control getting and using specializations of particular types\n// over the generic info that is specified or generated from schemas.\n//\n// 1) Getting info about types\n//\n// labelFor(schema, count) Get the display label for a schema. Count is (in English) 1 or not-1 for pluralizing\n// groupLabelFor(schema) Get the label for the API group of this schema's type\n// isIgnored(schema) Returns true if this type should be hidden from the tree\n// groupForBasicType(schema) Returns the group a type should be shown in basic view, or false-y if it shouldn't be shown.\n// typeWeightFor(type, forBasic) Get the weight value for a particular type label\n// groupWeightFor(group, forBasic) Get the weight value for a particular group\n// headersFor(schema) Returns the column definitions for a type to give to SortableTable\n// activeProducts() Returns the list of products that are installed and should be shown\n//\n// 2) Detecting and using custom list/detail/edit/header components\n//\n// hasCustomList(type) Does type have a custom list implementation?\n// hasCustomDetail(type[,subType]) Does type have a custom detail implementation?\n// hasCustomEdit(type[,subType]) Does type have a custom edit implementation?\n// importList(type) Returns a promise that resolves to the list component for type\n// importDetail(type[,subType]) Returns a promise that resolves to the detail component for type\n// importEdit(type[,subType]) Returns a promise that resolves to the edit component for type\n// optionsFor(schemaOrType) Return the configured options for a type (from configureType)\n//\n// 3) Changing specialization info about a type\n// For all:\n// let { thingYouWant } = DSL(instanceOfTheStore, 'product');\n//\n// product( Add a product into the nav\n// removable, -- Is the product removable (true) or built-in (false).\n// weight, -- Sort order and divider sections in the product menu. 3=global (fleet, ecm), 2=always on (apps, explorer) 1=other\n// showClusterSwitcher, -- Show the cluster switcher in the header (default true)\n// showNamespaceFilter, -- Show the namespace filter in the header (default false)\n// showWorkspaceSwitcher, -- Show the workspace switcher in the header (conflicts with namespace) (default false)\n// ifHave, -- Show this product only if the given capability is available\n// ifHaveGroup, -- Show this product only if the given group exists in the store [inStore]\n// ifHaveType, -- Show this product only if the given type exists in the store [inStore], This can also be specified as an object { type: TYPE, store: 'management' } if the type isn't in the current [inStore]\n// ifHaveVerb, -- In combination with ifHaveTYpe, show it only if the type also has this collectionMethod\n// inStore, -- Which store to look at for if* above and the left-nav, defaults to \"cluster\"\n// rootProduct, -- Optional root (parent) product - if set, used to optimize navigation when product changes stays within root product\n// inExplorer, -- Determines if the product is to be scoped to the explorer\n// public, -- If true, show to all users. If false, only show when the Developer Tools pref is on (default true)\n// category, -- Group to show the product in for the nav hamburger menu\n// typeStoreMap, -- An object mapping types to the store that should be used to retrieve information about the type\n// hideSystemResources -- Hide resources in namespaces where namespace.isSystem === true, or a namespace managed by fleet (per its annotation) and hide those namespaces from ns/project list and nsfilter (default false)\n// hideNamespaceLocation -- Hide the namespace link in the ResourceDetail masthead of namespaced resources and hide the ExplorerProjectsNamespaces namespace link (default false)\n// })\n//\n// externalLink(stringOrFn) The product has an external page (function gets context object\n//\n// virtualType(obj) Add an item to the tree that goes to a route instead of an actual type.\n// -- obj can contain anything in the objects getTree returns.\n// -- obj must have a `name` that is unique among all virtual types.\n// -- `cluster` is automatically added to route.params if it exists.\n//\n// spoofedType(obj) Create a fake type that can be treated like a normal type\n//\n// basicType( Mark type(s) as always shown in the top of the nav\n// type(s), -- Type name or array of type names\n// group -- Group to show the type(s) under; false-y for top-level.\n// )\n// basicType( Mark all types in group as always shown in the top of the nav\n// group, -- Group to show\n// asLabel -- Label to display the group as; false-y for top-level.\n// )\n// ignoreType(type) Never show type\n// weightType( Set the weight (sorting) order of one or more types\n// typeOrArrayOfTypes,\n// weight, -- Higher numbers are shown first/higher up on the nav tree\n// forBasic -- Apply to basic type instead of regular type tree\n// )\n// mapType( Remap a type id to a display name\n// matchRegexOrString, -- Type to match, or regex that matches types\n// replacementStringOrFn, -- String to replace the type with, or\n// -- sync function: (type, capturedString, schemaObj => { return 'new-type'; }\n// mapWeight, -- Priority for apply this mapping (higher numbers applied first)\n// continueOnMatch -- If true, continue applying to hit other rules that might match the new type.\n// )\n// moveType( Change the group a type is in\n// matchRegexOrString, -- Type to match, or regex that matches types\n// newGroup, -- Group to move the type into\n// mapWeight, -- Priority for apply this mapping (higher numbers applied first)\n// )\n// componentForType( Map matching types to a single component name\n// ( (this is helpful if multiple types should be rendered by a single component)\n// matchRegexOrString, -- Type to match, or regex that matches types\n// replacementString -- String to replace the type with\n// )\n// configureType( Display options for a particular type\n// type, -- Type to apply to\n// options -- Object of options. Defaults/Supported: {\n// isCreatable: true, -- If false, disable create even if schema says it's allowed\n// isEditable: true, -- Ditto, for edit\n// isRemovable: true, -- Ditto, for remove/delete\n// showState: true, -- If false, hide state in columns and masthead\n// showAge: true, -- If false, hide age in columns and masthead\n// showConfigView: true -- If false, hide masthead config button in view mode\n// showListMasthead: true, -- If false, hide masthead in list view\n// canYaml: true,\n// resource: undefined -- Use this resource in ResourceDetails instead\n// resourceDetail: undefined -- Use this resource specifically for ResourceDetail's detail component\n// resourceEdit: undefined -- Use this resource specifically for ResourceDetail's edit component\n// depaginate: undefined -- Use this to depaginate requests for this type\n// resourceEditMasthead: true -- Show the Masthead in the edit resource component\n// customRoute: undefined,\n// hasGraph: undefined -- If true, render ForceDirectedTreeChart graph (ATTENTION: option graphConfig is needed also!!!)\n// graphConfig: undefined -- Use this to pass along the graph configuration\n// notFilterNamespace: undefined -- Define namespaces that do not need to be filtered\n// localOnly: False -- Hide this type from the nav/search bar on downstream clusters\n// }\n// )\n// ignoreGroup(group): Never show group or any types in it\n// weightGroup( Set the weight (sorting) of one or more groups\n// groupOrArrayOfGroups, -- see weightType...\n// weight\n// )\n// setGroupDefaultType( Set the default child type to show when the group is expanded\n// groupOrArrayOfGroups, -- see setGroupDefaultType...\n// defaultType\n// )\n// mapGroup( Remap a group name to a display name\n// matchRegexOrString, -- see mapType...\n// replacementString,\n// mapWeight,\n// continueOnMatch\n// )\nimport { AGE, NAME, NAMESPACE as NAMESPACE_COL, STATE } from '@shell/config/table-headers';\nimport {\n CATALOG,\n COUNT,\n SCHEMA,\n MANAGEMENT,\n NAMESPACE\n} from '@shell/config/types';\nimport { VIEW_IN_API, EXPANDED_GROUPS, FAVORITE_TYPES } from '@shell/store/prefs';\nimport {\n addObject, findBy, isArray, removeObject, filterBy\n} from '@shell/utils/array';\nimport { clone, get } from '@shell/utils/object';\nimport {\n ensureRegex, escapeHtml, escapeRegex, ucFirst, pluralize\n} from '@shell/utils/string';\nimport {\n importChart, importList, importDetail, importEdit, listProducts, loadProduct, importCustomPromptRemove, resolveList, resolveEdit, resolveWindowComponent, importWindowComponent, importLogin, resolveChart, resolveDetail, importDialog, importMachineConfig, resolveMachineConfigComponent, resolveCloudCredentialComponent, importCloudCredential\n} from '@shell/utils/dynamic-importer';\n\nimport { NAME as EXPLORER } from '@shell/config/product/explorer';\nimport isObject from 'lodash/isObject';\nimport { normalizeType } from '@shell/plugins/dashboard-store/normalize';\nimport { sortBy } from '@shell/utils/sort';\n\nimport { haveV2Monitoring } from '@shell/utils/monitoring';\nimport { NEU_VECTOR_NAMESPACE } from '@shell/config/product/neuvector';\nimport { createHeaders, rowValueGetter } from '@shell/store/type-map.utils';\n\nexport const NAMESPACED = 'namespaced';\nexport const CLUSTER_LEVEL = 'cluster';\nexport const BOTH = 'both';\n\nexport const TYPE_MODES = {\n /**\n * allTypes usage: All resource types\n *\n * getTree usage: Remove ignored schemas, resources not applicable to ns, etc\n */\n ALL: 'all',\n /**\n * Represents resource types that should be shown at the top of the side nav.\n *\n * For example all fixed resource types above `More Resources` in the cluster explorer\n *\n * These will always be shown in the side nav\n *\n * allTypes usage: Resources that are in a group\n *\n * getTree usage: Remove ignored schemas, resources not applicable to ns, etc\n */\n BASIC: 'basic',\n /**\n * Represents any type of resource type that has been favourited\n *\n * These will always be shown in the side nav.\n *\n * allTypes usage: Resource types that have been favorited\n *\n * getTree usage: Remove ignored schemas, resources not applicable to ns, etc\n */\n FAVORITE: 'favorite',\n /**\n * Represents no virtual or spoofed types that have a count.\n *\n * For example the `More Resource` in the cluster explorer\n *\n * These will be shown in the side nav if there are resources in the ns filter OR the resource is not namespaces\n *\n * allTypes usage: All resource types that are not virtual or spoofed\n *\n * getTree usage: Remove types with no counts. Remove ignored schemas, resources not applicable to ns, etc\n */\n USED: 'used',\n};\n\nexport const ROOT = 'root';\n\nexport const SPOOFED_PREFIX = '__[[spoofed]]__';\nexport const SPOOFED_API_PREFIX = '__[[spoofedapi]]__';\n\nconst instanceMethods = {};\nconst graphConfigMap = {};\n\nexport const IF_HAVE = {\n V2_MONITORING: 'v2-monitoring',\n PROJECT: 'project',\n NO_PROJECT: 'no-project',\n NOT_V1_ISTIO: 'not-v1-istio',\n MULTI_CLUSTER: 'multi-cluster',\n NEUVECTOR_NAMESPACE: 'neuvector-namespace',\n ADMIN: 'admin-user',\n MCM_DISABLED: 'mcm-disabled',\n NOT_STANDALONE_HARVESTER: 'not-standalone-harvester',\n};\n\nexport function DSL(store, product, module = 'type-map') {\n // store.commit(`${ module }/product`, { name: product });\n\n return {\n product(inOpt) {\n const opt = {\n name: product,\n weight: 1,\n inStore: 'cluster',\n inExplorer: false,\n removable: true,\n showClusterSwitcher: true,\n showNamespaceFilter: false,\n public: true,\n filterMode: 'namespaces',\n ...inOpt\n };\n\n // Convert strings to regex's - we do this once here for efficiency\n for ( const k of ['ifHaveGroup', 'ifHaveType'] ) {\n if ( opt[k] ) {\n if (Array.isArray(opt[k])) {\n opt[k] = opt[k].map((r) => regexToString(ensureRegex(r)));\n } else {\n opt[k] = regexToString(ensureRegex(opt[k]));\n }\n }\n }\n\n store.commit(`${ module }/product`, opt);\n },\n\n basicType(types, group) {\n // Support passing in a map of types and using just the values\n if ( !isArray(types) && types && isObject(types) ) {\n types = Object.values(types);\n }\n\n store.commit(`${ module }/basicType`, {\n product, types, group\n });\n },\n\n // Type- and Group-dependent\n groupBy(type, field) {\n store.commit(`${ module }/groupBy`, { type, field });\n },\n\n headers(type, headers, paginationHeaders = []) {\n headers.forEach((header) => {\n // If on the client, then use the value getter if there is one\n if (header.getValue) {\n // we need to store the .value prop for the advanced filtering\n header.valueProp = header.value;\n header.value = header.getValue;\n }\n\n delete header.getValue;\n });\n\n store.commit(`${ module }/headers`, { type, headers });\n store.commit(`${ module }/paginationHeaders`, { type, paginationHeaders });\n },\n\n hideBulkActions(type, field) {\n store.commit(`${ module }/hideBulkActions`, { type, field });\n },\n\n configureType(match, options) {\n if (options.graphConfig) {\n graphConfigMap[match] = options.graphConfig;\n delete options.graphConfig;\n }\n store.commit(`${ module }/configureType`, { ...options, match });\n },\n\n componentForType(match, replace) {\n store.commit(`${ module }/componentForType`, { match, replace });\n },\n\n ignoreType(regexOrString) {\n store.commit(`${ module }/ignoreType`, regexOrString);\n },\n\n ignoreGroup(regexOrString, cb) {\n store.commit(`${ module }/ignoreGroup`, { regexOrString, cb });\n },\n\n weightGroup(input, weight, forBasic) {\n if ( isArray(input) ) {\n store.commit(`${ module }/weightGroup`, {\n groups: input, weight, forBasic\n });\n } else {\n store.commit(`${ module }/weightGroup`, {\n group: input, weight, forBasic\n });\n }\n },\n\n setGroupDefaultType(input, defaultType) {\n if ( isArray(input) ) {\n store.commit(`${ module }/setGroupDefaultType`, { groups: input, defaultType });\n } else {\n store.commit(`${ module }/setGroupDefaultType`, { group: input, defaultType });\n }\n },\n\n weightType(input, weight, forBasic) {\n if ( isArray(input) ) {\n store.commit(`${ module }/weightType`, {\n types: input, weight, forBasic\n });\n } else {\n store.commit(`${ module }/weightType`, {\n type: input, weight, forBasic\n });\n }\n },\n\n mapGroup(match, replace, weight = 5, continueOnMatch = false) {\n store.commit(`${ module }/mapGroup`, {\n match, replace, weight, continueOnMatch\n });\n },\n\n mapType(match, replace, weight = 5, continueOnMatch = false) {\n store.commit(`${ module }/mapType`, {\n match, replace, weight, continueOnMatch\n });\n },\n\n moveType(match, group, weight = 5, continueOnMatch = false) {\n store.commit(`${ module }/moveType`, {\n match, group, weight,\n });\n },\n\n virtualType(obj) {\n store.commit(`${ module }/virtualType`, { product, obj });\n },\n\n spoofedType(obj) {\n store.commit(`${ module }/spoofedType`, { product, obj });\n }\n };\n}\n\nlet called = false;\n\nexport async function applyProducts(store, $plugin) {\n if (called) {\n return;\n }\n\n called = true;\n for ( const product of listProducts() ) {\n const impl = await loadProduct(product);\n\n if ( impl?.init ) {\n impl.init(store);\n }\n }\n // Load the products from all plugins\n $plugin.loadProducts();\n}\n\nexport function productsLoaded() {\n return called;\n}\n\nexport const state = function() {\n return {\n products: [],\n virtualTypes: {},\n spoofedTypes: {},\n basicTypes: {},\n groupIgnore: [],\n groupWeights: {},\n groupDefaultTypes: {},\n basicGroupWeights: { [ROOT]: 1000 },\n groupMappings: [],\n typeIgnore: [],\n basicTypeWeights: {},\n typeWeights: {},\n typeMappings: [],\n typeMoveMappings: [],\n typeToComponentMappings: [],\n typeOptions: [],\n groupBy: {},\n headers: {},\n paginationHeaders: {},\n hideBulkActions: {},\n schemaGeneration: 1,\n cache: {\n typeMove: {},\n groupLabel: {},\n ignore: {},\n list: {},\n chart: {},\n detail: {},\n edit: {},\n componentFor: {},\n promptRemove: {},\n windowComponents: {},\n 'machine-config': {},\n 'cloud-credential': {}\n\n },\n };\n};\n\nexport const getters = {\n // ----------------------------------------------------------------------------\n // 1 ) Getting info\n // ----------------------------------------------------------------------------\n // Turns a type name into a display label (e.g. management.cattle.io.cluster -> Cluster)\n labelFor(state, getters, rootState, rootGetters) {\n return (schema, count = 1, language = null) => {\n return _applyMapping(schema, state.typeMappings, 'id', false, () => {\n // i18n-uses typeLabel.*\n const key = `typeLabel.\"${ schema.id.toLowerCase() }\"`;\n\n if ( rootGetters['i18n/exists'](key, language) ) {\n return rootGetters['i18n/t'](key, { count }, language).trim();\n }\n\n const out = schema?.attributes?.kind || schema.id || '?';\n\n // Add spaces, but breaks typing names into jump menu naturally\n // out = ucFirst(out.replace(/([a-z])([A-Z])/g,'$1 $2'));\n\n if ( count === 1 ) {\n return out;\n }\n\n // This works for most things... if you don't like it, put in a typeLabel translation for above.\n return pluralize(out);\n });\n };\n },\n\n // Turns a group name into a display label (e.g. management.cattle.io.v3.cluster -> Cluster)\n groupLabelFor(state) {\n return (schemaOrName) => {\n let group = schemaOrName;\n\n if ( typeof schemaOrName === 'object' ) {\n let moved = false;\n\n for ( const rule of state.typeMoveMappings ) {\n const re = stringToRegex(rule.match);\n\n if ( schemaOrName.id.match(re) ) {\n moved = true;\n group = rule.replace;\n }\n }\n\n if ( !moved ) {\n group = group.attributes.group;\n }\n }\n\n if ( typeof group !== 'string' ) {\n return null;\n }\n\n const out = _applyMapping(group, state.groupMappings, null, state.cache.groupLabel, (group) => {\n const match = group.match(/^(.*)\\.k8s\\.io$/);\n\n if ( match ) {\n return match[1].split(/\\./).map((x) => ucFirst(x)).join('.');\n }\n\n return group;\n });\n\n return out;\n };\n },\n\n groupForBasicType(state) {\n return (product, schemaId) => {\n return state.basicTypes?.[product]?.[schemaId];\n };\n },\n\n optionsFor(state, getters, rootState, rootGetters) {\n const def = {\n isCreatable: true,\n isEditable: true,\n isRemovable: true,\n showState: true,\n showAge: true,\n canYaml: true,\n namespaced: null,\n listGroups: [],\n listGroupsWillOverride: false,\n listMandatorySort: null,\n depaginate: false,\n customRoute: undefined,\n resourceEditMasthead: true,\n };\n\n return (schemaOrType, pagination) => {\n // Note - This can run a LOT so needs to be performant\n\n if (!schemaOrType) {\n return {};\n }\n\n const type = (typeof schemaOrType === 'object' ? schemaOrType.id : schemaOrType);\n const found = state.typeOptions.find((entry) => {\n const re = stringToRegex(entry.match);\n\n return re.test(type);\n });\n\n const opts = Object.assign({}, def, found || {});\n\n // As this runs a lot, avoid anything we don't strictly need (like going out to another store)\n if (!pagination) {\n return opts;\n }\n\n const storeOptionsFor = schemaOrType?.$ctx?.getters?.['optionsFor'];\n const storeOpts = storeOptionsFor ? storeOptionsFor({ getters, state }, {\n schema: schemaOrType, pagination, opts\n }) : {};\n\n return {\n ...opts,\n ...storeOpts,\n };\n };\n },\n\n isFavorite(state, getters, rootState, rootGetters) {\n return (schemaId) => {\n return rootGetters['prefs/get'](FAVORITE_TYPES).includes(schemaId) || false;\n };\n },\n\n typeWeightFor(state) {\n return (type, forBasic) => {\n type = type?.toLowerCase();\n\n if ( forBasic ) {\n return state.basicTypeWeights[type] || 0;\n } else {\n return state.typeWeights[type] || 0;\n }\n };\n },\n\n groupWeightFor(state) {\n return (group, forBasic) => {\n group = group.toLowerCase();\n\n if ( forBasic ) {\n return state.basicGroupWeights[group] || 0;\n } else {\n return state.groupWeights[group] || 0;\n }\n };\n },\n\n groupDefaultTypeFor(state) {\n return (group) => {\n group = group.toLowerCase();\n\n return state.groupDefaultTypes[group];\n };\n },\n\n getTree(state, getters, rootState, rootGetters) {\n // Name the function so it's easily identifiable when performance tracing\n return function getTree(productId, mode, allTypes, clusterId, namespaceMode, currentType, search) {\n // getTree has four modes:\n // - `basic` matches data types that should always be shown (even if there are 0 of them).\n // - `used` matches the data types where there are more than 0 of them in the current set of namespaces.\n // - `all` matches all types.\n // - `favorite` matches starred types.\n // namespaceMode: 'namespaced', 'cluster', or 'both'\n // namespaces: null means all, otherwise it will be an array of specific namespaces to include\n const isBasic = mode === TYPE_MODES.BASIC;\n\n let searchRegex;\n\n if ( search ) {\n searchRegex = new RegExp(`^(.*)(${ escapeRegex(search) })(.*)$`, 'i');\n }\n\n const root = { children: [] };\n\n // Add types from shortest to longest so that parents\n // get added before children\n const keys = Object.keys(allTypes).sort((a, b) => a.length - b.length);\n\n // Set these for later\n const currentLocal = rootGetters['i18n/current']();\n const defaultLocal = rootGetters['i18n/default']();\n\n for ( const type of keys ) {\n const typeObj = allTypes[type];\n\n if ( typeObj.schema && getters.isIgnored(typeObj.schema) ) {\n // Skip ignored groups & types\n continue;\n }\n\n const namespaced = typeObj.namespaced;\n\n if ( (namespaceMode === NAMESPACED && !namespaced ) || (namespaceMode === CLUSTER_LEVEL && namespaced) ) {\n // Skip types that are not the right namespace mode\n continue;\n }\n\n const inStore = rootGetters.currentStore(typeObj.name);\n const count = rootGetters[`${ inStore }/count`](typeObj);\n const groupForBasicType = getters.groupForBasicType(productId, typeObj.name);\n\n if ( typeObj.id === currentType ) {\n // If this is the type currently being shown, always show it\n } else if ( isBasic && !groupForBasicType ) {\n // If we want the basic tree only return basic types;\n continue;\n } else if ( mode === TYPE_MODES.USED && count <= 0 ) {\n // If there's none of this type, ignore this entry when viewing only in-use types\n // Note: count is sometimes null, in js `null <= 0` is `true`.\n continue;\n }\n\n const label = typeObj.labelKey ? rootGetters['i18n/t'](typeObj.labelKey) || typeObj.label : typeObj.label;\n\n const labelDisplay = highlightLabel(label, count, typeObj.schema);\n\n if ( !labelDisplay ) {\n // Search happens in highlight and returns null if not found\n continue;\n }\n\n let group;\n\n if ( isBasic ) {\n group = _ensureGroup(root, groupForBasicType, true);\n } else if ( mode === TYPE_MODES.FAVORITE ) {\n group = _ensureGroup(root, 'starred');\n group.weight = 1000;\n } else if ( mode === TYPE_MODES.USED ) {\n group = _ensureGroup(root, `inUse::${ getters.groupLabelFor(typeObj.schema) }`);\n } else {\n group = _ensureGroup(root, typeObj.schema || typeObj.group || ROOT);\n }\n\n let route = typeObj.route;\n\n // Make the default route if one isn't set\n if (!route ) {\n route = {\n name: 'c-cluster-product-resource',\n params: {\n product: productId,\n cluster: clusterId,\n resource: typeObj.name,\n }\n };\n\n typeObj.route = route;\n }\n\n // Cluster ID and Product should always be set\n if ( route && typeof route === 'object' ) {\n route.params = route.params || {};\n route.params.cluster = clusterId;\n route.params.product = productId;\n }\n\n group.children.push({\n label,\n labelDisplay,\n mode: typeObj.mode,\n exact: typeObj.exact || false,\n 'exact-path': typeObj['exact-path'] || false,\n namespaced,\n route,\n name: typeObj.name,\n weight: typeObj.weight || getters.typeWeightFor(typeObj.schema?.id || label, isBasic),\n overview: !!typeObj.overview,\n });\n }\n\n // Recursively sort the groups\n _sortGroup(root, mode);\n\n return root.children;\n\n // ----------------------\n\n function _ensureGroup(tree, schemaOrName, forBasic = false) {\n let name = getters.groupLabelFor(schemaOrName);\n const isRoot = ( name === ROOT || name.startsWith(`${ ROOT }::`) );\n\n if ( name && name.includes('::') ) {\n let parent;\n\n [parent, name] = name.split('::', 2);\n tree = _ensureGroup(tree, parent);\n }\n\n // Translate if an entry exists\n let label = name;\n // i18n-uses nav.group.*\n const key = `nav.group.\"${ name }\"`;\n\n if ( rootGetters['i18n/exists'](key) ) {\n label = rootGetters['i18n/t'](key);\n }\n\n let group = findBy(tree.children, 'name', name);\n\n if ( !group ) {\n group = {\n name,\n label,\n weight: getters.groupWeightFor(name, forBasic),\n defaultType: getters.groupDefaultTypeFor(name),\n };\n\n tree.children.push(group);\n }\n\n if ( isRoot ) {\n group.isRoot = true;\n }\n\n if ( !group.children ) {\n group.children = [];\n }\n\n return group;\n }\n\n function highlightLabel(original, count, schema) {\n let label = escapeHtml(original);\n\n if ( searchRegex ) {\n let match = label.match(searchRegex);\n\n if (!match) {\n if ( currentLocal !== defaultLocal && schema ) {\n const defaultLabel = getters.labelFor(schema, count, defaultLocal);\n\n if (defaultLabel && defaultLabel !== label ) {\n label += ` (${ defaultLabel })`;\n match = label.match(searchRegex);\n }\n }\n }\n\n if ( match ) {\n label = `${ escapeHtml(match[1]) }${ escapeHtml(match[2]) }${ escapeHtml(match[3]) }`;\n } else {\n return null;\n }\n }\n\n return label;\n }\n };\n },\n\n isSpoofed(state, getters, rootState, rootGetters) {\n return (type, product) => {\n product = product || rootGetters['productId'];\n const productSpoofedTypes = state.spoofedTypes[product] || [];\n\n return productSpoofedTypes.some((st) => st.type === type);\n };\n },\n\n isVirtual(state, getters, rootState, rootGetters) {\n return (name, product) => {\n product = product || rootGetters['productId'];\n const productVirtualTypes = state.virtualTypes[product] || [];\n\n return productVirtualTypes.some((st) => st.name === name);\n };\n },\n\n getSpoofedInstances(state, getters, rootState, rootGetters) {\n return async(type, product) => {\n product = product || rootGetters['productId'];\n const getInstances = instanceMethods[product]?.[type] || (() => []);\n const instances = await getInstances();\n\n instances.forEach((instance) => {\n const type = instance.type;\n const id = instance.id;\n const link = `/${ SPOOFED_PREFIX }/${ type }/${ id }`;\n const apiLink = `/${ SPOOFED_API_PREFIX }/${ type }/${ id }`;\n\n instance.links = {\n remove: instance.links?.remove || link,\n self: instance.links?.self || link,\n update: instance.links?.update || link,\n view: instance.links?.view || apiLink,\n };\n instance.isSpoofed = true;\n });\n\n return instances;\n };\n },\n\n getSpoofedInstance(state, getters, rootState, rootGetters) {\n return async(type, product, id) => {\n const productInstances = await getters.getSpoofedInstances(type, product);\n\n return productInstances.find( (instance) => instance.id === id);\n };\n },\n\n allSpoofedTypes(state, getters, rootState, rootGetters) {\n return Object.values(state.spoofedTypes).flat();\n },\n\n spoofedSchemas(state, getters, rootState, rootGetters) {\n return (product) => {\n const types = state.spoofedTypes[product] || [];\n\n return types.flatMap((type) => {\n const schemas = type.schemas || [];\n\n return schemas.map((schema) => ({\n ...schema,\n isSpoofed: true\n }));\n });\n };\n },\n\n allSpoofedSchemas(state, getters, rootState, rootGetters) {\n return getters.allSpoofedTypes.flatMap((type) => {\n const schemas = type.schemas || [];\n\n return schemas.map((schema) => ({\n ...schema,\n isSpoofed: true\n }));\n });\n },\n\n /**\n * Given many things, create a list of menu items per schema given the mode\n */\n allTypes(state, getters, rootState, rootGetters) {\n // Name the function so it's easily identifiable when performance tracing\n return function allTypes(product, modes = [TYPE_MODES.ALL]) {\n const module = state.products.find((p) => p.name === product)?.inStore;\n const schemas = rootGetters[`${ module }/all`](SCHEMA);\n const isLocal = !rootGetters.currentCluster?.isLocal;\n const isRancher = rootGetters.isRancher;\n const counts = rootGetters[`${ module }/all`](COUNT)?.[0]?.counts || {};\n\n const out = {};\n\n // For performance reasons this must be super quick to iterate over.\n // For each schema...\n // 1) Determine if it's applicable given the mode\n // 2) For each applicable mode create a `Type` entry\n for ( const schema of schemas ) {\n let schemaModes = { };\n\n modes.forEach((m) => {\n schemaModes[m] = true;\n });\n\n const attrs = schema.attributes || {};\n const typeOptions = getters['optionsFor'](schema);\n\n schemaModes[TYPE_MODES.BASIC] = schemaModes[TYPE_MODES.BASIC] && getters.groupForBasicType(product, schema.id);\n\n if (Object.values(schemaModes).every((s) => !s)) {\n continue;\n }\n\n schemaModes[TYPE_MODES.FAVORITE] = schemaModes[TYPE_MODES.FAVORITE] && getters.isFavorite(schema.id);\n\n if (Object.values(schemaModes).every((s) => !s)) {\n continue;\n }\n\n const onlyBasic = schemaModes[TYPE_MODES.BASIC] && modes.length === 1;\n\n // This clause is only valid for non-basic modes. So if we have only basic... skip it\n if (!onlyBasic) {\n const invalidType = !attrs.kind ||\n (typeof typeOptions.ifRancherCluster !== 'undefined' && typeOptions.ifRancherCluster !== isRancher) ||\n (typeOptions.localOnly && isLocal);\n\n if (invalidType) {\n // Remove anything not basic\n schemaModes = { [TYPE_MODES.BASIC]: schemaModes[TYPE_MODES.BASIC] };\n }\n }\n\n // This is an expensive request to make, so only do it if we really need to\n let label;\n\n Object.entries(schemaModes).forEach(([mode, enabled]) => {\n if (!enabled) {\n return;\n }\n\n if (!out[mode]) {\n out[mode] = {};\n }\n\n if (!label) {\n label = getters.labelFor(schema, counts[schema.id]);\n }\n\n out[mode][schema.id] = {\n label,\n mode,\n weight: getters.typeWeightFor(schema?.id || label, mode === TYPE_MODES.BASIC),\n schema,\n name: schema.id,\n namespaced: typeOptions.namespaced === null ? attrs.namespaced : typeOptions.namespaced,\n route: typeOptions.customRoute\n };\n });\n }\n\n const nonUsedModes = modes.filter((m) => m !== TYPE_MODES.USED);\n const isDev = rootGetters['prefs/get'](VIEW_IN_API);\n\n // Add virtual and spoofed types\n if ( nonUsedModes.length ) {\n const virtualTypes = state.virtualTypes[product] || [];\n const spoofedTypes = state.spoofedTypes[product] || [];\n const allTypes = [...virtualTypes, ...spoofedTypes];\n\n for ( const type of allTypes ) {\n const item = clone(type);\n const id = item.name;\n const virtSpoofedModes = [...nonUsedModes];\n\n // Is there a virtual/spoofed type override for schema type?\n // Currently used by harvester, this should be investigated and removed if possible\n virtSpoofedModes.forEach((mode) => {\n if (out[mode]?.[id]) {\n delete out[mode][id];\n }\n });\n\n if ( item['public'] === false && !isDev ) {\n continue;\n }\n\n if (item.ifHave && !ifHave(rootGetters, item.ifHave)) {\n continue;\n }\n\n if ( item.ifHaveType ) {\n const ifHaveTypeArray = Array.isArray(item.ifHaveType) ? item.ifHaveType : [item.ifHaveType];\n let satisfiesIfHave = true;\n\n // Support an array of required types that the user must have access to\n for (let i = 0; i < ifHaveTypeArray.length; i++) {\n const ifHaveType = ifHaveTypeArray[i];\n const targetedSchemas = typeof ifHaveType === 'string' ? schemas : rootGetters[`${ ifHaveType.store }/all`](SCHEMA);\n const type = typeof ifHaveType === 'string' ? ifHaveType : ifHaveType?.type;\n\n const haveIds = filterBy(targetedSchemas, 'id', normalizeType(type)).map((s) => s.id);\n\n if (!haveIds.length) {\n satisfiesIfHave = false;\n break;\n }\n\n if (item.ifHaveVerb && !ifHaveVerb(rootGetters, module, item.ifHaveVerb, haveIds)) {\n satisfiesIfHave = false;\n break;\n }\n }\n\n if (!satisfiesIfHave) {\n continue;\n }\n }\n\n if ( item.ifHaveSubTypes ) {\n const hasSome = (item.ifHaveSubTypes || []).some((type) => {\n return !!findBy(schemas, 'id', normalizeType(type));\n });\n\n if (!hasSome) {\n continue;\n }\n }\n\n if ( typeof item.ifRancherCluster !== 'undefined' && item.ifRancherCluster !== rootGetters.isRancher ) {\n continue;\n }\n\n if (item.ifFeature) {\n if (item.ifFeature[0] === '!') {\n const feature = item.ifFeature.replace('!', '');\n\n if (rootGetters['features/get'](feature)) {\n continue;\n }\n } else {\n if (!rootGetters['features/get'](item.ifFeature)) {\n continue;\n }\n }\n }\n\n if (virtSpoofedModes.includes(TYPE_MODES.BASIC) && !getters.groupForBasicType(product, id) ) {\n virtSpoofedModes.splice(virtSpoofedModes.indexOf(TYPE_MODES.BASIC), 1);\n }\n\n if (virtSpoofedModes.includes(TYPE_MODES.FAVORITE) && !getters.isFavorite(id) ) { // mode === TYPE_MODES.FAVORITE &&\n virtSpoofedModes.splice(virtSpoofedModes.indexOf(TYPE_MODES.FAVORITE), 1);\n }\n\n // Ensure labelKey is taken into account... with a mock count\n // This is harmless if the translation doesn't require count\n if (item.labelKey && rootGetters['i18n/exists'](item.labelKey)) {\n item.label = rootGetters['i18n/t'](item.labelKey, { count: 2 }).trim();\n delete item.labelKey; // Label should really take precedence over labelKey, but it doesn't, so remove it\n } else {\n item.label = item.label || item.name;\n }\n\n virtSpoofedModes.forEach((mode) => {\n const isBasic = mode === TYPE_MODES.BASIC;\n const weight = type.weight || getters.typeWeightFor(item.label, isBasic);\n\n item.mode = mode;\n item.weight = weight;\n if (!out[mode]) {\n out[mode] = {};\n }\n out[mode][id] = item;\n });\n }\n }\n\n return out;\n };\n },\n\n groupByFor(state) {\n return (schema) => {\n return state.groupBy[schema?.id];\n };\n },\n\n hideBulkActionsFor(state) {\n return (schema) => {\n return state.hideBulkActions[schema.id];\n };\n },\n\n headersFor(state, getters, rootState, rootGetters) {\n return (schema, pagination) => {\n if (pagination) {\n const storeHeadersFor = schema?.$ctx?.getters?.['headersFor'];\n\n if (storeHeadersFor) {\n const res = storeHeadersFor({ getters, state }, { schema, pagination });\n\n if (res) {\n return res;\n }\n }\n }\n\n return createHeaders({ rootGetters }, {\n headers: state.headers,\n typeOptions: getters['optionsFor'](schema, false),\n schema,\n columns: {\n state: STATE,\n name: NAME,\n namespace: NAMESPACE_COL,\n age: AGE,\n },\n pagination\n });\n };\n },\n\n /**\n * Simple getter to fetch pre-configured headers used in pagination\n */\n configuredPaginationHeaders(state) {\n return (schemaOrType) => state.paginationHeaders?.[schemaOrType.id || schemaOrType];\n },\n\n /**\n * Simple getter to fetch pre-configured headers (not used in paginated lists)\n */\n configuredHeaders(state) {\n return (schemaOrType) => state.headers?.[schemaOrType.id || schemaOrType];\n },\n\n // ------------------------------------\n // Custom list/detail/edit/header component detection\n //\n // Note: you can't refactor these into one function that does `@/${kind}/${type}`,\n // because babel needs some hardcoded idea where to look for the dependency.\n //\n // Note 2: Yes these are editing state in a getter for caching... it's ok, probably.\n // ------------------------------------\n hasCustomList(state, getters, rootState) {\n return (rawType) => {\n const key = getters.componentFor(rawType);\n\n return hasCustom(state, rootState, 'list', key, (key) => resolveList(key));\n };\n },\n\n hasCustomChart(state, getters, rootState) {\n return (rawType) => {\n const key = getters.componentFor(rawType);\n\n return hasCustom(state, rootState, 'chart', key, (key) => resolveChart(key));\n };\n },\n\n hasCustomDetail(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'detail', key, (key) => resolveDetail(key));\n };\n },\n\n hasGraph(state, getters) {\n return (resource) => {\n const typeOptions = getters['optionsFor'](resource);\n\n if (typeOptions && typeOptions.hasGraph) {\n return graphConfigMap[resource];\n }\n\n return null;\n };\n },\n\n hasCustomEdit(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'edit', key, (key) => resolveEdit(key));\n };\n },\n\n hasComponent(state, getters, rootState) {\n return (path) => {\n return hasCustom(state, rootState, 'edit', path, (path) => resolveEdit(path));\n };\n },\n\n hasCustomPromptRemove(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'promptRemove', key, () => require.resolve(`@shell/promptRemove/${ key }`));\n };\n },\n\n hasCustomWindowComponent(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'windowComponents', key, (key) => resolveWindowComponent(key));\n };\n },\n\n hasCustomMachineConfigComponent(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'machine-config', key, (key) => resolveMachineConfigComponent(key));\n };\n },\n\n hasCustomCloudCredentialComponent(state, getters, rootState) {\n return (rawType, subType) => {\n const key = getters.componentFor(rawType, subType);\n\n return hasCustom(state, rootState, 'cloud-credential', key, (key) => resolveCloudCredentialComponent(key));\n };\n },\n\n importComponent(state, getters) {\n return (path) => {\n return importEdit(path);\n };\n },\n\n importDialog(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'dialog', getters.componentFor(rawType, subType), importDialog);\n };\n },\n\n importList(state, getters, rootState) {\n return (rawType) => {\n return loadExtension(rootState, 'list', getters.componentFor(rawType), importList);\n };\n },\n\n importChart(state, getters, rootState) {\n return (rawType) => {\n return loadExtension(rootState, 'chart', getters.componentFor(rawType), importChart);\n };\n },\n\n importDetail(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'detail', getters.componentFor(rawType, subType), importDetail);\n };\n },\n\n importEdit(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'edit', getters.componentFor(rawType, subType), importEdit);\n };\n },\n\n importCustomPromptRemove(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'promptRemove', getters.componentFor(rawType, subType), importCustomPromptRemove);\n };\n },\n\n importWindowComponent(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'windowComponents', getters.componentFor(rawType, subType), importWindowComponent);\n };\n },\n\n importLogin(state, getters, rootState) {\n return (authType) => {\n return loadExtension(rootState, 'login', authType, importLogin);\n };\n },\n\n importMachineConfig(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'machine-config', getters.componentFor(rawType, subType), importMachineConfig);\n };\n },\n\n importCloudCredential(state, getters, rootState) {\n return (rawType, subType) => {\n return loadExtension(rootState, 'cloud-credential', getters.componentFor(rawType, subType), importCloudCredential);\n };\n },\n\n componentFor(state, getters) {\n return (type, subType) => {\n let key = type;\n\n if ( subType ) {\n key = `${ type }/${ subType }`;\n }\n\n if ( state.cache.componentFor[key] !== undefined ) {\n return state.cache.componentFor[key];\n }\n\n let out = type;\n\n const mapping = state.typeToComponentMappings.find((mapping) => {\n const re = stringToRegex(mapping.match);\n\n return re.test(key);\n });\n\n if ( mapping ) {\n out = mapping.replace;\n } else if ( subType ) {\n // Try again without the subType\n out = getters.componentFor(type);\n }\n\n state.cache.componentFor[key] = out;\n\n return out;\n };\n },\n\n isIgnored(state, getters, rootState, rootGetters) {\n return (schema) => {\n let out = false;\n\n for ( const rule of state.groupIgnore ) {\n const group = schema?.attributes?.group;\n\n if (group && group.match(stringToRegex(rule.type) && isObject(rule) && rule.type)) {\n out = rule.cb(rootGetters);\n break;\n }\n\n if ( group && typeof rule === 'string' && group.match(stringToRegex(rule)) ) {\n out = true;\n break;\n }\n }\n\n if ( !out ) {\n for ( const rule of state.typeIgnore ) {\n if ( schema.id.match(stringToRegex(rule)) ) {\n out = true;\n break;\n }\n }\n }\n\n state.cache.ignore[schema.id] = out;\n\n return out;\n };\n },\n\n activeProducts(state, getters, rootState, rootGetters) {\n const knownTypes = {};\n const knownGroups = {};\n const isDev = rootGetters['prefs/get'](VIEW_IN_API);\n\n if ( state.schemaGeneration < 0 ) {\n // This does nothing, but makes activeProducts depend on schemaGeneration\n // so that it can be used to update the product list on schema change.\n return;\n }\n\n return state.products.filter((p) => {\n const module = p.inStore;\n\n if ( p['public'] === false && !isDev ) {\n return false;\n }\n\n if ( p.ifGetter && !rootGetters[p.ifGetter] ) {\n return false;\n }\n\n if ( !knownTypes[module] ) {\n const schemas = rootGetters[`${ module }/all`](SCHEMA);\n\n knownTypes[module] = [];\n knownGroups[module] = [];\n\n for ( const s of schemas ) {\n knownTypes[module].push(s._id);\n\n if ( s._group ) {\n addObject(knownGroups[module], s._group);\n }\n }\n }\n\n if ( p.ifFeature) {\n const features = Array.isArray(p.ifFeature) ? p.ifFeature : [p.ifFeature];\n\n for (const f of features) {\n if (!rootGetters['features/get'](f)) {\n return false;\n }\n }\n }\n\n if ( p.ifHave && !ifHave(rootGetters, p.ifHave)) {\n return false;\n }\n\n if ( p.ifHaveType ) {\n const haveIds = knownTypes[module].filter((t) => t.match(stringToRegex(p.ifHaveType)) );\n\n if ( !haveIds.length ) {\n return false;\n }\n\n if ( p.ifHaveVerb && !ifHaveVerb(rootGetters, module, p.ifHaveVerb, haveIds)) {\n return false;\n }\n }\n\n if ( p.ifHaveGroup && !knownGroups[module].find((t) => t.match(stringToRegex(p.ifHaveGroup)) ) ) {\n return false;\n }\n\n return true;\n });\n },\n\n isProductActive(state, getters) {\n return (name) => {\n if ( findBy(getters['activeProducts'], 'name', name) ) {\n return true;\n }\n\n return false;\n };\n },\n\n rowValueGetter(state) {\n return (schema, colName) => {\n const col = _findColumnByName(schema, colName);\n\n return rowValueGetter(col);\n };\n },\n\n isProductRegistered(state) {\n return (productName) => {\n const prod = state.products.find((p) => p.name === productName);\n\n return !!prod;\n };\n },\n\n productByName(state) {\n return (productName) => state.products.find((p) => p.name === productName);\n }\n};\n\nexport const mutations = {\n schemaChanged(state) {\n state.schemaGeneration = state.schemaGeneration + 1;\n },\n\n // Remove the specified product\n remove(state, { product, plugin }) {\n const existing = state.products.findIndex((p) => p.name === product);\n\n // Remove the product\n if (existing !== -1) {\n state.products.splice(existing, 1);\n }\n\n // Go through the basic types and remove the headers\n if (state.virtualTypes[product]) {\n delete state.virtualTypes[product];\n }\n\n if (state.basicTypes[product]) {\n // Remove table header configuration\n Object.keys(state.basicTypes[product]).forEach((type) => {\n delete state.headers[type];\n delete state.basicTypeWeights[type];\n delete state.cache.ignore[type];\n // These track whether the type has a custom component\n delete state.cache.detail[type];\n delete state.cache.edit[type];\n delete state.cache.list[type];\n\n // Delete all of the entries from the componentFor cache where the valye is the type\n // Can do this more efficiently\n Object.keys(state.cache.componentFor).forEach((k) => {\n const v = state.cache.componentFor[k];\n\n if (v === type) {\n delete state.cache.componentFor[k];\n }\n });\n });\n\n delete state.basicTypes[product];\n }\n\n if (plugin) {\n // kind is list, edit, detail etc\n Object.keys(plugin.types).forEach((kind) => {\n if (state.cache[kind]) {\n Object.keys(plugin.types[kind]).forEach((type) => {\n delete state.cache[kind][type];\n });\n }\n });\n }\n },\n\n product(state, obj) {\n let existing = state.products.find((p) => p.name === obj.name);\n\n if ( existing ) {\n Object.assign(existing, obj);\n } else {\n addObject(state.products, obj);\n existing = state.products.find((p) => p.name === obj.name);\n }\n\n // Make sure deprecated `inExplorer` is synchronized with `rootProduct` (and vice-versa)\n if (existing?.inExplorer) {\n existing.rootProduct = EXPLORER;\n } else if (existing?.rootProduct === EXPLORER) {\n existing.inExplorer = true;\n }\n\n // We make an assumption that if the store for a product is 'cluster' it will be displayed within cluster explorer\n // Detect that here and set rootProduct and inExporer in this case\n if (!existing?.rootProduct && existing?.inStore === 'cluster') {\n existing.rootProduct = EXPLORER;\n existing.inExplorer = (existing.rootProduct === EXPLORER);\n }\n },\n\n virtualType(state, { product, obj }) {\n if ( !state.virtualTypes[product] ) {\n state.virtualTypes[product] = [];\n }\n\n const copy = clone(obj);\n\n copy.virtual = true;\n\n const existing = findBy(state.virtualTypes[product], 'name', copy.name);\n\n if ( existing ) {\n Object.assign(existing, copy);\n } else {\n addObject(state.virtualTypes[product], copy);\n }\n },\n\n spoofedType(state, { product, obj }) {\n if ( !state.spoofedTypes[product] ) {\n state.spoofedTypes[product] = [];\n }\n\n const copy = clone(obj);\n\n instanceMethods[product] = instanceMethods[product] || {};\n instanceMethods[product][copy.type] = copy.getInstances;\n delete copy.getInstances;\n\n copy.name = copy.type;\n copy.isSpoofed = true;\n copy.virtual = true;\n copy.schemas.forEach((schema) => {\n schema.links = {\n collection: `/${ SPOOFED_PREFIX }/${ schema.id }`,\n ...(schema.links || {})\n };\n });\n\n const existing = findBy(state.spoofedTypes[product], 'type', copy.type);\n\n if ( existing ) {\n Object.assign(existing, copy);\n } else {\n addObject(state.spoofedTypes[product], copy);\n }\n },\n\n basicType(state, { product, group, types }) {\n if ( !product ) {\n product = EXPLORER;\n }\n\n if ( !group ) {\n group = ROOT;\n }\n\n if ( !isArray(types) ) {\n types = [types];\n }\n\n if ( !state.basicTypes[product] ) {\n state.basicTypes[product] = {};\n }\n\n for ( const t of types ) {\n state.basicTypes[product][t] = group;\n }\n },\n\n ignoreGroup(state, { regexOrString: match, cb }) {\n match = ensureRegex(match);\n // State shouldn't contain actual RegExp objects, because they don't serialize\n cb ? state.groupIgnore.push({\n type: regexToString(match),\n cb\n }) : state.groupIgnore.push(regexToString(match));\n },\n\n ignoreType(state, match) {\n match = ensureRegex(match);\n state.typeIgnore.push(regexToString(match));\n },\n\n groupBy(state, { type, field }) {\n state.groupBy[type] = field;\n },\n\n headers(state, { type, headers }) {\n state.headers[type] = headers;\n },\n\n paginationHeaders(state, { type, paginationHeaders }) {\n state.paginationHeaders[type] = paginationHeaders;\n },\n\n hideBulkActions(state, { type, field }) {\n state.hideBulkActions[type] = field;\n },\n\n // weightGroup({group: 'core', weight: 99}); -- higher groups are shown first\n // These operate on group names *after* mapping but *before* translation\n weightGroup(state, {\n group, groups, weight, forBasic\n }) {\n if ( !groups ) {\n groups = [];\n }\n\n if ( group ) {\n groups.push(group);\n }\n\n const map = forBasic ? state.basicGroupWeights : state.groupWeights;\n\n for ( const g of groups ) {\n map[g.toLowerCase()] = weight;\n }\n },\n\n // setGroupDefaultType({group: 'core', defaultType: 'name'});\n // By default when a group is clicked, the first item is selected - this allows\n // this behaviour to be changed and a named child type can be chosen\n // These operate on group names *after* mapping but *before* translation\n setGroupDefaultType(state, { group, groups, defaultType }) {\n if ( !groups ) {\n groups = [];\n }\n\n if ( group ) {\n groups.push(group);\n }\n\n for ( const g of groups ) {\n state.groupDefaultTypes[g.toLowerCase()] = defaultType;\n }\n },\n\n // weightType('Cluster' 99); -- higher groups are shown first\n // These operate on *schema* type names, before mapping\n weightType(state, {\n type, types, weight, forBasic\n }) {\n if ( !types ) {\n types = [];\n }\n\n if ( type ) {\n types.push(type);\n }\n\n const map = forBasic ? state.basicTypeWeights : state.typeWeights;\n\n for ( const t of types ) {\n map[t.toLowerCase()] = weight;\n }\n },\n\n // mapGroup('ugly.thing', 'Nice Thing', 1);\n // mapGroup(/ugly.thing.(stuff)', '$1', 2);\n // mapGroup(/ugly.thing.(stuff)', function(groupStr, ruleObj, regexMatch, typeObj) { return ucFirst(group.id) } , 2);\n mapGroup(state, {\n match, replace, weight = 5, continueOnMatch = false\n }) {\n _addMapping(state.groupMappings, match, replace, weight, continueOnMatch);\n },\n\n mapType(state, {\n match, replace, weight = 5, continueOnMatch = false\n }) {\n _addMapping(state.typeMappings, match, replace, weight, continueOnMatch);\n },\n\n // moveType('apps.deployment', 'Core');\n moveType(state, { match, group, weight = 5 }) {\n _addMapping(state.typeMoveMappings, match, group, weight);\n },\n\n componentForType(state, { match, replace }) {\n match = ensureRegex(match);\n match = regexToString(match);\n state.typeToComponentMappings.push({ match, replace });\n },\n\n configureType(state, options) {\n const match = regexToString(ensureRegex(options.match));\n\n const idx = state.typeOptions.findIndex((obj) => obj.match === match);\n let obj = { ...options, match };\n\n if ( idx >= 0 ) {\n obj = Object.assign(state.typeOptions[idx], obj);\n state.typeOptions.splice(idx, 1, obj);\n } else {\n const obj = Object.assign({}, options, { match });\n\n state.typeOptions.push(obj);\n }\n },\n\n};\n\nexport const actions = {\n removeProduct({ commit }, metadata) {\n commit('remove', metadata);\n },\n\n addFavorite({ dispatch, rootGetters }, type) {\n const types = rootGetters['prefs/get'](FAVORITE_TYPES) || [];\n\n addObject(types, type);\n\n dispatch('prefs/set', { key: FAVORITE_TYPES, value: types }, { root: true });\n },\n\n removeFavorite({ dispatch, rootGetters }, type) {\n const types = rootGetters['prefs/get'](FAVORITE_TYPES) || [];\n\n removeObject(types, type);\n\n dispatch('prefs/set', { key: FAVORITE_TYPES, value: types }, { root: true });\n },\n\n toggleGroup({ dispatch, rootGetters }, { group, expanded }) {\n const groups = rootGetters['prefs/get'](EXPANDED_GROUPS);\n\n if ( expanded ) {\n addObject(groups, group);\n } else {\n removeObject(groups, group);\n }\n\n dispatch('prefs/set', { key: EXPANDED_GROUPS, value: groups }, { root: true });\n },\n\n configureType({ commit }, options) {\n commit('configureType', options);\n }\n};\n\nfunction _sortGroup(tree, mode) {\n const by = ['weight:desc', 'namespaced', 'label'];\n\n tree.children = sortBy(tree.children, by);\n\n for (const entry of tree.children ) {\n if ( entry.children ) {\n _sortGroup(entry, mode);\n }\n }\n}\n\nfunction _applyMapping(objOrValue, mappings, keyField, cache, defaultFn) {\n let key = objOrValue;\n let found = false;\n\n if ( keyField ) {\n if ( typeof objOrValue !== 'object' ) {\n return objOrValue;\n }\n\n key = get(objOrValue, keyField);\n\n if ( typeof key !== 'string' ) {\n return null;\n }\n }\n\n if ( key && cache && cache[key] ) {\n return cache[key];\n }\n\n let out = `${ key }`;\n\n for ( const rule of mappings ) {\n const re = stringToRegex(rule.match);\n const captured = out.match(re);\n\n if ( captured && rule.replace ) {\n out = out.replace(re, rule.replace);\n\n found = true;\n if ( !rule.continueOnMatch ) {\n break;\n }\n }\n }\n\n if ( !found && defaultFn ) {\n out = defaultFn(out, objOrValue);\n }\n\n if ( cache ) {\n cache[key] = out;\n }\n\n return out;\n}\n\nfunction _addMapping(mappings, match, replace, weight, continueOnMatch) {\n match = regexToString(ensureRegex(match));\n\n mappings.push({\n match,\n replace,\n weight,\n continueOnMatch,\n insertIndex: mappings.length,\n });\n\n // Re-sort the list by weight (highest first) and insert time (oldest first)\n mappings.sort((a, b) => {\n const pri = b.weight - a.weight;\n\n if ( pri ) {\n return pri;\n }\n\n return a.insertIndex - b.insertIndex;\n });\n}\n\n// Regexes can't be represented in state because they don't serialize to JSON..\nconst regexCache = {};\n\nfunction regexToString(regex) {\n return regex.source;\n}\n\nfunction stringToRegex(str) {\n let out = regexCache[str];\n\n if ( !out ) {\n out = new RegExp(str);\n regexCache[str] = out;\n }\n\n return out;\n}\n\nfunction ifHave(getters, option) {\n switch (option) {\n case IF_HAVE.V2_MONITORING: {\n return haveV2Monitoring(getters);\n }\n case IF_HAVE.PROJECT: {\n return !!project(getters);\n }\n case IF_HAVE.NO_PROJECT: {\n return !project(getters);\n }\n case IF_HAVE.NOT_V1_ISTIO: {\n return !isV1Istio(getters);\n }\n case IF_HAVE.MULTI_CLUSTER: {\n return getters.isMultiCluster;\n }\n case IF_HAVE.NEUVECTOR_NAMESPACE: {\n return getters[`cluster/all`](NAMESPACE).find((n) => n.metadata.name === NEU_VECTOR_NAMESPACE);\n }\n case IF_HAVE.ADMIN: {\n return isAdminUser(getters);\n }\n case IF_HAVE.MCM_DISABLED: {\n return !getters['isRancherInHarvester'];\n }\n case IF_HAVE.NOT_STANDALONE_HARVESTER: {\n return !getters['isStandaloneHarvester'];\n }\n default:\n return false;\n }\n}\n\n// Could list a larger set of resources that typically only an admin user would have\nexport function isAdminUser(getters) {\n const canEditSettings = (getters['management/schemaFor'](MANAGEMENT.SETTING)?.resourceMethods || []).includes('PUT');\n const canEditFeatureFlags = (getters['management/schemaFor'](MANAGEMENT.FEATURE)?.resourceMethods || []).includes('PUT');\n const canInstallApps = (getters['management/schemaFor'](CATALOG.APP)?.resourceMethods || []).includes('PUT');\n const canAddRepos = (getters['management/schemaFor'](CATALOG.CLUSTER_REPO)?.resourceMethods || []).includes('PUT');\n const canPutHelmOperations = (getters['management/schemaFor'](CATALOG.OPERATION)?.resourceMethods || []).includes('PUT');\n\n return canEditSettings && canEditFeatureFlags && canInstallApps && canAddRepos && canPutHelmOperations;\n}\n\nfunction _findColumnByName(schema, colName) {\n const attributes = schema.attributes || {};\n const columns = attributes.columns || [];\n\n return findBy(columns, 'name', colName);\n}\n\n// Is V1 Istio installed?\nfunction isV1Istio(getters) {\n const cluster = getters['currentCluster'];\n\n return !!cluster?.status?.istioEnabled;\n}\n\nfunction ifHaveVerb(rootGetters, module, verb, haveIds) {\n for ( const haveId of haveIds ) {\n const schema = rootGetters[`${ module }/schemaFor`](haveId);\n const want = verb.toLowerCase();\n const collectionMethods = schema.collectionMethods || [];\n const resourceMethods = schema.resourceMethods || [];\n const have = [...collectionMethods, ...resourceMethods].map((x) => x.toLowerCase());\n\n if ( !have.includes(want) && !have.includes(`blocked-${ want }`) ) {\n return false;\n }\n }\n\n return true;\n}\n\n// Look at the namespace filters to determine if a project is selected\nexport function project(getters) {\n const clusterId = getters['currentCluster']?.id;\n\n if ( !clusterId ) {\n return null;\n }\n\n const filters = getters['namespaceFilters'];\n const namespaces = [];\n let projectName = null;\n\n for (const filter of filters) {\n const [type, id] = filter.split('://', 2);\n\n if (type === 'project') {\n if (projectName !== null) {\n // More than one project selected\n return null;\n }\n projectName = id;\n } else if (type === 'ns') {\n namespaces.push(id);\n } else {\n // Something other than project or namespace\n return null;\n }\n }\n\n // No project found?\n if (!projectName) {\n return null;\n }\n\n // We have one project and a set of namespaces\n // Check that all of the namespaces belong to the project\n const project = getters['management/byId'](MANAGEMENT.PROJECT, `${ clusterId }/${ projectName }`);\n\n // No additional namespaces means just the project is selected\n if (namespaces.length === 0) {\n return project;\n }\n\n // Convert the project namespaces into a map so we can check existence easily\n const prjNamespaceMap = project.namespaces.reduce((m, ns) => {\n m[ns.metadata.name] = true;\n\n return m;\n }, {});\n\n // All of the namespace filters must belong to the project\n const found = namespaces.reduce((total, ns) => {\n return prjNamespaceMap[ns] ? total + 1 : 0;\n }, 0);\n\n if (found !== namespaces.length) {\n return null;\n }\n\n return project;\n}\n\nfunction hasCustom(state, rootState, kind, key, fallback) {\n const cache = state.cache[kind];\n\n if ( cache[key] !== undefined ) {\n return cache[key];\n }\n\n // Check to see if the custom kind is provided by a plugin\n if (!!rootState.$plugin.getDynamic(kind, key)) {\n cache[key] = true;\n\n return cache[key];\n }\n\n // Fallback\n try {\n fallback(key);\n cache[key] = true;\n } catch (e) {\n cache[key] = false;\n }\n\n return cache[key];\n}\n\nfunction loadExtension(rootState, kind, key, fallback) {\n const ext = rootState.$plugin.getDynamic(kind, key);\n\n if (ext) {\n if (typeof ext === 'function') {\n return ext;\n }\n\n return () => ext;\n }\n\n return fallback(key);\n}\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".version-badge[data-v-1e73a328]{background:var(--primary);color:var(--primary-text);border-radius:var(--border-radius);padding:4px 8px}.install-route[data-v-1e73a328]{display:flex;justify-content:center;align-items:center}.reporter__header[data-v-1e73a328]{display:flex;justify-content:right;align-items:center}.reporter__container iframe[data-v-1e73a328]{width:100%;height:80vh}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @param {string} value\n * @returns {RegExp}\n * */\nfunction escape(value) {\n return new RegExp(value.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'm');\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n\n return re.source;\n}\n\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */\nfunction lookahead(re) {\n return concat('(?=', re, ')');\n}\n\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */\nfunction concat(...args) {\n const joined = args.map((x) => source(x)).join(\"\");\n return joined;\n}\n\n/**\n * @param { Array } args\n * @returns {object}\n */\nfunction stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n\n if (typeof opts === 'object' && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n\n/** @typedef { {capture?: boolean} } RegexEitherOptions */\n\n/**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */\nfunction either(...args) {\n /** @type { object & {capture?: boolean} } */\n const opts = stripOptionsFromArgs(args);\n const joined = '('\n + (opts.capture ? \"\" : \"?:\")\n + args.map((x) => source(x)).join(\"|\") + \")\";\n return joined;\n}\n\n/*\nLanguage: F#\nAuthor: Jonas Follesø \nContributors: Troy Kershaw , Henrik Feldt , Melvyn Laïly \nWebsite: https://docs.microsoft.com/en-us/dotnet/fsharp/\nCategory: functional\n*/\n\n/** @type LanguageFn */\nfunction fsharp(hljs) {\n const KEYWORDS = [\n \"abstract\",\n \"and\",\n \"as\",\n \"assert\",\n \"base\",\n \"begin\",\n \"class\",\n \"default\",\n \"delegate\",\n \"do\",\n \"done\",\n \"downcast\",\n \"downto\",\n \"elif\",\n \"else\",\n \"end\",\n \"exception\",\n \"extern\",\n // \"false\", // literal\n \"finally\",\n \"fixed\",\n \"for\",\n \"fun\",\n \"function\",\n \"global\",\n \"if\",\n \"in\",\n \"inherit\",\n \"inline\",\n \"interface\",\n \"internal\",\n \"lazy\",\n \"let\",\n \"match\",\n \"member\",\n \"module\",\n \"mutable\",\n \"namespace\",\n \"new\",\n // \"not\", // built_in\n // \"null\", // literal\n \"of\",\n \"open\",\n \"or\",\n \"override\",\n \"private\",\n \"public\",\n \"rec\",\n \"return\",\n \"static\",\n \"struct\",\n \"then\",\n \"to\",\n // \"true\", // literal\n \"try\",\n \"type\",\n \"upcast\",\n \"use\",\n \"val\",\n \"void\",\n \"when\",\n \"while\",\n \"with\",\n \"yield\"\n ];\n\n const BANG_KEYWORD_MODE = {\n // monad builder keywords (matches before non-bang keywords)\n scope: 'keyword',\n match: /\\b(yield|return|let|do|match|use)!/\n };\n\n const PREPROCESSOR_KEYWORDS = [\n \"if\",\n \"else\",\n \"endif\",\n \"line\",\n \"nowarn\",\n \"light\",\n \"r\",\n \"i\",\n \"I\",\n \"load\",\n \"time\",\n \"help\",\n \"quit\"\n ];\n\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"Some\",\n \"None\",\n \"Ok\",\n \"Error\",\n \"infinity\",\n \"infinityf\",\n \"nan\",\n \"nanf\"\n ];\n\n const SPECIAL_IDENTIFIERS = [\n \"__LINE__\",\n \"__SOURCE_DIRECTORY__\",\n \"__SOURCE_FILE__\"\n ];\n\n // Since it's possible to re-bind/shadow names (e.g. let char = 'c'),\n // these builtin types should only be matched when a type name is expected.\n const KNOWN_TYPES = [\n // basic types\n \"bool\",\n \"byte\",\n \"sbyte\",\n \"int8\",\n \"int16\",\n \"int32\",\n \"uint8\",\n \"uint16\",\n \"uint32\",\n \"int\",\n \"uint\",\n \"int64\",\n \"uint64\",\n \"nativeint\",\n \"unativeint\",\n \"decimal\",\n \"float\",\n \"double\",\n \"float32\",\n \"single\",\n \"char\",\n \"string\",\n \"unit\",\n \"bigint\",\n // other native types or lowercase aliases\n \"option\",\n \"voption\",\n \"list\",\n \"array\",\n \"seq\",\n \"byref\",\n \"exn\",\n \"inref\",\n \"nativeptr\",\n \"obj\",\n \"outref\",\n \"voidptr\",\n // other important FSharp types\n \"Result\"\n ];\n\n const BUILTINS = [\n // Somewhat arbitrary list of builtin functions and values.\n // Most of them are declared in Microsoft.FSharp.Core\n // I tried to stay relevant by adding only the most idiomatic\n // and most used symbols that are not already declared as types.\n \"not\",\n \"ref\",\n \"raise\",\n \"reraise\",\n \"dict\",\n \"readOnlyDict\",\n \"set\",\n \"get\",\n \"enum\",\n \"sizeof\",\n \"typeof\",\n \"typedefof\",\n \"nameof\",\n \"nullArg\",\n \"invalidArg\",\n \"invalidOp\",\n \"id\",\n \"fst\",\n \"snd\",\n \"ignore\",\n \"lock\",\n \"using\",\n \"box\",\n \"unbox\",\n \"tryUnbox\",\n \"printf\",\n \"printfn\",\n \"sprintf\",\n \"eprintf\",\n \"eprintfn\",\n \"fprintf\",\n \"fprintfn\",\n \"failwith\",\n \"failwithf\"\n ];\n\n const ALL_KEYWORDS = {\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTINS,\n 'variable.constant': SPECIAL_IDENTIFIERS\n };\n\n // (* potentially multi-line Meta Language style comment *)\n const ML_COMMENT =\n hljs.COMMENT(/\\(\\*(?!\\))/, /\\*\\)/, {\n contains: [\"self\"]\n });\n // Either a multi-line (* Meta Language style comment *) or a single line // C style comment.\n const COMMENT = {\n variants: [\n ML_COMMENT,\n hljs.C_LINE_COMMENT_MODE,\n ]\n };\n\n // Most identifiers can contain apostrophes\n const IDENTIFIER_RE = /[a-zA-Z_](\\w|')*/;\n\n const QUOTED_IDENTIFIER = {\n scope: 'variable',\n begin: /``/,\n end: /``/\n };\n\n // 'a or ^a where a can be a ``quoted identifier``\n const BEGIN_GENERIC_TYPE_SYMBOL_RE = /\\B('|\\^)/;\n const GENERIC_TYPE_SYMBOL = {\n scope: 'symbol',\n variants: [\n // the type name is a quoted identifier:\n { match: concat(BEGIN_GENERIC_TYPE_SYMBOL_RE, /``.*?``/) },\n // the type name is a normal identifier (we don't use IDENTIFIER_RE because there cannot be another apostrophe here):\n { match: concat(BEGIN_GENERIC_TYPE_SYMBOL_RE, hljs.UNDERSCORE_IDENT_RE) }\n ],\n relevance: 0\n };\n\n const makeOperatorMode = function({ includeEqual }) {\n // List or symbolic operator characters from the FSharp Spec 4.1, minus the dot, and with `?` added, used for nullable operators.\n let allOperatorChars;\n if (includeEqual)\n allOperatorChars = \"!%&*+-/<=>@^|~?\";\n else\n allOperatorChars = \"!%&*+-/<>@^|~?\";\n const OPERATOR_CHARS = Array.from(allOperatorChars);\n const OPERATOR_CHAR_RE = concat('[', ...OPERATOR_CHARS.map(escape), ']');\n // The lone dot operator is special. It cannot be redefined, and we don't want to highlight it. It can be used as part of a multi-chars operator though.\n const OPERATOR_CHAR_OR_DOT_RE = either(OPERATOR_CHAR_RE, /\\./);\n // When a dot is present, it must be followed by another operator char:\n const OPERATOR_FIRST_CHAR_OF_MULTIPLE_RE = concat(OPERATOR_CHAR_OR_DOT_RE, lookahead(OPERATOR_CHAR_OR_DOT_RE));\n const SYMBOLIC_OPERATOR_RE = either(\n concat(OPERATOR_FIRST_CHAR_OF_MULTIPLE_RE, OPERATOR_CHAR_OR_DOT_RE, '*'), // Matches at least 2 chars operators\n concat(OPERATOR_CHAR_RE, '+'), // Matches at least one char operators\n );\n return {\n scope: 'operator',\n match: either(\n // symbolic operators:\n SYMBOLIC_OPERATOR_RE,\n // other symbolic keywords:\n // Type casting and conversion operators:\n /:\\?>/,\n /:\\?/,\n /:>/,\n /:=/, // Reference cell assignment\n /::?/, // : or ::\n /\\$/), // A single $ can be used as an operator\n relevance: 0\n };\n };\n\n const OPERATOR = makeOperatorMode({ includeEqual: true });\n // This variant is used when matching '=' should end a parent mode:\n const OPERATOR_WITHOUT_EQUAL = makeOperatorMode({ includeEqual: false });\n\n const makeTypeAnnotationMode = function(prefix, prefixScope) {\n return {\n begin: concat( // a type annotation is a\n prefix, // should be a colon or the 'of' keyword\n lookahead( // that has to be followed by\n concat(\n /\\s*/, // optional space\n either( // then either of:\n /\\w/, // word\n /'/, // generic type name\n /\\^/, // generic type name\n /#/, // flexible type name\n /``/, // quoted type name\n /\\(/, // parens type expression\n /{\\|/, // anonymous type annotation\n )))),\n beginScope: prefixScope,\n // BUG: because ending with \\n is necessary for some cases, multi-line type annotations are not properly supported.\n // Examples where \\n is required at the end:\n // - abstract member definitions in classes: abstract Property : int * string\n // - return type annotations: let f f' = f' () : returnTypeAnnotation\n // - record fields definitions: { A : int \\n B : string }\n end: lookahead(\n either(\n /\\n/,\n /=/)),\n relevance: 0,\n // we need the known types, and we need the type constraint keywords and literals. e.g.: when 'a : null\n keywords: hljs.inherit(ALL_KEYWORDS, { type: KNOWN_TYPES }),\n contains: [\n COMMENT,\n GENERIC_TYPE_SYMBOL,\n hljs.inherit(QUOTED_IDENTIFIER, { scope: null }), // match to avoid strange patterns inside that may break the parsing\n OPERATOR_WITHOUT_EQUAL\n ]\n };\n };\n\n const TYPE_ANNOTATION = makeTypeAnnotationMode(/:/, 'operator');\n const DISCRIMINATED_UNION_TYPE_ANNOTATION = makeTypeAnnotationMode(/\\bof\\b/, 'keyword');\n\n // type MyType<'a> = ...\n const TYPE_DECLARATION = {\n begin: [\n /(^|\\s+)/, // prevents matching the following: `match s.stype with`\n /type/,\n /\\s+/,\n IDENTIFIER_RE\n ],\n beginScope: {\n 2: 'keyword',\n 4: 'title.class'\n },\n end: lookahead(/\\(|=|$/),\n keywords: ALL_KEYWORDS, // match keywords in type constraints. e.g.: when 'a : null\n contains: [\n COMMENT,\n hljs.inherit(QUOTED_IDENTIFIER, { scope: null }), // match to avoid strange patterns inside that may break the parsing\n GENERIC_TYPE_SYMBOL,\n {\n // For visual consistency, highlight type brackets as operators.\n scope: 'operator',\n match: /<|>/\n },\n TYPE_ANNOTATION // generic types can have constraints, which are type annotations. e.g. type MyType<'T when 'T : delegate> =\n ]\n };\n\n const COMPUTATION_EXPRESSION = {\n // computation expressions:\n scope: 'computation-expression',\n // BUG: might conflict with record deconstruction. e.g. let f { Name = name } = name // will highlight f\n match: /\\b[_a-z]\\w*(?=\\s*\\{)/\n };\n\n const PREPROCESSOR = {\n // preprocessor directives and fsi commands:\n begin: [\n /^\\s*/,\n concat(/#/, either(...PREPROCESSOR_KEYWORDS)),\n /\\b/\n ],\n beginScope: { 2: 'meta' },\n end: lookahead(/\\s|$/)\n };\n\n // TODO: this definition is missing support for type suffixes and octal notation.\n // BUG: range operator without any space is wrongly interpreted as a single number (e.g. 1..10 )\n const NUMBER = {\n variants: [\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n\n // All the following string definitions are potentially multi-line.\n // BUG: these definitions are missing support for byte strings (suffixed with B)\n\n // \"...\"\n const QUOTED_STRING = {\n scope: 'string',\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n };\n // @\"...\"\n const VERBATIM_STRING = {\n scope: 'string',\n begin: /@\"/,\n end: /\"/,\n contains: [\n {\n match: /\"\"/ // escaped \"\n },\n hljs.BACKSLASH_ESCAPE\n ]\n };\n // \"\"\"...\"\"\"\n const TRIPLE_QUOTED_STRING = {\n scope: 'string',\n begin: /\"\"\"/,\n end: /\"\"\"/,\n relevance: 2\n };\n const SUBST = {\n scope: 'subst',\n begin: /\\{/,\n end: /\\}/,\n keywords: ALL_KEYWORDS\n };\n // $\"...{1+1}...\"\n const INTERPOLATED_STRING = {\n scope: 'string',\n begin: /\\$\"/,\n end: /\"/,\n contains: [\n {\n match: /\\{\\{/ // escaped {\n },\n {\n match: /\\}\\}/ // escaped }\n },\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n // $@\"...{1+1}...\"\n const INTERPOLATED_VERBATIM_STRING = {\n scope: 'string',\n begin: /(\\$@|@\\$)\"/,\n end: /\"/,\n contains: [\n {\n match: /\\{\\{/ // escaped {\n },\n {\n match: /\\}\\}/ // escaped }\n },\n {\n match: /\"\"/\n },\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n // $\"\"\"...{1+1}...\"\"\"\n const INTERPOLATED_TRIPLE_QUOTED_STRING = {\n scope: 'string',\n begin: /\\$\"\"\"/,\n end: /\"\"\"/,\n contains: [\n {\n match: /\\{\\{/ // escaped {\n },\n {\n match: /\\}\\}/ // escaped }\n },\n SUBST\n ],\n relevance: 2\n };\n // '.'\n const CHAR_LITERAL = {\n scope: 'string',\n match: concat(\n /'/,\n either(\n /[^\\\\']/, // either a single non escaped char...\n /\\\\(?:.|\\d{3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}|U[a-fA-F\\d]{8})/ // ...or an escape sequence\n ),\n /'/\n )\n };\n // F# allows a lot of things inside string placeholders.\n // Things that don't currently seem allowed by the compiler: types definition, attributes usage.\n // (Strictly speaking, some of the followings are only allowed inside triple quoted interpolated strings...)\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n QUOTED_STRING,\n CHAR_LITERAL,\n BANG_KEYWORD_MODE,\n COMMENT,\n QUOTED_IDENTIFIER,\n TYPE_ANNOTATION,\n COMPUTATION_EXPRESSION,\n PREPROCESSOR,\n NUMBER,\n GENERIC_TYPE_SYMBOL,\n OPERATOR\n ];\n const STRING = {\n variants: [\n INTERPOLATED_TRIPLE_QUOTED_STRING,\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n TRIPLE_QUOTED_STRING,\n VERBATIM_STRING,\n QUOTED_STRING,\n CHAR_LITERAL\n ]\n };\n\n return {\n name: 'F#',\n aliases: [\n 'fs',\n 'f#'\n ],\n keywords: ALL_KEYWORDS,\n illegal: /\\/\\*/,\n classNameAliases: {\n 'computation-expression': 'keyword'\n },\n contains: [\n BANG_KEYWORD_MODE,\n STRING,\n COMMENT,\n QUOTED_IDENTIFIER,\n TYPE_DECLARATION,\n {\n // e.g. [] or [<``module``: MyCustomAttributeThatWorksOnModules>]\n // or []\n scope: 'meta',\n begin: /\\[\\]/,\n relevance: 2,\n contains: [\n QUOTED_IDENTIFIER,\n // can contain any constant value\n TRIPLE_QUOTED_STRING,\n VERBATIM_STRING,\n QUOTED_STRING,\n CHAR_LITERAL,\n NUMBER\n ]\n },\n DISCRIMINATED_UNION_TYPE_ANNOTATION,\n TYPE_ANNOTATION,\n COMPUTATION_EXPRESSION,\n PREPROCESSOR,\n NUMBER,\n GENERIC_TYPE_SYMBOL,\n OPERATOR\n ]\n };\n}\n\nmodule.exports = fsharp;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".unlabeled-select[data-v-6c2022f0]{position:relative}.unlabeled-select[data-v-6c2022f0] .v-select.select-input-view .vs__actions{visibility:hidden}.unlabeled-select .vs--multiple[data-v-6c2022f0] .vs__selected-options .vs__selected{width:auto}.unlabeled-select[data-v-6c2022f0] .labeled-tooltip.error .status-icon{top:7px;right:2px}.unlabeled-select[data-v-6c2022f0] .vs__selected-options{display:flex;margin:3px}.unlabeled-select[data-v-6c2022f0] .vs__selected-options .vs__selected{width:auto}.unlabeled-select[data-v-6c2022f0] .v-select.vs--open .vs__dropdown-toggle{color:var(--outline)!important}.unlabeled-select.focused.success[data-v-6c2022f0],.unlabeled-select.success[data-v-6c2022f0]{border:solid 1px var(--success)}.unlabeled-select.focused.success .selected[data-v-6c2022f0],.unlabeled-select.focused.success .vs__actions[data-v-6c2022f0]:after,.unlabeled-select.focused.success input[data-v-6c2022f0],.unlabeled-select.success .selected[data-v-6c2022f0],.unlabeled-select.success .vs__actions[data-v-6c2022f0]:after,.unlabeled-select.success input[data-v-6c2022f0]{color:var(--success)}.unlabeled-select.focused.warning[data-v-6c2022f0],.unlabeled-select.warning[data-v-6c2022f0]{border:solid 1px var(--warning)}.unlabeled-select.focused.warning .selected[data-v-6c2022f0],.unlabeled-select.focused.warning .vs__actions[data-v-6c2022f0]:after,.unlabeled-select.focused.warning input[data-v-6c2022f0],.unlabeled-select.warning .selected[data-v-6c2022f0],.unlabeled-select.warning .vs__actions[data-v-6c2022f0]:after,.unlabeled-select.warning input[data-v-6c2022f0]{color:var(--warning)}.unlabeled-select.error[data-v-6c2022f0],.unlabeled-select.focused.error[data-v-6c2022f0]{border:solid 1px var(--error)}.unlabeled-select.error .vs__actions[data-v-6c2022f0]:after,.unlabeled-select.error>label[data-v-6c2022f0],.unlabeled-select.focused.error .vs__actions[data-v-6c2022f0]:after,.unlabeled-select.focused.error>label[data-v-6c2022f0]{color:var(--error)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nconst Evaluator = require('./evaluator/Evaluator')\nconst Lexer = require('./Lexer')\nconst Parser = require('./parser/Parser')\nconst PromiseSync = require('./PromiseSync')\n\nclass Expression {\n constructor(lang, exprStr) {\n this._lang = lang\n this._lexer = new Lexer(lang.grammar)\n this._exprStr = exprStr\n this._ast = null\n }\n\n /**\n * Forces a compilation of the expression string that this Expression object\n * was constructed with. This function can be called multiple times; useful\n * if the language elements of the associated Jexl instance change.\n * @returns {Expression} this Expression instance, for convenience\n */\n compile() {\n const lexer = new Lexer(this._lang.grammar)\n const parser = new Parser(this._lang.grammar)\n const tokens = lexer.tokenize(this._exprStr)\n parser.addTokens(tokens)\n this._ast = parser.complete()\n return this\n }\n\n /**\n * Asynchronously evaluates the expression within an optional context.\n * @param {Object} [context] A mapping of variables to values, which will be\n * made accessible to the Jexl expression when evaluating it\n * @returns {Promise<*>} resolves with the result of the evaluation.\n */\n eval(context = {}) {\n return this._eval(context, Promise)\n }\n\n /**\n * Synchronously evaluates the expression within an optional context.\n * @param {Object} [context] A mapping of variables to values, which will be\n * made accessible to the Jexl expression when evaluating it\n * @returns {*} the result of the evaluation.\n * @throws {*} on error\n */\n evalSync(context = {}) {\n const res = this._eval(context, PromiseSync)\n if (res.error) throw res.error\n return res.value\n }\n\n _eval(context, promise) {\n return promise.resolve().then(() => {\n const ast = this._getAst()\n const evaluator = new Evaluator(\n this._lang.grammar,\n this._lang.transforms,\n context,\n undefined,\n promise\n )\n return evaluator.eval(ast)\n })\n }\n\n _getAst() {\n if (!this._ast) this.compile()\n return this._ast\n }\n}\n\nmodule.exports = Expression\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".labeled-tooltip{position:absolute;width:100%;height:100%;left:0;top:0}.labeled-tooltip.hoverable{height:0%}.labeled-tooltip .status-icon{position:absolute;right:30px;top:18px;z-index:3}.labeled-tooltip .tooltip{position:absolute;width:calc(100% + 2px);top:calc(100% + 6px)}.labeled-tooltip .tooltip .tooltip-arrow{right:30px}.labeled-tooltip .tooltip .tooltip-inner{padding:10px}.labeled-tooltip.error .status-icon{color:var(--error)}.labeled-tooltip.error .tooltip .tooltip-inner{color:var(--input-bg);background:var(--error);border-color:var(--error)}.labeled-tooltip.error .tooltip .tooltip-arrow{border-bottom-color:var(--error)}.labeled-tooltip.error .tooltip .tooltip-arrow:after{border:none}.labeled-tooltip.error .status-icon{top:7px;right:5px}.labeled-tooltip.warning .status-icon{color:var(--warning)}.labeled-tooltip.warning .tooltip .tooltip-inner{color:var(--input-bg);background:var(--warning);border-color:var(--warning)}.labeled-tooltip.warning .tooltip .tooltip-arrow{border-bottom-color:var(--warning)}.labeled-tooltip.warning .tooltip .tooltip-arrow:after{border:none}.labeled-tooltip.success .status-icon{color:var(--success)}.labeled-tooltip.success .tooltip .tooltip-inner{color:var(--input-bg);background:var(--success);border-color:var(--success)}.labeled-tooltip.success .tooltip .tooltip-arrow{border-bottom-color:var(--success)}.labeled-tooltip.success .tooltip .tooltip-arrow:after{border:none}.tooltip .tooltip-inner>pre{padding:2px;vertical-align:middle}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseUniq = require('./_baseUniq');\n\n/**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\nfunction baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n}\n\nmodule.exports = baseXor;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".radio-view{display:flex;flex-direction:column}.radio-view LABEL{color:var(--input-label)}.radio-group .text-label{display:block;padding-bottom:5px}.radio-container{position:relative;display:inline-flex;align-items:flex-start;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:var(--border-radius);padding-bottom:5px}.radio-container,.radio-container .radio-button-outer-container-description,.radio-container .radio-label{cursor:pointer}.radio-container.disabled,.radio-container.disabled .radio-button-outer-container-description,.radio-container.disabled .radio-label{cursor:not-allowed}.radio-container .radio-custom{height:14px;width:14px;min-height:14px;min-width:14px;background-color:var(--input-bg);border-radius:50%;transition:all .3s ease-out;border:1.5px solid var(--border);margin-top:5px}.radio-container .radio-custom:focus{outline:none;border-radius:50%}.radio-container input{display:none}.radio-container .radio-custom[aria-checked=true]{background-color:var(--primary);transform:rotate(0deg) scale(1);opacity:1;border:1.5px solid var(--primary)}.radio-container .radio-custom[aria-checked=true].text-muted{opacity:.25}.radio-container input:disabled~.radio-custom:not([aria-checked=true]){background-color:var(--disabled-bg);opacity:.25}.radio-container .radio-button-outer-container-description{color:var(--input-label);font-size:11px;margin-top:5px}.radio-container .labeling{display:inline-flex;flex-direction:column;margin:3px 10px 0 5px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AsyncButton.vue?vue&type=style&index=0&id=00e287a3&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"[data-v-c5877aee] .unlabeled-select{height:61px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/*\nLanguage: Makefile\nAuthor: Ivan Sagalaev \nContributors: Joël Porquet \nWebsite: https://www.gnu.org/software/make/manual/html_node/Introduction.html\nCategory: common\n*/\n\nfunction makefile(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */\n const VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n { begin: /\\$[@%': 7, '=': 8, '_v': 9,\n '{': 10, '&': 11, '_t': 12\n };\n\n Hogan.scan = function scan(text, delimiters) {\n var len = text.length,\n IN_TEXT = 0,\n IN_TAG_TYPE = 1,\n IN_TAG = 2,\n state = IN_TEXT,\n tagType = null,\n tag = null,\n buf = '',\n tokens = [],\n seenTag = false,\n i = 0,\n lineStart = 0,\n otag = '{{',\n ctag = '}}';\n\n function addBuf() {\n if (buf.length > 0) {\n tokens.push({tag: '_t', text: new String(buf)});\n buf = '';\n }\n }\n\n function lineIsWhitespace() {\n var isAllWhitespace = true;\n for (var j = lineStart; j < tokens.length; j++) {\n isAllWhitespace =\n (Hogan.tags[tokens[j].tag] < Hogan.tags['_v']) ||\n (tokens[j].tag == '_t' && tokens[j].text.match(rIsWhitespace) === null);\n if (!isAllWhitespace) {\n return false;\n }\n }\n\n return isAllWhitespace;\n }\n\n function filterLine(haveSeenTag, noNewLine) {\n addBuf();\n\n if (haveSeenTag && lineIsWhitespace()) {\n for (var j = lineStart, next; j < tokens.length; j++) {\n if (tokens[j].text) {\n if ((next = tokens[j+1]) && next.tag == '>') {\n // set indent to token value\n next.indent = tokens[j].text.toString()\n }\n tokens.splice(j, 1);\n }\n }\n } else if (!noNewLine) {\n tokens.push({tag:'\\n'});\n }\n\n seenTag = false;\n lineStart = tokens.length;\n }\n\n function changeDelimiters(text, index) {\n var close = '=' + ctag,\n closeIndex = text.indexOf(close, index),\n delimiters = trim(\n text.substring(text.indexOf('=', index) + 1, closeIndex)\n ).split(' ');\n\n otag = delimiters[0];\n ctag = delimiters[delimiters.length - 1];\n\n return closeIndex + close.length - 1;\n }\n\n if (delimiters) {\n delimiters = delimiters.split(' ');\n otag = delimiters[0];\n ctag = delimiters[1];\n }\n\n for (i = 0; i < len; i++) {\n if (state == IN_TEXT) {\n if (tagChange(otag, text, i)) {\n --i;\n addBuf();\n state = IN_TAG_TYPE;\n } else {\n if (text.charAt(i) == '\\n') {\n filterLine(seenTag);\n } else {\n buf += text.charAt(i);\n }\n }\n } else if (state == IN_TAG_TYPE) {\n i += otag.length - 1;\n tag = Hogan.tags[text.charAt(i + 1)];\n tagType = tag ? text.charAt(i + 1) : '_v';\n if (tagType == '=') {\n i = changeDelimiters(text, i);\n state = IN_TEXT;\n } else {\n if (tag) {\n i++;\n }\n state = IN_TAG;\n }\n seenTag = i;\n } else {\n if (tagChange(ctag, text, i)) {\n tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,\n i: (tagType == '/') ? seenTag - otag.length : i + ctag.length});\n buf = '';\n i += ctag.length - 1;\n state = IN_TEXT;\n if (tagType == '{') {\n if (ctag == '}}') {\n i++;\n } else {\n cleanTripleStache(tokens[tokens.length - 1]);\n }\n }\n } else {\n buf += text.charAt(i);\n }\n }\n }\n\n filterLine(seenTag, true);\n\n return tokens;\n }\n\n function cleanTripleStache(token) {\n if (token.n.substr(token.n.length - 1) === '}') {\n token.n = token.n.substring(0, token.n.length - 1);\n }\n }\n\n function trim(s) {\n if (s.trim) {\n return s.trim();\n }\n\n return s.replace(/^\\s*|\\s*$/g, '');\n }\n\n function tagChange(tag, text, index) {\n if (text.charAt(index) != tag.charAt(0)) {\n return false;\n }\n\n for (var i = 1, l = tag.length; i < l; i++) {\n if (text.charAt(index + i) != tag.charAt(i)) {\n return false;\n }\n }\n\n return true;\n }\n\n // the tags allowed inside super templates\n var allowedInSuper = {'_t': true, '\\n': true, '$': true, '/': true};\n\n function buildTree(tokens, kind, stack, customTags) {\n var instructions = [],\n opener = null,\n tail = null,\n token = null;\n\n tail = stack[stack.length - 1];\n\n while (tokens.length > 0) {\n token = tokens.shift();\n\n if (tail && tail.tag == '<' && !(token.tag in allowedInSuper)) {\n throw new Error('Illegal content in < super tag.');\n }\n\n if (Hogan.tags[token.tag] <= Hogan.tags['$'] || isOpener(token, customTags)) {\n stack.push(token);\n token.nodes = buildTree(tokens, token.tag, stack, customTags);\n } else if (token.tag == '/') {\n if (stack.length === 0) {\n throw new Error('Closing tag without opener: /' + token.n);\n }\n opener = stack.pop();\n if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {\n throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);\n }\n opener.end = token.i;\n return instructions;\n } else if (token.tag == '\\n') {\n token.last = (tokens.length == 0) || (tokens[0].tag == '\\n');\n }\n\n instructions.push(token);\n }\n\n if (stack.length > 0) {\n throw new Error('missing closing tag: ' + stack.pop().n);\n }\n\n return instructions;\n }\n\n function isOpener(token, tags) {\n for (var i = 0, l = tags.length; i < l; i++) {\n if (tags[i].o == token.n) {\n token.tag = '#';\n return true;\n }\n }\n }\n\n function isCloser(close, open, tags) {\n for (var i = 0, l = tags.length; i < l; i++) {\n if (tags[i].c == close && tags[i].o == open) {\n return true;\n }\n }\n }\n\n function stringifySubstitutions(obj) {\n var items = [];\n for (var key in obj) {\n items.push('\"' + esc(key) + '\": function(c,p,t,i) {' + obj[key] + '}');\n }\n return \"{ \" + items.join(\",\") + \" }\";\n }\n\n function stringifyPartials(codeObj) {\n var partials = [];\n for (var key in codeObj.partials) {\n partials.push('\"' + esc(key) + '\":{name:\"' + esc(codeObj.partials[key].name) + '\", ' + stringifyPartials(codeObj.partials[key]) + \"}\");\n }\n return \"partials: {\" + partials.join(\",\") + \"}, subs: \" + stringifySubstitutions(codeObj.subs);\n }\n\n Hogan.stringify = function(codeObj, text, options) {\n return \"{code: function (c,p,i) { \" + Hogan.wrapMain(codeObj.code) + \" },\" + stringifyPartials(codeObj) + \"}\";\n }\n\n var serialNo = 0;\n Hogan.generate = function(tree, text, options) {\n serialNo = 0;\n var context = { code: '', subs: {}, partials: {} };\n Hogan.walk(tree, context);\n\n if (options.asString) {\n return this.stringify(context, text, options);\n }\n\n return this.makeTemplate(context, text, options);\n }\n\n Hogan.wrapMain = function(code) {\n return 'var t=this;t.b(i=i||\"\");' + code + 'return t.fl();';\n }\n\n Hogan.template = Hogan.Template;\n\n Hogan.makeTemplate = function(codeObj, text, options) {\n var template = this.makePartials(codeObj);\n template.code = new Function('c', 'p', 'i', this.wrapMain(codeObj.code));\n return new this.template(template, text, this, options);\n }\n\n Hogan.makePartials = function(codeObj) {\n var key, template = {subs: {}, partials: codeObj.partials, name: codeObj.name};\n for (key in template.partials) {\n template.partials[key] = this.makePartials(template.partials[key]);\n }\n for (key in codeObj.subs) {\n template.subs[key] = new Function('c', 'p', 't', 'i', codeObj.subs[key]);\n }\n return template;\n }\n\n function esc(s) {\n return s.replace(rSlash, '\\\\\\\\')\n .replace(rQuot, '\\\\\\\"')\n .replace(rNewline, '\\\\n')\n .replace(rCr, '\\\\r')\n .replace(rLineSep, '\\\\u2028')\n .replace(rParagraphSep, '\\\\u2029');\n }\n\n function chooseMethod(s) {\n return (~s.indexOf('.')) ? 'd' : 'f';\n }\n\n function createPartial(node, context) {\n var prefix = \"<\" + (context.prefix || \"\");\n var sym = prefix + node.n + serialNo++;\n context.partials[sym] = {name: node.n, partials: {}};\n context.code += 't.b(t.rp(\"' + esc(sym) + '\",c,p,\"' + (node.indent || '') + '\"));';\n return sym;\n }\n\n Hogan.codegen = {\n '#': function(node, context) {\n context.code += 'if(t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),' +\n 'c,p,0,' + node.i + ',' + node.end + ',\"' + node.otag + \" \" + node.ctag + '\")){' +\n 't.rs(c,p,' + 'function(c,p,t){';\n Hogan.walk(node.nodes, context);\n context.code += '});c.pop();}';\n },\n\n '^': function(node, context) {\n context.code += 'if(!t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),c,p,1,0,0,\"\")){';\n Hogan.walk(node.nodes, context);\n context.code += '};';\n },\n\n '>': createPartial,\n '<': function(node, context) {\n var ctx = {partials: {}, code: '', subs: {}, inPartial: true};\n Hogan.walk(node.nodes, ctx);\n var template = context.partials[createPartial(node, context)];\n template.subs = ctx.subs;\n template.partials = ctx.partials;\n },\n\n '$': function(node, context) {\n var ctx = {subs: {}, code: '', partials: context.partials, prefix: node.n};\n Hogan.walk(node.nodes, ctx);\n context.subs[node.n] = ctx.code;\n if (!context.inPartial) {\n context.code += 't.sub(\"' + esc(node.n) + '\",c,p,i);';\n }\n },\n\n '\\n': function(node, context) {\n context.code += write('\"\\\\n\"' + (node.last ? '' : ' + i'));\n },\n\n '_v': function(node, context) {\n context.code += 't.b(t.v(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n },\n\n '_t': function(node, context) {\n context.code += write('\"' + esc(node.text) + '\"');\n },\n\n '{': tripleStache,\n\n '&': tripleStache\n }\n\n function tripleStache(node, context) {\n context.code += 't.b(t.t(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n }\n\n function write(s) {\n return 't.b(' + s + ');';\n }\n\n Hogan.walk = function(nodelist, context) {\n var func;\n for (var i = 0, l = nodelist.length; i < l; i++) {\n func = Hogan.codegen[nodelist[i].tag];\n func && func(nodelist[i], context);\n }\n return context;\n }\n\n Hogan.parse = function(tokens, text, options) {\n options = options || {};\n return buildTree(tokens, '', [], options.sectionTags || []);\n }\n\n Hogan.cache = {};\n\n Hogan.cacheKey = function(text, options) {\n return [text, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join('||');\n }\n\n Hogan.compile = function(text, options) {\n options = options || {};\n var key = Hogan.cacheKey(text, options);\n var template = this.cache[key];\n\n if (template) {\n var partials = template.partials;\n for (var name in partials) {\n delete partials[name].instance;\n }\n return template;\n }\n\n template = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);\n return this.cache[key] = template;\n }\n})(typeof exports !== 'undefined' ? exports : Hogan);\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.roletemplate.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./management.cattle.io.roletemplate.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./management.cattle.io.roletemplate.vue?vue&type=template&id=5050d908&scoped=true&\"\nimport script from \"./management.cattle.io.roletemplate.vue?vue&type=script&lang=js&\"\nexport * from \"./management.cattle.io.roletemplate.vue?vue&type=script&lang=js&\"\nimport style0 from \"./management.cattle.io.roletemplate.vue?vue&type=style&index=0&id=5050d908&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5050d908\",\n null\n \n)\n\nexport default component.exports","/*\nLanguage: C\nCategory: common, system\nWebsite: https://en.wikipedia.org/wiki/C_(programming_language)\n*/\n\n/** @type LanguageFn */\nfunction c(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$', { contains: [ { begin: /\\\\\\n/ } ] });\n const DECLTYPE_AUTO_RE = 'decltype\\\\(auto\\\\)';\n const NAMESPACE_RE = '[a-zA-Z_]\\\\w*::';\n const TEMPLATE_ARGUMENT_RE = '<[^<>]+>';\n const FUNCTION_TYPE_RE = '('\n + DECLTYPE_AUTO_RE + '|'\n + regex.optional(NAMESPACE_RE)\n + '[a-zA-Z_]\\\\w*' + regex.optional(TEMPLATE_ARGUMENT_RE)\n + ')';\n\n\n const TYPES = {\n className: 'type',\n variants: [\n { begin: '\\\\b[a-z\\\\d_]*_t\\\\b' },\n { match: /\\batomic_[a-z]{3,6}\\b/ }\n ]\n\n };\n\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = '\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)';\n const STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ]\n },\n {\n begin: '(u8?|U|L)?\\'(' + CHARACTER_ESCAPES + \"|.)\",\n end: '\\'',\n illegal: '.'\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n\n const NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n\n const PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: { keyword:\n 'if else elif endif define undef warning error line '\n + 'pragma _Pragma ifdef ifndef include' },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, { className: 'string' }),\n {\n className: 'string',\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n const TITLE_MODE = {\n className: 'title',\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + '\\\\s*\\\\(';\n\n const C_KEYWORDS = [\n \"asm\",\n \"auto\",\n \"break\",\n \"case\",\n \"continue\",\n \"default\",\n \"do\",\n \"else\",\n \"enum\",\n \"extern\",\n \"for\",\n \"fortran\",\n \"goto\",\n \"if\",\n \"inline\",\n \"register\",\n \"restrict\",\n \"return\",\n \"sizeof\",\n \"struct\",\n \"switch\",\n \"typedef\",\n \"union\",\n \"volatile\",\n \"while\",\n \"_Alignas\",\n \"_Alignof\",\n \"_Atomic\",\n \"_Generic\",\n \"_Noreturn\",\n \"_Static_assert\",\n \"_Thread_local\",\n // aliases\n \"alignas\",\n \"alignof\",\n \"noreturn\",\n \"static_assert\",\n \"thread_local\",\n // not a C keyword but is, for all intents and purposes, treated exactly like one.\n \"_Pragma\"\n ];\n\n const C_TYPES = [\n \"float\",\n \"double\",\n \"signed\",\n \"unsigned\",\n \"int\",\n \"short\",\n \"long\",\n \"char\",\n \"void\",\n \"_Bool\",\n \"_Complex\",\n \"_Imaginary\",\n \"_Decimal32\",\n \"_Decimal64\",\n \"_Decimal128\",\n // modifiers\n \"const\",\n \"static\",\n // aliases\n \"complex\",\n \"bool\",\n \"imaginary\"\n ];\n\n const KEYWORDS = {\n keyword: C_KEYWORDS,\n type: C_TYPES,\n literal: 'true false NULL',\n // TODO: apply hinting work similar to what was done in cpp.js\n built_in: 'std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream '\n + 'auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set '\n + 'unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos '\n + 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp '\n + 'fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper '\n + 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow '\n + 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp '\n + 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan '\n + 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n };\n\n const EXPRESSION_CONTAINS = [\n PREPROCESSOR,\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: 'new throw return else',\n end: /;/\n }\n ],\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([ 'self' ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n\n const FUNCTION_DECLARATION = {\n begin: '(' + FUNCTION_TYPE_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n { // to prevent it from being confused as the function title\n begin: DECLTYPE_AUTO_RE,\n keywords: KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [ hljs.inherit(TITLE_MODE, { className: \"title.function\" }) ],\n relevance: 0\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES\n ]\n }\n ]\n },\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n\n return {\n name: \"C\",\n aliases: [ 'h' ],\n keywords: KEYWORDS,\n // Until differentiations are added between `c` and `cpp`, `c` will\n // not be auto-detected to avoid auto-detect conflicts between C and C++\n disableAutodetect: true,\n illegal: '=]/,\n contains: [\n { beginKeywords: \"final class struct\" },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: KEYWORDS\n }\n };\n}\n\nmodule.exports = c;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".text.info[data-v-5050d908]{display:flex;align-items:center}.text.info>span[data-v-5050d908]{margin-right:5px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"yaml-editor\"},[_c('div',{staticClass:\"text-right\"},[(_vm.isPreview && !_vm.hidePreviewButtons)?_c('span',{directives:[{name:\"trim-whitespace\",rawName:\"v-trim-whitespace\"}],staticClass:\"btn-group btn-sm diff-mode\"},[_c('button',{staticClass:\"btn btn-sm bg-default\",class:{'active': _vm.diffMode !== 'split'},attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.diffMode='unified'}}},[_vm._v(\"Unified\")]),_c('button',{staticClass:\"btn btn-sm bg-default\",class:{'active': _vm.diffMode === 'split'},attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.diffMode='split'}}},[_vm._v(\"Split\")])]):_vm._e()]),(_vm.showCodeEditor)?_c('CodeMirror',{ref:\"cm\",class:{fill: true, scrolling: _vm.scrolling},attrs:{\"value\":_vm.curValue,\"options\":_vm.codeMirrorOptions,\"showKeyMapBox\":true,\"data-testid\":_vm.componentTestid + '-code-mirror'},on:{\"onInput\":_vm.onInput,\"onReady\":_vm.onReady,\"onChanges\":_vm.onChanges}}):_c('FileDiff',{class:{fill: true, scrolling: _vm.scrolling},attrs:{\"filename\":'.yaml',\"side-by-side\":_vm.diffMode === 'split',\"orig\":_vm.original,\"neu\":_vm.curValue,\"footer-space\":80}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('resize-observer',{on:{\"notify\":_vm.fit}}),_c('div',{ref:\"root\",staticClass:\"root\",attrs:{\"id\":\"diffElement\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileDiff.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./FileDiff.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FileDiff.vue?vue&type=template&id=0137ea75&scoped=true&\"\nimport script from \"./FileDiff.vue?vue&type=script&lang=js&\"\nexport * from \"./FileDiff.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileDiff.vue?vue&type=style&index=0&id=0137ea75&prod&lang=scss&scoped=true&\"\nimport style1 from \"./FileDiff.vue?vue&type=style&index=1&id=0137ea75&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0137ea75\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./YamlEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./YamlEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./YamlEditor.vue?vue&type=template&id=93239522&scoped=true&\"\nimport script from \"./YamlEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./YamlEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./YamlEditor.vue?vue&type=style&index=0&id=93239522&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93239522\",\n null\n \n)\n\nexport default component.exports","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".rules-row[data-v-6f396b80]{display:grid;grid-column-gap:1.75%;align-items:center}.global-rules[data-v-6f396b80],.rules-row[data-v-6f396b80]{grid-template-columns:.5fr 1fr 1fr 1fr 1fr .5fr}.namespaced-rules[data-v-6f396b80]{grid-template-columns:1fr 1fr 1fr 1fr .5fr}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMirror.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMirror.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CodeMirror.vue?vue&type=template&id=3059703f&\"\nimport script from \"./CodeMirror.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeMirror.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeMirror.vue?vue&type=style&index=0&id=3059703f&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".filter-select .vs__selected-options .vs__selected{text-align:left}.sortable-table{border-collapse:collapse;min-width:400px;border-radius:5px 5px 0 0;outline:1px solid var(--border);overflow:hidden;background:var(--sortable-table-bg);border-radius:4px}.sortable-table.overflow-x{overflow-x:visible}.sortable-table.overflow-y{overflow-y:visible}.sortable-table td{padding:8px 5px;border:0}.sortable-table td:first-child{padding-left:10px}.sortable-table td:last-child{padding-right:10px}.sortable-table td.row-check{padding-top:12px}.sortable-table tbody tr{border-bottom:1px solid var(--sortable-table-top-divider);background-color:var(--sortable-table-row-bg)}.sortable-table tbody tr.main-row.has-sub-row{border-bottom:0}.sortable-table tbody tr.main-row:not(.row-selected):hover+.sub-row{background-color:var(--sortable-table-hover-bg)}.sortable-table tbody tr:last-of-type{border-bottom:0}.sortable-table tbody tr.sub-row-hovered,.sortable-table tbody tr:hover{background-color:var(--sortable-table-hover-bg)}.sortable-table tbody tr.state-description>td{font-size:13px;padding-top:0;overflow-wrap:anywhere}.sortable-table tbody tr.active-row{color:var(--sortable-table-header-bg)}.sortable-table tbody tr.row-selected{background:var(--sortable-table-selected-bg)}.sortable-table tbody .no-rows td{padding:30px 0;text-align:center}.sortable-table tbody .no-results:hover,.sortable-table tbody .no-rows:hover{background-color:var(--body-bg)}.sortable-table tbody.group:before{content:\\\"\\\";display:block;height:20px;background-color:transparent}.sortable-table tbody tr.group-row{background-color:initial}.sortable-table tbody tr.group-row:first-child{border-bottom:2px solid var(--sortable-table-row-bg)}.sortable-table tbody tr.group-row:not(:first-child){margin-top:20px}.sortable-table tbody tr.group-row td{padding:0}.sortable-table tbody tr.group-row td:first-of-type{border-left:1px solid var(--sortable-table-accent-bg)}.sortable-table tbody tr.group-row .group-tab{height:40px;line-height:40px;padding:0 10px;border-radius:4px 4px 0 0;background-color:var(--sortable-table-row-bg);position:relative;top:1px;display:inline-block;z-index:10;min-width:72px}.sortable-table tbody tr.group-row .group-tab:after,.sortable-table tbody tr.group-row .group-tab:before{content:\\\" \\\";display:table}.sortable-table tbody tr.group-row .group-tab:after{clear:both}.sortable-table tbody tr.group-row .group-tab>SPAN{color:var(--sortable-table-group-label)}.sortable-table tbody tr.group-row .group-tab:after{height:40px;width:70px;border-radius:5px 5px 0 0;background-color:var(--sortable-table-row-bg);content:\\\"\\\";position:absolute;right:-15px;top:0;transform:skewX(40deg);z-index:-1}.for-inputs TABLE.sortable-table{width:100%;border-collapse:collapse;margin-bottom:10px}.for-inputs TABLE.sortable-table>TBODY>TR>TD,.for-inputs TABLE.sortable-table>THEAD>TR>TH{padding-right:10px;padding-bottom:10px}.for-inputs TABLE.sortable-table>TBODY>TR>TD:last-of-type,.for-inputs TABLE.sortable-table>THEAD>TR>TH:last-of-type{padding-right:0}.for-inputs TABLE.sortable-table>TBODY>TR:first-of-type>TD{padding-top:10px}.for-inputs TABLE.sortable-table>TBODY>TR:last-of-type>TD{padding-bottom:0}.for-inputs.clone TABLE.sortable-table>THEAD>TR>TH,.for-inputs.create TABLE.sortable-table>THEAD>TR>TH,.for-inputs.edit TABLE.sortable-table>THEAD>TR>TH{border-color:transparent}.sortable-table-header{position:relative;z-index:11}.sortable-table-header.titled{display:flex;align-items:center}.fixed-header-actions.button{grid-template-columns:[bulk] auto [middle] min-content [search] minmax(min-content,350px)}.fixed-header-actions{padding:0 0 20px 0;width:100%;z-index:11;background:transparent;display:grid;grid-template-columns:[bulk] auto [middle] min-content [search] minmax(min-content,200px);grid-column-gap:10px}.fixed-header-actions.advanced-filtering{grid-template-columns:[bulk] auto [middle] minmax(min-content,auto) [search] minmax(min-content,auto)}.fixed-header-actions .bulk{grid-area:bulk}.fixed-header-actions .bulk>BUTTON{display:none}.fixed-header-actions .bulk>BUTTON:not(:last-of-type){margin-right:10px}.fixed-header-actions .bulk .action-availability{display:none;margin-left:10px;vertical-align:middle;margin-top:2px}.fixed-header-actions .bulk .dropdown-button li.disabled{color:var(--disabled-text);cursor:not-allowed}.fixed-header-actions .bulk .dropdown-button li.disabled:hover{color:var(--disabled-text);background-color:unset;cursor:not-allowed}.fixed-header-actions .bulk .bulk-action .icon{vertical-align:-10%}.fixed-header-actions .middle{grid-area:middle;white-space:nowrap}.fixed-header-actions .middle .icon.icon-backup.animate{animation-name:spin;animation-duration:1s;animation-iteration-count:infinite;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fixed-header-actions .search{grid-area:search;text-align:right;justify-content:flex-end}.fixed-header-actions .bulk-actions-dropdown{display:none}.fixed-header-actions .bulk-actions-dropdown .dropdown-button{background-color:var(--primary)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button:hover{background-color:var(--primary-hover-bg);color:var(--primary-hover-text)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button .icon-chevron-down,.fixed-header-actions .bulk-actions-dropdown .dropdown-button>*{color:var(--primary-text)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button .button-divider{border-color:var(--primary-text)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button.disabled{border-color:var(--disabled-bg)}.fixed-header-actions .bulk-actions-dropdown .dropdown-button.disabled .icon-chevron-down{color:var(--disabled-text)!important}.fixed-header-actions .bulk-actions-dropdown .dropdown-button.disabled .button-divider{border-color:var(--disabled-text)}.paging{margin-top:10px;text-align:center}.paging SPAN{display:inline-block;min-width:200px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:{\n 'labeled-input': true,\n focused: _vm.focused,\n [_vm.mode]: true,\n disabled: _vm.isDisabled,\n [_vm.status]: _vm.status,\n suffix: _vm.hasSuffix,\n 'has-tooltip': _vm.hasTooltip,\n 'compact-input': _vm.isCompact,\n hideArrows: _vm.hideArrows\n }},[_vm._t(\"label\",function(){return [(_vm.hasLabel)?_c('label',[(_vm.labelKey)?_c('t',{attrs:{\"k\":_vm.labelKey}}):(_vm.label)?[_vm._v(_vm._s(_vm.label))]:_vm._e(),(_vm.requiredField)?_c('span',{staticClass:\"required\"},[_vm._v(\"*\")]):_vm._e()],2):_vm._e()]}),_vm._t(\"prefix\"),_vm._t(\"field\",function(){return [(_vm.type === 'multiline' || _vm.type === 'multiline-password')?_c('TextAreaAutoGrow',_vm._b({ref:\"value\",class:{ conceal: _vm.type === 'multiline-password' },attrs:{\"maxlength\":_vm._maxlength,\"disabled\":_vm.isDisabled,\"value\":_vm.value,\"placeholder\":_vm._placeholder,\"autocapitalize\":\"off\"},on:{\"input\":_vm.onInput,\"focus\":_vm.onFocus,\"blur\":_vm.onBlur}},'TextAreaAutoGrow',_vm.$attrs,false)):_c('input',_vm._b({ref:\"value\",class:{ 'no-label': !_vm.hasLabel },attrs:{\"maxlength\":_vm._maxlength,\"disabled\":_vm.isDisabled,\"type\":_vm.type === 'cron' ? 'text' : _vm.type,\"placeholder\":_vm._placeholder,\"autocomplete\":\"off\",\"autocapitalize\":\"off\",\"data-lpignore\":_vm.ignorePasswordManagers},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onInput,\"focus\":_vm.onFocus,\"blur\":_vm.onBlur,\"change\":_vm.onChange}},'input',_vm.$attrs,false))]}),_vm._t(\"suffix\"),(_vm.hasTooltip && !_vm.focused)?_c('LabeledTooltip',{attrs:{\"hover\":_vm.hoverTooltip,\"value\":_vm.tooltipValue,\"status\":_vm.status}}):_vm._e(),(!!_vm.validationMessage)?_c('LabeledTooltip',{attrs:{\"hover\":_vm.hoverTooltip,\"value\":_vm.validationMessage}}):_vm._e(),(_vm.cronHint || _vm.subLabel)?_c('div',{staticClass:\"sub-label\"},[(_vm.cronHint)?_c('div',[_vm._v(\" \"+_vm._s(_vm.cronHint)+\" \")]):_vm._e(),(_vm.subLabel)?_c('div',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.subLabel),expression:\"subLabel\"}]}):_vm._e()]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ref, computed, ComputedRef, Ref } from 'vue';\nimport { _VIEW, _EDIT } from '@shell/config/query-params';\n\ninterface LabeledFormElementProps {\n mode: string;\n value: string | number | Record\n required: boolean;\n disabled: boolean;\n rules: Array;\n}\n\ninterface UseLabeledFormElement {\n raised: Ref;\n focused: Ref;\n blurred: Ref;\n requiredField: ComputedRef;\n isDisabled: ComputedRef;\n validationMessage: ComputedRef;\n onFocusLabeled: () => void;\n onBlurLabeled: () => void;\n}\n\nexport const labeledFormElementProps = {\n tooltipKey: {\n type: String,\n default: null\n },\n placeholder: {\n type: [String, Number],\n default: ''\n },\n placeholderKey: {\n type: String,\n default: null\n },\n label: {\n type: String,\n default: null\n },\n labelKey: {\n type: String,\n default: null\n },\n value: {\n type: [String, Number, Object],\n default: ''\n },\n mode: {\n type: String,\n default: _EDIT,\n },\n rules: {\n default: (): Array => [],\n type: Array,\n // we only want functions in the rules array\n validator: (rules: Array): boolean => rules.every((rule: unknown) => ['function'].includes(typeof rule))\n },\n required: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n};\n\nexport const useLabeledFormElement = (props: LabeledFormElementProps, emit: (event: string, ...args: any[]) => void): UseLabeledFormElement => {\n const raised = ref(props.mode === _VIEW || !!`${ props.value }`);\n const focused = ref(false);\n const blurred = ref(null);\n\n const requiredField = computed(() => {\n return props.required || props.rules?.some((rule: any) => rule?.name === 'required');\n });\n\n const isView = computed(() => {\n return props.mode === _VIEW;\n });\n\n const isDisabled = computed(() => {\n return props.disabled || isView.value;\n });\n\n const validationMessage = computed(() => {\n const requiredRule = props.rules.find((rule: any) => rule?.name === 'required') as Function;\n const ruleMessages = [];\n const value = props.value;\n\n if (requiredRule && blurred.value && !focused.value) {\n const message = requiredRule(value);\n\n if (!!message) {\n return message;\n }\n }\n\n for (const rule of props.rules) {\n const message = rule(value);\n\n if (!!message && rule.name !== 'required') {\n ruleMessages.push(message);\n }\n }\n\n if (ruleMessages.length > 0 && (blurred.value || focused.value)) {\n return ruleMessages.join(', ');\n } else {\n return undefined;\n }\n });\n\n const onFocusLabeled = () => {\n raised.value = true;\n focused.value = true;\n };\n\n const onBlurLabeled = () => {\n focused.value = false;\n\n if (!props.value) {\n raised.value = false;\n }\n\n blurred.value = Date.now();\n };\n\n return {\n raised,\n focused,\n blurred,\n onFocusLabeled,\n onBlurLabeled,\n isDisabled,\n validationMessage,\n requiredField\n };\n};\n","import { computed, ComputedRef } from 'vue';\n\ninterface CompactInputProps {\n compact?: boolean | null;\n label?: string;\n labelKey?: string;\n}\n\ninterface UseCompactInput {\n isCompact: ComputedRef;\n}\n\nexport const useCompactInput = (props: CompactInputProps): UseCompactInput => {\n const isCompact = computed(() => {\n // Compact if explicitly set - otherwise compact if there is no label\n return (props.compact !== null && props.compact !== undefined) ? !!props.compact : !(props.label || props.labelKey);\n });\n\n return { isCompact };\n};\n","\nimport { defineComponent } from 'vue';\nimport TextAreaAutoGrow from '@components/Form/TextArea/TextAreaAutoGrow.vue';\nimport LabeledTooltip from '@components/LabeledTooltip/LabeledTooltip.vue';\nimport { escapeHtml } from '@shell/utils/string';\nimport cronstrue from 'cronstrue';\nimport { isValidCron } from 'cron-validator';\nimport { debounce } from 'lodash';\nimport { useLabeledFormElement, labeledFormElementProps } from '@shell/composables/useLabeledFormElement';\nimport { useCompactInput } from '@shell/composables/useCompactInput';\n\ndeclare module 'vue/types/vue' {\n interface Vue {\n onInput: (event: Event) => void | ((event: Event) => void);\n }\n}\n\nexport default defineComponent({\n components: { LabeledTooltip, TextAreaAutoGrow },\n\n inheritAttrs: false,\n\n props: {\n ...labeledFormElementProps,\n /**\n * The type of the Labeled Input.\n * @values text, cron, multiline, multiline-password\n */\n type: {\n type: String,\n default: 'text'\n },\n\n /**\n * The status class of the Labeled Input and tooltip.\n * @values info, success, warning, error\n */\n status: {\n type: String,\n default: null\n },\n\n /**\n * The sub-label for the Labeled Input.\n */\n subLabel: {\n type: String,\n default: null\n },\n\n /**\n * The tooltip to display for the Labeled Input.\n */\n tooltip: {\n default: null,\n type: [String, Object]\n },\n\n /**\n * Renders the tooltip when hovering the cursor over the Labeled Input.\n */\n hoverTooltip: {\n type: Boolean,\n default: true\n },\n\n /**\n * Disables the password manager prompt to save the contents of the Labeled\n * Input.\n */\n ignorePasswordManagers: {\n default: false,\n type: Boolean\n },\n\n /**\n * The max length of the Labeled Input.\n */\n maxlength: {\n type: Number,\n default: null\n },\n\n /**\n * Hides arrows on the Labeled Input.\n * @deprecated This doesn't appear to be in use for Labeled Input.\n */\n hideArrows: {\n type: Boolean,\n default: false\n },\n\n /**\n * Optionally delay on input while typing.\n */\n delay: {\n type: Number,\n default: 0\n },\n },\n\n setup(props, { emit }) {\n const {\n focused,\n onFocusLabeled,\n onBlurLabeled,\n isDisabled,\n validationMessage,\n requiredField\n } = useLabeledFormElement(props, emit);\n const { isCompact } = useCompactInput(props);\n\n return {\n focused,\n onFocusLabeled,\n onBlurLabeled,\n isDisabled,\n validationMessage,\n requiredField,\n isCompact,\n };\n },\n\n data() {\n return {\n updated: false,\n validationErrors: '',\n };\n },\n\n computed: {\n /**\n * Determines if the Labeled Input should display a label.\n */\n hasLabel(): boolean {\n return this.isCompact ? false : !!this.label || !!this.labelKey || !!this.$slots.label;\n },\n\n /**\n * Determines if the Labeled Input should display a tooltip.\n */\n hasTooltip(): boolean {\n return !!this.tooltip || !!this.tooltipKey;\n },\n\n tooltipValue(): string | Record | undefined {\n if (this.hasTooltip) {\n return this.tooltipKey ? this.t(this.tooltipKey) : this.tooltip;\n }\n\n return undefined;\n },\n\n /**\n * Determines if the Labeled Input makes use of the suffix slot.\n */\n hasSuffix(): boolean {\n return !!this.$slots.suffix;\n },\n\n /**\n * Determines if the Labeled Input should display a cron hint.\n */\n cronHint(): string | undefined {\n if (this.type !== 'cron' || !this.value) {\n return;\n }\n if (typeof this.value === 'string' && !isValidCron(this.value)) {\n return this.t('generic.invalidCron');\n }\n try {\n const hint = cronstrue.toString(this.value);\n\n return hint;\n } catch (e) {\n return this.t('generic.invalidCron');\n }\n },\n\n /**\n * The placeholder value for the Labeled Input.\n */\n _placeholder(): string {\n if (this.placeholder) {\n return this.placeholder.toString();\n }\n if (this.placeholderKey) {\n return this.t(this.placeholderKey);\n }\n\n return '';\n },\n\n /**\n * The max length for the Labeled Input.\n */\n _maxlength(): number | undefined {\n if (this.type === 'text' && this.maxlength) {\n return this.maxlength;\n }\n\n return undefined;\n },\n },\n\n created() {\n /**\n * Determines if the Labeled Input @input event should be debounced.\n */\n this.onInput = this.delay ? debounce(this.delayInput, this.delay) : this.delayInput;\n },\n\n methods: {\n /**\n * Attempts to give the Labeled Input focus.\n */\n focus(): void {\n const comp = this.$refs.value as HTMLInputElement;\n\n if (comp) {\n comp.focus();\n }\n },\n\n /**\n * Attempts to select the Labeled Input.\n * @deprecated\n */\n select(): void {\n const comp = this.$refs.value as HTMLInputElement;\n\n if (comp) {\n comp.select();\n }\n },\n\n /**\n * Emit on input change\n */\n onChange(event: Event): void {\n this.$emit('change', event);\n },\n\n /**\n * Emit on input with delay. Note: Arrow function is avoided due context\n * binding.\n *\n * NOTE: In multiline, TextAreaAutoGrow emits a string with the value\n * https://github.com/rancher/dashboard/issues/10249\n */\n delayInput(val: string | Event): void {\n const value = typeof val === 'string' ? val : (val?.target as HTMLInputElement)?.value;\n\n this.$emit('input', value);\n },\n\n /**\n * Handles the behavior of the Labeled Input when given focus.\n * @see labeled-form-element.ts mixin for onFocusLabeled()\n */\n onFocus(): void {\n this.onFocusLabeled();\n },\n\n /**\n * Handles the behavior of the Labeled Input when blurred and emits the blur\n * event.\n * @see labeled-form-element.ts mixin for onBlurLabeled()\n */\n onBlur(event: string | FocusEvent): void {\n this.$emit('blur', event);\n this.onBlurLabeled();\n },\n\n escapeHtml\n }\n});\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--15-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../ts-loader/index.js??ref--15-3!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./LabeledInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--15-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../ts-loader/index.js??ref--15-3!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./LabeledInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LabeledInput.vue?vue&type=template&id=29adcfe2&scoped=true&\"\nimport script from \"./LabeledInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./LabeledInput.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LabeledInput.vue?vue&type=style&index=0&id=29adcfe2&prod&scoped=true&lang=scss&\"\nimport style1 from \"./LabeledInput.vue?vue&type=style&index=1&id=29adcfe2&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29adcfe2\",\n null\n \n)\n\nexport default component.exports","var baseIteratee = require('./_baseIteratee'),\n negate = require('./negate'),\n pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./YamlEditor.vue?vue&type=style&index=0&id=93239522&prod&lang=scss&scoped=true&\"","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","// --------------------------------------\n// 1. Provided by Steve and always potentially available\n// --------------------------------------\n\n// Steve-specific virtual types\n// Base: /v1\nexport const STEVE = {\n PREFERENCE: 'userpreference',\n SCHEMA_DEFINITION: 'schemaDefinition'\n};\n\n// Old APIs via Norman\n// Base: /v3\nexport const NORMAN = {\n APP: 'app',\n AUTH_CONFIG: 'authconfig',\n ETCD_BACKUP: 'etcdbackup',\n CLUSTER: 'cluster',\n CLUSTER_TOKEN: 'clusterregistrationtoken',\n CLUSTER_ROLE_TEMPLATE_BINDING: 'clusterroletemplatebinding',\n CLOUD_CREDENTIAL: 'cloudcredential',\n FLEET_WORKSPACES: 'fleetworkspace',\n GLOBAL_ROLE: 'globalRole',\n GLOBAL_ROLE_BINDING: 'globalRoleBinding',\n\n NODE_POOL: 'nodePool',\n // Note - This allows access to node resources, not schema's or custom components (both are accessed via 'type' which clashes with kube node)\n NODE: 'node',\n PRINCIPAL: 'principal',\n PROJECT: 'project',\n PROJECT_ROLE_TEMPLATE_BINDING: 'projectroletemplatebinding',\n SETTING: 'setting',\n SPOOFED: { GROUP_PRINCIPAL: 'group.principal' },\n ROLE_TEMPLATE: 'roleTemplate',\n TOKEN: 'token',\n USER: 'user',\n KONTAINER_DRIVER: 'kontainerDriver',\n NODE_DRIVER: 'nodeDriver'\n};\n\n// Public (via Norman)\n// Base: /v3-public\nexport const PUBLIC = { AUTH_PROVIDER: 'authprovider' };\n\n// Common native k8s types (via Steve)\n// Base: /k8s/clusters//v1/\nexport const API_GROUP = 'apiGroups';\nexport const API_SERVICE = 'apiregistration.k8s.io.apiservice';\nexport const CONFIG_MAP = 'configmap';\nexport const COUNT = 'count';\nexport const EVENT = 'event';\nexport const ENDPOINTS = 'endpoints';\nexport const HPA = 'autoscaling.horizontalpodautoscaler';\nexport const INGRESS = 'networking.k8s.io.ingress';\nexport const INGRESS_CLASS = 'networking.k8s.io.ingressclass';\nexport const LIMIT_RANGE = 'limitrange';\nexport const NAMESPACE = 'namespace';\nexport const NODE = 'node';\nexport const NETWORK_POLICY = 'networking.k8s.io.networkpolicy';\nexport const POD = 'pod';\nexport const POD_DISRUPTION_BUDGET = 'policy.poddisruptionbudget';\nexport const PV = 'persistentvolume';\nexport const PVC = 'persistentvolumeclaim';\nexport const RESOURCE_QUOTA = 'resourcequota';\nexport const SCHEMA = 'schema';\nexport const SERVICE = 'service';\nexport const SECRET = 'secret';\nexport const SERVICE_ACCOUNT = 'serviceaccount';\nexport const STORAGE_CLASS = 'storage.k8s.io.storageclass';\nexport const CSI_DRIVER = 'storage.k8s.io.csidriver';\nexport const OBJECT_META = 'io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta';\nexport const NETWORK_ATTACHMENT = 'k8s.cni.cncf.io.networkattachmentdefinition';\nexport const USER = 'user';\nexport const GROUP = 'group';\n\nexport const RBAC = {\n ROLE: 'rbac.authorization.k8s.io.role',\n CLUSTER_ROLE: 'rbac.authorization.k8s.io.clusterrole',\n ROLE_BINDING: 'rbac.authorization.k8s.io.rolebinding',\n CLUSTER_ROLE_BINDING: 'rbac.authorization.k8s.io.clusterrolebinding',\n};\n\nexport const WORKLOAD = 'workload';\n\n// The types that are aggregated into a \"workload\"\nexport const WORKLOAD_TYPES = {\n DEPLOYMENT: 'apps.deployment',\n CRON_JOB: 'batch.cronjob',\n DAEMON_SET: 'apps.daemonset',\n JOB: 'batch.job',\n STATEFUL_SET: 'apps.statefulset',\n REPLICA_SET: 'apps.replicaset',\n REPLICATION_CONTROLLER: 'replicationcontroller',\n};\n\nconst {\n DAEMON_SET, CRON_JOB, JOB, ...scalableWorkloads\n} = WORKLOAD_TYPES;\n\nexport const SCALABLE_WORKLOAD_TYPES = scalableWorkloads;\n\nexport const LIST_WORKLOAD_TYPES = {\n ...WORKLOAD_TYPES,\n POD\n};\n\nexport const METRIC = {\n NODE: 'metrics.k8s.io.nodemetrics',\n POD: 'metrics.k8s.io.podmetrics',\n};\n\nexport const CATALOG = {\n CLUSTER_REPO: 'catalog.cattle.io.clusterrepo',\n OPERATION: 'catalog.cattle.io.operation',\n APP: 'catalog.cattle.io.app',\n REPO: 'catalog.cattle.io.repo',\n};\n\n// UI Plugin type\nexport const UI_PLUGIN = 'catalog.cattle.io.uiplugin';\n\nexport const HELM = { PROJECTHELMCHART: 'helm.cattle.io.projecthelmchart' };\n\nexport const MONITORING = {\n ALERTMANAGER: 'monitoring.coreos.com.alertmanager',\n ALERTMANAGERCONFIG: 'monitoring.coreos.com.alertmanagerconfig',\n PODMONITOR: 'monitoring.coreos.com.podmonitor',\n PROMETHEUS: 'monitoring.coreos.com.prometheus',\n PROMETHEUSRULE: 'monitoring.coreos.com.prometheusrule',\n SERVICEMONITOR: 'monitoring.coreos.com.servicemonitor',\n THANOSRULER: 'monitoring.coreos.com.thanosruler',\n SPOOFED: {\n RECEIVER: 'monitoring.coreos.com.receiver',\n RECEIVER_SPEC: 'monitoring.coreos.com.receiver.spec',\n RECEIVER_EMAIL: 'monitoring.coreos.com.receiver.email',\n RECEIVER_SLACK: 'monitoring.coreos.com.receiver.slack',\n RECEIVER_WEBHOOK: 'monitoring.coreos.com.receiver.webhook',\n RECEIVER_PAGERDUTY: 'monitoring.coreos.com.receiver.pagerduty',\n RECEIVER_OPSGENIE: 'monitoring.coreos.com.receiver.opsgenie',\n RECEIVER_HTTP_CONFIG: 'monitoring.coreos.com.receiver.httpconfig',\n RESPONDER: 'monitoring.coreos.com.receiver.responder',\n ROUTE: 'monitoring.coreos.com.route',\n ROUTE_SPEC: 'monitoring.coreos.com.route.spec',\n }\n};\n\nexport const LONGHORN = {\n ENGINES: 'longhorn.io.engine',\n ENGINE_IMAGES: 'longhorn.io.engineimage',\n NODES: 'longhorn.io.node',\n REPLICAS: 'longhorn.io.replica',\n SETTINGS: 'longhorn.io.setting',\n VOLUMES: 'longhorn.io.volume',\n};\n\nexport const LONGHORN_DRIVER = 'driver.longhorn.io';\n\nexport const SNAPSHOT = 'rke.cattle.io.etcdsnapshot';\n\n// --------------------------------------\n// 2. Only if Rancher is installed\n// --------------------------------------\n\n// Rancher Management API (via Steve)\n// Base: /v1\nexport const MANAGEMENT = {\n AUTH_CONFIG: 'management.cattle.io.authconfig',\n CATALOG_TEMPLATE: 'management.cattle.io.catalogtemplate',\n // CATALOG: 'management.cattle.io.catalog',\n CLUSTER: 'management.cattle.io.cluster',\n CLUSTER_ROLE_TEMPLATE_BINDING: 'management.cattle.io.clusterroletemplatebinding',\n FEATURE: 'management.cattle.io.feature',\n // GROUP: 'management.cattle.io.group',\n KONTAINER_DRIVER: 'management.cattle.io.kontainerdriver',\n MULTI_CLUSTER_APP: 'management.cattle.io.multiclusterapp',\n NODE: 'management.cattle.io.node',\n NODE_DRIVER: 'management.cattle.io.nodedriver',\n NODE_POOL: 'management.cattle.io.nodepool',\n NODE_TEMPLATE: 'management.cattle.io.nodetemplate',\n PROJECT: 'management.cattle.io.project',\n PROJECT_ROLE_TEMPLATE_BINDING: 'management.cattle.io.projectroletemplatebinding',\n ROLE_TEMPLATE: 'management.cattle.io.roletemplate',\n SETTING: 'management.cattle.io.setting',\n USER: 'management.cattle.io.user',\n TOKEN: 'management.cattle.io.token',\n GLOBAL_ROLE: 'management.cattle.io.globalrole',\n GLOBAL_ROLE_BINDING: 'management.cattle.io.globalrolebinding',\n PSA: 'management.cattle.io.podsecurityadmissionconfigurationtemplate',\n MANAGED_CHART: 'management.cattle.io.managedchart',\n USER_NOTIFICATION: 'management.cattle.io.rancherusernotification',\n GLOBAL_DNS_PROVIDER: 'management.cattle.io.globaldnsprovider',\n RKE_TEMPLATE: 'management.cattle.io.clustertemplate',\n RKE_TEMPLATE_REVISION: 'management.cattle.io.clustertemplaterevision',\n CLUSTER_PROXY_CONFIG: 'management.cattle.io.clusterproxyconfig'\n};\n\nexport const CAPI = {\n CAPI_CLUSTER: 'cluster.x-k8s.io.cluster',\n MACHINE_DEPLOYMENT: 'cluster.x-k8s.io.machinedeployment',\n MACHINE_SET: 'cluster.x-k8s.io.machineset',\n MACHINE: 'cluster.x-k8s.io.machine',\n RANCHER_CLUSTER: 'provisioning.cattle.io.cluster',\n MACHINE_CONFIG_GROUP: 'rke-machine-config.cattle.io',\n};\n\n// --------------------------------------\n// 3. Optional add-on packages in a cluster\n// --------------------------------------\n// Base: /k8s/clusters//v1/\n\nexport const FLEET = {\n BUNDLE: 'fleet.cattle.io.bundle',\n BUNDLE_DEPLOYMENT: 'fleet.cattle.io.bundledeployment',\n CLUSTER: 'fleet.cattle.io.cluster',\n CLUSTER_GROUP: 'fleet.cattle.io.clustergroup',\n DASHBOARD: 'fleet.cattle.io.dashboard',\n GIT_REPO: 'fleet.cattle.io.gitrepo',\n WORKSPACE: 'management.cattle.io.fleetworkspace',\n TOKEN: 'fleet.cattle.io.clusterregistrationtoken',\n BUNDLE_NAMESPACE_MAPPING: 'fleet.cattle.io.bundlenamespacemapping',\n GIT_REPO_RESTRICTION: 'fleet.cattle.io.gitreporestriction'\n};\n\nexport const GATEKEEPER = {\n CONSTRAINT_TEMPLATE: 'templates.gatekeeper.sh.constrainttemplate',\n SPOOFED: { CONSTRAINT: 'constraints.gatekeeper.sh.constraint' }\n};\n\nexport const ISTIO = {\n VIRTUAL_SERVICE: 'networking.istio.io.virtualservice',\n DESTINATION_RULE: 'networking.istio.io.destinationrule',\n GATEWAY: 'networking.istio.io.gateway'\n};\n\nexport const LOGGING = {\n // LOGGING: 'logging.banzaicloud.io.logging',\n CLUSTER_FLOW: 'logging.banzaicloud.io.clusterflow',\n CLUSTER_OUTPUT: 'logging.banzaicloud.io.clusteroutput',\n FLOW: 'logging.banzaicloud.io.flow',\n OUTPUT: 'logging.banzaicloud.io.output',\n SPOOFED: {\n FILTERS: 'logging.banzaicloud.io.output.filters',\n FILTER: 'logging.banzaicloud.io.output.filter',\n CONCAT: 'logging.banzaicloud.io.output.filters.concat',\n DEDOT: 'logging.banzaicloud.io.output.filters.dedot',\n DETECTEXCEPTIONS: 'logging.banzaicloud.io.output.filters.detectExceptions',\n GEOIP: 'logging.banzaicloud.io.output.filters.geoip',\n GREP: 'logging.banzaicloud.io.output.filters.grep',\n PARSER: 'logging.banzaicloud.io.output.filters.parser',\n PROMETHEUS: 'logging.banzaicloud.io.output.filters.prometheus',\n RECORD_MODIFIER: 'logging.banzaicloud.io.output.filters.record_modifier',\n RECORD_TRANSFORMER: 'logging.banzaicloud.io.output.filters.record_transformer',\n STDOUT: 'logging.banzaicloud.io.output.filters.stdout',\n SUMOLOGIC: 'logging.banzaicloud.io.output.filters.sumologic',\n TAG_NORMALISER: 'logging.banzaicloud.io.output.filters.tag_normaliser',\n THROTTLE: 'logging.banzaicloud.io.output.filters.throttle',\n RECORD: 'logging.banzaicloud.io.output.filters.record',\n REGEXPSECTION: 'logging.banzaicloud.io.output.filters.regexpsection',\n EXCLUDESECTION: 'logging.banzaicloud.io.output.filters.excludesection',\n ORSECTION: 'logging.banzaicloud.io.output.filters.orsection',\n ANDSECTION: 'logging.banzaicloud.io.output.filters.andsection',\n PARSESECTION: 'logging.banzaicloud.io.output.filters.parsesection',\n METRICSECTION: 'logging.banzaicloud.io.output.filters.metricsection',\n REPLACE: 'logging.banzaicloud.io.output.filters.replace',\n SINGLEPARSESECTION: 'logging.banzaicloud.io.output.filters.replace.singleparsesection'\n }\n};\n\nexport const BACKUP_RESTORE = {\n RESOURCE_SET: 'resources.cattle.io.resourceset',\n BACKUP: 'resources.cattle.io.backup',\n RESTORE: 'resources.cattle.io.restore',\n};\n\nexport const CIS = {\n CLUSTER_SCAN: 'cis.cattle.io.clusterscan',\n CLUSTER_SCAN_PROFILE: 'cis.cattle.io.clusterscanprofile',\n BENCHMARK: 'cis.cattle.io.clusterscanbenchmark',\n REPORT: 'cis.cattle.io.clusterscanreport'\n};\n\nexport const UI = { NAV_LINK: 'ui.cattle.io.navlink' };\n\nexport const VIRTUAL_TYPES = {\n CLUSTER_MEMBERS: 'cluster-members',\n PROJECT_NAMESPACES: 'projects-namespaces',\n NAMESPACES: 'namespaces',\n JWT_AUTHENTICATION: 'jwt.authentication'\n};\n\n// harvester\nexport const HCI = {\n CLUSTER: 'harvesterhci.io.management.cluster',\n DASHBOARD: 'harvesterhci.io.dashboard',\n IMAGE: 'harvesterhci.io.virtualmachineimage',\n VGPU_DEVICE: 'devices.harvesterhci.io.vgpudevice',\n SETTING: 'harvesterhci.io.setting',\n HARVESTER_CONFIG: 'rke-machine-config.cattle.io.harvesterconfig',\n};\n\nexport const VIRTUAL_HARVESTER_PROVIDER = 'harvester';\n\nexport const ADDRESSES = {\n HOSTNAME: 'Hostname',\n INTERNAL_IP: 'InternalIP',\n EXTERNAL_IP: 'ExternalIP'\n};\n\nexport const DEFAULT_WORKSPACE = 'fleet-default';\n\nexport const AUTH_TYPE = {\n _NONE: '_none',\n _BASIC: '_basic',\n _SSH: '_ssh',\n _S3: '_S3'\n};\n\nexport const LOCAL_CLUSTER = 'local';\n\nexport const CLUSTER_REPO_TYPES = {\n HELM_URL: 'helm-url',\n GIT_REPO: 'git-repo',\n OCI_URL: 'oci-url'\n};\n\nexport const ZERO_TIME = '0001-01-01T00:00:00Z';\n\nexport const DEFAULT_GRAFANA_STORAGE_SIZE = '10Gi';\n\nexport const DEPRECATED = 'Deprecated';\nexport const EXPERIMENTAL = 'Experimental';\n","/* eslint-disable no-unused-vars */\nexport enum KubewardenDashboardLabels {\n DASHBOARD = 'kubewarden/dashboard',\n PART_OF = 'kubewarden/part-of',\n APP = 'app',\n GRAFANA_DASHBOARD = 'grafana_dashboard',\n}\n\nexport enum KubewardenDashboards {\n POLICY_SERVER = 'kubewarden-dashboard-policyserver',\n POLICY = 'kubewarden-dashboard-policy'\n}\n\nexport enum HelmAnnotations {\n NAME = 'meta.helm.sh/release-name',\n NAMESPACE = 'meta.helm.sh/release-namespace'\n}\n/* eslint-enable no-unused-vars */\n\nexport interface GrafanaDashboardLabels {\n [KubewardenDashboardLabels.DASHBOARD]: string,\n [KubewardenDashboardLabels.PART_OF]: string,\n [KubewardenDashboardLabels.APP]: string,\n [KubewardenDashboardLabels.GRAFANA_DASHBOARD]: string,\n 'app.kubernetes.io/instance': string\n}\n\nexport interface GrafanaDashboardAnnotations {\n [HelmAnnotations.NAME]: string,\n [HelmAnnotations.NAMESPACE]: string\n}\n","import {\n V1SecurityContext, V1PodSecurityContext, V1ObjectMeta, V1EnvVar, V1LabelSelector, V1Condition\n} from '@kubernetes/client-node';\n\nexport const KUBEWARDEN_PRODUCT_NAME = 'kubewarden';\nexport const KUBEWARDEN_PRODUCT_GROUP = 'policies.kubewarden.io';\n\nexport const CHART_NAME = 'rancher-kubewarden';\n\nexport const KUBEWARDEN_DASHBOARD = 'dashboard';\nexport const KUBEWARDEN_REPO = 'https://charts.kubewarden.io';\n\nexport const KUBEWARDEN_CHARTS = {\n CONTROLLER: 'kubewarden-controller',\n DEFAULTS: 'kubewarden-defaults',\n};\n\nexport const KUBEWARDEN_APPS = {\n RANCHER_CONTROLLER: 'rancher-kubewarden-controller',\n RANCHER_DEFAULTS: 'rancher-kubewarden-defaults'\n};\n\nexport const KUBEWARDEN_LABELS = { POLICY_SERVER: 'kubewarden/policy-server' };\n\nexport const KUBEWARDEN = {\n ADMISSION_POLICY: 'policies.kubewarden.io.admissionpolicy',\n CLUSTER_ADMISSION_POLICY: 'policies.kubewarden.io.clusteradmissionpolicy',\n POLICY_SERVER: 'policies.kubewarden.io.policyserver'\n};\n\n/* eslint-disable no-unused-vars */\nexport enum KUBEWARDEN_CRD {\n ADMISSION_POLICY = 'admissionpolicies.policies.kubewarden.io',\n CLUSTER_ADMISSION_POLICY = 'clusteradmissionpolicies.policies.kubewarden.io',\n POLICY_SERVER = 'policyservers.policies.kubewarden.io'\n}\n/* eslint-enable no-unused-vars */\n\nexport interface Rule {\n apiGroups: string[];\n apiVersions: string[];\n operations: string[];\n resources: string[];\n}\n\nexport interface PolicyServer {\n id: string;\n type: string;\n links?: {\n remove?: string;\n self?: string;\n update?: string;\n view?: string;\n };\n apiVersion: string;\n kind: string;\n metadata: V1ObjectMeta;\n spec: {\n env: V1EnvVar[];\n image?: string;\n replicas?: number;\n securityContexts?: {\n container?: V1SecurityContext;\n pod?: V1PodSecurityContext;\n };\n serviceAccountName?: string;\n };\n status: {\n conditions: Array;\n };\n}\n\nexport interface Policy {\n id?: string;\n type?: string;\n links?: {\n remove?: string;\n self?: string;\n update?: string;\n view?: string;\n };\n apiVersion: string;\n kind: string;\n metadata: V1ObjectMeta;\n spec: {\n backgroundAudit?: boolean;\n matchPolicy?: string;\n mode?: string;\n module: string;\n mutating?: boolean;\n namespaceSelector?: V1LabelSelector;\n objectSelector?: V1LabelSelector;\n policyServer: string;\n rules: Array;\n failurePolicy?: string;\n settings?: any;\n sideEffects?: string;\n timeoutSeconds?: number;\n };\n status?: {\n conditions: Array;\n mode: string;\n policyStatus: string;\n }\n}","import { V1LabelSelectorRequirement } from '@kubernetes/client-node';\nimport { Policy } from './kubewarden';\n\nexport const DEFAULT_POLICY: Policy = {\n apiVersion: '',\n kind: '',\n metadata: {\n name: '',\n namespace: ''\n },\n spec: {\n backgroundAudit: true,\n policyServer: '',\n module: '',\n rules: [{\n apiGroups: [],\n apiVersions: [],\n resources: [],\n operations: []\n }],\n mutating: false,\n namespaceSelector: {\n matchExpressions: [],\n matchLabels: {}\n },\n settings: {}\n }\n};\n\nexport const ARTIFACTHUB_ENDPOINT = 'artifacthub.io/api/v1';\n\nexport const ARTIFACTHUB_PKG_ANNOTATION = 'artifacthub/pkg';\n\nexport const VALIDATION_KEYS = [\n 'allowed',\n 'host',\n 'kind',\n 'mutated',\n 'name',\n 'namespace',\n 'operation',\n 'policy_id',\n 'response_message',\n 'response_code',\n];\n\nexport const RANCHER_NAMESPACES = [\n 'calico-system',\n 'cattle-alerting',\n 'cattle-fleet-local-system',\n 'cattle-fleet-system',\n 'cattle-global-data',\n 'cattle-global-nt',\n 'cattle-impersonation-system',\n 'cattle-istio',\n 'cattle-logging',\n 'cattle-pipeline',\n 'cattle-prometheus',\n 'cattle-system',\n 'cert-manager',\n 'ingress-nginx',\n 'kube-node-lease',\n 'kube-public',\n 'kube-system',\n 'rancher-operator-system',\n 'security-scan',\n 'tigera-operator',\n];\n\nexport const RANCHER_NS_MATCH_EXPRESSION: V1LabelSelectorRequirement = {\n key: 'kubernetes.io/metadata.name',\n operator: 'NotIn',\n values: RANCHER_NAMESPACES,\n};\n\nexport const MODE_MAP = {\n monitor: 'bg-info',\n protect: 'bg-warning',\n};\n\nexport const OPERATION_MAP = {\n '*': 'bg-darker',\n CREATE: 'bg-info',\n UPDATE: 'bg-warning',\n DELETE: 'bg-error',\n CONNECT: 'bg-success',\n};\n\n/* eslint-disable no-unused-vars */\nexport enum VALUES_STATE {\n FORM = 'FORM',\n YAML = 'YAML',\n}\n/* eslint-enable no-unused-vars */\n\nexport const YAML_OPTIONS = [\n {\n labelKey: 'catalog.install.section.chartOptions',\n value: VALUES_STATE.FORM,\n },\n {\n labelKey: 'catalog.install.section.valuesYaml',\n value: VALUES_STATE.YAML,\n }\n];\n","import { V1ObjectMeta } from '@kubernetes/client-node';\n\nimport { Links } from './core';\n\nexport const POLICY_REPORTER_PRODUCT = 'policy-reporter';\nexport const POLICY_REPORTER_RESOURCE = 'PolicyReporter';\nexport const POLICY_REPORTER_CHART = 'policy-reporter';\n\nexport const POLICY_REPORTER_REPO = 'https://kyverno.github.io/policy-reporter';\n\nexport interface Resource {\n apiVersion: string;\n fieldPath?: string;\n kind: string;\n name: string;\n namespace?: string;\n resourceVersion: string;\n uid: string;\n}\n\n/* eslint-disable no-unused-vars */\nexport enum Severity {\n INFO = 'info',\n LOW = 'low',\n MEDIUM = 'medium',\n HIGH = 'high',\n CRITICAL = 'critical',\n}\n\nexport enum Result {\n SKIP = 'skip',\n PASS = 'pass',\n WARN = 'warn',\n FAIL = 'fail',\n ERROR = 'error'\n}\n/* eslint-enable no-unused-vars */\n\nexport interface PolicyReportSummary {\n pass?: number;\n fail?: number;\n warn?: number;\n error?: number;\n skip?: number;\n}\n\nexport interface PolicyReportResult {\n category?: string;\n message?: string;\n policy: string;\n policyName?: string;\n properties?: {[key: string]: string};\n resourceSelector?: {\n matchExpressions?: {\n key: string;\n operator: string;\n values?: string[];\n };\n matchLabels?: {[key: string]: string};\n };\n resources?: Resource[];\n result?: Result;\n rule?: string;\n scope?: {\n apiVersion: string;\n kind: string;\n name: string;\n namespace?: string;\n uid?: string;\n },\n scored?: boolean;\n severity?: Severity;\n source?: string;\n timestamp?: {\n nanos: number;\n seconds: number;\n }\n}\n\nexport interface PolicyReport {\n apiVersion: string;\n id: string;\n kind: string;\n links?: Links;\n metadata: V1ObjectMeta;\n results?: Array\n scope?: {\n apiVersion: string;\n kind: string;\n name: string;\n namespace?: string;\n uid?: string;\n }\n summary?: PolicyReportSummary\n type: string;\n uid: string;\n}\n\nexport interface ClusterPolicyReport extends PolicyReport {\n scope: {\n apiVersion: string;\n kind: string;\n name: string;\n uid: string;\n }\n}","export type ResourceField = {\n type: string,\n nullable: boolean,\n create: boolean,\n required?: boolean,\n update: boolean,\n description: string\n}\n\nexport type AttributeColumn = {\n name: string,\n type: string,\n format: string,\n description: string,\n priority: number,\n field: string\n}\n\nexport type Schema = {\n id: string,\n type: string,\n links: {\n collection?: string,\n self: string,\n },\n description: string,\n pluralName?: string,\n resourceMethods?: string[],\n resourceFields?: {\n apiVersion: ResourceField,\n kind: ResourceField,\n metadata: ResourceField,\n spec: ResourceField,\n status: ResourceField\n },\n collectionMethods?: string[],\n attributes?: {\n columns: AttributeColumn[],\n group: string,\n kind: string,\n namespaced?: boolean,\n resource?: string,\n verbs: string[],\n version: string,\n },\n _id: string,\n _group: string,\n}\n\nexport const PROJECT = { APP: 'project.cattle.io.app' };","export const WG_POLICY_K8S = {\n POLICY_REPORT: {\n KIND: 'PolicyReport',\n NAME: 'policyreports.wgpolicyk8s.io',\n TYPE: 'wgpolicyk8s.io.policyreport',\n },\n CLUSTER_POLICY_REPORT: {\n KIND: 'ClusterPolicyReport',\n NAME: 'clusterpolicyreports.wgpolicyk8s.io',\n TYPE: 'wgpolicyk8s.io.clusterpolicyreport'\n }\n};","import { validateChars } from './index';\n\nexport function validateKubernetesName(label, displayKey, getters, opts, errors = []) {\n opts = opts || {};\n\n const {\n invalidChars,\n forHostname = false,\n errorKey = (forHostname ? 'hostname' : 'label'),\n maxLength = 63,\n minLength = 1,\n validChars = 'A-Za-z0-9-',\n } = opts;\n\n // Label must consist of a-z, 0-9 and hyphen\n validateChars(label, { validChars, invalidChars }, displayKey, getters, errors);\n\n // Label cannot begin with a hyphen\n if ( label.slice(0, 1) === '-' ) {\n errors.push(getters['i18n/t'](`validation.dns.${ errorKey }.startHyphen`, { key: displayKey }));\n }\n\n // Label cannot end with a hyphen\n if ( label.slice(-1) === '-' ) {\n errors.push(getters['i18n/t'](`validation.dns.${ errorKey }.endHyphen`, { key: displayKey }));\n }\n\n // Label must be 1-63 characters\n const min = minLength;\n const max = maxLength;\n\n if ( label.length < min ) {\n errors.push(getters['i18n/t'](`validation.dns.${ errorKey }.emptyLabel`, { key: displayKey, min }));\n } else if ( label.length > max ) {\n errors.push(getters['i18n/t'](`validation.dns.${ errorKey }.tooLongLabel`, { key: displayKey, max }));\n }\n\n return errors;\n}\n","import isEmpty from 'lodash/isEmpty';\nimport uniq from 'lodash/uniq';\nimport { get } from '@shell/utils/object';\nimport { camelToTitle } from '@shell/utils/string';\nimport { validateKubernetesName } from './kubernetes-name';\n\nexport function displayKeyFor(type, key, getters) {\n const intlPrefix = `model.${ type }.${ key }`;\n const intlPrefixLabel = `${ intlPrefix }.label`;\n\n if ( getters['i18n/exists'](`${ intlPrefix }.label`) ) {\n return getters['i18n/t'](intlPrefixLabel);\n }\n\n if ( getters['i18n/exists'](intlPrefix) ) {\n return getters['i18n/t'](intlPrefix);\n }\n\n if ( key.match(/.Id$/) ) {\n return camelToTitle(key.replace(/Id$/, ''));\n }\n\n return camelToTitle(key);\n}\n\nexport function validateLength(val, field, displayKey, getters, errors = []) {\n const {\n nullable,\n required,\n type = '',\n minLength,\n maxLength,\n min: fieldMin,\n max: fieldMax,\n } = field;\n const len = val ? get(val, 'length') : 0;\n\n if ( !nullable && required) {\n if ((typeof val === 'object' && isEmpty(val)) || (!val && val !== 0)) {\n errors.push(getters['i18n/t']('validation.required', { key: displayKey }));\n\n return errors;\n }\n }\n\n if ( val === null ) {\n return errors;\n }\n\n // i18n-uses validation.*.exactly, validation.*.between, validation.*.min, validation.*.max\n const lengthKey = (type.indexOf('array[') === 0 ? 'arrayLength' : 'stringLength');\n\n // String and array length:\n let min = minLength;\n let max = maxLength;\n\n if ( min && max ) {\n if ( (len < min) || (len > max) ) {\n if ( min === max ) {\n errors.push(getters['i18n/t'](`validation.${ lengthKey }.exactly`, { key: displayKey, count: min }));\n } else {\n errors.push(getters['i18n/t'](`validation.${ lengthKey }.between`, {\n key: displayKey, min, max\n }));\n }\n }\n } else if ( min && (len < min) ) {\n errors.push(getters['i18n/t'](`validation.${ lengthKey }.min`, { key: displayKey, count: min }));\n } else if ( max && (len > max) ) {\n errors.push(getters['i18n/t'](`validation.${ lengthKey }.max`, { key: displayKey, count: max }));\n }\n\n // Number min/max\n min = fieldMin;\n max = fieldMax;\n\n if ( val !== null && min && max ) {\n if ( (val < min) || (val > max) ) {\n if ( min === max ) {\n errors.push(getters['i18n/t']('validation.number.exactly', { key: displayKey, val: max }));\n } else {\n errors.push(getters['i18n/t']('validation.number.between', {\n key: displayKey, min, max\n }));\n }\n }\n } else if ( min && (val < min) ) {\n errors.push(getters['i18n/t']('validation.number.min', { key: displayKey, val: min }));\n } else if ( max && (val > max) ) {\n errors.push(getters['i18n/t']('validation.number.max', { key: displayKey, val: max }));\n }\n\n return errors;\n}\n\nexport function validateChars(val, field, displayKey, getters, errors = []) {\n const {\n validChars,\n invalidChars\n } = field;\n const test = [];\n\n if ( validChars ) {\n test.push(`[^${ field.validChars }]`);\n }\n\n if ( invalidChars ) {\n test.push(`[${ field.invalidChars }]`);\n }\n\n if ( test.length ) {\n const regex = new RegExp(`(${ test.join('|') })`, 'g');\n let match = val.match(regex);\n\n if ( match ) {\n match = uniq(match).map((chr) => {\n if ( chr === ' ' ) {\n return '[space]';\n } else {\n return chr;\n }\n });\n\n errors.push(getters['i18n/t']('validation.chars', {\n key: displayKey, count: match.length, chars: match.join(' ')\n }));\n }\n }\n\n return errors;\n}\n\nexport function validateHostname(val, displayKey, getters, opts, errors = []) {\n opts = opts || {};\n\n const {\n max = 253,\n restricted = false,\n } = opts;\n\n // Hostname can not start with a dot\n if (val.slice(0, 1) === '.') {\n errors.push(getters['i18n/t']('validation.dns.hostname.startDot', { key: displayKey }));\n }\n\n // Hostname can not end with a dot in restricted mode\n if ( restricted && val.length > 1 && val.slice(-1) === '.' ) {\n errors.push(getters['i18n/t']('validation.dns.hostname.endDot', { key: displayKey }));\n }\n\n // Hostname can not be empty string\n if (val.length === 0) {\n errors.push(getters['i18n/t']('validation.dns.hostname.empty', { key: displayKey }));\n }\n\n // Total length of the hostname can be at most 253 characters\n // (255 minus one for null-termination, and one for the trailing dot of a real FQDN)\n if (val.length > max) {\n errors.push(getters['i18n/t']('validation.dns.hostname.tooLong', { key: displayKey, max }));\n }\n\n // Split the hostname with the dot and validate the element as label\n const labels = val.split(/\\./);\n let label;\n\n for ( let i = 0 ; i < labels.length ; i++ ) {\n label = labels[i];\n\n // Already checked if Hostname starts with a dot\n if ( i === 0 && label === '' ) {\n continue;\n }\n\n // Hostname can end with a dot (this makes it an explicitly fully qualified domain name)\n // so the last element of the labels can be empty string.\n if (i === labels.length - 1 && label === '') {\n continue;\n }\n\n validateDnsLabel(label, displayKey, getters, { forHostname: true }, errors);\n }\n\n return errors;\n}\n\nexport function validateDnsLabel(label, displayKey, getters, opts, errors = []) {\n opts = opts || {};\n\n const {\n forHostname = false,\n errorKey = (forHostname ? 'hostname' : 'label'),\n ianaServiceName = false,\n restricted = false,\n } = opts;\n\n validateKubernetesName(label, displayKey, getters, opts, errors);\n\n // Restricted labels cannot begin with a number\n if ( restricted && label.slice(0, 1).match(/[0-9]/) ) {\n errors.push(getters['i18n/t'](`validation.dns.${ errorKey }.startNumber`, { key: displayKey }));\n }\n\n // Label cannot contain two consecutive hyphens at the 3rd & 4th characters, unless an IDN string\n // If is of type ianaServiceName can not contain two consecutive hyphens in any position\n if (\n ( label.substr(2, 2) === '--' && label.substr(0, 2) !== 'xn' ) ||\n ( ianaServiceName && label.includes('--') )\n ) {\n errors.push(getters['i18n/t'](`validation.dns.doubleHyphen`, { key: displayKey }));\n }\n\n return errors;\n}\n\nexport function validateDnsLikeTypes(val, type, displayKey, getters, opts, errors = []) {\n switch (type) {\n case 'dnsLabel':\n validateDnsLabel(val, displayKey, getters, { restricted: false }, errors);\n break;\n case 'dnsLabelRestricted':\n validateDnsLabel(val, displayKey, getters, { restricted: true }, errors);\n break;\n case 'hostname':\n validateHostname(val, displayKey, getters, { restricted: false }, errors);\n break;\n default:\n break;\n }\n\n return errors;\n}\n\nexport function validateBoolean(val, field, displayKey, getters, errors = []) {\n const { required } = field;\n\n if (required && !val && val !== false) {\n errors.push(getters['i18n/t']('validation.required', { key: displayKey }));\n\n return;\n }\n if (typeof val !== 'boolean' && !!val) {\n errors.push(getters['i18n/t']('validation.boolean', { key: displayKey }));\n }\n}\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrayList.vue?vue&type=template&id=59aaa5e9&scoped=true&\"\nimport script from \"./ArrayList.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrayList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArrayList.vue?vue&type=style&index=0&id=59aaa5e9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59aaa5e9\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=6703bcf4&prod&lang=scss&scoped=true&\"","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./MatchExpressions.vue?vue&type=style&index=0&id=3512fedb&prod&lang=scss&scoped=true&\"","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\nconst h = require('./handlers')\n\n/**\n * A mapping of all states in the finite state machine to a set of instructions\n * for handling or transitioning into other states. Each state can be handled\n * in one of two schemes: a tokenType map, or a subHandler.\n *\n * Standard expression elements are handled through the tokenType object. This\n * is an object map of all legal token types to encounter in this state (and\n * any unexpected token types will generate a thrown error) to an options\n * object that defines how they're handled. The available options are:\n *\n * {string} toState: The name of the state to which to transition\n * immediately after handling this token\n * {string} handler: The handler function to call when this token type is\n * encountered in this state. If omitted, the default handler\n * matching the token's \"type\" property will be called. If the handler\n * function does not exist, no call will be made and no error will be\n * generated. This is useful for tokens whose sole purpose is to\n * transition to other states.\n *\n * States that consume a subexpression should define a subHandler, the\n * function to be called with an expression tree argument when the\n * subexpression is complete. Completeness is determined through the\n * endStates object, which maps tokens on which an expression should end to the\n * state to which to transition once the subHandler function has been called.\n *\n * Additionally, any state in which it is legal to mark the AST as completed\n * should have a 'completable' property set to boolean true. Attempting to\n * call {@link Parser#complete} in any state without this property will result\n * in a thrown Error.\n *\n * @type {{}}\n */\nexports.states = {\n expectOperand: {\n tokenTypes: {\n literal: { toState: 'expectBinOp' },\n identifier: { toState: 'identifier' },\n unaryOp: {},\n openParen: { toState: 'subExpression' },\n openCurl: { toState: 'expectObjKey', handler: h.objStart },\n dot: { toState: 'traverse' },\n openBracket: { toState: 'arrayVal', handler: h.arrayStart }\n }\n },\n expectBinOp: {\n tokenTypes: {\n binaryOp: { toState: 'expectOperand' },\n pipe: { toState: 'expectTransform' },\n dot: { toState: 'traverse' },\n question: { toState: 'ternaryMid', handler: h.ternaryStart }\n },\n completable: true\n },\n expectTransform: {\n tokenTypes: {\n identifier: { toState: 'postTransform', handler: h.transform }\n }\n },\n expectObjKey: {\n tokenTypes: {\n identifier: { toState: 'expectKeyValSep', handler: h.objKey },\n closeCurl: { toState: 'expectBinOp' }\n }\n },\n expectKeyValSep: {\n tokenTypes: {\n colon: { toState: 'objVal' }\n }\n },\n postTransform: {\n tokenTypes: {\n openParen: { toState: 'argVal' },\n binaryOp: { toState: 'expectOperand' },\n dot: { toState: 'traverse' },\n openBracket: { toState: 'filter' },\n pipe: { toState: 'expectTransform' }\n },\n completable: true\n },\n postTransformArgs: {\n tokenTypes: {\n binaryOp: { toState: 'expectOperand' },\n dot: { toState: 'traverse' },\n openBracket: { toState: 'filter' },\n pipe: { toState: 'expectTransform' }\n },\n completable: true\n },\n identifier: {\n tokenTypes: {\n binaryOp: { toState: 'expectOperand' },\n dot: { toState: 'traverse' },\n openBracket: { toState: 'filter' },\n pipe: { toState: 'expectTransform' },\n question: { toState: 'ternaryMid', handler: h.ternaryStart }\n },\n completable: true\n },\n traverse: {\n tokenTypes: {\n identifier: { toState: 'identifier' }\n }\n },\n filter: {\n subHandler: h.filter,\n endStates: {\n closeBracket: 'identifier'\n }\n },\n subExpression: {\n subHandler: h.subExpression,\n endStates: {\n closeParen: 'expectBinOp'\n }\n },\n argVal: {\n subHandler: h.argVal,\n endStates: {\n comma: 'argVal',\n closeParen: 'postTransformArgs'\n }\n },\n objVal: {\n subHandler: h.objVal,\n endStates: {\n comma: 'expectObjKey',\n closeCurl: 'expectBinOp'\n }\n },\n arrayVal: {\n subHandler: h.arrayVal,\n endStates: {\n comma: 'arrayVal',\n closeBracket: 'expectBinOp'\n }\n },\n ternaryMid: {\n subHandler: h.ternaryMid,\n endStates: {\n colon: 'ternaryEnd'\n }\n },\n ternaryEnd: {\n subHandler: h.ternaryEnd,\n completable: true\n }\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","/*\nLanguage: Dart\nRequires: markdown.js\nAuthor: Maxim Dikun \nDescription: Dart a modern, object-oriented language developed by Google. For more information see https://www.dartlang.org/\nWebsite: https://dart.dev\nCategory: scripting\n*/\n\n/** @type LanguageFn */\nfunction dart(hljs) {\n const SUBST = {\n className: 'subst',\n variants: [ { begin: '\\\\$[A-Za-z0-9_]+' } ]\n };\n\n const BRACED_SUBST = {\n className: 'subst',\n variants: [\n {\n begin: /\\$\\{/,\n end: /\\}/\n }\n ],\n keywords: 'true false null this is new super'\n };\n\n const STRING = {\n className: 'string',\n variants: [\n {\n begin: 'r\\'\\'\\'',\n end: '\\'\\'\\''\n },\n {\n begin: 'r\"\"\"',\n end: '\"\"\"'\n },\n {\n begin: 'r\\'',\n end: '\\'',\n illegal: '\\\\n'\n },\n {\n begin: 'r\"',\n end: '\"',\n illegal: '\\\\n'\n },\n {\n begin: '\\'\\'\\'',\n end: '\\'\\'\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n BRACED_SUBST\n ]\n },\n {\n begin: '\"\"\"',\n end: '\"\"\"',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n BRACED_SUBST\n ]\n },\n {\n begin: '\\'',\n end: '\\'',\n illegal: '\\\\n',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n BRACED_SUBST\n ]\n },\n {\n begin: '\"',\n end: '\"',\n illegal: '\\\\n',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n BRACED_SUBST\n ]\n }\n ]\n };\n BRACED_SUBST.contains = [\n hljs.C_NUMBER_MODE,\n STRING\n ];\n\n const BUILT_IN_TYPES = [\n // dart:core\n 'Comparable',\n 'DateTime',\n 'Duration',\n 'Function',\n 'Iterable',\n 'Iterator',\n 'List',\n 'Map',\n 'Match',\n 'Object',\n 'Pattern',\n 'RegExp',\n 'Set',\n 'Stopwatch',\n 'String',\n 'StringBuffer',\n 'StringSink',\n 'Symbol',\n 'Type',\n 'Uri',\n 'bool',\n 'double',\n 'int',\n 'num',\n // dart:html\n 'Element',\n 'ElementList'\n ];\n const NULLABLE_BUILT_IN_TYPES = BUILT_IN_TYPES.map((e) => `${e}?`);\n\n const BASIC_KEYWORDS = [\n \"abstract\",\n \"as\",\n \"assert\",\n \"async\",\n \"await\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"covariant\",\n \"default\",\n \"deferred\",\n \"do\",\n \"dynamic\",\n \"else\",\n \"enum\",\n \"export\",\n \"extends\",\n \"extension\",\n \"external\",\n \"factory\",\n \"false\",\n \"final\",\n \"finally\",\n \"for\",\n \"Function\",\n \"get\",\n \"hide\",\n \"if\",\n \"implements\",\n \"import\",\n \"in\",\n \"inferface\",\n \"is\",\n \"late\",\n \"library\",\n \"mixin\",\n \"new\",\n \"null\",\n \"on\",\n \"operator\",\n \"part\",\n \"required\",\n \"rethrow\",\n \"return\",\n \"set\",\n \"show\",\n \"static\",\n \"super\",\n \"switch\",\n \"sync\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typedef\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\"\n ];\n\n const KEYWORDS = {\n keyword: BASIC_KEYWORDS,\n built_in:\n BUILT_IN_TYPES\n .concat(NULLABLE_BUILT_IN_TYPES)\n .concat([\n // dart:core\n 'Never',\n 'Null',\n 'dynamic',\n 'print',\n // dart:html\n 'document',\n 'querySelector',\n 'querySelectorAll',\n 'window'\n ]),\n $pattern: /[A-Za-z][A-Za-z0-9_]*\\??/\n };\n\n return {\n name: 'Dart',\n keywords: KEYWORDS,\n contains: [\n STRING,\n hljs.COMMENT(\n /\\/\\*\\*(?!\\/)/,\n /\\*\\//,\n {\n subLanguage: 'markdown',\n relevance: 0\n }\n ),\n hljs.COMMENT(\n /\\/{3,} ?/,\n /$/, { contains: [\n {\n subLanguage: 'markdown',\n begin: '.',\n end: '$',\n relevance: 0\n }\n ] }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface',\n end: /\\{/,\n excludeEnd: true,\n contains: [\n { beginKeywords: 'extends implements' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '@[A-Za-z]+'\n },\n { begin: '=>' // No markup, just a relevance booster\n }\n ]\n };\n}\n\nmodule.exports = dart;\n","export const platform = ( typeof window === 'undefined' ? 'server' : window.navigator.platform.toLowerCase() );\nexport const userAgent = ( typeof window === 'undefined' ? 'server' : window.navigator.userAgent );\n\nexport const isLinuxy = platform.includes('linux') || platform.includes('unix');\nexport const isMac = platform.includes('mac');\nexport const isWin = platform.includes('win');\n\nexport const alternateKey = (isMac ? 'metaKey' : 'ctrlKey');\nexport const alternateLabel = (isMac ? 'Command' : 'Control');\n\nexport const moreKey = alternateKey;\nexport const moreLabel = alternateLabel;\n\nexport const rangeKey = 'shiftKey';\nexport const rangeLabel = 'Shift';\n\nexport function isAlternate(event) {\n return !!event[alternateKey];\n}\n\nexport function isMore(event) {\n return !!event[moreKey];\n}\n\nexport function isRange(event) {\n return !!event[rangeKey];\n}\n\nexport function suppressContextMenu(event) {\n return event.ctrlKey && event.button === 2;\n}\n\n// Only intended to work for Mobile Safari at the moment...\nexport function version() {\n const match = userAgent.match(/\\s+Version\\/([0-9.]+)/);\n\n if ( match ) {\n return parseFloat(match[1]);\n }\n\n return null;\n}\n\nexport const isGecko = userAgent.includes('Gecko/');\nexport const isBlink = userAgent.includes('Chrome/');\nexport const isWebKit = !isBlink && userAgent.includes('AppleWebKit/');\nexport const isSafari = !isBlink && userAgent.includes('Safari/');\nexport const isMobile = /Android|webOS|iPhone|iPad|iPod|IEMobile/i.test(userAgent);\n\nexport const KEY = {\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n ESCAPE: 27,\n CR: 13,\n LF: 10,\n TAB: 9,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n HOME: 35,\n END: 36,\n};\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValue.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./KeyValue.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./KeyValue.vue?vue&type=template&id=517e44db&\"\nimport script from \"./KeyValue.vue?vue&type=script&lang=js&\"\nexport * from \"./KeyValue.vue?vue&type=script&lang=js&\"\nimport style0 from \"./KeyValue.vue?vue&type=style&index=0&id=517e44db&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceYaml.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceYaml.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceYaml.vue?vue&type=template&id=0557e0df&scoped=true&\"\nimport script from \"./ResourceYaml.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceYaml.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceYaml.vue?vue&type=style&index=0&id=0557e0df&prod&lang=scss&scoped=true&\"\nimport style1 from \"./ResourceYaml.vue?vue&type=style&index=1&id=0557e0df&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0557e0df\",\n null\n \n)\n\nexport default component.exports","import { Store } from 'vuex';\nimport isEmpty from 'lodash/isEmpty';\nimport semver from 'semver';\nimport { randomStr } from '@shell/utils/string';\nimport { NAMESPACE } from '@shell/config/types';\nimport {\n KUBEWARDEN, CatalogApp, Severity, Result, PolicyReport, ClusterPolicyReport, PolicyReportResult, PolicyReportSummary, WG_POLICY_K8S\n} from '../types';\nimport * as coreTypes from '../core/core-resources';\nimport { createKubewardenRoute } from '../utils/custom-routing';\nimport { splitGroupKind, isResourceNamespaced } from './core';\nimport { fetchControllerApp } from './kubewardenController';\n\nfunction isValidAppVersion(controllerApp?: CatalogApp): boolean {\n return !!controllerApp &&\n !!controllerApp.spec?.chart?.metadata?.appVersion &&\n semver.gte(controllerApp.spec.chart.metadata.appVersion, '1.10.100');\n}\n\n/**\n * Fetches either PolicyReports or ClusterPolicyReports based on version compatibility and dispatches update actions.\n * @param store\n * @param isClusterLevel\n * @returns `PolicyReport[] | ClusterPolicyReport[] | void`\n */\nexport async function getReports(\n store: Store,\n isClusterLevel: boolean = false,\n resourceType?: string\n): Promise | void> {\n let outReports: Array = [];\n const reportTypes = [];\n\n if ( isClusterLevel ) {\n reportTypes.push(WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE);\n }\n\n if ( resourceType || !isClusterLevel ) {\n reportTypes.push(WG_POLICY_K8S.POLICY_REPORT.TYPE);\n }\n\n for ( const reportType of reportTypes ) {\n const schema = store.getters['cluster/schemaFor'](reportType);\n let controllerApp: CatalogApp | undefined = store.getters['kubewarden/controllerApp'];\n\n if ( !controllerApp ) {\n controllerApp = await fetchControllerApp(store);\n }\n\n if ( schema ) {\n try {\n const reports = await store.dispatch('cluster/findAll', { type: reportType }, { root: true });\n\n if ( !isEmpty(reports) ) {\n const updateAction = reportType === WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE ? 'kubewarden/updateClusterPolicyReports' : 'kubewarden/updatePolicyReports';\n\n reports.forEach((report: PolicyReport | ClusterPolicyReport) => store.dispatch(updateAction, report));\n\n outReports = outReports.concat(reports);\n }\n } catch (e) {\n console.warn(`Error fetching ${ reportType }: ${ e }`); // eslint-disable-line no-console\n }\n }\n }\n\n return outReports;\n}\n\n/**\n * Retrieves a filtered summary for both PolicyReports and ClusterPolicyReports.\n * @param store The store containing the reports.\n * @param resource The resource for which the summary is generated.\n * @param isClusterLevel Flag to determine if the summary should include cluster level reports.\n * @returns `PolicyReportSummary`.\n */\nexport function getFilteredSummary(\n store: Store,\n resource: any,\n isClusterLevel: boolean = false\n): PolicyReportSummary {\n const outSummary: PolicyReportSummary = {\n pass: 0,\n fail: 0,\n warn: 0,\n error: 0,\n skip: 0\n };\n const reportTypes: string[] = [];\n\n if ( isClusterLevel || resource?.type === NAMESPACE ) {\n reportTypes.push(WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE);\n }\n\n if ( isResourceNamespaced(resource) || resource?.type === NAMESPACE ) {\n reportTypes.push(WG_POLICY_K8S.POLICY_REPORT.TYPE);\n }\n\n for ( const report of reportTypes ) {\n const storeKey = report === WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE ? 'clusterPolicyReports' : 'policyReports';\n const reports = store.getters[`kubewarden/${ storeKey }`];\n\n if ( !isEmpty(reports) ) {\n const filtered: PolicyReportResult[] = getFilteredArrayOfReportResults(reports, resource, report === WG_POLICY_K8S.CLUSTER_POLICY_REPORT.TYPE);\n\n if ( !isEmpty(filtered) ) {\n filtered.forEach((r: PolicyReportResult) => {\n const resultVal = r.result;\n\n if ( resultVal ) {\n (outSummary as any)[resultVal]++;\n }\n });\n }\n }\n }\n\n return outSummary;\n}\n\n/**\n * Helper function to filter report results based on resource type and managed-by labels\n * @param reports\n * @param resource\n * @returns `PolicyReportResult[]`\n */\nfunction getFilteredArrayOfReportResults(\n reports: Array,\n resource: any,\n isClusterLevel?: boolean\n): PolicyReportResult[] {\n let outReports: Array = [];\n\n // Filter out reports based on 'app.kubernetes.io/managed-by' label\n reports = reports.filter(report => report.metadata?.labels?.['app.kubernetes.io/managed-by'] === 'kubewarden');\n\n if ( resource?.type === NAMESPACE ) {\n if ( isClusterLevel ) {\n // Include both PolicyReports and ClusterPolicyReports for Namespace when isClusterLevel is true\n outReports = reports.filter((report) => {\n if (report.scope) {\n return (\n report.scope.name === resource.name ||\n (('namespace' in report.scope) && report.scope.namespace === resource.name)\n );\n }\n });\n } else {\n // Filter PolicyReports for namespace scope\n outReports = reports.filter((report) => {\n if ( report.scope ) {\n return 'namespace' in report.scope && report.scope.namespace === resource?.name;\n }\n });\n }\n } else {\n outReports = reports;\n }\n\n const outResults: PolicyReportResult[] = [];\n\n // Find the report that is scoped to the resource name\n if ( resource?.type === 'namespace' ) {\n outReports.forEach((report: any) => {\n report.results?.forEach((result: any) => {\n outResults.push({\n ...result,\n scope: report.scope,\n kind: report.kind,\n policyName: result.properties?.['policy-name'],\n });\n });\n });\n } else {\n outReports.forEach((report: any) => {\n if ( report.scope?.name === resource.metadata.name ) {\n report.results?.forEach((result: any) => {\n outResults.push({\n ...result,\n policyName: result.properties?.['policy-name'],\n });\n });\n }\n });\n }\n\n if ( !isEmpty(outResults) ) {\n // Assign uid for SortableTable sub-row\n outResults?.forEach((report: any) => {\n Object.assign(report, { uid: randomStr() });\n });\n }\n\n return outResults;\n}\n\n/**\n * Filters PolicyReports for namespaced resources or the Namespace resource type\n * @param store\n * @param resource\n * @returns `PolicyReport | PolicyReportResult[] | null | void`\n */\nexport async function getFilteredReports(store: Store, resource: any): Promise {\n const schema = store.getters['cluster/schemaFor'](resource?.type);\n\n if ( schema ) {\n try {\n // Determine if we need to fetch cluster level reports or resource-specific reports\n const isClusterLevel = resource?.type === NAMESPACE || !isResourceNamespaced(resource);\n const resourceType = resource?.type;\n\n // Fetch the appropriate reports based on the resource context\n const reports = await getReports(store, isClusterLevel, resourceType);\n\n if ( reports && !isEmpty(reports) ) {\n // Filter and return the applicable report results\n return getFilteredArrayOfReportResults(reports, resource, isClusterLevel);\n }\n } catch (e) {\n console.warn(`Error fetching PolicyReports: ${ e }`); // eslint-disable-line no-console\n }\n }\n\n return null;\n}\n\n/**\n * Finds the resource (policy) that is connected to the PolicyReportResult and returns the route.\n * @param store\n * @param report: `PolicyReportResult`\n * @returns `createKubewardenRoute` | Will return a route to either a ClusterAdmissionPolicy or AdmissionPolicy\n */\nexport function getLinkForPolicy(store: Store, report: PolicyReportResult): Object | void {\n if ( report?.policy ) {\n const apSchema = store.getters['cluster/schemaFor'](KUBEWARDEN.ADMISSION_POLICY);\n const capSchema = store.getters['cluster/schemaFor'](KUBEWARDEN.CLUSTER_ADMISSION_POLICY);\n const policyType: string = report.properties?.['policy-namespace'] ? KUBEWARDEN.ADMISSION_POLICY : KUBEWARDEN.CLUSTER_ADMISSION_POLICY;\n\n if ( policyType === KUBEWARDEN.ADMISSION_POLICY && apSchema ) {\n return createKubewardenRoute({\n name: 'c-cluster-product-resource-namespace-id',\n params: {\n resource: policyType, id: report?.policyName, namespace: report.properties?.['policy-namespace']\n }\n });\n }\n\n if ( policyType === KUBEWARDEN.CLUSTER_ADMISSION_POLICY && capSchema ) {\n return createKubewardenRoute({\n name: 'c-cluster-product-resource-id',\n params: { resource: policyType, id: report?.policyName }\n });\n }\n }\n}\n\n/**\n * Finds the resource link from a policy report for a Namespace's tab component. Since the `type` is\n * not passed in from the report, it needs to be determined by the `kind` of the resource. For core\n * resources this works as is, but for non-core resources (e.g. `apps.deployments`), this is extrapolated\n * by the `apiVersion` combined with the `kind`.\n * @param report: `PolicyReport\n * @returns `Route | void`\n */\nexport function getLinkForResource(report: PolicyReport): Object | void {\n if ( !isEmpty(report.scope) ) {\n const resource = report.scope;\n\n if ( resource ) {\n const isCore = Object.values(coreTypes).find(type => resource.kind === type.attributes.kind);\n let resourceType;\n\n if ( isCore ) {\n resourceType = resource.kind.toLowerCase();\n } else {\n resourceType = splitGroupKind(resource);\n }\n\n if ( resourceType ) {\n if ( resource.namespace ) {\n return {\n name: 'c-cluster-product-resource-namespace-id',\n params: {\n resource: resourceType, id: resource.name, namespace: resource.namespace\n }\n };\n }\n\n return {\n name: 'c-cluster-product-resource-id',\n params: { resource: resourceType, id: resource.name }\n };\n }\n }\n }\n}\n\n/**\n * Determines color for PolicyReport status\n * @param result | PolicyReport summary result || report resource.result\n * @returns string\n */\nexport function colorForResult(result: Result): string {\n switch (result) {\n case Result.FAIL:\n return 'text-error';\n case Result.ERROR:\n return 'sizzle-warning';\n case Result.PASS:\n return 'text-success';\n case Result.WARN:\n return 'text-warning';\n case Result.SKIP:\n return 'text-darker';\n default:\n return 'text-muted';\n }\n}\n\n/**\n * Determines color for PolicyReport severity\n * @param severity | PolicyReport severity\n * @returns string\n */\nexport function colorForSeverity(severity: Severity): string {\n switch (severity) {\n case Severity.INFO:\n return 'bg-info';\n case Severity.LOW:\n return 'bg-warning';\n case Severity.MEDIUM:\n return 'bg-warning';\n case Severity.HIGH:\n return 'bg-warning';\n case Severity.CRITICAL:\n return 'bg-critical';\n default:\n return 'bg-muted';\n }\n}\n\n/**\n * Determines if the kubewarden-controller app has a compatible version for PolicyReports,\n * for kubewarden-controller version `>= 1.11` it requires an extension version of `>= 1.4.0`\n * for kubewarden-controller version `<= 1.10` it requires an extension version of `< 1.4.0`\n * @param string\n * @param string\n * @returns Object\n */\nexport function newPolicyReportCompatible(controllerAppVersion: string, uiPluginVersion: string): Object | void {\n if (semver.gte(uiPluginVersion, '1.4.0')) {\n return {\n oldPolicyReports: semver.gt(controllerAppVersion, '1.10.100'),\n newPolicyReports: true\n };\n }\n\n if (semver.lt(uiPluginVersion, '1.4.0')) {\n return {\n oldPolicyReports: true,\n newPolicyReports: semver.lte(controllerAppVersion, '1.10.100')\n };\n }\n\n return {\n oldPolicyReports: true,\n newPolicyReports: true\n };\n}","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".favorite[data-v-f74a378a]{position:relative;cursor:pointer;font-size:20px;transform:ease-in-out-all 1s}.favorite.icon-star-open[data-v-f74a378a]{color:var(--muted)}.favorite.icon-star-closed[data-v-f74a378a]{color:var(--body-text)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","/*\n * Jexl\n * Copyright 2019 Tom Shawver\n */\n\n/**\n * Evaluates an ArrayLiteral by returning its value, with each element\n * independently run through the evaluator.\n * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an\n * ObjectLiteral as the top node\n * @returns {Promise.<[]>} resolves to a map contained evaluated values.\n * @private\n */\nexports.ArrayLiteral = function(ast) {\n return this.evalArray(ast.value)\n}\n\n/**\n * Evaluates a BinaryExpression node by running the Grammar's evaluator for\n * the given operator.\n * @param {{type: 'BinaryExpression', operator: , left: {},\n * right: {}}} ast An expression tree with a BinaryExpression as the top\n * node\n * @returns {Promise<*>} resolves with the value of the BinaryExpression.\n * @private\n */\nexports.BinaryExpression = function(ast) {\n return this.Promise.all([this.eval(ast.left), this.eval(ast.right)]).then(\n arr => this._grammar[ast.operator].eval(arr[0], arr[1])\n )\n}\n\n/**\n * Evaluates a ConditionalExpression node by first evaluating its test branch,\n * and resolving with the consequent branch if the test is truthy, or the\n * alternate branch if it is not. If there is no consequent branch, the test\n * result will be used instead.\n * @param {{type: 'ConditionalExpression', test: {}, consequent: {},\n * alternate: {}}} ast An expression tree with a ConditionalExpression as\n * the top node\n * @private\n */\nexports.ConditionalExpression = function(ast) {\n return this.eval(ast.test).then(res => {\n if (res) {\n if (ast.consequent) {\n return this.eval(ast.consequent)\n }\n return res\n }\n return this.eval(ast.alternate)\n })\n}\n\n/**\n * Evaluates a FilterExpression by applying it to the subject value.\n * @param {{type: 'FilterExpression', relative: , expr: {},\n * subject: {}}} ast An expression tree with a FilterExpression as the top\n * node\n * @returns {Promise<*>} resolves with the value of the FilterExpression.\n * @private\n */\nexports.FilterExpression = function(ast) {\n return this.eval(ast.subject).then(subject => {\n if (ast.relative) {\n return this._filterRelative(subject, ast.expr)\n }\n return this._filterStatic(subject, ast.expr)\n })\n}\n\n/**\n * Evaluates an Identifier by either stemming from the evaluated 'from'\n * expression tree or accessing the context provided when this Evaluator was\n * constructed.\n * @param {{type: 'Identifier', value: , [from]: {}}} ast An expression\n * tree with an Identifier as the top node\n * @returns {Promise<*>|*} either the identifier's value, or a Promise that\n * will resolve with the identifier's value.\n * @private\n */\nexports.Identifier = function(ast) {\n if (!ast.from) {\n return ast.relative ? this._relContext[ast.value] : this._context[ast.value]\n }\n return this.eval(ast.from).then(context => {\n if (context === undefined || context === null) {\n return undefined\n }\n if (Array.isArray(context)) {\n context = context[0]\n }\n return context[ast.value]\n })\n}\n\n/**\n * Evaluates a Literal by returning its value property.\n * @param {{type: 'Literal', value: }} ast An expression\n * tree with a Literal as its only node\n * @returns {string|number|boolean} The value of the Literal node\n * @private\n */\nexports.Literal = function(ast) {\n return ast.value\n}\n\n/**\n * Evaluates an ObjectLiteral by returning its value, with each key\n * independently run through the evaluator.\n * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an\n * ObjectLiteral as the top node\n * @returns {Promise<{}>} resolves to a map contained evaluated values.\n * @private\n */\nexports.ObjectLiteral = function(ast) {\n return this.evalMap(ast.value)\n}\n\n/**\n * Evaluates a Transform node by applying a function from the transforms map\n * to the subject value.\n * @param {{type: 'Transform', name: , subject: {}}} ast An\n * expression tree with a Transform as the top node\n * @returns {Promise<*>|*} the value of the transformation, or a Promise that\n * will resolve with the transformed value.\n * @private\n */\nexports.Transform = function(ast) {\n const transform = this._transforms[ast.name]\n if (!transform) {\n throw new Error(`Transform ${ast.name} is not defined.`)\n }\n return this.Promise.all([\n this.eval(ast.subject),\n this.evalArray(ast.args || [])\n ]).then(arr => transform.apply(null, [arr[0]].concat(arr[1])))\n}\n\n/**\n * Evaluates a Unary expression by passing the right side through the\n * operator's eval function.\n * @param {{type: 'UnaryExpression', operator: , right: {}}} ast An\n * expression tree with a UnaryExpression as the top node\n * @returns {Promise<*>} resolves with the value of the UnaryExpression.\n * @constructor\n */\nexports.UnaryExpression = function(ast) {\n return this.eval(ast.right).then(right =>\n this._grammar[ast.operator].eval(right)\n )\n}\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Masthead.vue?vue&type=style&index=0&id=c47575b0&prod&lang=scss&scoped=true&\"","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".title[data-v-c47575b0]{align-items:center;display:flex}.title h1[data-v-c47575b0]{margin:0}header[data-v-c47575b0]{margin-bottom:20px}header.with-subheader[data-v-c47575b0]{grid-template-areas:\\\"type-banner type-banner\\\" \\\"title actions\\\" \\\"sub-header sub-header\\\" \\\"state-banner state-banner\\\"}.sub-header[data-v-c47575b0]{grid-area:sub-header}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var baseClone = require('./_baseClone'),\n baseMatches = require('./_baseMatches');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\nfunction matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = matches;\n","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Banner.vue?vue&type=style&index=0&id=5a0a6a82&prod&lang=scss&scoped=true&\"","\n/**\n * Expose `isUrl`.\n */\n\nmodule.exports = isUrl;\n\n/**\n * RegExps.\n * A URL must match #1 and then at least one of #2/#3.\n * Use two levels of REs to avoid REDOS.\n */\n\nvar protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\n\nvar localhostDomainRE = /^localhost[\\:?\\d]*(?:[^\\:?\\d]\\S*)?$/\nvar nonLocalhostDomainRE = /^[^\\s\\.]+\\.\\S{2,}$/;\n\n/**\n * Loosely validate a URL `string`.\n *\n * @param {String} string\n * @return {Boolean}\n */\n\nfunction isUrl(string){\n if (typeof string !== 'string') {\n return false;\n }\n\n var match = string.match(protocolAndDomainRE);\n if (!match) {\n return false;\n }\n\n var everythingAfterProtocol = match[1];\n if (!everythingAfterProtocol) {\n return false;\n }\n\n if (localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol)) {\n return true;\n }\n\n return false;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading',{attrs:{\"mode\":\"relative\"}}):_c('div',[_c('Tab',{attrs:{\"name\":\"general\",\"label-key\":\"kubewarden.tabs.general.label\",\"weight\":99}},[_c('General',{attrs:{\"data-testid\":\"ps-config-general-tab\",\"mode\":_vm.mode,\"service-accounts\":_vm.serviceAccounts},on:{\"update-general\":_vm.updateGeneral},model:{value:(_vm.chartValues),callback:function ($$v) {_vm.chartValues=$$v},expression:\"chartValues\"}})],1),_c('Tab',{attrs:{\"name\":\"security-contexts\",\"label-key\":\"kubewarden.tabs.security-contexts.label\",\"weight\":98}},[_c('SecurityContexts',{attrs:{\"data-testid\":\"ps-config-security-contexts-tab\",\"mode\":_vm.mode},on:{\"update-security-contexts\":_vm.updateSecurityContexts},model:{value:(_vm.chartValues.spec),callback:function ($$v) {_vm.$set(_vm.chartValues, \"spec\", $$v)},expression:\"chartValues.spec\"}})],1),_c('Tab',{attrs:{\"name\":\"labels\",\"label-key\":\"generic.labelsAndAnnotations\",\"weight\":97}},[_c('Labels',{attrs:{\"data-testid\":\"ps-config-labels-tab\",\"mode\":_vm.mode},model:{value:(_vm.chartValues),callback:function ($$v) {_vm.chartValues=$$v},expression:\"chartValues\"}})],1),_c('Tab',{attrs:{\"name\":\"verification\",\"label-key\":\"kubewarden.tabs.verification.label\",\"weight\":96}},[_c('Verification',{attrs:{\"data-testid\":\"ps-config-verification-tab\",\"value\":_vm.chartValues.spec,\"mode\":_vm.mode,\"config-maps\":_vm.configMaps},on:{\"update-vconfig\":_vm.updateSpec}})],1),_c('Tab',{attrs:{\"name\":\"registry\",\"label-key\":\"kubewarden.tabs.registry.label\",\"weight\":95},on:{\"active\":_vm.refresh}},[_c('Registry',{ref:\"registry\",attrs:{\"data-testid\":\"ps-config-registry-tab\",\"value\":_vm.chartValues.spec,\"mode\":_vm.mode},on:{\"update-registry\":_vm.updateSpec}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.containerClass},[_c('div',{class:_vm.defaultSectionClass},[_c('div',{staticClass:\"labels\"},[_c('div',{staticClass:\"labels__header\"},[(_vm.showLabelTitle)?_c('h3',[_c('t',{attrs:{\"k\":\"labels.labels.title\"}})],1):_vm._e(),(_vm.value.hasSystemLabels)?_c('ToggleSwitch',{attrs:{\"name\":\"label-system-toggle\",\"on-label\":_vm.t('labels.labels.show')},model:{value:(_vm.toggler),callback:function ($$v) {_vm.toggler=$$v},expression:\"toggler\"}}):_vm._e()],1),_c('p',{staticClass:\"mt-10 mb-10\"},[_c('t',{attrs:{\"k\":\"labels.labels.description\"}})],1),_c('div',{class:_vm.columnsClass},[_vm._t(\"labels\",function(){return [[_c('KeyValue',{key:\"labels\",attrs:{\"value\":_vm.value.labels,\"protected-keys\":_vm.value.systemLabels || [],\"toggle-filter\":_vm.toggler,\"add-label\":_vm.t('labels.addLabel'),\"mode\":_vm.mode,\"read-allowed\":false,\"value-can-be-empty\":true},on:{\"input\":function($event){return _vm.value.setLabels($event)}}})]]},{\"toggler\":_vm.toggler})],2)])]),_c('div',{staticClass:\"spacer\"}),(_vm.showAnnotations)?_c('div',{class:_vm.sectionClass},[_c('KeyValue',{key:\"annotations\",attrs:{\"value\":_vm.value.annotations,\"add-label\":_vm.t('labels.addAnnotation'),\"mode\":_vm.mode,\"protected-keys\":_vm.value.systemAnnotations || [],\"toggle-filter\":_vm.toggler,\"title\":_vm.t('labels.annotations.title'),\"title-protip\":_vm.annotationTitleTooltip,\"read-allowed\":false,\"value-can-be-empty\":true},on:{\"input\":function($event){return _vm.value.setAnnotations($event)}}})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"toggle-container\"},[_c('span',{staticClass:\"label no-select hand\",class:{ active: !_vm.state},on:{\"click\":function($event){return _vm.toggle(false)}}},[_vm._v(_vm._s(_vm.offLabel))]),_c('label',{staticClass:\"switch hand\"},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.state},on:{\"input\":function($event){return _vm.toggle(null)}}}),_c('span',{staticClass:\"slider round\"})]),_c('span',{staticClass:\"label no-select hand\",class:{ active: _vm.state},on:{\"click\":function($event){return _vm.toggle(true)}}},[_vm._v(_vm._s(_vm.onLabel))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue';\n\ntype StateType = boolean | 'true' | 'false' | undefined;\n\nexport default defineComponent({\n props: {\n value: {\n type: [Boolean, String, Number],\n default: false\n },\n\n offValue: {\n type: [Boolean, String, Number],\n default: false,\n },\n\n onValue: {\n type: [Boolean, String, Number],\n default: true,\n },\n\n offLabel: {\n type: String,\n default: '',\n },\n\n onLabel: {\n type: String,\n default: '',\n },\n },\n data() {\n return { state: false as StateType };\n },\n\n watch: {\n value: {\n handler() {\n this.state = this.value === this.onValue;\n },\n immediate: true\n }\n },\n\n methods: {\n toggle(neu: StateType | null) {\n this.state = neu === null ? !this.state : neu;\n this.$emit('input', this.state ? this.onValue : this.offValue);\n }\n }\n});\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--15-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../ts-loader/index.js??ref--15-3!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--15-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../ts-loader/index.js??ref--15-3!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ToggleSwitch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ToggleSwitch.vue?vue&type=template&id=40a56591&scoped=true&\"\nimport script from \"./ToggleSwitch.vue?vue&type=script&lang=ts&\"\nexport * from \"./ToggleSwitch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ToggleSwitch.vue?vue&type=style&index=0&id=40a56591&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"40a56591\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Labels.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Labels.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Labels.vue?vue&type=template&id=ab6b702c&scoped=true&\"\nimport script from \"./Labels.vue?vue&type=script&lang=js&\"\nexport * from \"./Labels.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Labels.vue?vue&type=style&index=0&id=ab6b702c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ab6b702c\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=5a686260&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SequenceTree.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SequenceTree.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SequenceTree.vue?vue&type=template&id=4a3b1176&scoped=true&\"\nimport script from \"./SequenceTree.vue?vue&type=script&lang=js&\"\nexport * from \"./SequenceTree.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SequenceTree.vue?vue&type=style&index=0&id=4a3b1176&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a3b1176\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=6703bcf4&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=6703bcf4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6703bcf4\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=11718cf1&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[_c('h3',{staticClass:\"mt-20\"},[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.podConfig'))+\" \")]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col span-12 mb-40\"},[_c('Checkbox',{attrs:{\"mode\":_vm.mode,\"data-testid\":\"ps-config-security-context-pod-runAsNonRoot-input\",\"label-key\":\"kubewarden.policyServerConfig.securityContexts.runAsNonRoot.label\"},on:{\"input\":function($event){return _vm.updateData($event, 'runAsNonRoot')}},model:{value:(_vm.runAsNonRoot),callback:function ($$v) {_vm.runAsNonRoot=$$v},expression:\"runAsNonRoot\"}})],1)]),_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroup.label'))+\" \")]),_c('LabeledInput',{attrs:{\"data-testid\":\"ps-config-security-context-pod-fsGroup-input\",\"type\":\"number\",\"min\":\"0\",\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows,\"label\":_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroup.label')},on:{\"input\":function($event){return _vm.updateData($event, 'fsGroup')}},model:{value:(_vm.fsGroup),callback:function ($$v) {_vm.fsGroup=_vm._n($$v)},expression:\"fsGroup\"}})],1)]),_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroupChangePolicy.label'))+\" \")]),_c('LabeledInput',{attrs:{\"data-testid\":\"ps-config-security-context-pod-fsGroupChangePolicy-input\",\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows,\"label\":_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroupChangePolicy.label'),\"placeholder\":_vm.t('kubewarden.policyServerConfig.securityContexts.fsGroupChangePolicy.placeholder')},on:{\"input\":function($event){return _vm.updateData($event, 'fsGroupChangePolicy')}},model:{value:(_vm.fsGroupChangePolicy),callback:function ($$v) {_vm.fsGroupChangePolicy=$$v},expression:\"fsGroupChangePolicy\"}})],1)]),_c('div',{staticClass:\"row mb-20\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.runAsGroup'))+\" \")]),_c('LabeledInput',{attrs:{\"data-testid\":\"ps-config-security-context-pod-runAsGroup-input\",\"type\":\"number\",\"min\":\"0\",\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows,\"label\":_vm.t('kubewarden.policyServerConfig.securityContexts.runAsGroup')},on:{\"input\":function($event){return _vm.updateData($event, 'runAsGroup')}},model:{value:(_vm.runAsGroup),callback:function ($$v) {_vm.runAsGroup=_vm._n($$v)},expression:\"runAsGroup\"}})],1)]),_c('div',{staticClass:\"row mb-40\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.runAsUser'))+\" \")]),_c('LabeledInput',{attrs:{\"data-testid\":\"ps-config-security-context-pod-runAsUser-input\",\"type\":\"number\",\"min\":\"0\",\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows,\"label\":_vm.t('kubewarden.policyServerConfig.securityContexts.runAsUser')},on:{\"input\":function($event){return _vm.updateData($event, 'runAsUser')}},model:{value:(_vm.runAsUser),callback:function ($$v) {_vm.runAsUser=_vm._n($$v)},expression:\"runAsUser\"}})],1)]),_c('SeLinuxOptions',{attrs:{\"value\":_vm.seLinuxOptions,\"mode\":_vm.mode,\"config-type\":\"pod\",\"disabled\":_vm.disabledByOsWindows},on:{\"update-se-linux-options\":function($event){return _vm.updateData($event, 'seLinuxOptions')}}}),_c('SeccompProfile',{attrs:{\"value\":_vm.seccompProfile,\"mode\":_vm.mode,\"config-type\":\"pod\",\"disabled\":_vm.disabledByOsWindows},on:{\"update-seccomp-profile\":function($event){return _vm.updateData($event, 'seccompProfile')}}}),_c('div',{staticClass:\"row mb-40\"},[_c('div',{staticClass:\"col span-6\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.supplementalGroups.label'))+\" \")]),_c('ArrayListInteger',{attrs:{\"value\":_vm.supplementalGroups,\"data-testid\":\"ps-config-security-context-pod-supplementalGroups-input\",\"add-label\":_vm.t('kubewarden.policyServerConfig.securityContexts.supplementalGroups.addLabel'),\"input-label\":_vm.t('kubewarden.policyServerConfig.securityContexts.supplementalGroups.label'),\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows},on:{\"input\":function($event){return _vm.updateData($event, 'supplementalGroups')}}})],1)]),_c('div',{staticClass:\"row mb-40\"},[_c('div',{staticClass:\"col\"},[_c('h4',[_vm._v(\" \"+_vm._s(_vm.t('kubewarden.policyServerConfig.securityContexts.sysctls.label'))+\" \")]),_c('SysctlsArrayList',{attrs:{\"value\":_vm.sysctls,\"data-testid\":\"ps-config-security-context-pod-sysctls-input\",\"add-label\":_vm.t('kubewarden.policyServerConfig.securityContexts.sysctls.addLabel'),\"input-label\":_vm.sysctlsInputLabel,\"input-placeholder-label\":_vm.sysctlsInputPlaceholderLabel,\"mode\":_vm.mode,\"disabled\":_vm.disabledByOsWindows},on:{\"input\":function($event){return _vm.updateData($event, 'sysctls')}}})],1)]),_c('WindowsOptions',{attrs:{\"value\":_vm.windowsOptions,\"mode\":_vm.mode,\"config-type\":\"pod\",\"disabled\":_vm.disabledByOsLinux},on:{\"update-windows-options\":function($event){return _vm.updateData($event, 'windowsOptions')}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ArrayList',{staticClass:\"array-list-integer\",attrs:{\"value\":_vm.arrayListInteger,\"add-allowed\":true,\"add-label\":_vm.addLabel,\"disabled\":_vm.disabled,\"default-add-value\":0},on:{\"input\":_vm.handleArrayListUpdate},scopedSlots:_vm._u([{key:\"columns\",fn:function(scope){return [_c('LabeledInput',{attrs:{\"data-testid\":\"array-list-integer-input\",\"type\":\"number\",\"min\":\"0\",\"mode\":_vm.mode,\"disabled\":_vm.disabled,\"label\":_vm.inputLabel},on:{\"input\":function($event){return _vm.updateRow(scope.i, $event)}},model:{value:(scope.row.value),callback:function ($$v) {_vm.$set(scope.row, \"value\", _vm._n($$v))},expression:\"scope.row.value\"}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayListInteger.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ArrayListInteger.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ArrayListInteger.vue?vue&type=template&id=c5877aee&scoped=true&\"\nimport script from \"./ArrayListInteger.vue?vue&type=script&lang=js&\"\nexport * from \"./ArrayListInteger.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ArrayListInteger.vue?vue&type=style&index=0&id=c5877aee&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c5877aee\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ArrayList',{staticClass:\"sysctls-array-list\",attrs:{\"value\":_vm.value,\"add-allowed\":true,\"add-label\":_vm.addLabel,\"disabled\":_vm.disabled,\"default-add-value\":0},on:{\"add\":_vm.handleAddRow,\"remove\":_vm.handleRemoveRow},scopedSlots:_vm._u([{key:\"columns\",fn:function(scope){return [_c('LabeledInput',{attrs:{\"data-testid\":`ps-config-security-context-${_vm.configType}-sysctls-name-input`,\"mode\":_vm.mode,\"disabled\":_vm.disabled,\"label\":_vm.inputLabel.name,\"placeholder\":_vm.inputPlaceholderLabel.name,\"required\":\"\"},on:{\"input\":function($event){return _vm.updateRow(scope.i, 'name', $event)}},model:{value:(scope.row.value.name),callback:function ($$v) {_vm.$set(scope.row.value, \"name\", $$v)},expression:\"scope.row.value.name\"}}),_c('LabeledInput',{attrs:{\"data-testid\":`ps-config-security-context-${_vm.configType}-sysctls-value-input`,\"mode\":_vm.mode,\"disabled\":_vm.disabled,\"label\":_vm.inputLabel.value,\"placeholder\":_vm.inputPlaceholderLabel.value,\"required\":\"\"},on:{\"input\":function($event){return _vm.updateRow(scope.i, 'value', $event)}},model:{value:(scope.row.value.value),callback:function ($$v) {_vm.$set(scope.row.value, \"value\", $$v)},expression:\"scope.row.value.value\"}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SysctlsArrayList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SysctlsArrayList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SysctlsArrayList.vue?vue&type=template&id=2d8707da&scoped=true&\"\nimport script from \"./SysctlsArrayList.vue?vue&type=script&lang=js&\"\nexport * from \"./SysctlsArrayList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SysctlsArrayList.vue?vue&type=style&index=0&id=2d8707da&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d8707da\",\n null\n \n)\n\nexport default component.exports","\n\n","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PodConfiguration.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PodConfiguration.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PodConfiguration.vue?vue&type=template&id=6f73e9b4&\"\nimport script from \"./PodConfiguration.vue?vue&type=script&lang=js&\"\nexport * from \"./PodConfiguration.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./NameNsDescription.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./NameNsDescription.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NameNsDescription.vue?vue&type=template&id=02ddcc7c&scoped=true&\"\nimport script from \"./NameNsDescription.vue?vue&type=script&lang=js&\"\nexport * from \"./NameNsDescription.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NameNsDescription.vue?vue&type=style&index=0&id=02ddcc7c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02ddcc7c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./General.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./General.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./General.vue?vue&type=template&id=0f9e8327&scoped=true&\"\nimport script from \"./General.vue?vue&type=script&lang=js&\"\nexport * from \"./General.vue?vue&type=script&lang=js&\"\nimport style0 from \"./General.vue?vue&type=style&index=0&id=0f9e8327&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f9e8327\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.list.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.list.js new file mode 100644 index 0000000..4f1aa6f --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.list.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[7],{"0e6c":function(e,t,s){"use strict";s.r(t);var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[t("Banner",{staticClass:"type-banner mb-20 mt-0",attrs:{"data-testid":"kw-ap-list-banner",color:"info",label:e.t("kubewarden.admissionPolicy.description")}}),t("PolicyList",{attrs:{"data-testid":"kw-ap-policy-list",resource:e.resource,rows:e.rows,schema:e.schema}})],1)},a=[],i=s("6418"),l=s("15ca"),n=s("7542"),o={components:{Banner:i["a"],Loading:l["a"],PolicyList:n["a"]},props:{resource:{type:String,required:!0},schema:{type:Object,required:!0}},async fetch(){await this.$store.dispatch("cluster/findAll",{type:this.resource})},computed:{rows(){return this.$store.getters["cluster/all"](this.resource)}}},c=o,u=s("d802"),d=Object(u["a"])(c,r,a,!1,null,null,null);t["default"]=d.exports},"2ed1":function(e,t,s){"use strict";s.r(t);var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[e.hideBannerDefaults?e._e():t("DefaultsBanner"),t("ResourceTable",{attrs:{schema:e.schema,rows:e.rows,"data-testid":"kw-ps-resource-table"}})],1)},a=[],i=s("907c"),l=s("4ac6"),n=s("15ca"),o=s("126f"),c=s("90cd"),u=s("91ad"),d={components:{DefaultsBanner:u["a"],Loading:n["a"],ResourceTable:o["a"]},props:{resource:{type:String,required:!0},schema:{type:Object,required:!0}},async fetch(){await this.$store.dispatch("cluster/findAll",{type:this.resource}),this.$store.getters["cluster/canList"](i["a"].APP)&&(await this.$store.dispatch("catalog/load"),this.hideBannerDefaults||(this.apps=await this.$store.dispatch("cluster/findAll",{type:i["a"].APP})))},data(){return{apps:null}},computed:{defaultsApp(){var e;return null===(e=this.apps)||void 0===e?void 0:e.find(e=>{var t;return(null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t||null===(t=t.annotations)||void 0===t?void 0:t[l["c"].RELEASE_NAME])===c["g"].RANCHER_DEFAULTS})},hideBannerDefaults(){return this.$store.getters["kubewarden/hideBannerDefaults"]||!!this.defaultsApp},rows(){return this.$store.getters["cluster/all"](this.resource)}}},p=d,h=s("d802"),f=Object(h["a"])(p,r,a,!1,null,null,null);t["default"]=f.exports},4952:function(e,t,s){var r=s("9099");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[e.i,r,""]]),r.locals&&(e.exports=r.locals);var a=s("0ed3").default;a("688bb416",r,!0,{sourceMap:!1,shadowMode:!1})},7542:function(e,t,s){"use strict";var r=function(){var e=this,t=e._self._c;return t("div",[t("div",{staticClass:"filter"},[t("LabeledSelect",{staticClass:"filter__resources",attrs:{clearable:!0,taggable:!0,multiple:!0,label:"Search by Resource",options:e.resourceOptions},model:{value:e.resources,callback:function(t){e.resources=t},expression:"resources"}}),t("LabeledSelect",{staticClass:"filter__mode",attrs:{clearable:!0,searchable:!1,options:e.modeOptions,multiple:!1,placement:"bottom",label:"Search by Mode"},model:{value:e.mode,callback:function(t){e.mode=t},expression:"mode"}}),t("button",{ref:"btn",staticClass:"btn, btn-sm, role-primary",attrs:{type:"button"},on:{click:e.resetFilter}},[e._v(" "+e._s(e.t("kubewarden.utils.resetFilter"))+" ")])],1),t("ResourceTable",{attrs:{schema:e.schema,rows:e.filteredRows,headers:e.headers}})],1)},a=[],i=s("71d2"),l=s.n(i),n=s("1d19"),o=s("466b"),c=s("126f"),u={components:{LabeledSelect:o["a"],ResourceTable:c["a"]},props:{resource:{type:String,required:!0},rows:{type:Array,required:!0},schema:{type:Object,required:!0}},data(){return{mode:null,resources:null}},created(){this.mode="All"},computed:{headers(){return this.$store.getters["type-map/headersFor"](this.schema)},filteredRows(){const e=this.rows||[],t=e.filter(e=>{const t=l()(e.spec.rules),s=t.flatMap(e=>e.resources),r=e.spec.mode;if(this.mode&&"All"!==this.mode&&this.mode!==r)return!1;if(this.resources)for(const a of this.resources)if(!s.includes(a))return!1;return!0});return Object(n["a"])(t,["id"])},modeOptions(){var e;const t=(null===(e=this.rows)||void 0===e?void 0:e.map(e=>{var t;return null===(t=e.spec)||void 0===t?void 0:t.mode}))||[];return t.unshift("All"),[...new Set(t)]},resourceOptions(){return this.flattenRule("resources")}},methods:{flattenRule(e){var t;const s=null===(t=this.rows)||void 0===t?void 0:t.flatMap(t=>{var s;const r=l()(null===(s=t.spec)||void 0===s?void 0:s.rules);return r.flatMap(t=>t[e])});return[...new Set(s)]||!1},hasNamespaceSelector(e){return e.namespaceSelector},resetFilter(){this.$set(this,"resources",null),this.$set(this,"mode","All")}}},d=u,p=(s("8485"),s("d802")),h=Object(p["a"])(d,r,a,!1,null,"a2185e04",null);t["a"]=h.exports},8485:function(e,t,s){"use strict";s("4952")},9099:function(e,t,s){var r=s("5eaa");t=r(!1),t.push([e.i,".filter[data-v-a2185e04]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end}.filter>*[data-v-a2185e04]{margin:10px}.filter[data-v-a2185e04]>:first-child{margin-left:0}.filter[data-v-a2185e04]>:last-child{margin-right:0}@media only screen and (min-width:480px){.filter[data-v-a2185e04]{width:100%}}@media only screen and (min-width:1281px){.filter[data-v-a2185e04]{width:75%}}.policy__mode[data-v-a2185e04]{display:flex;align-items:center}.policy__mode i[data-v-a2185e04]{margin-left:5px;font-size:22px;color:var(--warning)}",""]),e.exports=t},e216:function(e,t,s){"use strict";s.r(t);var r=function(){var e=this,t=e._self._c;return e.$fetchState.pending?t("Loading"):t("div",[t("Banner",{staticClass:"type-banner mb-20 mt-0",attrs:{"data-testid":"kw-cap-list-banner",color:"info",label:e.t("kubewarden.clusterAdmissionPolicy.description")}}),e.kwDefaultsHelmChartSettingsCompatible?e._e():t("DefaultsBanner",{attrs:{mode:"upgrade"}}),t("PolicyList",{attrs:{"data-testid":"kw-cap-policy-list",resource:e.resource,rows:e.rows,schema:e.schema}})],1)},a=[],i=s("907c"),l=s("6418"),n=s("15ca"),o=s("4ac6"),c=s("90cd"),u=s("d1f7"),d=s.n(u);function p(e,t){return!d.a.gt(t,"1.4.1")||d.a.gt(e,"1.9.9")}var h=s("7542"),f=s("91ad"),v={components:{Banner:l["a"],Loading:n["a"],PolicyList:h["a"],DefaultsBanner:f["a"]},props:{resource:{type:String,required:!0},schema:{type:Object,required:!0}},async fetch(){this.$store.getters["cluster/canList"](i["a"].APP)&&this.$store.dispatch("cluster/findAll",{type:i["a"].APP}),this.$store.getters["cluster/canList"](i["E"])&&this.$store.dispatch("cluster/findAll",{type:i["E"]}),await this.$store.dispatch("cluster/findAll",{type:this.resource})},computed:{rows(){return this.$store.getters["cluster/all"](this.resource)},allApps(){return this.$store.getters["cluster/all"](i["a"].APP)},kubewardenDefaultsApp(){var e;return this.allApps?null===(e=this.allApps)||void 0===e?void 0:e.find(e=>{var t,s;return(null===(t=e.spec)||void 0===t||null===(t=t.chart)||void 0===t||null===(t=t.metadata)||void 0===t||null===(t=t.annotations)||void 0===t?void 0:t[o["c"].RELEASE_NAME])===c["g"].RANCHER_DEFAULTS||(null===(s=e.spec)||void 0===s||null===(s=s.chart)||void 0===s||null===(s=s.metadata)||void 0===s?void 0:s.name)===c["h"].DEFAULTS}):null},kubewardenExtension(){const e=this.$store.getters["uiplugins/plugins"]||[];return null===e||void 0===e?void 0:e.find(e=>{var t;return null===e||void 0===e||null===(t=e.id)||void 0===t?void 0:t.includes(c["k"])})},kwDefaultsHelmChartSettingsCompatible(){var e,t;const s=null===(e=this.kubewardenDefaultsApp)||void 0===e||null===(e=e.spec)||void 0===e||null===(e=e.chart)||void 0===e||null===(e=e.metadata)||void 0===e?void 0:e.version,r=null===(t=this.kubewardenExtension)||void 0===t?void 0:t.version;return!s||!r||p(s,r)}}},m=v,b=s("d802"),w=Object(b["a"])(m,r,a,!1,null,null,null);t["default"]=w.exports}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.list.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.list.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.list.js.map new file mode 100644 index 0000000..e896f47 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.list.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-2.0.0/list/policies.kubewarden.io.admissionpolicy.vue","webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.admissionpolicy.vue?06c3","webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.admissionpolicy.vue?a051","webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-2.0.0/list/policies.kubewarden.io.policyserver.vue","webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.policyserver.vue?c461","webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.policyserver.vue?966f","webpack://kubewarden-2.0.0/./components/Policies/PolicyList.vue?d1bf","webpack://kubewarden-2.0.0/./components/Policies/PolicyList.vue","webpack://kubewarden-2.0.0/components/Policies/PolicyList.vue","webpack://kubewarden-2.0.0/./components/Policies/PolicyList.vue?b428","webpack://kubewarden-2.0.0/./components/Policies/PolicyList.vue?ab72","webpack://kubewarden-2.0.0/./components/Policies/PolicyList.vue?83fc","webpack://kubewarden-2.0.0/./components/Policies/PolicyList.vue?fb4b","webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-2.0.0/./modules/policies.ts","webpack://kubewarden-2.0.0/list/policies.kubewarden.io.clusteradmissionpolicy.vue","webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.clusteradmissionpolicy.vue?7c32","webpack://kubewarden-2.0.0/./list/policies.kubewarden.io.clusteradmissionpolicy.vue?643a"],"names":["render","_vm","this","_c","_self","$fetchState","pending","staticClass","attrs","t","resource","rows","schema","staticRenderFns","components","Banner","Loading","PolicyList","props","type","String","required","Object","$store","dispatch","computed","getters","component","hideBannerDefaults","_e","DefaultsBanner","ResourceTable","CATALOG","APP","apps","data","defaultsApp","_this$apps","find","a","_a$spec","spec","chart","metadata","annotations","CATALOG_ANNOTATIONS","RELEASE_NAME","KUBEWARDEN_APPS","RANCHER_DEFAULTS","content","__esModule","default","module","i","locals","exports","add","resourceOptions","model","value","resources","callback","$$v","expression","modeOptions","mode","ref","on","resetFilter","_v","_s","filteredRows","headers","LabeledSelect","Array","created","out","filter","row","flatRules","flattenDeep","rules","flatResources","flatMap","r","rowMode","selected","includes","sortBy","_this$rows","map","_row$spec","unshift","Set","flattenRule","methods","option","_this$rows2","flattened","_row$spec2","hasNamespaceSelector","namespaceSelector","$set","___CSS_LOADER_API_IMPORT___","push","kwDefaultsHelmChartSettingsCompatible","kwDefaultsHelmChartSettings","kwDefaultsVersion","uiPluginVersion","semver","gt","UI_PLUGIN","allApps","kubewardenDefaultsApp","_this$allApps","_a$spec2","name","KUBEWARDEN_CHARTS","DEFAULTS","kubewardenExtension","extensionsInstalled","ext","_ext$id","id","KUBEWARDEN_PRODUCT_NAME","_this$kubewardenDefau","_this$kubewardenExten","version"],"mappings":"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","file":"kubewarden-2.0.0.umd.min.list.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"kw-ap-list-banner\",\"color\":\"info\",\"label\":_vm.t('kubewarden.admissionPolicy.description')}}),_c('PolicyList',{attrs:{\"data-testid\":\"kw-ap-policy-list\",\"resource\":_vm.resource,\"rows\":_vm.rows,\"schema\":_vm.schema}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.admissionpolicy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.admissionpolicy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.admissionpolicy.vue?vue&type=template&id=08772963&\"\nimport script from \"./policies.kubewarden.io.admissionpolicy.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.admissionpolicy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[(!_vm.hideBannerDefaults)?_c('DefaultsBanner'):_vm._e(),_c('ResourceTable',{attrs:{\"schema\":_vm.schema,\"rows\":_vm.rows,\"data-testid\":\"kw-ps-resource-table\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.policyserver.vue?vue&type=template&id=2f23db10&\"\nimport script from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.policyserver.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PolicyList.vue?vue&type=template&id=a2185e04&scoped=true&\"\nimport script from \"./PolicyList.vue?vue&type=script&lang=js&\"\nexport * from \"./PolicyList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PolicyList.vue?vue&type=style&index=0&id=a2185e04&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a2185e04\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../node_modules/sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./PolicyList.vue?vue&type=style&index=0&id=a2185e04&prod&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".filter[data-v-a2185e04]{display:flex;flex-direction:row;justify-content:flex-end;align-self:flex-end}.filter>*[data-v-a2185e04]{margin:10px}.filter[data-v-a2185e04]>:first-child{margin-left:0}.filter[data-v-a2185e04]>:last-child{margin-right:0}@media only screen and (min-width:480px){.filter[data-v-a2185e04]{width:100%}}@media only screen and (min-width:1281px){.filter[data-v-a2185e04]{width:75%}}.policy__mode[data-v-a2185e04]{display:flex;align-items:center}.policy__mode i[data-v-a2185e04]{margin-left:5px;font-size:22px;color:var(--warning)}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.$fetchState.pending)?_c('Loading'):_c('div',[_c('Banner',{staticClass:\"type-banner mb-20 mt-0\",attrs:{\"data-testid\":\"kw-cap-list-banner\",\"color\":\"info\",\"label\":_vm.t('kubewarden.clusterAdmissionPolicy.description')}}),(!_vm.kwDefaultsHelmChartSettingsCompatible)?_c('DefaultsBanner',{attrs:{\"mode\":\"upgrade\"}}):_vm._e(),_c('PolicyList',{attrs:{\"data-testid\":\"kw-cap-policy-list\",\"resource\":_vm.resource,\"rows\":_vm.rows,\"schema\":_vm.schema}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import semver from 'semver';\n\n/**\n * Determines if the Kubewarden Extension is compatible with kubewarden-defaults version for displaying settings edit\n * for Kubewarden Extension `>= 1.4.2` it requires kubewarden-defaults version of `>= 2.0.0`\n * @param string\n * @param string\n * @returns Object\n */\nexport function kwDefaultsHelmChartSettings(kwDefaultsVersion: string, uiPluginVersion: string): Object | void {\n if (semver.gt(uiPluginVersion, '1.4.1')) {\n return semver.gt(kwDefaultsVersion, '1.9.9');\n }\n\n return true;\n}","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--2-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=template&id=5f1987aa&\"\nimport script from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\nexport * from \"./policies.kubewarden.io.clusteradmissionpolicy.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard0.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard0.js new file mode 100644 index 0000000..47a3cf9 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard0.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[8],{ec40:function(e){e.exports=JSON.parse('{"__inputs":[{"name":"DS_PROMETHEUS","label":"Prometheus","description":"Prometheus storing Kubewarden metrics","type":"datasource","pluginId":"prometheus","pluginName":"Prometheus"}],"__requires":[{"type":"grafana","id":"grafana","name":"Grafana","version":"7.1.5"},{"type":"panel","id":"heatmap","name":"Heatmap","version":""},{"type":"datasource","id":"prometheus","name":"Prometheus","version":"1.0.0"},{"type":"panel","id":"stat","name":"Stat","version":""},{"type":"panel","id":"timeseries","name":"Time series","version":""}],"annotations":{"list":[{"builtIn":1,"datasource":"-- Grafana --","enable":true,"hide":true,"iconColor":"rgba(0, 211, 255, 1)","name":"Annotations & Alerts","target":{"limit":100,"matchAny":false,"tags":[],"type":"dashboard"},"type":"dashboard"}]},"description":"Official dashboard for Kubewarden metrics","editable":true,"fiscalYearStartMonth":0,"gnetId":15314,"graphTooltip":0,"id":null,"iteration":1637931173543,"links":[],"liveNow":false,"panels":[{"collapsed":false,"datasource":null,"gridPos":{"h":0,"w":24,"x":0,"y":56},"id":1,"panels":[],"type":"row"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"green","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":7,"w":8,"x":0,"y":0},"legend":{"show":true,"values":false,"min":false,"max":false,"current":false,"total":true,"avg":false},"id":2,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","total":true},"tooltip":{"mode":"single"}},"targets":[{"expr":"sum(rate(kubewarden_policy_evaluations_total{accepted=\\"true\\", policy_name=\\"$policy_name\\"}[$__rate_interval]))*100/sum(rate(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"}[$__rate_interval]))","interval":"","legendFormat":"Accepted Requests","refId":"A"}],"title":"$policy_name accepted requests","type":"graph"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"red","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":7,"w":8,"x":8,"y":0},"legend":{"show":true,"values":false,"min":false,"max":false,"current":false,"total":true,"avg":false},"id":3,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","total":true},"tooltip":{"mode":"single"}},"targets":[{"expr":"sum(rate(kubewarden_policy_evaluations_total{accepted=\\"false\\", policy_name=\\"$policy_name\\"}[$__rate_interval]))*100/sum(rate(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"}[$__rate_interval]))","interval":"","legendFormat":"Rejected Requests","refId":"A"}],"title":"$policy_name rejected requests","type":"graph"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"purple","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":7,"w":8,"x":16,"y":0},"legend":{"show":true,"values":false,"min":false,"max":false,"current":false,"total":true,"avg":false},"id":4,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom","total":true},"tooltip":{"mode":"single"}},"targets":[{"expr":"sum(rate(kubewarden_policy_evaluations_total{mutated=\\"true\\", policy_name=\\"$policy_name\\"}[$__rate_interval]))*100/sum(rate(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"}[$__rate_interval]))","interval":"","legendFormat":"Mutated Requests","refId":"A"}],"title":"$policy_name mutated requests","type":"graph"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"green","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":0,"y":9},"id":5,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"7.1.5","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\", policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name total accepted requests","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":8,"y":9},"id":6,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"7.1.5","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\", policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name total rejected requests","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"purple","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":16,"y":9},"id":7,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"7.1.5","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{mutated=\\"true\\", policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name total mutated requests","type":"stat"}],"refresh":"30s","schemaVersion":31,"style":"dark","tags":[],"templating":{"list":[{"current":{},"definition":"label_values(kubewarden_policy_evaluations_total{}, policy_name)","description":"Define the policy which you want to see the metrics","hide":0,"includeAll":false,"multi":false,"name":"policy_name","options":[],"query":{"query":"label_values(kubewarden_policy_evaluations_total{}, policy_name)","refId":"StandardVariableQuery"},"refresh":1,"regex":"","skipUrlSync":false,"sort":0,"type":"query"}]},"time":{"from":"now-1h","to":"now"},"timepicker":{},"timezone":"","title":"Kubewarden Policy","uid":"kubewarden-dashboard-policy","version":3}')}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.policyDashboard0.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard0.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard0.js.map new file mode 100644 index 0000000..a80ed2b --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard0.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"kubewarden-2.0.0.umd.min.policyDashboard0.js","sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard1.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard1.js new file mode 100644 index 0000000..be24d03 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard1.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[9],{"82e7":function(e){e.exports=JSON.parse('{"__inputs":[{"name":"DS_PROMETHEUS","label":"Prometheus","description":"Prometheus storing Kubewarden metrics","type":"datasource","pluginId":"prometheus","pluginName":"Prometheus"}],"__requires":[{"type":"grafana","id":"grafana","name":"Grafana","version":"8.2.3"},{"type":"panel","id":"heatmap","name":"Heatmap","version":""},{"type":"datasource","id":"prometheus","name":"Prometheus","version":"1.0.0"},{"type":"panel","id":"stat","name":"Stat","version":""},{"type":"panel","id":"timeseries","name":"Time series","version":""}],"annotations":{"list":[{"builtIn":1,"datasource":"-- Grafana --","enable":true,"hide":true,"iconColor":"rgba(0, 211, 255, 1)","name":"Annotations & Alerts","target":{"limit":100,"matchAny":false,"tags":[],"type":"dashboard"},"type":"dashboard"}]},"description":"Official Kubewarden Grafana dashboard. It allows the user to visualize an overview of the Kubewarden components as well as metrics for specific policies. ","editable":true,"fiscalYearStartMonth":0,"gnetId":15314,"graphTooltip":0,"id":null,"iteration":1637931173543,"links":[],"liveNow":false,"panels":[{"collapsed":false,"datasource":null,"gridPos":{"h":1,"w":24,"x":0,"y":0},"id":53,"panels":[],"title":"Kubewarden overview","type":"row"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"green","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":0,"y":1},"id":50,"options":{"colorMode":"value","graphMode":"area","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"false\\"})*100/sum(kubewarden_policy_evaluations_total{})","interval":"","legendFormat":"","refId":"A"}],"title":"Request accepted with no mutation percentage","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"red","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":8,"y":1},"id":48,"options":{"colorMode":"value","graphMode":"area","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\"})*100/sum(kubewarden_policy_evaluations_total{})","interval":"","legendFormat":"","refId":"A"}],"title":"Request rejection percentage ","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"green","value":null},{"color":"blue","value":50}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":16,"y":1},"id":51,"options":{"colorMode":"value","graphMode":"area","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{mutated=\\"true\\"})*100/sum(kubewarden_policy_evaluations_total{})","interval":"","legendFormat":"","refId":"A"}],"title":"Request mutation percentage ","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"green","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":6,"x":0,"y":9},"id":37,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"false\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total accepted requests with no mutation","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"blue","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":6,"x":6,"y":9},"id":39,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"/^sum\\\\(kubewarden_policy_evaluations_total\\\\{accepted=\\"true\\",mutated=\\"true\\"\\\\}\\\\)$/","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"true\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total mutated requests","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":6,"x":12,"y":9},"id":40,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total rejected requests","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"blue","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"purple","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":6,"x":18,"y":9},"id":41,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total)","interval":"","legendFormat":"","refId":"A"}],"title":"Request count","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":0,"y":16},"id":67,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum by (accepted) (\\n rate(kubewarden_policy_evaluations_total{accepted=\\"true\\"}[$__rate_interval])\\n)","interval":"","legendFormat":"Accepted requests","refId":"A"}],"title":"Accepted requests rate","type":"timeseries"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":16},"id":66,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum by (accepted) (\\n rate(kubewarden_policy_evaluations_total{accepted=\\"false\\"}[$__rate_interval])\\n)","format":"time_series","interval":"","legendFormat":"Reject requests","refId":"A"}],"title":"Rejected requests rate","type":"timeseries"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":0,"y":24},"id":68,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum by (mutated) (\\n rate(kubewarden_policy_evaluations_total{mutated=\\"true\\"}[$__rate_interval])\\n)","interval":"","legendFormat":"Mutated requests","refId":"A"}],"title":"Mutated requests rate","type":"timeseries"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"blue","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":24},"id":69,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum (\\n rate(kubewarden_policy_evaluations_total[$__rate_interval])\\n)","interval":"","legendFormat":"All requests","refId":"A"}],"title":" Requests rate","type":"timeseries"},{"cards":{"cardPadding":null,"cardRound":null},"color":{"cardColor":"#b4ff00","colorScale":"sqrt","colorScheme":"interpolateOranges","exponent":0.5,"mode":"spectrum"},"dataFormat":"timeseries","datasource":null,"gridPos":{"h":8,"w":12,"x":0,"y":32},"heatmap":{},"hideZeroBuckets":false,"highlightCards":true,"id":59,"legend":{"show":true},"reverseYBuckets":false,"targets":[{"exemplar":true,"expr":"sum(rate(kubewarden_policy_evaluation_latency_milliseconds_bucket[$__rate_interval])) by (le)","format":"heatmap","interval":"","legendFormat":"{{le}}","refId":"A"}],"title":"Policies latency","tooltip":{"show":true,"showHistogram":false},"type":"heatmap","xAxis":{"show":true},"xBucketNumber":null,"xBucketSize":"","yAxis":{"decimals":null,"format":"ms","logBase":1,"max":"120","min":"0","show":true,"splitFactor":null,"width":null},"yBucketBound":"auto","yBucketNumber":10,"yBucketSize":10},{"datasource":null,"fieldConfig":{"defaults":{"color":{"mode":"thresholds"},"decimals":0,"mappings":[],"min":0,"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"#EAB839","value":101},{"color":"red","value":200}]},"unit":"ms"},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":32},"id":61,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"value"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"histogram_quantile(.90, sum(rate(kubewarden_policy_evaluation_latency_milliseconds_bucket[$__interval])) by (le))","format":"heatmap","interval":"","legendFormat":"{{le}}","refId":"A"}],"title":"90th percentile evaluation latency","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"blue","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":0,"y":40},"id":42,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\", mutated=\\"true\\",resource_request_operation=\\"CREATE\\",resource_kind=\\"Pod\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Pod creation mutations","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":40},"id":8,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\",resource_request_operation=\\"CREATE\\",resource_kind=\\"Pod\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Pod creation rejections","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"blue","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"blue","value":null}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":0,"y":48},"id":63,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_total{policy_status=\\"active\\"})","format":"time_series","interval":"","legendFormat":"{{policy_status}}","refId":"A"}],"title":"Policy activations","type":"stat"},{"datasource":null,"description":"Number of policies that evaluated some request","fieldConfig":{"defaults":{"color":{"mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":8,"w":12,"x":12,"y":48},"id":46,"options":{"colorMode":"value","graphMode":"area","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["distinctCount"],"fields":"/^policy_name$/","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"kubewarden_policy_evaluations_total{}","format":"table","interval":"","legendFormat":"","refId":"A"}],"title":"Policies evaluated","type":"stat"},{"collapsed":false,"datasource":null,"gridPos":{"h":1,"w":24,"x":0,"y":56},"id":30,"panels":[],"title":"$policy_name policy metrics","type":"row"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"green","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":0,"y":57},"id":54,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"false\\", policy_name=\\"$policy_name\\" })*100/sum(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":" $policy_name policy accepted request percentage","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"red","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":8,"y":57},"id":56,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\", policy_name=\\"$policy_name\\" })*100/sum(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name policy request rejection percentage ","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"max":100,"min":0,"noValue":"0%","thresholds":{"mode":"percentage","steps":[{"color":"blue","value":null}]},"unit":"percent"},"overrides":[]},"gridPos":{"h":8,"w":8,"x":16,"y":57},"id":57,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{mutated=\\"true\\", policy_name=\\"$policy_name\\" })*100/sum(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\", accepted=\\"true\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"$policy_name policy mutation request percentage","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"green","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"green","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":0,"y":65},"id":31,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"true\\",mutated=\\"false\\",policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total accepted requests by $policy_name policy","type":"stat"},{"datasource":null,"description":"","fieldConfig":{"defaults":{"color":{"fixedColor":"red","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"red","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":8,"y":65},"id":32,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{accepted=\\"false\\",policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total rejected requests by $policy_name policy","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"purple","mode":"fixed"},"mappings":[],"noValue":"0","thresholds":{"mode":"absolute","steps":[{"color":"blue","value":null}]}},"overrides":[]},"gridPos":{"h":7,"w":8,"x":16,"y":65},"id":33,"options":{"colorMode":"value","graphMode":"none","justifyMode":"auto","orientation":"auto","reduceOptions":{"calcs":["lastNotNull"],"fields":"","values":false},"text":{},"textMode":"auto"},"pluginVersion":"8.2.3","targets":[{"exemplar":true,"expr":"sum(kubewarden_policy_evaluations_total{mutated=\\"true\\",policy_name=\\"$policy_name\\"})","interval":"","legendFormat":"","refId":"A"}],"title":"Total mutated requests by $policy_name policy","type":"stat"},{"datasource":null,"fieldConfig":{"defaults":{"color":{"fixedColor":"blue","mode":"fixed"},"custom":{"axisLabel":"","axisPlacement":"auto","barAlignment":0,"drawStyle":"line","fillOpacity":10,"gradientMode":"none","hideFrom":{"legend":false,"tooltip":false,"viz":false},"lineInterpolation":"linear","lineWidth":1,"pointSize":5,"scaleDistribution":{"type":"linear"},"showPoints":"auto","spanNulls":false,"stacking":{"group":"A","mode":"none"},"thresholdsStyle":{"mode":"off"}},"mappings":[],"thresholds":{"mode":"absolute","steps":[{"color":"green","value":null},{"color":"red","value":80}]}},"overrides":[]},"gridPos":{"h":9,"w":24,"x":0,"y":72},"id":34,"options":{"legend":{"calcs":[],"displayMode":"list","placement":"bottom"},"tooltip":{"mode":"single"}},"targets":[{"exemplar":true,"expr":"sum (\\n rate(kubewarden_policy_evaluations_total{policy_name=\\"$policy_name\\"}[$__rate_interval])\\n)","interval":"","legendFormat":"Policy request rate","refId":"A"}],"title":"Rate of requests to $policy_name policy","type":"timeseries"}],"refresh":"30s","schemaVersion":31,"style":"dark","tags":[],"templating":{"list":[{"current":{},"definition":"label_values(kubewarden_policy_evaluations_total{}, policy_name)","description":"Define the policy which you want to see the metrics","hide":0,"includeAll":false,"multi":false,"name":"policy_name","options":[],"query":{"query":"label_values(kubewarden_policy_evaluations_total{}, policy_name)","refId":"StandardVariableQuery"},"refresh":1,"regex":"","skipUrlSync":false,"sort":0,"type":"query"}]},"time":{"from":"now-1h","to":"now"},"timepicker":{},"timezone":"","title":"Kubewarden Policy Server","uid":"kubewarden-dashboard-policyserver","version":3}')}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.policyDashboard1.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard1.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard1.js.map new file mode 100644 index 0000000..0b0226a --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.policyDashboard1.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"kubewarden-2.0.0.umd.min.policyDashboard1.js","sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~detail.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~detail.js new file mode 100644 index 0000000..ed2fcb0 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~detail.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[10],{"044d":function(t,e,a){var r=a("9d47");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);var s=a("0ed3").default;s("5c5d3099",r,!0,{sourceMap:!1,shadowMode:!1})},"0cb2":function(t,e,a){"use strict";var r=function(){var t=this,e=t._self._c;return e("div",{class:{"side-tabs":!!t.sideTabs,"tabs-only":t.tabsOnly},attrs:{"data-testid":"tabbed"}},[t.hideTabs?t._e():e("ul",{ref:"tablist",staticClass:"tabs",class:{clearfix:!t.sideTabs,vertical:t.sideTabs,horizontal:!t.sideTabs},attrs:{role:"tablist",tabindex:"0","data-testid":"tabbed-block"},on:{keydown:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"right",39,e.key,["Right","ArrowRight"])||"button"in e&&2!==e.button?null:(e.preventDefault(),t.selectNext(1))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"left",37,e.key,["Left","ArrowLeft"])||"button"in e&&0!==e.button?null:(e.preventDefault(),t.selectNext(-1))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:(e.preventDefault(),t.selectNext(1))},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:(e.preventDefault(),t.selectNext(-1))}]}},[t._l(t.sortedTabs,(function(a){return e("li",{key:a.name,class:{tab:!0,active:a.active,disabled:a.disabled,error:a.error},attrs:{id:a.name,"data-testid":a.name,role:"presentation"}},[e("a",{attrs:{"data-testid":"btn-"+a.name,"aria-controls":"#"+a.name,"aria-selected":a.active,role:"tab"},on:{click:function(e){return e.preventDefault(),t.select(a.name,e)}}},[e("span",[t._v(t._s(a.labelDisplay))]),a.badge?e("span",{staticClass:"tab-badge"},[t._v(t._s(a.badge))]):t._e(),t.hasIcon(a)?e("i",{directives:[{name:"clean-tooltip",rawName:"v-clean-tooltip",value:t.t("validation.tab"),expression:"t('validation.tab')"}],staticClass:"conditions-alert-icon icon-error"}):t._e()])])})),t.sideTabs&&!t.sortedTabs.length?e("li",{staticClass:"tab disabled"},[e("a",{attrs:{href:"#"},on:{click:function(t){t.preventDefault()}}},[t._v("(None)")])]):t._e(),t.sideTabs&&t.showTabsAddRemove?e("ul",{staticClass:"tab-list-footer"},[e("li",[e("button",{staticClass:"btn bg-transparent",attrs:{type:"button","data-testid":"tab-list-add"},on:{click:t.tabAddClicked}},[e("i",{staticClass:"icon icon-plus"})]),e("button",{staticClass:"btn bg-transparent",attrs:{type:"button",disabled:!t.sortedTabs.length,"data-testid":"tab-list-remove"},on:{click:t.tabRemoveClicked}},[e("i",{staticClass:"icon icon-minus"})])])]):t._e(),t._t("tab-row-extras")],2),e("div",{class:{"tab-container":!!t.tabs.length||!!t.sideTabs,"no-content":t.noContent,"tab-container--flat":!!t.flat}},[t._t("default")],2)])},s=[],n=a("a1d8"),i=a.n(n),o=a("330a"),l=a.n(o),d=a("bddd"),c=a("1d19"),u=a("1659"),h=a.n(u),p={name:"Tabbed",props:{defaultTab:{type:String,default:null},sideTabs:{type:Boolean,default:!1},hideSingleTab:{type:Boolean,default:!1},showTabsAddRemove:{type:Boolean,default:!1},scrollOnChange:{type:Boolean,default:!1},useHash:{type:Boolean,default:!0},noContent:{type:Boolean,default:!1},flat:{type:Boolean,default:!1},tabsOnly:{type:Boolean,default:!1}},provide(){const t=this.tabs;return{sideTabs:this.sideTabs,addTab(e){const a=Object(d["e"])(t,"name",e.name);a&&Object(d["i"])(t,a),Object(d["a"])(t,e)},removeTab(e){Object(d["i"])(t,e)}}},data(){return{tabs:[],activeTabName:null}},computed:{sortedTabs(){return Object(c["a"])(this.tabs,["weight:desc","labelDisplay","name"])},hideTabs(){return this.hideSingleTab&&1===this.sortedTabs.length}},watch:{sortedTabs(t){const{defaultTab:e,useHash:a}=this,r=t.find(t=>t.active),s=a?this.$route.hash:void 0,n=a?s.slice(1):void 0,o=t.find(t=>t.name===n&&!t.active),d=i()(t)||null;l()(r)?a&&!l()(o)?this.select(o.name):l()(e)||l()(t.find(t=>t.name===e))?null!==d&&void 0!==d&&d.name&&this.select(d.name):this.select(e):a&&(null===r||void 0===r?void 0:r.name)===n&&this.select(r.name)}},mounted(){this.useHash&&window.addEventListener("hashchange",this.hashChange)},unmounted(){this.useHash&&window.removeEventListener("hashchange",this.hashChange)},methods:{hasIcon(t){return t.displayAlertIcon||t.error&&!t.active},hashChange(){if(!this.scrollOnChange){const t=document.getElementsByTagName("main")[0];t&&(t.scrollTop=0)}this.select(this.$route.hash)},find(t){return this.sortedTabs.find(e=>e.name===t)},select(t){const{sortedTabs:e}=this,a=this.find(t),r="#"+t;if(a&&!a.disabled){if(this.useHash){const{$route:{hash:t},$router:{currentRoute:e}}=this;if(this.useHash&&t!==r){const t={...e};t.hash=r,this.$router.replace(t)}}for(const t of e)t.active=t.name===a.name;this.$emit("changed",{tab:a,selectedName:a.name}),this.activeTabName=a.name}},selectNext(t){const{sortedTabs:e}=this,a=e.findIndex(t=>t.active),r=n(a,t,e.length),s=e[r].name;function n(t,e,a){const r=t+e;return r>=a?0:r<=0?a-1:r}this.select(s),this.$nextTick(()=>{this.$refs.tablist.focus()})},tabAddClicked(){const t=h()(this.tabs,t=>t.active);this.$emit("addTab",t)},tabRemoveClicked(){const t=h()(this.tabs,t=>t.active);this.$emit("removeTab",t)}}},f=p,b=(a("74d0"),a("d802")),m=Object(b["a"])(f,r,s,!1,null,"3f826acc",null);e["a"]=m.exports},1645:function(t,e,a){"use strict";a("1b16")},1659:function(t,e,a){var r=a("0ee5"),s=a("4b7a"),n=a("9b66"),i=Math.max;function o(t,e,a){var o=null==t?0:t.length;if(!o)return-1;var l=null==a?0:n(a);return l<0&&(l=i(o+l,0)),r(t,s(e,3),l)}t.exports=o},"1b16":function(t,e,a){var r=a("1cfd");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);var s=a("0ed3").default;s("30fa9d8c",r,!0,{sourceMap:!1,shadowMode:!1})},"1bf1":function(t,e,a){var r=a("96ab");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);var s=a("0ed3").default;s("d7b84d86",r,!0,{sourceMap:!1,shadowMode:!1})},"1ce3":function(t,e,a){"use strict";a("f9f6")},"1cfd":function(t,e,a){var r=a("5eaa");e=r(!1),e.push([t.i,".zero circle{stroke:var(--gauge-zero)}.count-gauge{padding:10px;position:relative;display:flex;flex-direction:row;align-items:center}.count-gauge.clickable{cursor:pointer}.count-gauge .data{display:flex;flex-direction:column;flex:1}.count-gauge .data label{opacity:.7}.count-gauge .graphical{width:40px;height:40px;margin-right:10px}.count-gauge h1{font-size:40px;line-height:36px;padding-bottom:5px;margin-bottom:0}@media only screen and (min-width:768px){.count-gauge h1{font-size:40px;line-height:36px}}.count-gauge .alerts{position:absolute;right:10px;top:5px;font-size:15px}.count-gauge .alerts .text-error{margin-left:5px}",""]),t.exports=e},"25a4":function(t,e,a){"use strict";a("8356")},"305c":function(t,e,a){"use strict";var r=a("da25"),s=a("8bbf"),n=a("cd6d");e["a"]=Object(s["defineComponent"])({...n["a"],props:{mode:{type:String,default:r["t"]},realMode:{type:String,default:r["t"]},as:{type:String,default:r["B"]},value:{type:Object,required:!0},initialValue:{type:Object,default:null},liveValue:{type:Object,default:null},doneEvent:{type:Boolean,default:!1}}})},"37ef":function(t,e,a){var r=a("7f2b"),s=r("round");t.exports=s},"493f":function(t,e,a){"use strict";a("044d")},"4b7e":function(t,e,a){var r=a("d0e7");function s(t,e,a,s){var n=t.length,i=s?n:-1;while((s?i--:++i0?e("GraphCircle",{attrs:{"primary-stroke-color":`rgba(var(${t.primaryColorVar}))`,"secondary-stroke-color":"rgb(var(--resource-gauge-back-circle))",percentage:t.percentage}}):t._e(),0===t.percentage?e("GraphCircle",{staticClass:"zero",attrs:{"primary-stroke-color":`rgba(var(${t.primaryColorVar}))`,"secondary-stroke-color":"rgb(var(--resource-gauge-back-circle))",percentage:100}}):t._e()],1):t._e(),e("div",{staticClass:"data"},[e("h1",[t._v(t._s(t.useful))]),e("label",[t._v(t._s(t.name))]),t.showAlerts?e("div",{staticClass:"alerts"},[e("span",{staticClass:"text-warning"},[e("i",{staticClass:"icon icon-warning"}),e("span",{staticClass:"count"},[t._v(t._s(t.warningCount))])]),e("span",{staticClass:"text-error"},[e("i",{staticClass:"icon icon-error"}),e("span",{staticClass:"count"},[t._v(t._s(t.errorCount))])])]):t._e()])])},s=[],n=function(){var t=this,e=t._self._c;return e("svg",{staticClass:"circle",attrs:{width:"100%",height:"100%",viewBox:t.viewBox}},[e("g",{attrs:{transform:t.transform}},[e("defs",[e("linearGradient",{attrs:{id:t.primaryStrokeColorId,x1:"0%",y1:"0%",x2:"100%",y2:"0%"}},[e("stop",{attrs:{offset:"50%","stop-color":t.primaryStrokeGradientColor||t.primaryStrokeColor}}),e("stop",{attrs:{offset:"100%","stop-color":t.primaryStrokeColor}})],1),e("linearGradient",{attrs:{id:t.secondaryStrokeColorId,x1:"0%",y1:"0%",x2:"100%",y2:"0%"}},[e("stop",{attrs:{offset:"50%","stop-color":t.secondaryStrokeGradientColor||t.secondaryStrokeColor}}),e("stop",{attrs:{offset:"100%","stop-color":t.secondaryStrokeColor}})],1)],1),e("circle",{attrs:{r:t.radius,cy:t.center,cx:t.center,"stroke-width":t.strokeWidth,stroke:`url(#${t.secondaryStrokeColorId})`,fill:"none"}}),e("circle",{attrs:{r:t.radius,cy:t.center,cx:t.center,"stroke-width":t.strokeWidth,stroke:`url(#${t.primaryStrokeColorId})`,"stroke-dasharray":t.circumference,"stroke-dashoffset":t.circumference*(1-t.percentage),fill:"none"}})]),t.showText?e("text",{staticStyle:{"font-size":"25","dominant-baseline":"middle","text-anchor":"middle"},attrs:{x:t.center,y:t.center,fill:`url(#${t.primaryStrokeColorId})`}},[t._v(" "+t._s(t.parsePercentage)+"% ")]):t._e()])},i=[];let o=0;var l={props:{percentage:{type:Number,default:.75},strokeWidth:{type:Number,default:22},primaryStrokeColor:{type:String,required:!0},primaryStrokeGradientColor:{type:String,default:null},secondaryStrokeColor:{type:String,required:!0},secondaryStrokeGradientColor:{type:String,default:null},rotate:{type:Number,default:90},showText:{type:Boolean,default:!1}},data(){return{id:o++}},computed:{viewportSize(){return 100},radius(){const t=this.viewportSize/2,e=this.strokeWidth/2;return t-e},center(){return this.viewportSize/2},viewBox(){return`0 0 ${this.viewportSize} ${this.viewportSize}`},circumference(){return 2*Math.PI*this.radius},transform(){return`rotate(${this.rotate}, ${this.center}, ${this.center})`},strokeDasharray(){return this.circumference},strokeDashoffset(){return this.circumference*(1-this.percentage)},primaryStrokeColorId(){return"primary-"+o},secondaryStrokeColorId(){return"secondary-"+o},parsePercentage(){return parseInt(100*this.percentage)||0}}},d=l,c=(a("a357"),a("d802")),u=Object(c["a"])(d,n,i,!1,null,"5f78e642",null),h=u.exports,p=function(){var t=this,e=t._self._c;return e("div",{staticClass:"gradient-box",class:{"show-tab":t.showTab,plain:t.plain},style:t.style},[t._t("default")],2)},f=[],b={props:{primaryColorVar:{type:String,default:null},showTab:{type:Boolean,default:!0},showSolid:{type:Boolean,default:!1},backgroundOpacityAdjustment:{type:Number,default:1},plain:{type:Boolean,default:!1}},computed:{leftColor(){return this.showSolid?this.primaryColor:this.customizePrimaryColorOpacity(.25*this.backgroundOpacityAdjustment)},rightColor(){return this.showSolid?this.primaryColor:this.customizePrimaryColorOpacity(.125*this.backgroundOpacityAdjustment)},primaryColor(){return this.customizePrimaryColorOpacity(1)},style(){if(!this.plain){const t=`background: transparent linear-gradient(94deg, ${this.leftColor} 0%, ${this.rightColor} 100%) 0% 0% no-repeat padding-box;`,e=this.showBorder?`border: 1px solid ${this.primaryColor};`:"",a=this.showTab?`border-left: 9px solid ${this.primaryColor};`:"";return`${t}${e}${a}`}return""}},methods:{customizePrimaryColorOpacity(t){return`rgba(var(${this.primaryColorVar}), ${t})`}}},m=b,v=(a("9e9f"),a("25a4"),Object(c["a"])(m,p,f,!1,null,"42940dc4",null)),g=v.exports,y={components:{GradientBox:g,GraphCircle:h},props:{name:{type:String,required:!0},total:{type:Number,required:!0},useful:{type:Number,required:!0},primaryColorVar:{type:String,default:null},warningCount:{type:Number,default:0},errorCount:{type:Number,default:0},location:{type:Object,default:null},plain:{type:Boolean,default:!1},graphical:{type:Boolean,default:!0}},computed:{percentage(){return 0===this.total?0:this.useful/this.total},clickable(){return!!this.location},showAlerts(){const t=this.warningCount+this.errorCount;return t>0}},methods:{visitLocation(){this.clickable&&this.$router.push(this.location)}}},x=y,w=(a("1645"),Object(c["a"])(x,r,s,!1,null,null,null));e["a"]=w.exports},"74d0":function(t,e,a){"use strict";a("d90c")},"7d6c":function(t,e,a){var r=a("9ef5"),s=1/0,n=17976931348623157e292;function i(t){if(!t)return 0===t?t:0;if(t=r(t),t===s||t===-s){var e=t<0?-1:1;return e*n}return t===t?t:0}t.exports=i},"7d99":function(t,e,a){var r=a("4b7a"),s=a("4b7e");function n(t,e){return t&&t.length?s(t,r(e,3),!0):[]}t.exports=n},"7f2b":function(t,e,a){var r=a("201b"),s=a("9b66"),n=a("9ef5"),i=a("770e"),o=r.isFinite,l=Math.min;function d(t){var e=Math[t];return function(t,a){if(t=n(t),a=null==a?0:l(s(a),292),a&&o(t)){var r=(i(t)+"e").split("e"),d=e(r[0]+"e"+(+r[1]+a));return r=(i(d)+"e").split("e"),+(r[0]+"e"+(+r[1]-a))}return e(t)}}t.exports=d},8356:function(t,e,a){var r=a("db3f");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);var s=a("0ed3").default;s("1fc9ca71",r,!0,{sourceMap:!1,shadowMode:!1})},"898f":function(t,e,a){var r=a("5eaa");e=r(!1),e.push([t.i,".dashboard-metrics[data-v-1e72d538] .external-link{position:absolute;left:200px;top:-45px}.dashboard-metrics[data-v-1e72d538] .frame{top:0}.dashboard-metrics.external-link-pull-left[data-v-1e72d538] .external-link{position:absolute;left:10px;top:-47px}",""]),t.exports=e},9648:function(t,e,a){var r=a("898f");r.__esModule&&(r=r.default),"string"===typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);var s=a("0ed3").default;s("37c375f2",r,!0,{sourceMap:!1,shadowMode:!1})},"96ab":function(t,e,a){var r=a("5eaa");e=r(!1),e.push([t.i,".gradient-box{border-radius:5px}",""]),t.exports=e},"9b66":function(t,e,a){var r=a("7d6c");function s(t){var e=r(t),a=e%1;return e===e?a?e-a:e:0}t.exports=s},"9d47":function(t,e,a){var r=a("5eaa");e=r(!1),e.push([t.i,".grafana-graph[data-v-539982cb]{position:relative;min-height:100%;min-width:100%}.grafana-graph[data-v-539982cb] .content{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;padding:0}.grafana-graph[data-v-539982cb] .overlay{position:static;background-color:initial}.grafana-graph iframe[data-v-539982cb]{position:absolute;left:0;right:0;top:20px;bottom:0;width:100%;height:100%;overflow:hidden}.grafana-graph iframe.loading[data-v-539982cb]{visibility:hidden}",""]),t.exports=e},"9e9f":function(t,e,a){"use strict";a("1bf1")},"9fed":function(t,e,a){var r=a("5eaa");e=r(!1),e.push([t.i,".tabs[data-v-3f826acc]{list-style-type:none;margin:0;padding:0}.tabs.horizontal[data-v-3f826acc]{border:solid thin var(--border);border-bottom:0;display:flex;flex-direction:row}.tabs.horizontal+.tab-container[data-v-3f826acc]{border:solid thin var(--border)}.tabs.horizontal .tab.active[data-v-3f826acc]{border-bottom:solid 2px var(--primary)}.tabs[data-v-3f826acc]:focus{outline:none}.tabs:focus .tab.active a span[data-v-3f826acc]{text-decoration:underline}.tabs .tab[data-v-3f826acc]{position:relative;float:left;padding:0 8px 0 0;cursor:pointer}.tabs .tab A[data-v-3f826acc]{display:flex;align-items:center;padding:10px 15px}.tabs .tab A[data-v-3f826acc]:hover{text-decoration:none}.tabs .tab A:hover span[data-v-3f826acc]{text-decoration:underline}.tabs .tab .conditions-alert-icon[data-v-3f826acc]{color:var(--error);padding-left:4px}.tabs .tab[data-v-3f826acc]:last-child{padding-right:0}.tabs .tab.active>A[data-v-3f826acc]{color:var(--primary);text-decoration:none}.tabs .tab.error A>i[data-v-3f826acc]{color:var(--error)}.tabs .tab .tab-badge[data-v-3f826acc]{margin-left:5px;background-color:var(--link);color:#fff;border-radius:6px;padding:1px 7px;font-size:11px}.tab-container[data-v-3f826acc]{padding:20px}.tab-container.no-content[data-v-3f826acc]{padding:0 0 3px 0}.tab-container--flat[data-v-3f826acc]{padding:0}.tab-container--flat .side-tabs[data-v-3f826acc]{box-shadow:unset}.tabs-only[data-v-3f826acc]{margin-bottom:20px}.tabs-only .tab-container[data-v-3f826acc]{display:none}.tabs-only .tabs[data-v-3f826acc]{border:0;border-bottom:2px solid var(--border)}.side-tabs[data-v-3f826acc]{display:flex;box-shadow:0 0 20px var(--shadow);border-radius:calc(var(--border-radius)*2);background-color:var(--tabbed-sidebar-bg)}.side-tabs .tab-container[data-v-3f826acc]{padding:20px}.side-tabs .tabs[data-v-3f826acc]{width:200px;min-width:200px;display:flex;flex:1 0;flex-direction:column}.side-tabs .tabs .tab[data-v-3f826acc]{width:100%;border-left:5px solid transparent}.side-tabs .tabs .tab.toggle A[data-v-3f826acc],.side-tabs .tabs .tab A[data-v-3f826acc]{color:var(--primary)}.side-tabs .tabs .tab.active[data-v-3f826acc]{background-color:var(--body-bg);border-left:solid 5px var(--primary)}.side-tabs .tabs .tab.active A[data-v-3f826acc]{color:var(--input-label)}.side-tabs .tabs .tab.disabled[data-v-3f826acc]{background-color:var(--disabled-bg)}.side-tabs .tabs .tab.disabled A[data-v-3f826acc]{color:var(--disabled-text);text-decoration:none}.side-tabs .tabs .tab-list-footer[data-v-3f826acc]{list-style:none;padding:0;margin-top:auto}.side-tabs .tabs .tab-list-footer li[data-v-3f826acc]{display:flex;flex:1}.side-tabs .tabs .tab-list-footer li .btn[data-v-3f826acc]{flex:1 1;display:flex;justify-content:center}.side-tabs .tabs .tab-list-footer li button[data-v-3f826acc]:first-of-type{border-top:solid 1px var(--border);border-right:solid 1px var(--border);border-top-right-radius:0}.side-tabs .tabs .tab-list-footer li button[data-v-3f826acc]:last-of-type{border-top:solid 1px var(--border);border-top-left-radius:0}.side-tabs .tab-container[data-v-3f826acc]{width:calc(100% - 200px);flex-grow:1;background-color:var(--body-bg)}",""]),t.exports=e},a1d8:function(t,e){function a(t){return t&&t.length?t[0]:void 0}t.exports=a},a357:function(t,e,a){"use strict";a("6fc4")},b45b:function(t,e,a){"use strict";a.d(e,"a",(function(){return o})),a.d(e,"b",(function(){return l}));var r=a("f390"),s=a("4048");a("907c");const n=["100.2.0+up40.1.2","102.0.0+up40.1.2"];function i(t,e){return n.includes(t)?"/k8s/clusters/"+e:"local"===e?"":"/k8s/clusters/"+e}function o(t,e,a,r,n=!0){const o=Object(s["c"])(e);let l=n?`${i(t,a)}${o.path}`:o.path;return o.query.viewPanel&&(l=Object(s["a"])(l,"viewPanel",o.query.viewPanel)),l=Object(s["a"])(l,"orgId",o.query.orgId),l=Object(s["a"])(l,"kiosk",null),Object.entries(r).forEach(t=>{l=Object(s["a"])(l,t[0],t[1])}),l}async function l(t,e,a,n,o="cluster",l=null){if(!Object(r["a"])(e.getters))return!1;const d=Object(s["c"])(n);let c=i(t,a)+"/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-grafana:80/proxy/",u="http:rancher-monitoring-grafana:80/proxy/";l&&(c=`${i(t,a)}/api/v1/namespaces/cattle-project-${l}-monitoring/services/http:cattle-project-${l}-monitoring-grafana:80/proxy/`,u=`http:cattle-project-${l}-monitoring-grafana:80/proxy/`);const h=d.path.split(u)[1],p=h.split("/")[1],f=`${c}api/dashboards/uid/${p}`;try{return await e.dispatch(o+"/request",{url:f,redirectUnauthorized:!1}),!0}catch(b){return!1}}},be6d:function(t,e,a){!function(e,a){t.exports=a()}(0,(function(){"use strict";return function(t,e,a){t=t||{};var r=e.prototype,s={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};a.en.relativeTime=s;var n=function(e,r,n,i){for(var o,l,d,c=n.$locale().relativeTime||s,u=t.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],h=u.length,p=0;p0,b<=f.r||!f.r){b<=1&&p>0&&(f=u[p-1]);var m=c[f.l];l="string"==typeof m?m.replace("%d",b):m(b,r,f.l,d);break}}return r?l:(d?c.future:c.past).replace("%s",l)};r.to=function(t,e){return n(t,e,this,!0)},r.from=function(t,e){return n(t,e,this)};var i=function(t){return t.$u?a.utc():a()};r.toNow=function(t){return this.to(i(this),t)},r.fromNow=function(t){return this.from(i(this),t)}}}))},c389:function(t,e,a){"use strict";var r=function(){var t=this,e=t._self._c;return e("div",{staticClass:"dashboard-metrics",class:!t.hasSummaryAndDetail&&"external-link-pull-left"},[e("div",{staticClass:"graph-options mb-10"},[e("DashboardOptions",{attrs:{"has-summary-and-detail":t.hasSummaryAndDetail},model:{value:t.graphOptions,callback:function(e){t.graphOptions=e},expression:"graphOptions"}})],1),e("div",{staticClass:"info"},[t._t("default")],2),e("div",{staticClass:"graphs",style:{height:t.graphHeight}},["detail"===t.graphOptions.type?e("GrafanaDashboard",{key:"'detail'",staticClass:"col span-12 detail",attrs:{"background-color":t.graphBackgroundColor,theme:t.theme,"refresh-rate":t.graphOptions.refreshRate,range:t.graphOptions.range,url:t.detailUrl,vars:t.vars,"modify-prefix":t.modifyPrefix}}):e("GrafanaDashboard",{key:"'summary'",staticClass:"col span-12 summary",attrs:{"background-color":t.graphBackgroundColor,theme:t.theme,"refresh-rate":t.graphOptions.refreshRate,range:t.graphOptions.range,url:t.summaryUrl,vars:t.vars,"modify-prefix":t.modifyPrefix}})],1)])},s=[],n=function(){var t=this,e=t._self._c;return e("div",{staticClass:"graph-options"},[t.hasSummaryAndDetail?e("div",[e("ButtonGroup",{attrs:{options:t.detailSummaryOptions},model:{value:t.value.type,callback:function(e){t.$set(t.value,"type",e)},expression:"value.type"}})],1):e("div",[e("div")]),e("div",{staticClass:"range-refresh"},[e("LabeledSelect",{attrs:{options:t.rangeOptions,label:t.t("graphOptions.range")},model:{value:t.value.range,callback:function(e){t.$set(t.value,"range",e)},expression:"value.range"}}),e("LabeledSelect",{attrs:{options:t.refreshOptions,label:t.t("graphOptions.refresh")},model:{value:t.value.refreshRate,callback:function(e){t.$set(t.value,"refreshRate",e)},expression:"value.refreshRate"}})],1)])},i=[],o=a("cc2d"),l=a("466b"),d={components:{ButtonGroup:o["a"],LabeledSelect:l["a"]},props:{value:{type:Object,required:!0},hasSummaryAndDetail:{type:Boolean,default:!0}},data(){return{range:null,rangeOptions:[{label:this.t("generic.units.time.5m"),value:"5m"},{label:this.t("generic.units.time.1h"),value:"1h"},{label:this.t("generic.units.time.6h"),value:"6h"},{label:this.t("generic.units.time.1d"),value:"1d"},{label:this.t("generic.units.time.7d"),value:"7d"},{label:this.t("generic.units.time.30d"),value:"30d"}],refreshOptions:[{label:this.t("generic.units.time.5s"),value:"5s"},{label:this.t("generic.units.time.10s"),value:"10s"},{label:this.t("generic.units.time.30s"),value:"30s"},{label:this.t("generic.units.time.1m"),value:"1m"},{label:this.t("generic.units.time.5m"),value:"5m"},{label:this.t("generic.units.time.15m"),value:"15m"},{label:this.t("generic.units.time.30m"),value:"30m"},{label:this.t("generic.units.time.1h"),value:"1h"},{label:this.t("generic.units.time.2h"),value:"2h"},{label:this.t("generic.units.time.1d"),value:"1d"}],detailSummaryOptions:[{label:this.t("graphOptions.detail"),value:"detail"},{label:this.t("graphOptions.summary"),value:"summary"}]}}},c=d,u=(a("1ce3"),a("d802")),h=Object(u["a"])(c,n,i,!1,null,"b7bcaa58",null),p=h.exports,f=function(){var t=this,e=t._self._c;return e("div",{staticClass:"grafana-graph"},[t.error?e("Banner",{staticStyle:{"z-index":"1000"},attrs:{color:"error"}},[e("div",{staticClass:"text-center"},[t._v(" "+t._s(t.t("grafanaDashboard.failedToLoad"))+" "),e("a",{attrs:{href:"#"},on:{click:t.reload}},[t._v(t._s(t.t("grafanaDashboard.reload")))])])]):t._e(),e("iframe",{directives:[{name:"show",rawName:"v-show",value:!t.error,expression:"!error"}],ref:"frame",class:{loading:t.loading,frame:!0},attrs:{src:t.currentUrl,frameborder:"0",scrolling:"no"}}),t.loading?e("div",[e("Loading")],1):t._e(),t.loading||t.error?t._e():e("div",{staticClass:"external-link"},[e("a",{attrs:{href:t.grafanaUrl,target:"_blank",rel:"noopener nofollow"}},[t._v(t._s(t.t("grafanaDashboard.grafana"))+" "),e("i",{staticClass:"icon icon-external-link"})])])],1)},b=[],m=a("15ca"),v=a("6418"),g=a("b45b"),y=a("907c"),x={components:{Banner:v["a"],Loading:m["a"]},props:{url:{type:String,required:!0},vars:{type:Object,default:()=>({})},range:{type:String,default:null},refreshRate:{type:String,default:null},modifyPrefix:{type:Boolean,default:!0},backgroundColor:{type:String,default:"#1b1c21"},theme:{type:String,default:"dark"}},async fetch(){const t=this.$store.getters["currentProduct"].inStore;if(this.$store.getters[t+"/canList"](y["a"].APP))try{const e=await this.$store.dispatch(t+"/find",{type:y["a"].APP,id:"cattle-monitoring-system/rancher-monitoring"});this.monitoringVersion=null===e||void 0===e?void 0:e.currentVersion}catch(e){}},data(){return{loading:!1,error:!1,interval:null,errorTimer:null,monitoringVersion:""}},computed:{currentUrl(){return this.computeUrl()},grafanaUrl(){return this.currentUrl.replace("&kiosk","")},graphWindow(){var t;return null===(t=this.$refs.frame)||void 0===t?void 0:t.contentWindow},graphHistory(){var t;return null===(t=this.graphWindow)||void 0===t?void 0:t.history},graphDocument(){var t;return null===(t=this.graphWindow)||void 0===t?void 0:t.document}},watch:{currentUrl(t){var e;this.graphHistory&&null!==(e=this.graphWindow)&&void 0!==e&&e.angular&&this.graphWindow.location.replace(t)},error(t){t?this.errorTimer=setInterval(()=>{this.reload()},45e3):(clearInterval(this.errorTimer),this.errorTimer=null)}},mounted(){this.$refs.frame.onload=this.inject,this.poll()},beforeDestroy(){this.interval&&clearInterval(this.interval),this.errorTimer&&clearInterval(this.errorTimer)},methods:{poll(){this.interval&&(clearInterval(this.interval),this.interval=null),this.interval=setInterval(()=>{try{var t;const e=null===(t=this.$refs.frame)||void 0===t?void 0:t.contentWindow,a=e.document.querySelectorAll('[class$="alert-error'),r=e.document.querySelectorAll('[class$="panel-info-corner--error'),s=e.document.querySelectorAll('[class$="panel-in-fullscreen'),n=e.document.querySelectorAll('[class$="panel-container'),i=a.length>0||r.length>0,o=s.length>0||n.length>0,l=e.document.getElementsByTagName("pre"),d=l.length>0?l[0].innerText:"",c=d.includes('"status": "Failure"');if(i)throw new Error("An error was detected in the iframe");this.$set(this,"loading",!o),this.$set(this,"error",c)}catch(e){this.$set(this,"error",!0),this.$set(this,"loading",!1),clearInterval(this.interval),this.interval=null}},100)},computeFromTo(){return{from:"now-"+this.range,to:"now"}},computeUrl(){const t=this.url,e=this.$store.getters["currentCluster"].id,a=this.computeParams();return Object(g["a"])(this.monitoringVersion,t,e,a,this.modifyPrefix)},computeParams(){const t={},e=this.computeFromTo();return e.from&&(t.from=e.from),e.to&&(t.to=e.to),this.refreshRate&&(t.refresh=this.refreshRate),Object.keys(this.vars).length>0&&Object.entries(this.vars).forEach(e=>{const a="var-"+e[0];t[a]=e[1]}),t.theme=this.theme,t},reload(t){t&&t.preventDefault(),this.$refs.frame.contentWindow.location.reload(),this.poll()},injectCss(){var t;const e=document.createElement("style");e.innerHTML=`\n body .grafana-app .dashboard-content {\n background: ${this.backgroundColor};\n padding: 0;\n }\n\n body .grafana-app .layout {\n background: ${this.backgroundColor};\n }\n\n\n body .grafana-app .dashboard-content .panel-container {\n background-color: initial;\n border: none;\n }\n\n body .grafana-app .dashboard-content .panel-wrapper {\n height: 100%;\n }\n\n body .grafana-app .panel-menu-container {\n display: none;\n }\n\n body .grafana-app .panel-title {\n cursor: default;\n }\n\n body .grafana-app .panel-title .panel-title-text div {\n display: none;\n }\n `;const a=null===(t=this.$refs.frame)||void 0===t?void 0:t.contentWindow,r=null===a||void 0===a?void 0:a.document;r.head&&r.head.appendChild(e)},inject(){this.injectCss()}}},w=x,k=(a("493f"),Object(u["a"])(w,f,b,!1,null,"539982cb",null)),$=k.exports,C=a("9ce4"),T={components:{DashboardOptions:p,GrafanaDashboard:$},props:{detailUrl:{type:String,required:!0},summaryUrl:{type:String,default:""},vars:{type:Object,default:()=>({})},graphHeight:{type:String,required:!0},hasSummaryAndDetail:{type:Boolean,default:!0},modifyPrefix:{type:Boolean,default:!0}},data(){return{graphOptions:{range:"5m",refreshRate:"30s",type:"detail"}}},computed:{...Object(C["b"])(["prefs/theme"]),graphBackgroundColor(){return"dark"===this.theme?"#2e3035":"#f3f4f9"},theme(){return this["prefs/theme"]}}},_=T,S=(a("ec0b"),Object(u["a"])(_,r,s,!1,null,"1e72d538",null));e["a"]=S.exports},c422:function(t,e,a){"use strict";var r=function(){var t=this,e=t._self._c;return e("Tabbed",t._b({attrs:{"default-tab":t.defaultTab},on:{changed:t.tabChange}},"Tabbed",t.$attrs,!1),[t._t("default"),t.showConditions?e("Tab",{attrs:{"label-key":"resourceTabs.conditions.tab",name:"conditions",weight:-1,"display-alert-icon":t.conditionsHaveIssues}},[e("Conditions",{attrs:{value:t.value}})],1):t._e(),t.showEvents?e("Tab",{attrs:{"label-key":"resourceTabs.events.tab",name:"events",weight:-2}},["events"===t.selectedTab?e("SortableTable",{attrs:{rows:t.events,headers:t.eventHeaders,"key-field":"id",search:!1,"table-actions":!1,"row-actions":!1,"default-sort-by":"date"}}):t._e()],1):t._e(),t.showRelated?e("Tab",{attrs:{name:"related","label-key":"resourceTabs.related.tab",weight:-3}},[e("h3",{directives:[{name:"t",rawName:"v-t",value:"resourceTabs.related.from",expression:"'resourceTabs.related.from'"}]}),e("RelatedResources",{attrs:{"ignore-types":[t.value.type],value:t.value,direction:"from"}}),e("h3",{directives:[{name:"t",rawName:"v-t",value:"resourceTabs.related.to",expression:"'resourceTabs.related.to'"}],staticClass:"mt-20"}),e("RelatedResources",{attrs:{"ignore-types":[t.value.type],value:t.value,direction:"to"}})],1):t._e(),t._l(t.extensionTabs,(function(a,r){return e("Tab",{key:`${a.name}${r}`,attrs:{name:a.name,label:a.label,"label-key":a.labelKey,weight:a.weight,tooltip:a.tooltip,"show-header":a.showHeader,"display-alert-icon":a.displayAlertIcon,error:a.error,badge:a.badge}},[e(a.component,{tag:"component",attrs:{resource:t.value}})],1)}))],2)},s=[],n=a("0cb2"),i=a("38de"),o=a("305c"),l=function(){var t=this,e=t._self._c;return e("SortableTable",{attrs:{headers:t.headers,rows:t.rows,"key-field":"condition","default-sort-by":"condition","table-actions":!1,"row-actions":!1,search:!1},scopedSlots:t._u([{key:"cell:condition",fn:function({row:a}){return[e("span",{class:{"text-error":a.error}},[t._v(t._s(a.condition))])]}},{key:"cell:status",fn:function({row:a}){return[e("span",{class:{"text-error":a.error}},[t._v(t._s(a.status))])]}}])})},d=[],c=a("0fb1"),u={components:{SortableTable:c["a"]},props:{value:{type:Object,default:()=>({})}},computed:{headers(){return[{name:"condition",labelKey:"tableHeaders.condition",value:"condition",width:150,sort:"condition",dashIfEmpty:!0},{name:"status",labelKey:"tableHeaders.status",value:"status",width:75,sort:"status",dashIfEmpty:!0},{name:"time",labelKey:"tableHeaders.updated",value:"time",sort:"time",formatter:"LiveDate",formatterOpts:{addSuffix:!0},width:125,dashIfEmpty:!0},{name:"message",labelKey:"tableHeaders.message",value:"message",sort:["message"],dashIfEmpty:!0}]},rows(){var t;return((null===(t=this.value.status)||void 0===t?void 0:t.conditions)||[]).map(t=>{let e=t.message||"";return t.reason&&(e=`[${t.reason}] ${e}`.trim()),{condition:t.type||"Unknown",status:t.status||"Unknown",error:t.error,time:t.lastProbeTime||t.lastUpdateTime||t.lastTransitionTime,message:e}})}}},h=u,p=a("d802"),f=Object(p["a"])(h,l,d,!1,null,null,null),b=f.exports,m=a("907c"),v=a("da25"),g=function(){var t=this,e=t._self._c;return e("ResourceTable",{attrs:{schema:null,rows:t.rows,headers:t.headers,search:!1,"table-actions":!1,namespaced:!0,"mangle-action-resources":t.getRealResources,"paging-label":"sortableTable.paging.generic",groupable:!1},scopedSlots:t._u([{key:"cell:state",fn:function({row:t}){return[t.real?e("BadgeState",{attrs:{value:t.real}}):e("BadgeState",{attrs:{value:t}})]}}])})},y=[],x=a("126f"),w=a("9c09"),k=a("462f"),$=a("1d19"),C=a("bcb3"),T=a("f17a"),_={components:{ResourceTable:x["a"],BadgeState:T["a"]},props:{value:{type:Object,required:!0},rel:{type:String,default:null},direction:{type:String,default:"to"},ignoreTypes:{type:Array,default:()=>[]}},data(){return{loadedResources:1}},computed:{filteredRelationships(){var t;let e=(null===(t=this.value)||void 0===t||null===(t=t.metadata)||void 0===t?void 0:t.relationships)||[];return e=e.filter(t=>{const e=t[this.direction+"Type"];return!(!e||this.ignoreTypes.includes(e))&&(!this.rel||t.rel===this.rel)}),e},rows(){if(this.loadedResources<1)return;const t=this.$store.getters["clusterId"],e=this.$store.getters["currentStore"](),a=[];for(const r of this.filteredRelationships){const s=r.state||"active",n=Object(w["c"])(s,r.error,r.transitioning),i=r[this.direction+"Type"],o=this.$store.getters[e+"/schemaFor"](i);let l=r[this.direction+"Id"];if(!l)continue;let d=null;const c=l.indexOf("/"),u=`${i}/${d}/${l}`;c>0&&(d=l.substr(0,c),l=l.substr(c+1));const h={name:`c-cluster-product-resource${d?"-namespace":""}-id`,params:{product:C["a"],cluster:"management"===e?"local":t,resource:i,namespace:d,id:l}};a.push({type:i,real:this.$store.getters[e+"/byId"](i,r[this.direction+"Id"]),id:r[this.direction+"Id"],state:s,metadata:{namespace:d,name:l},_key:u,name:l,namespace:d,nameDisplay:l,nameSort:Object($["b"])(l).toLowerCase(),stateColor:n,detailLocation:h,typeDisplay:this.$store.getters["type-map/labelFor"](o),stateDisplay:Object(w["g"])(s),stateBackground:n.replace("text-","bg-"),groupByLabel:d})}return a},headers(){return[k["N"],k["S"],k["v"],k["w"]]}},methods:{async getRealResources(t){const e=this.$store.getters["currentStore"](),a=await Promise.allSettled(t.map(t=>this.$store.dispatch(e+"/find",{type:t.type,id:t.id}))),r=[];for(let s=0;s({})},mode:{type:String,default:v["A"]},defaultTab:{type:String,default:null},needConditions:{type:Boolean,default:!0},needEvents:{type:Boolean,default:!0},needRelated:{type:Boolean,default:!0},extensionParams:{type:Object,default:null}},data(){const t=this.$store.getters["currentStore"](m["f"]);return{hasEvents:this.$store.getters[t+"/schemaFor"](m["f"]),allEvents:[],selectedTab:this.defaultTab,didLoadEvents:!1,extensionTabs:Object(B["a"])(this,M["c"].TAB,M["e"].RESOURCE_DETAIL,this.$route,this,this.extensionParams),inStore:t,showConditions:!1}},beforeDestroy(){this.$store.dispatch("cluster/forgetType",m["f"])},fetch(){this.setShowConditions()},computed:{showEvents(){return this.isView&&this.needEvents&&this.hasEvents},showRelated(){return this.isView&&this.needRelated},eventHeaders(){return[{name:"type",label:this.t("tableHeaders.type"),value:"eventType",sort:"eventType"},{name:"reason",label:this.t("tableHeaders.reason"),value:"reason",sort:"reason"},{name:"date",label:this.t("tableHeaders.updated"),value:"date",sort:"date:desc",formatter:"LiveDate",formatterOpts:{addSuffix:!0},width:125},{name:"message",label:this.t("tableHeaders.message"),value:"message",sort:"message"}]},events(){return this.allEvents.filter(t=>{var e,a;return(null===(e=t.involvedObject)||void 0===e?void 0:e.uid)===(null===(a=this.value)||void 0===a||null===(a=a.metadata)||void 0===a?void 0:a.uid)}).map(t=>({reason:`${t.reason||this.t("generic.unknown")}${t.count>1?` (${t.count})`:""}`.trim(),message:t.message||this.t("generic.unknown"),date:t.lastTimestamp||t.firstTimestamp||t.metadata.creationTimestamp,eventType:t.eventType}))},conditionsHaveIssues(){var t;return!!this.showConditions&&(null===(t=this.value.status)||void 0===t||null===(t=t.conditions)||void 0===t?void 0:t.filter(t=>!Object(w["e"])(t)).some(t=>t.error))}},methods:{tabChange(t){if(this.selectedTab=null===t||void 0===t?void 0:t.selectedName,!this.didLoadEvents&&"events"===this.selectedTab){const t=this.$store.getters["currentStore"](m["f"]);this.$store.dispatch(t+"/findAll",{type:m["f"]}).then(t=>{this.allEvents=t,this.didLoadEvents=!0})}},async setShowConditions(){var t,e;this.isView&&this.needConditions&&null!==(t=this.value)&&void 0!==t&&t.type&&null!==(e=this.schema)&&void 0!==e&&e.fetchResourceFields&&(await this.schema.fetchResourceFields(),this.showConditions=this.$store.getters[this.inStore+"/pathExistsInSchema"](this.value.type,"status.conditions"))}}},R=A,D=Object(p["a"])(R,r,s,!1,null,null,null);e["a"]=D.exports},d0e7:function(t,e){function a(t,e,a){var r=-1,s=t.length;e<0&&(e=-e>s?0:s+e),a=a>s?s:a,a<0&&(a+=s),s=e>a?0:a-e>>>0,e>>>=0;var n=Array(s);while(++r tag\n\n// load the styles\nvar content = require(\"!!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GrafanaDashboard.vue?vue&type=style&index=0&id=539982cb&prod&lang=scss&scoped=true&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5c5d3099\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{'side-tabs': !!_vm.sideTabs, 'tabs-only': _vm.tabsOnly },attrs:{\"data-testid\":\"tabbed\"}},[(!_vm.hideTabs)?_c('ul',{ref:\"tablist\",staticClass:\"tabs\",class:{'clearfix':!_vm.sideTabs, 'vertical': _vm.sideTabs, 'horizontal': !_vm.sideTabs},attrs:{\"role\":\"tablist\",\"tabindex\":\"0\",\"data-testid\":\"tabbed-block\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"]))return null;if('button' in $event && $event.button !== 2)return null;$event.preventDefault();return _vm.selectNext(1)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"]))return null;if('button' in $event && $event.button !== 0)return null;$event.preventDefault();return _vm.selectNext(-1)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;$event.preventDefault();return _vm.selectNext(1)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;$event.preventDefault();return _vm.selectNext(-1)}]}},[_vm._l((_vm.sortedTabs),function(tab){return _c('li',{key:tab.name,class:{tab: true, active: tab.active, disabled: tab.disabled, error: (tab.error)},attrs:{\"id\":tab.name,\"data-testid\":tab.name,\"role\":\"presentation\"}},[_c('a',{attrs:{\"data-testid\":`btn-${tab.name}`,\"aria-controls\":'#' + tab.name,\"aria-selected\":tab.active,\"role\":\"tab\"},on:{\"click\":function($event){$event.preventDefault();return _vm.select(tab.name, $event)}}},[_c('span',[_vm._v(_vm._s(tab.labelDisplay))]),(tab.badge)?_c('span',{staticClass:\"tab-badge\"},[_vm._v(_vm._s(tab.badge))]):_vm._e(),(_vm.hasIcon(tab))?_c('i',{directives:[{name:\"clean-tooltip\",rawName:\"v-clean-tooltip\",value:(_vm.t('validation.tab')),expression:\"t('validation.tab')\"}],staticClass:\"conditions-alert-icon icon-error\"}):_vm._e()])])}),(_vm.sideTabs && !_vm.sortedTabs.length)?_c('li',{staticClass:\"tab disabled\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"(None)\")])]):_vm._e(),(_vm.sideTabs && _vm.showTabsAddRemove)?_c('ul',{staticClass:\"tab-list-footer\"},[_c('li',[_c('button',{staticClass:\"btn bg-transparent\",attrs:{\"type\":\"button\",\"data-testid\":\"tab-list-add\"},on:{\"click\":_vm.tabAddClicked}},[_c('i',{staticClass:\"icon icon-plus\"})]),_c('button',{staticClass:\"btn bg-transparent\",attrs:{\"type\":\"button\",\"disabled\":!_vm.sortedTabs.length,\"data-testid\":\"tab-list-remove\"},on:{\"click\":_vm.tabRemoveClicked}},[_c('i',{staticClass:\"icon icon-minus\"})])])]):_vm._e(),_vm._t(\"tab-row-extras\")],2):_vm._e(),_c('div',{class:{\n 'tab-container': !!_vm.tabs.length || !!_vm.sideTabs,\n 'no-content': _vm.noContent,\n 'tab-container--flat': !!_vm.flat,\n }},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3f826acc&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3f826acc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f826acc\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CountGauge.vue?vue&type=style&index=0&id=248b86e0&prod&lang=scss&\"","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Circle.vue?vue&type=template&id=5f78e642&scoped=true&\"\nimport script from \"./Circle.vue?vue&type=script&lang=js&\"\nexport * from \"./Circle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Circle.vue?vue&type=style&index=0&id=5f78e642&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f78e642\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"gradient-box\",class:{'show-tab': _vm.showTab, 'plain': _vm.plain},style:(_vm.style)},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GradientBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GradientBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GradientBox.vue?vue&type=template&id=42940dc4&scoped=true&\"\nimport script from \"./GradientBox.vue?vue&type=script&lang=js&\"\nexport * from \"./GradientBox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GradientBox.vue?vue&type=style&index=0&id=42940dc4&prod&lang=scss&\"\nimport style1 from \"./GradientBox.vue?vue&type=style&index=1&id=42940dc4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42940dc4\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CountGauge.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CountGauge.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CountGauge.vue?vue&type=template&id=248b86e0&\"\nimport script from \"./CountGauge.vue?vue&type=script&lang=js&\"\nexport * from \"./CountGauge.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CountGauge.vue?vue&type=style&index=0&id=248b86e0&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3f826acc&prod&lang=scss&scoped=true&\"","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseIteratee = require('./_baseIteratee'),\n baseWhile = require('./_baseWhile');\n\n/**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\nfunction dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, baseIteratee(predicate, 3), true)\n : [];\n}\n\nmodule.exports = dropWhile;\n","var root = require('./_root'),\n toInteger = require('./toInteger'),\n toNumber = require('./toNumber'),\n toString = require('./toString');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\nmodule.exports = createRound;\n","// style-loader: Adds some css to the DOM by adding a \r\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardOptions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardOptions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardOptions.vue?vue&type=template&id=b7bcaa58&scoped=true&\"\nimport script from \"./DashboardOptions.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardOptions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardOptions.vue?vue&type=style&index=0&id=b7bcaa58&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b7bcaa58\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"grafana-graph\"},[(_vm.error)?_c('Banner',{staticStyle:{\"z-index\":\"1000\"},attrs:{\"color\":\"error\"}},[_c('div',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.t('grafanaDashboard.failedToLoad'))+\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.reload}},[_vm._v(_vm._s(_vm.t('grafanaDashboard.reload')))])])]):_vm._e(),_c('iframe',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.error),expression:\"!error\"}],ref:\"frame\",class:{loading: _vm.loading, frame: true},attrs:{\"src\":_vm.currentUrl,\"frameborder\":\"0\",\"scrolling\":\"no\"}}),(_vm.loading)?_c('div',[_c('Loading')],1):_vm._e(),(!_vm.loading && !_vm.error)?_c('div',{staticClass:\"external-link\"},[_c('a',{attrs:{\"href\":_vm.grafanaUrl,\"target\":\"_blank\",\"rel\":\"noopener nofollow\"}},[_vm._v(_vm._s(_vm.t('grafanaDashboard.grafana'))+\" \"),_c('i',{staticClass:\"icon icon-external-link\"})])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GrafanaDashboard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./GrafanaDashboard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GrafanaDashboard.vue?vue&type=template&id=539982cb&scoped=true&\"\nimport script from \"./GrafanaDashboard.vue?vue&type=script&lang=js&\"\nexport * from \"./GrafanaDashboard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./GrafanaDashboard.vue?vue&type=style&index=0&id=539982cb&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"539982cb\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardMetrics.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardMetrics.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardMetrics.vue?vue&type=template&id=1e72d538&scoped=true&\"\nimport script from \"./DashboardMetrics.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardMetrics.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardMetrics.vue?vue&type=style&index=0&id=1e72d538&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e72d538\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Tabbed',_vm._b({attrs:{\"default-tab\":_vm.defaultTab},on:{\"changed\":_vm.tabChange}},'Tabbed',_vm.$attrs,false),[_vm._t(\"default\"),(_vm.showConditions)?_c('Tab',{attrs:{\"label-key\":\"resourceTabs.conditions.tab\",\"name\":\"conditions\",\"weight\":-1,\"display-alert-icon\":_vm.conditionsHaveIssues}},[_c('Conditions',{attrs:{\"value\":_vm.value}})],1):_vm._e(),(_vm.showEvents)?_c('Tab',{attrs:{\"label-key\":\"resourceTabs.events.tab\",\"name\":\"events\",\"weight\":-2}},[(_vm.selectedTab === 'events')?_c('SortableTable',{attrs:{\"rows\":_vm.events,\"headers\":_vm.eventHeaders,\"key-field\":\"id\",\"search\":false,\"table-actions\":false,\"row-actions\":false,\"default-sort-by\":\"date\"}}):_vm._e()],1):_vm._e(),(_vm.showRelated)?_c('Tab',{attrs:{\"name\":\"related\",\"label-key\":\"resourceTabs.related.tab\",\"weight\":-3}},[_c('h3',{directives:[{name:\"t\",rawName:\"v-t\",value:('resourceTabs.related.from'),expression:\"'resourceTabs.related.from'\"}]}),_c('RelatedResources',{attrs:{\"ignore-types\":[_vm.value.type],\"value\":_vm.value,\"direction\":\"from\"}}),_c('h3',{directives:[{name:\"t\",rawName:\"v-t\",value:('resourceTabs.related.to'),expression:\"'resourceTabs.related.to'\"}],staticClass:\"mt-20\"}),_c('RelatedResources',{attrs:{\"ignore-types\":[_vm.value.type],\"value\":_vm.value,\"direction\":\"to\"}})],1):_vm._e(),_vm._l((_vm.extensionTabs),function(tab,i){return _c('Tab',{key:`${tab.name}${i}`,attrs:{\"name\":tab.name,\"label\":tab.label,\"label-key\":tab.labelKey,\"weight\":tab.weight,\"tooltip\":tab.tooltip,\"show-header\":tab.showHeader,\"display-alert-icon\":tab.displayAlertIcon,\"error\":tab.error,\"badge\":tab.badge}},[_c(tab.component,{tag:\"component\",attrs:{\"resource\":_vm.value}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SortableTable',{attrs:{\"headers\":_vm.headers,\"rows\":_vm.rows,\"key-field\":\"condition\",\"default-sort-by\":\"condition\",\"table-actions\":false,\"row-actions\":false,\"search\":false},scopedSlots:_vm._u([{key:\"cell:condition\",fn:function({row}){return [_c('span',{class:{'text-error': row.error}},[_vm._v(_vm._s(row.condition))])]}},{key:\"cell:status\",fn:function({row}){return [_c('span',{class:{'text-error': row.error}},[_vm._v(_vm._s(row.status))])]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Conditions.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Conditions.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Conditions.vue?vue&type=template&id=14e4eb96&\"\nimport script from \"./Conditions.vue?vue&type=script&lang=js&\"\nexport * from \"./Conditions.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ResourceTable',{attrs:{\"schema\":null,\"rows\":_vm.rows,\"headers\":_vm.headers,\"search\":false,\"table-actions\":false,\"namespaced\":true,\"mangle-action-resources\":_vm.getRealResources,\"paging-label\":\"sortableTable.paging.generic\",\"groupable\":false},scopedSlots:_vm._u([{key:\"cell:state\",fn:function({row}){return [(row.real)?_c('BadgeState',{attrs:{\"value\":row.real}}):_c('BadgeState',{attrs:{\"value\":row}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedResources.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedResources.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RelatedResources.vue?vue&type=template&id=8ef6c89e&\"\nimport script from \"./RelatedResources.vue?vue&type=script&lang=js&\"\nexport * from \"./RelatedResources.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=09ff781a&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--14-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3f826acc&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3f826acc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f826acc\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartReadme.vue?vue&type=style&index=0&id=39794b21&prod&lang=scss&scoped=true&\"","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".cru-resource-yaml-container .resource-yaml .yaml-editor[data-v-5d7d1298]{min-height:100px}.create-resource-container .resource-container[data-v-5d7d1298]{display:flex;flex-direction:column}.create-resource-container .subtype-banner .round-image[data-v-5d7d1298]{background-color:var(--primary)}.title[data-v-5d7d1298]{margin-top:20px}.title.with-description[data-v-5d7d1298]{margin-top:0}.subtype-container[data-v-5d7d1298]{position:relative;display:flex;height:100%}.subtype-body[data-v-5d7d1298]{flex:1;padding:10px}.subtype-logo[data-v-5d7d1298]{align-items:center;display:flex;justify-content:center;min-width:100px;min-height:100px;overflow:hidden;background-color:var(--box-bg)}.subtype-logo img[data-v-5d7d1298]{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;position:relative;top:2px}form.create-resource-container .cru__footer[data-v-5d7d1298]{border-top:var(--header-border-size) solid var(--header-border)}.cru[data-v-5d7d1298],.cru__form[data-v-5d7d1298]{display:flex;flex-direction:column;flex-grow:1}.cru__content[data-v-5d7d1298]{flex-grow:1}.cru__content-wizard[data-v-5d7d1298]{display:flex}.cru__footer[data-v-5d7d1298]{right:0;bottom:0;margin-left:-20px;margin-right:-20px;margin-bottom:-20px;padding:10px 20px}.cru__errors[data-v-5d7d1298],.cru__footer[data-v-5d7d1298]{position:sticky;background-color:var(--header-bg)}.cru__errors[data-v-5d7d1298]{top:0;z-index:1;margin:10px 0}.description[data-v-5d7d1298]{margin-bottom:15px;margin-top:5px}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceCancelModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceCancelModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ResourceCancelModal.vue?vue&type=template&id=0181c352&scoped=true&\"\nimport script from \"./ResourceCancelModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ResourceCancelModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResourceCancelModal.vue?vue&type=style&index=0&id=0181c352&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0181c352\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"wrapper\"},[_c('div',{staticClass:\"chart-readmes\"},[(_vm.appReadme)?_c('Markdown',{staticClass:\"md md-desc mb-20\",on:{\"loaded\":function($event){_vm.appReadmeLoaded = true}},model:{value:(_vm.appReadme),callback:function ($$v) {_vm.appReadme=$$v},expression:\"appReadme\"}}):_vm._e(),(_vm.appReadme && _vm.readme && _vm.appReadmeLoaded && _vm.readmeLoaded)?_c('h1',{staticClass:\"pt-10\"},[_vm._v(\" \"+_vm._s(_vm.t('catalog.install.appReadmeTitle'))+\" \")]):_vm._e(),(_vm.readme)?_c('Markdown',{staticClass:\"md md-desc\",on:{\"loaded\":function($event){_vm.readmeLoaded = true}},model:{value:(_vm.readme),callback:function ($$v) {_vm.readme=$$v},expression:\"readme\"}}):_vm._e()],1),_c('div')])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartReadme.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartReadme.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ChartReadme.vue?vue&type=template&id=39794b21&scoped=true&\"\nimport script from \"./ChartReadme.vue?vue&type=script&lang=js&\"\nexport * from \"./ChartReadme.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ChartReadme.vue?vue&type=style&index=0&id=39794b21&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39794b21\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../../cache-loader/dist/cjs.js??ref--2-0!../../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3f826acc&prod&lang=scss&scoped=true&\"","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResource.vue?vue&type=style&index=0&id=5d7d1298&prod&lang=scss&scoped=true&\"","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Wizard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Wizard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Wizard.vue?vue&type=template&id=5c421562&scoped=true&\"\nimport script from \"./Wizard.vue?vue&type=script&lang=js&\"\nexport * from \"./Wizard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Wizard.vue?vue&type=style&index=0&id=5c421562&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c421562\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ResourceCancelModal.vue?vue&type=style&index=0&id=0181c352&prod&lang=scss&scoped=true&\"","export * from \"-!../../../vue-style-loader/index.js??ref--10-oneOf-1-0!../../../@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../postcss-loader/src/index.js??ref--10-oneOf-1-3!../../../sass-loader/dist/cjs.js??ref--10-oneOf-1-4!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppModal.vue?vue&type=style&index=0&id=2c149d3a&prod&lang=scss&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"cru\"},[_vm._t(\"noticeBanner\"),(_vm.description)?_c('p',{staticClass:\"description\"},[_vm._v(\" \"+_vm._s(_vm.description)+\" \")]):_vm._e(),_c((_vm.isView? 'div' : 'form'),{tag:\"component\",staticClass:\"create-resource-container cru__form\",attrs:{\"data-testid\":\"cru-form\"},on:{\"submit\":function($event){$event.preventDefault();},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onPressEnter($event)}}},[(_vm.hasErrors)?_c('div',{staticClass:\"cru__errors\",attrs:{\"id\":\"cru-errors\"}},_vm._l((_vm.errors),function(err,i){return _c('Banner',{key:i,attrs:{\"color\":\"error\",\"data-testid\":`error-banner${i}`,\"label\":_vm.stringify(_vm.mappedErrors[err].message),\"icon\":_vm.mappedErrors[err].icon,\"closable\":true},on:{\"close\":function($event){return _vm.closeError(i)}}})}),1):_vm._e(),(_vm.showSubtypeSelection)?_c('div',{staticClass:\"subtypes-container cru__content\"},[_vm._t(\"subtypes\",function(){return _vm._l((_vm.subtypes),function(subtype){return _c('div',{key:subtype.id,staticClass:\"subtype-banner\",class:{ selected: subtype.id === _vm._selectedSubtype },attrs:{\"data-testid\":`subtype-banner-item-${subtype.id}`},on:{\"click\":function($event){return _vm.selectType(subtype.id, $event)}}},[_vm._t(\"subtype-content\",function(){return [_c('div',{staticClass:\"subtype-container\"},[_c('div',{staticClass:\"subtype-logo\"},[(subtype.bannerImage)?_c('img',{attrs:{\"src\":subtype.bannerImage,\"alt\":(_vm.resource.type ? _vm.resource.type + ': ' : '') + (subtype.label || '')}}):_c('div',{staticClass:\"round-image\"},[(subtype.bannerAbbrv)?_c('div',{staticClass:\"banner-abbrv\"},[(_vm.$store.getters['i18n/exists'](subtype.bannerAbbrv))?_c('span',[_vm._v(_vm._s(_vm.t(subtype.bannerAbbrv)))]):_c('span',{style:({fontSize: _vm.abbrSizes[subtype.bannerAbbrv.length]})},[_vm._v(_vm._s(subtype.bannerAbbrv))])]):_c('div',[_vm._v(\" \"+_vm._s(subtype.id.slice(0, 1).toUpperCase())+\" \")])])]),_c('div',{staticClass:\"subtype-body\"},[_c('div',{staticClass:\"title\",class:{'with-description': !!subtype.description}},[_c('h5',[(_vm.$store.getters['i18n/exists'](subtype.label))?_c('span',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t(subtype.label)),expression:\"t(subtype.label)\"}]}):_c('span',[_vm._v(_vm._s(subtype.label))])]),(subtype.docLink)?_c('a',{staticClass:\"flex-right\",attrs:{\"href\":subtype.docLink,\"target\":\"_blank\",\"rel\":\"noopener nofollow\"}},[_vm._v(_vm._s(_vm.t('generic.moreInfo'))+\" \"),_c('i',{staticClass:\"icon icon-external-link\"})]):_vm._e()]),(subtype.description)?_c('hr'):_vm._e(),(subtype.description)?_c('div',{staticClass:\"description\"},[(_vm.$store.getters['i18n/exists'](subtype.description))?_c('span',{directives:[{name:\"clean-html\",rawName:\"v-clean-html\",value:(_vm.t(subtype.description, {}, true)),expression:\"t(subtype.description, {}, true)\"}]}):_c('span',[_vm._v(_vm._s(subtype.description))])]):_vm._e()])])]})],2)})},{\"subtypes\":_vm.subtypes})],2):_vm._e(),(_vm.showAsForm && _vm.steps.length)?[(_vm._selectedSubtype || !_vm.subtypes.length)?_c('div',{staticClass:\"resource-container cru__content cru__content-wizard\"},[(_vm.resource)?_c('Wizard',{ref:\"Wizard\",staticClass:\"wizard\",attrs:{\"header-mode\":_vm.mode,\"steps\":_vm.steps,\"errors\":_vm.errors,\"finish-mode\":_vm.finishMode},on:{\"error\":e=>_vm.errors = e},scopedSlots:_vm._u([{key:\"stepContainer\",fn:function({activeStep}){return [_vm._l((_vm.steps),function(step){return [(step.name === activeStep.name || step.hidden)?_c('div',{key:step.name,staticClass:\"step-container__step\",class:{'hide': step.name !== activeStep.name && step.hidden}},[_vm._t(step.name,null,{\"step\":step})],2):_vm._e()]})]}},{key:\"controlsContainer\",fn:function({showPrevious, next, back, activeStep, canNext, activeStepIndex, visibleSteps}){return [[_c('CruResourceFooter',{staticClass:\"cru__footer\",attrs:{\"mode\":_vm.mode,\"is-form\":_vm.showAsForm,\"show-cancel\":_vm.showCancel},on:{\"cancel-confirmed\":_vm.confirmCancel},scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},[_c('div',{staticClass:\"controls-steps\"},[(_vm.showYaml)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.showPreviewYaml}},[_c('t',{attrs:{\"k\":\"cruResource.previewYaml\"}})],1):_vm._e(),(showPrevious)?[_c('button',{staticClass:\"btn role-secondary\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return back()}}},[_c('t',{attrs:{\"k\":\"wizard.previous\"}})],1)]:_vm._e(),(activeStepIndex === visibleSteps.length-1)?[(!_vm.showSubtypeSelection && !_vm.isView)?_c('AsyncButton',{ref:\"save\",attrs:{\"disabled\":!activeStep.ready,\"mode\":_vm.finishButtonMode || _vm.mode},on:{\"click\":function($event){return _vm.$emit('finish', $event)}}}):_vm._e()]:[_c('button',{staticClass:\"btn role-primary\",attrs:{\"disabled\":!canNext,\"type\":\"button\"},on:{\"click\":function($event){return next()}}},[_c('t',{attrs:{\"k\":\"wizard.next\"}})],1)]],2)])]]}}],null,true)}):_vm._e()],1):_vm._e()]:(_vm.showAsForm)?[(_vm._selectedSubtype || !_vm.subtypes.length)?_c('div',{staticClass:\"resource-container cru__content\",style:([_vm.minHeight ? { 'min-height': _vm.minHeight } : {}])},[_vm._t(\"default\")],2):_vm._e(),_vm._t(\"form-footer\",function(){return [_c('CruResourceFooter',{staticClass:\"cru__footer\",attrs:{\"mode\":_vm.mode,\"is-form\":_vm.showAsForm,\"show-cancel\":_vm.showCancel,\"component-testid\":_vm.componentTestid},on:{\"cancel-confirmed\":_vm.confirmCancel},scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}}),{key:\"default\",fn:function(){return [(!_vm.isView)?_c('div',[(_vm.showYaml)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml',\"type\":\"button\"},on:{\"click\":_vm.showPreviewYaml}},[_c('t',{attrs:{\"k\":\"cruResource.previewYaml\"}})],1):_vm._e(),(!_vm.showSubtypeSelection)?_c('AsyncButton',{ref:\"save\",attrs:{\"disabled\":!_vm.canSave,\"mode\":_vm.finishButtonMode || _vm.mode,\"data-testid\":_vm.componentTestid + '-save'},on:{\"click\":function($event){return _vm.clickSave($event)}}}):_vm._e()],1):_vm._e()]},proxy:true}],null,true)})]})]:(_vm.showYaml && !_vm.showAsForm)?_c('section',{staticClass:\"cru-resource-yaml-container resource-container cru__content\"},[_c('ResourceYaml',{ref:\"resourceyaml\",staticClass:\"resource-container cru__content\",attrs:{\"value\":_vm.resource,\"mode\":_vm.mode,\"initial-yaml-for-diff\":_vm.initialYaml,\"yaml\":_vm.resourceYaml,\"offer-preview\":_vm.isEdit,\"done-route\":_vm.doneRoute,\"done-override\":_vm.resource.doneOverride,\"errors\":_vm.errors,\"apply-hooks\":_vm.applyHooks},on:{\"error\":e=>_vm.$emit('error', e)},scopedSlots:_vm._u([{key:\"yamlFooter\",fn:function({yamlSave, showPreview, yamlPreview, yamlUnpreview, canDiff}){return [_vm._t(\"cru-yaml-footer\",function(){return [_c('CruResourceFooter',{staticClass:\"cru__footer\",attrs:{\"done-route\":_vm.doneRoute,\"mode\":_vm.mode,\"is-form\":_vm.showAsForm},on:{\"cancel-confirmed\":_vm.confirmCancel},scopedSlots:_vm._u([{key:\"default\",fn:function({checkCancel}){return [_c('div',{staticClass:\"controls-middle\"},[(showPreview)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"type\":\"button\",\"data-testid\":_vm.componentTestid + '-yaml-yaml'},on:{\"click\":yamlUnpreview}},[_c('t',{attrs:{\"k\":\"resourceYaml.buttons.continue\"}})],1):_vm._e(),(!showPreview && _vm.isEdit)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml-yaml-preview',\"disabled\":!canDiff,\"type\":\"button\"},on:{\"click\":yamlPreview}},[_c('t',{attrs:{\"k\":\"resourceYaml.buttons.diff\"}})],1):_vm._e()]),(_vm._selectedSubtype || !_vm.subtypes.length)?_c('div',{staticClass:\"controls-right\"},[_c('button',{staticClass:\"btn role-secondary\",attrs:{\"data-testid\":_vm.componentTestid + '-yaml-cancel',\"type\":\"button\"},on:{\"click\":function($event){return checkCancel(false)}}},[_c('t',{attrs:{\"k\":\"cruResource.backToForm\"}})],1),(!_vm.showSubtypeSelection)?_c('AsyncButton',{attrs:{\"data-testid\":_vm.componentTestid + '-yaml-save',\"disabled\":!_vm.canSave,\"action-label\":_vm.isEdit ? _vm.t('generic.save') : _vm.t('generic.create')},on:{\"click\":cb=>yamlSave(cb)}}):_vm._e()],1):_vm._e()]}}],null,true)})]})]}}],null,true)})],1):_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"cru-resource-footer\"},[_vm._t(\"footer-prefix\"),_vm._t(\"cancel\",function(){return [(!_vm.isView && _vm.showCancel)?_c('button',{staticClass:\"btn role-secondary\",attrs:{\"id\":\"cru-cancel\",\"data-testid\":_vm.componentTestid + '-cancel',\"type\":\"button\"},on:{\"click\":function($event){_vm.confirmCancelRequired ? _vm.checkCancel(true) : _vm.$emit('cancel-confirmed', true)}}},[_c('t',{attrs:{\"k\":\"generic.cancel\"}})],1):_vm._e()]}),_vm._t(\"default\",function(){return [(!_vm.isView)?_c('AsyncButton',{attrs:{\"data-testid\":_vm.componentTestid + '-create',\"mode\":_vm.finishButtonMode || _vm.mode},on:{\"click\":function($event){return _vm.$emit('finish', $event)}}}):_vm._e()]},{\"checkCancel\":_vm.checkCancel}),_c('ResourceCancelModal',{ref:\"cancelModal\",attrs:{\"is-cancel-modal\":_vm.isCancelModal,\"is-form\":_vm.isForm},on:{\"confirm-cancel\":function($event){return _vm.confirmCancel($event)}}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResourceFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResourceFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CruResourceFooter.vue?vue&type=template&id=3e3d0b47&\"\nimport script from \"./CruResourceFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./CruResourceFooter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CruResourceFooter.vue?vue&type=style&index=0&id=3e3d0b47&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n $emit('error', e)\"\n >\n \n \n \n \n \n\n\n\n","import mod from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResource.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../cache-loader/dist/cjs.js??ref--14-0!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js!../../../cache-loader/dist/cjs.js??ref--2-0!../../../@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./CruResource.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CruResource.vue?vue&type=template&id=5d7d1298&scoped=true&\"\nimport script from \"./CruResource.vue?vue&type=script&lang=js&\"\nexport * from \"./CruResource.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CruResource.vue?vue&type=style&index=0&id=5d7d1298&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5d7d1298\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~markdown.js b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~markdown.js new file mode 100644 index 0000000..f685def --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~markdown.js @@ -0,0 +1,2 @@ +(("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]=("undefined"!==typeof self?self:this)["webpackJsonpkubewarden_2_0_0"]||[]).push([[12],{3104:function(e,t,u){(function(e,u){u(t)})(0,(function(e){"use strict";function t(e,t){for(var u=0;ue.length)&&(t=e.length);for(var u=0,n=new Array(t);u=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(){return{baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}function l(t){e.defaults=t}e.defaults=s();var a=/[&<>"']/,D=/[&<>"']/g,o=/[<>"']|&(?!#?\w+;)/,c=/[<>"']|&(?!#?\w+;)/g,h={"&":"&","<":"<",">":">",'"':""","'":"'"},p=function(e){return h[e]};function f(e,t){if(t){if(a.test(e))return e.replace(D,p)}else if(o.test(e))return e.replace(c,p);return e}var g=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function F(e){return e.replace(g,(function(e,t){return t=t.toLowerCase(),"colon"===t?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var A=/(^|[^\[])\^/g;function d(e,t){e="string"===typeof e?e:e.source,t=t||"";var u={replace:function(t,n){return n=n.source||n,n=n.replace(A,"$1"),e=e.replace(t,n),u},getRegex:function(){return new RegExp(e,t)}};return u}var k=/[^\w:]/g,C=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function E(e,t,u){if(e){var n;try{n=decodeURIComponent(F(u)).replace(k,"").toLowerCase()}catch(r){return null}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return null}t&&!C.test(u)&&(u=w(t,u));try{u=encodeURI(u).replace(/%25/g,"%")}catch(r){return null}return u}var x={},m=/^[^:]+:\/*[^/]*$/,b=/^([^:]+:)[\s\S]*$/,B=/^([^:]+:\/*[^/]*)[\s\S]*$/;function w(e,t){x[" "+e]||(m.test(e)?x[" "+e]=e+"/":x[" "+e]=z(e,"/",!0)),e=x[" "+e];var u=-1===e.indexOf(":");return"//"===t.substring(0,2)?u?t:e.replace(b,"$1")+t:"/"===t.charAt(0)?u?t:e.replace(B,"$1")+t:e+t}var v={exec:function(){}};function y(e){for(var t,u,n=1;n=0&&"\\"===u[r])n=!n;return n?"|":" |"})),n=u.split(/ \|/),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),n.length>t)n.splice(t);else while(n.length1)1&t&&(u+=e),t>>=1,e+=e;return u+e}function T(e,t,u,n){var r=t.href,i=t.title?f(t.title):null,s=e[1].replace(/\\([\[\]])/g,"$1");if("!"!==e[0].charAt(0)){n.state.inLink=!0;var l={type:"link",raw:u,href:r,title:i,text:s,tokens:n.inlineTokens(s,[])};return n.state.inLink=!1,l}return{type:"image",raw:u,href:r,title:i,text:f(s)}}function I(e,t){var u=e.match(/^(\s+)(?:```)/);if(null===u)return t;var n=u[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);if(null===t)return e;var u=t[0];return u.length>=n.length?e.slice(n.length):e})).join("\n")}var Z=function(){function t(t){this.options=t||e.defaults}var u=t.prototype;return u.space=function(e){var t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}},u.code=function(e){var t=this.rules.block.code.exec(e);if(t){var u=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?u:z(u,"\n")}}},u.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var u=t[0],n=I(u,t[3]||"");return{type:"code",raw:u,lang:t[2]?t[2].trim():t[2],text:n}}},u.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var u=t[2].trim();if(/#$/.test(u)){var n=z(u,"#");this.options.pedantic?u=n.trim():n&&!/ $/.test(n)||(u=n.trim())}var r={type:"heading",raw:t[0],depth:t[1].length,text:u,tokens:[]};return this.lexer.inline(r.text,r.tokens),r}},u.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},u.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var u=t[0].replace(/^ *>[ \t]?/gm,"");return{type:"blockquote",raw:t[0],tokens:this.lexer.blockTokens(u,[]),text:u}}},u.list=function(e){var t=this.rules.block.list.exec(e);if(t){var u,n,r,s,l,a,D,o,c,h,p,f,g=t[1].trim(),F=g.length>1,A={type:"list",raw:"",ordered:F,start:F?+g.slice(0,-1):"",loose:!1,items:[]};g=F?"\\d{1,9}\\"+g.slice(-1):"\\"+g,this.options.pedantic&&(g=F?g:"[*+-]");var d=new RegExp("^( {0,3}"+g+")((?:[\t ][^\\n]*)?(?:\\n|$))");while(e){if(f=!1,!(t=d.exec(e)))break;if(this.rules.block.hr.test(e))break;if(u=t[0],e=e.substring(u.length),o=t[2].split("\n",1)[0],c=e.split("\n",1)[0],this.options.pedantic?(s=2,p=o.trimLeft()):(s=t[2].search(/[^ ]/),s=s>4?1:s,p=o.slice(s),s+=t[1].length),a=!1,!o&&/^ *$/.test(c)&&(u+=c+"\n",e=e.substring(c.length+1),f=!0),!f){var k=new RegExp("^ {0,"+Math.min(3,s-1)+"}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))"),C=new RegExp("^ {0,"+Math.min(3,s-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),E=new RegExp("^( {0,"+Math.min(3,s-1)+"})(```|~~~)");while(e){if(h=e.split("\n",1)[0],o=h,this.options.pedantic&&(o=o.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),E.test(o))break;if(this.rules.block.heading.test(o))break;if(k.test(o))break;if(C.test(e))break;if(o.search(/[^ ]/)>=s||!o.trim())p+="\n"+o.slice(s);else{if(a)break;p+="\n"+o}a||o.trim()||(a=!0),u+=h+"\n",e=e.substring(h.length+1)}}A.loose||(D?A.loose=!0:/\n *\n *$/.test(u)&&(D=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(p),n&&(r="[ ] "!==n[0],p=p.replace(/^\[[ xX]\] +/,""))),A.items.push({type:"list_item",raw:u,task:!!n,checked:r,loose:!1,text:p}),A.raw+=u}A.items[A.items.length-1].raw=u.trimRight(),A.items[A.items.length-1].text=p.trimRight(),A.raw=A.raw.trimRight();var x=A.items.length;for(l=0;l1)return!0}return!1}));!A.loose&&m.length&&b&&(A.loose=!0,A.items[l].loose=!0)}return A}},u.html=function(e){var t=this.rules.block.html.exec(e);if(t){var u={type:"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:t[0]};return this.options.sanitize&&(u.type="paragraph",u.text=this.options.sanitizer?this.options.sanitizer(t[0]):f(t[0]),u.tokens=[],this.lexer.inline(u.text,u.tokens)),u}},u.def=function(e){var t=this.rules.block.def.exec(e);if(t){t[3]&&(t[3]=t[3].substring(1,t[3].length-1));var u=t[1].toLowerCase().replace(/\s+/g," ");return{type:"def",tag:u,raw:t[0],href:t[2],title:t[3]}}},u.table=function(e){var t=this.rules.block.table.exec(e);if(t){var u={type:"table",header:_(t[1]).map((function(e){return{text:e}})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(u.header.length===u.align.length){u.raw=t[0];var n,r,i,s,l=u.align.length;for(n=0;n/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):f(t[0]):t[0]}},u.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var u=t[2].trim();if(!this.options.pedantic&&/^$/.test(u))return;var n=z(u.slice(0,-1),"\\");if((u.length-n.length)%2===0)return}else{var r=$(t[2],"()");if(r>-1){var i=0===t[0].indexOf("!")?5:4,s=i+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,s).trim(),t[3]=""}}var l=t[2],a="";if(this.options.pedantic){var D=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(l);D&&(l=D[1],a=D[3])}else a=t[3]?t[3].slice(1,-1):"";return l=l.trim(),/^$/.test(u)?l.slice(1):l.slice(1,-1)),T(t,{href:l?l.replace(this.rules.inline._escapes,"$1"):l,title:a?a.replace(this.rules.inline._escapes,"$1"):a},t[0],this.lexer)}},u.reflink=function(e,t){var u;if((u=this.rules.inline.reflink.exec(e))||(u=this.rules.inline.nolink.exec(e))){var n=(u[2]||u[1]).replace(/\s+/g," ");if(n=t[n.toLowerCase()],!n||!n.href){var r=u[0].charAt(0);return{type:"text",raw:r,text:r}}return T(u,n,u[0],this.lexer)}},u.emStrong=function(e,t,u){void 0===u&&(u="");var n=this.rules.inline.emStrong.lDelim.exec(e);if(n&&(!n[3]||!u.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||r&&(""===u||this.rules.inline.punctuation.exec(u))){var i,s,l=n[0].length-1,a=l,D=0,o="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;o.lastIndex=0,t=t.slice(-1*e.length+l);while(null!=(n=o.exec(t)))if(i=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],i)if(s=i.length,n[3]||n[4])a+=s;else if(!((n[5]||n[6])&&l%3)||(l+s)%3){if(a-=s,!(a>0)){if(s=Math.min(s,s+a+D),Math.min(l,s)%2){var c=e.slice(1,l+n.index+s);return{type:"em",raw:e.slice(0,l+n.index+s+1),text:c,tokens:this.lexer.inlineTokens(c,[])}}var h=e.slice(2,l+n.index+s-1);return{type:"strong",raw:e.slice(0,l+n.index+s+1),text:h,tokens:this.lexer.inlineTokens(h,[])}}}else D+=s}}},u.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var u=t[2].replace(/\n/g," "),n=/[^ ]/.test(u),r=/^ /.test(u)&&/ $/.test(u);return n&&r&&(u=u.substring(1,u.length-1)),u=f(u,!0),{type:"codespan",raw:t[0],text:u}}},u.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},u.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2],[])}},u.autolink=function(e,t){var u,n,r=this.rules.inline.autolink.exec(e);if(r)return"@"===r[2]?(u=f(this.options.mangle?t(r[1]):r[1]),n="mailto:"+u):(u=f(r[1]),n=u),{type:"link",raw:r[0],text:u,href:n,tokens:[{type:"text",raw:u,text:u}]}},u.url=function(e,t){var u;if(u=this.rules.inline.url.exec(e)){var n,r;if("@"===u[2])n=f(this.options.mangle?t(u[0]):u[0]),r="mailto:"+n;else{var i;do{i=u[0],u[0]=this.rules.inline._backpedal.exec(u[0])[0]}while(i!==u[0]);n=f(u[0]),r="www."===u[1]?"http://"+n:n}return{type:"link",raw:u[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},u.inlineText=function(e,t){var u,n=this.rules.inline.text.exec(e);if(n)return u=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):f(n[0]):n[0]:f(this.options.smartypants?t(n[0]):n[0]),{type:"text",raw:n[0],text:u}},t}(),O={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?]+)>?(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:v,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};O.def=d(O.def).replace("label",O._label).replace("title",O._title).getRegex(),O.bullet=/(?:[*+-]|\d{1,9}[.)])/,O.listItemStart=d(/^( *)(bull) */).replace("bull",O.bullet).getRegex(),O.list=d(O.list).replace(/bull/g,O.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+O.def.source+")").getRegex(),O._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",O._comment=/|$)/,O.html=d(O.html,"i").replace("comment",O._comment).replace("tag",O._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),O.paragraph=d(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.blockquote=d(O.blockquote).replace("paragraph",O.paragraph).getRegex(),O.normal=y({},O),O.gfm=y({},O.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),O.gfm.table=d(O.gfm.table).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.gfm.paragraph=d(O._paragraph).replace("hr",O.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",O.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O._tag).getRegex(),O.pedantic=y({},O.normal,{html:d("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",O._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:v,paragraph:d(O.normal._paragraph).replace("hr",O.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",O.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var q={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:v,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:v,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\.5&&(u="x"+u.toString(16)),n+="&#"+u+";";return n}q._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",q.punctuation=d(q.punctuation).replace(/punctuation/g,q._punctuation).getRegex(),q.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,q.escapedEmSt=/\\\*|\\_/g,q._comment=d(O._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),q.emStrong.lDelim=d(q.emStrong.lDelim).replace(/punct/g,q._punctuation).getRegex(),q.emStrong.rDelimAst=d(q.emStrong.rDelimAst,"g").replace(/punct/g,q._punctuation).getRegex(),q.emStrong.rDelimUnd=d(q.emStrong.rDelimUnd,"g").replace(/punct/g,q._punctuation).getRegex(),q._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,q._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,q._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,q.autolink=d(q.autolink).replace("scheme",q._scheme).replace("email",q._email).getRegex(),q._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,q.tag=d(q.tag).replace("comment",q._comment).replace("attribute",q._attribute).getRegex(),q._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,q._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,q._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,q.link=d(q.link).replace("label",q._label).replace("href",q._href).replace("title",q._title).getRegex(),q.reflink=d(q.reflink).replace("label",q._label).replace("ref",O._label).getRegex(),q.nolink=d(q.nolink).replace("ref",O._label).getRegex(),q.reflinkSearch=d(q.reflinkSearch,"g").replace("reflink",q.reflink).replace("nolink",q.nolink).getRegex(),q.normal=y({},q),q.pedantic=y({},q.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:d(/^!?\[(label)\]\((.*?)\)/).replace("label",q._label).getRegex(),reflink:d(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",q._label).getRegex()}),q.gfm=y({},q.normal,{escape:d(q.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\0?t[t.length-1].raw+="\n":t.push(u);else if(u=this.tokenizer.code(e))e=e.substring(u.raw.length),n=t[t.length-1],!n||"paragraph"!==n.type&&"text"!==n.type?t.push(u):(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(u=this.tokenizer.fences(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.heading(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.hr(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.blockquote(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.list(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.html(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.def(e))e=e.substring(u.raw.length),n=t[t.length-1],!n||"paragraph"!==n.type&&"text"!==n.type?this.tokens.links[u.tag]||(this.tokens.links[u.tag]={href:u.href,title:u.title}):(n.raw+="\n"+u.raw,n.text+="\n"+u.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text);else if(u=this.tokenizer.table(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.lheading(e))e=e.substring(u.raw.length),t.push(u);else if(r=e,this.options.extensions&&this.options.extensions.startBlock&&function(){var t=1/0,u=e.slice(1),n=void 0;s.options.extensions.startBlock.forEach((function(e){n=e.call({lexer:this},u),"number"===typeof n&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}(),this.state.top&&(u=this.tokenizer.paragraph(r)))n=t[t.length-1],i&&"paragraph"===n.type?(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(u),i=r.length!==e.length,e=e.substring(u.raw.length);else if(u=this.tokenizer.text(e))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===n.type?(n.raw+="\n"+u.raw,n.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(u);else if(e){var l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}return this.state.top=!0,t},n.inline=function(e,t){this.inlineQueue.push({src:e,tokens:t})},n.inlineTokens=function(e,t){var u,n,r,i=this;void 0===t&&(t=[]);var s,l,a,D=e;if(this.tokens.links){var o=Object.keys(this.tokens.links);if(o.length>0)while(null!=(s=this.tokenizer.rules.inline.reflinkSearch.exec(D)))o.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(D=D.slice(0,s.index)+"["+R("a",s[0].length-2)+"]"+D.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}while(null!=(s=this.tokenizer.rules.inline.blockSkip.exec(D)))D=D.slice(0,s.index)+"["+R("a",s[0].length-2)+"]"+D.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);while(null!=(s=this.tokenizer.rules.inline.escapedEmSt.exec(D)))D=D.slice(0,s.index)+"++"+D.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);while(e)if(l||(a=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some((function(n){return!!(u=n.call({lexer:i},e,t))&&(e=e.substring(u.raw.length),t.push(u),!0)}))))if(u=this.tokenizer.escape(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.tag(e))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===u.type&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(u=this.tokenizer.link(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(u.raw.length),n=t[t.length-1],n&&"text"===u.type&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(u=this.tokenizer.emStrong(e,D,a))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.codespan(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.br(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.del(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.autolink(e,j))e=e.substring(u.raw.length),t.push(u);else if(this.state.inLink||!(u=this.tokenizer.url(e,j))){if(r=e,this.options.extensions&&this.options.extensions.startInline&&function(){var t=1/0,u=e.slice(1),n=void 0;i.options.extensions.startInline.forEach((function(e){n=e.call({lexer:this},u),"number"===typeof n&&n>=0&&(t=Math.min(t,n))})),t<1/0&&t>=0&&(r=e.substring(0,t+1))}(),u=this.tokenizer.inlineText(r,L))e=e.substring(u.raw.length),"_"!==u.raw.slice(-1)&&(a=u.raw.slice(-1)),l=!0,n=t[t.length-1],n&&"text"===n.type?(n.raw+=u.raw,n.text+=u.text):t.push(u);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}else e=e.substring(u.raw.length),t.push(u);return t},u(t,null,[{key:"rules",get:function(){return{block:O,inline:q}}}]),t}(),Q=function(){function t(t){this.options=t||e.defaults}var u=t.prototype;return u.code=function(e,t,u){var n=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,n);null!=r&&r!==e&&(u=!0,e=r)}return e=e.replace(/\n$/,"")+"\n",n?'
'+(u?e:f(e,!0))+"
\n":"
"+(u?e:f(e,!0))+"
\n"},u.blockquote=function(e){return"
\n"+e+"
\n"},u.html=function(e){return e},u.heading=function(e,t,u,n){if(this.options.headerIds){var r=this.options.headerPrefix+n.slug(u);return"'+e+"\n"}return""+e+"\n"},u.hr=function(){return this.options.xhtml?"
\n":"
\n"},u.list=function(e,t,u){var n=t?"ol":"ul",r=t&&1!==u?' start="'+u+'"':"";return"<"+n+r+">\n"+e+"\n"},u.listitem=function(e){return"
  • "+e+"
  • \n"},u.checkbox=function(e){return" "},u.paragraph=function(e){return"

    "+e+"

    \n"},u.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},u.tablerow=function(e){return"\n"+e+"\n"},u.tablecell=function(e,t){var u=t.header?"th":"td",n=t.align?"<"+u+' align="'+t.align+'">':"<"+u+">";return n+e+"\n"},u.strong=function(e){return""+e+""},u.em=function(e){return""+e+""},u.codespan=function(e){return""+e+""},u.br=function(){return this.options.xhtml?"
    ":"
    "},u.del=function(e){return""+e+""},u.link=function(e,t,u){if(e=E(this.options.sanitize,this.options.baseUrl,e),null===e)return u;var n='",n},u.image=function(e,t,u){if(e=E(this.options.sanitize,this.options.baseUrl,e),null===e)return u;var n=''+u+'":">",n},u.text=function(e){return e},t}(),U=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,u){return""+u},t.image=function(e,t,u){return""+u},t.br=function(){return""},e}(),M=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var u=e,n=0;if(this.seen.hasOwnProperty(u)){n=this.seen[e];do{n++,u=e+"-"+n}while(this.seen.hasOwnProperty(u))}return t||(this.seen[e]=n,this.seen[u]=0),u},t.slug=function(e,t){void 0===t&&(t={});var u=this.serialize(e);return this.getNextSafeSlug(u,t.dryrun)},e}(),N=function(){function t(t){this.options=t||e.defaults,this.options.renderer=this.options.renderer||new Q,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new U,this.slugger=new M}t.parse=function(e,u){var n=new t(u);return n.parse(e)},t.parseInline=function(e,u){var n=new t(u);return n.parseInline(e)};var u=t.prototype;return u.parse=function(e,t){void 0===t&&(t=!0);var u,n,r,i,s,l,a,D,o,c,h,p,f,g,A,d,k,C,E,x="",m=e.length;for(u=0;u0&&"paragraph"===A.tokens[0].type?(A.tokens[0].text=C+" "+A.tokens[0].text,A.tokens[0].tokens&&A.tokens[0].tokens.length>0&&"text"===A.tokens[0].tokens[0].type&&(A.tokens[0].tokens[0].text=C+" "+A.tokens[0].tokens[0].text)):A.tokens.unshift({type:"text",text:C}):g+=C),g+=this.parse(A.tokens,f),o+=this.renderer.listitem(g,k,d);x+=this.renderer.list(o,h,p);continue;case"html":x+=this.renderer.html(c.text);continue;case"paragraph":x+=this.renderer.paragraph(this.parseInline(c.tokens));continue;case"text":o=c.tokens?this.parseInline(c.tokens):c.text;while(u+1An error occurred:

    "+f(a.message+"",!0)+"
    ";throw a}}J.options=J.setOptions=function(e){return y(J.defaults,e),l(J.defaults),J},J.getDefaults=s,J.defaults=e.defaults,J.use=function(){for(var e=arguments.length,t=new Array(e),u=0;uAn error occurred:

    "+f(n.message+"",!0)+"
    ";throw n}},J.Parser=N,J.parser=N.parse,J.Renderer=Q,J.TextRenderer=U,J.Lexer=P,J.lexer=P.lex,J.Tokenizer=Z,J.Slugger=M,J.parse=J;var X=J.options,G=J.setOptions,V=J.use,H=J.walkTokens,K=J.parseInline,W=J,Y=N.parse,ee=P.lex;e.Lexer=P,e.Parser=N,e.Renderer=Q,e.Slugger=M,e.TextRenderer=U,e.Tokenizer=Z,e.getDefaults=s,e.lexer=ee,e.marked=J,e.options=X,e.parse=W,e.parseInline=K,e.parser=Y,e.setOptions=G,e.use=V,e.walkTokens=H,Object.defineProperty(e,"__esModule",{value:!0})}))}}]); +//# sourceMappingURL=kubewarden-2.0.0.umd.min.vendors~markdown.js.map \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~markdown.js.map b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~markdown.js.map new file mode 100644 index 0000000..855aacb --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/kubewarden-2.0.0.umd.min.vendors~markdown.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://kubewarden-2.0.0//home/runner/work/kubewarden-ui/kubewarden-ui/node_modules/marked/lib/marked.umd.js"],"names":["global","factory","exports","this","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_unsupportedIterableToArray","o","minLen","_arrayLikeToArray","n","toString","call","slice","constructor","name","Array","from","test","arr","len","arr2","_createForOfIteratorHelperLoose","allowArrayLike","it","Symbol","iterator","next","bind","isArray","done","value","TypeError","getDefaults","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","changeDefaults","newDefaults","defaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","replace","unescapeTest","unescape","_","toLowerCase","charAt","String","fromCharCode","parseInt","substring","caret","edit","regex","opt","source","obj","val","getRegex","RegExp","nonWordAndColonTest","originIndependentUrl","cleanUrl","base","href","prot","decodeURIComponent","e","indexOf","resolveUrl","encodeURI","baseUrls","justDomain","protocol","domain","rtrim","relativeBase","noopTest","exec","merge","arguments","hasOwnProperty","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","split","trim","shift","pop","splice","push","c","invert","l","suffLen","currChar","findClosingBracket","b","level","checkSanitizeDeprecation","console","warn","repeatString","pattern","result","outputLink","cap","link","raw","lexer","title","text","state","inLink","token","type","tokens","inlineTokens","indentCodeCompensation","matchIndentToCode","indentToCode","map","node","matchIndentInNode","indentInNode","join","Tokenizer","options","_proto","space","src","rules","block","newline","code","codeBlockStyle","fences","lang","heading","trimmed","depth","inline","hr","blockquote","blockTokens","list","istask","ischecked","indent","blankLine","endsWithBlankLine","line","nextLine","rawLine","itemContents","endEarly","bull","isordered","ordered","start","loose","items","itemRegex","trimLeft","search","nextBulletRegex","Math","min","hrRegex","fencesBeginRegex","task","checked","trimRight","top","spacers","filter","t","hasMultipleLineBreaks","every","_step","chars","lineBreaks","_iterator","_char","pre","def","tag","table","item","header","align","rows","j","k","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","_escapes","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","_text","index","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","_paragraph","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","out","charCodeAt","random","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","create","inlineQueue","lex","lexInline","lastToken","cutSrc","lastParagraphClipped","_this","leading","tabs","repeat","some","extTokenizer","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","error","Error","_this2","keepPrevChar","keys","includes","lastIndexOf","startInline","get","Renderer","_code","infostring","quote","_html","slugger","id","slug","body","startatt","listitem","checkbox","tablerow","content","tablecell","flags","image","TextRenderer","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Parser","textRenderer","parse","parser","parseInline","l2","l3","cell","itemBody","ret","renderers","unshift","marked","callback","err","pending","setTimeout","_tokens","message","setOptions","use","_len","args","_key","hasExtensions","opts","apply","concat","childTokens","pack","ext","prevRenderer","_len2","_key2","_loop","prop","_len3","_key3","_loop2","prevTokenizer","_len4","_key4","_walkTokens","_loop3","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell"],"mappings":"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","file":"kubewarden-2.0.0.umd.min.vendors~markdown.js","sourcesContent":["/**\n * marked - a markdown parser\n * Copyright (c) 2011-2022, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n exports.defaults = getDefaults();\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n /**\n * @param {string} html\n */\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n var caret = /(^|[^\\[])\\^/g;\n /**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\n\n function edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n /**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n /**\n * @param {string} base\n * @param {string} href\n */\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n var noopTest = {\n exec: function noopTest() {}\n };\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n if (!cells[0].trim()) {\n cells.shift();\n }\n\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n }\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n }\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n /**\n * @param {string} pattern\n * @param {number} count\n */\n\n function repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n }\n\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n } // Get next list item\n\n\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\"); // Check if current bullet point can start a new List Item\n\n while (src) {\n endEarly = false;\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0];\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\");\n var fencesBeginRegex = new RegExp(\"^( {0,\" + Math.min(3, indent - 1) + \"})(```|~~~)\"); // Check if following lines should be included in List Item\n\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine; // Re-align to follow commonmark nesting rules\n\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n } // End list item if found code fences\n\n\n if (fencesBeginRegex.test(line)) {\n break;\n } // End list item if found start of new heading\n\n\n if (this.rules.block.heading.test(line)) {\n break;\n } // End list item if found start of new bullet\n\n\n if (nextBulletRegex.test(line)) {\n break;\n } // Horizontal rule found\n\n\n if (hrRegex.test(src)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) {\n // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else {\n // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.every(function (t) {\n var chars = t.raw.split('');\n var lineBreaks = 0;\n\n for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {\n var _char = _step.value;\n\n if (_char === '\\n') {\n lineBreaks += 1;\n }\n\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n\n return token;\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n } // parse child tokens inside headers and cells\n // header child tokens\n\n\n l = item.header.length;\n\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inline(item.header[j].text, item.header[j].tokens);\n } // cell child tokens\n\n\n l = item.rows.length;\n\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inline(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n var token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n var token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n var _text = src.slice(1, lLength + match.index + rLength);\n\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: _text,\n tokens: this.lexer.inlineTokens(_text, [])\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n var text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n /**\n * Block-Level Grammar\n */\n\n var block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /|$)/;\n block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = merge({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n var next;\n\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n var token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n };\n\n _proto.inline = function inline(src, tokens) {\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n /**\n * Renderer\n */\n\n var Renderer = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    ' + (escaped ? _code : escape(_code, true)) + '
    \\n';\n }\n\n return '
    ' + (escaped ? _code : escape(_code, true)) + '
    \\n';\n }\n /**\n * @param {string} quote\n */\n ;\n\n _proto.blockquote = function blockquote(quote) {\n return \"
    \\n\" + quote + \"
    \\n\";\n };\n\n _proto.html = function html(_html) {\n return _html;\n }\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n ;\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"\" + text + \"\\n\";\n } // ignore IDs\n\n\n return \"\" + text + \"\\n\";\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.listitem = function listitem(text) {\n return \"
  • \" + text + \"
  • \\n\";\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.paragraph = function paragraph(text) {\n return \"

    \" + text + \"

    \\n\";\n }\n /**\n * @param {string} header\n * @param {string} body\n */\n ;\n\n _proto.table = function table(header, body) {\n if (body) body = \"\" + body + \"\";\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n /**\n * @param {string} content\n */\n ;\n\n _proto.tablerow = function tablerow(content) {\n return \"\\n\" + content + \"\\n\";\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n return tag + content + (\"\\n\");\n }\n /**\n * span level renderer\n * @param {string} text\n */\n ;\n\n _proto.strong = function strong(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.em = function em(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.codespan = function codespan(text) {\n return \"\" + text + \"\";\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.del = function del(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = \"\\\"\"' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n /**\n * @param {string} value\n */\n\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n /**\n * Parsing & Compiling\n */\n\n var Parser = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = exports.defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = merge.apply(void 0, [{}].concat(args));\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n var hasExtensions;\n args.forEach(function (pack) {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n pack.walkTokens.call(this, token);\n\n if (_walkTokens) {\n _walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var _loop3 = function _loop3() {\n var token = _step.value;\n callback.call(marked, token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell.tokens, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell.tokens, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop3();\n }\n };\n /**\n * Parse Inline\n * @param {string} src\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var options = marked.options;\n var setOptions = marked.setOptions;\n var use = marked.use;\n var walkTokens = marked.walkTokens;\n var parseInline = marked.parseInline;\n var parse = marked;\n var parser = Parser.parse;\n var lexer = Lexer.lex;\n\n exports.Lexer = Lexer;\n exports.Parser = Parser;\n exports.Renderer = Renderer;\n exports.Slugger = Slugger;\n exports.TextRenderer = TextRenderer;\n exports.Tokenizer = Tokenizer;\n exports.getDefaults = getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n"],"sourceRoot":""} \ No newline at end of file diff --git a/extensions/kubewarden/2.0.0/plugin/package.json b/extensions/kubewarden/2.0.0/plugin/package.json new file mode 100644 index 0000000..de37b30 --- /dev/null +++ b/extensions/kubewarden/2.0.0/plugin/package.json @@ -0,0 +1,20 @@ +{ + "name": "kubewarden", + "description": "Kubewarden extension for Rancher Manager", + "icon": "https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/2.0.0-icon-kubewarden.svg", + "version": "2.0.0", + "private": false, + "rancher": true, + "engines": { + "node": ">=16" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "5.0.8", + "@vue/cli-service": "5.0.8", + "@vue/cli-plugin-typescript": "5.0.8" + }, + "files": [ + "**/*" + ], + "main": "kubewarden-2.0.0.umd.min.js" +} \ No newline at end of file diff --git a/icons/kubewarden/2.0.0-icon-kubewarden.svg b/icons/kubewarden/2.0.0-icon-kubewarden.svg new file mode 100644 index 0000000..99494a4 --- /dev/null +++ b/icons/kubewarden/2.0.0-icon-kubewarden.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.yaml b/index.yaml index c3b65f9..21b49bb 100644 --- a/index.yaml +++ b/index.yaml @@ -44,6 +44,27 @@ entries: - assets/elemental/elemental-1.2.0.tgz version: 1.2.0 kubewarden: + - annotations: + catalog.cattle.io/certified: rancher + catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.31.0-0' + catalog.cattle.io/namespace: cattle-ui-plugin-system + catalog.cattle.io/os: linux + catalog.cattle.io/permits-os: linux, windows + catalog.cattle.io/rancher-version: '>= 2.9.0-0' + catalog.cattle.io/scope: management + catalog.cattle.io/ui-component: plugins + catalog.cattle.io/ui-extension-version: '>= 2.0.0' + apiVersion: v2 + appVersion: 2.0.0 + created: "2024-08-01T09:16:46.564597721-04:00" + description: Kubewarden extension for Rancher Manager + digest: 5621d6655adbedafb6d200bd3ff57e4a6727e83172ddd7eb94c1a5219c39b731 + icon: https://raw.githubusercontent.com/rancher/ui-plugin-charts/main/icons/kubewarden/2.0.0-icon-kubewarden.svg + name: kubewarden + type: application + urls: + - assets/kubewarden/kubewarden-2.0.0.tgz + version: 2.0.0 - annotations: catalog.cattle.io/certified: rancher catalog.cattle.io/kube-version: '>= v1.16.0-0 < v1.31.0-0' @@ -586,4 +607,4 @@ entries: urls: - assets/neuvector-ui-ext/neuvector-ui-ext-1.0.0.tgz version: 1.0.0 -generated: "2024-07-26T10:59:05.557401704-04:00" +generated: "2024-08-01T09:16:46.563785304-04:00" diff --git a/manifest.json b/manifest.json index 0356096..948546a 100644 --- a/manifest.json +++ b/manifest.json @@ -44,7 +44,8 @@ "1.6.0", "1.6.1", "1.6.2", - "1.6.3" + "1.6.3", + "2.0.0" ] } }